You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
204 lines
4.5 KiB
204 lines
4.5 KiB
/***************************************************************************
|
|
* Copyright (C) 2004 by *
|
|
* Jason Kivlighn (jkivlighn@gmail.com) *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
***************************************************************************/
|
|
|
|
#ifndef PROPERTYLISTVIEW_H
|
|
#define PROPERTYLISTVIEW_H
|
|
|
|
#include <tdelistview.h>
|
|
|
|
#include "datablocks/element.h"
|
|
#include "datablocks/ingredientproperty.h"
|
|
#include "datablocks/constraintlist.h"
|
|
|
|
class RecipeDB;
|
|
class TDEPopupMenu;
|
|
|
|
class PropertyCheckListItem : public TQCheckListItem
|
|
{
|
|
public:
|
|
PropertyCheckListItem( TQListView* klv, const IngredientProperty &property );
|
|
PropertyCheckListItem( TQListViewItem* it, const IngredientProperty &property );
|
|
|
|
~PropertyCheckListItem( void )
|
|
{}
|
|
virtual TQString text( int column ) const;
|
|
|
|
IngredientProperty property() const
|
|
{
|
|
return m_property;
|
|
}
|
|
|
|
protected:
|
|
IngredientProperty m_property;
|
|
|
|
};
|
|
|
|
class HidePropertyCheckListItem : public PropertyCheckListItem
|
|
{
|
|
public:
|
|
HidePropertyCheckListItem( TQListView* klv, const IngredientProperty &property, bool enable = false );
|
|
HidePropertyCheckListItem( TQListViewItem* it, const IngredientProperty &property, bool enable = false );
|
|
|
|
protected:
|
|
virtual void stateChange( bool on );
|
|
|
|
private:
|
|
bool m_holdSettings;
|
|
};
|
|
|
|
|
|
class ConstraintsListItem: public TQCheckListItem
|
|
{
|
|
public:
|
|
ConstraintsListItem( TQListView* klv, const IngredientProperty &pty ) : TQCheckListItem( klv, TQString::null, TQCheckListItem::CheckBox )
|
|
{
|
|
// Initialize the constraint data with the the property data
|
|
ctStored = new Constraint();
|
|
ctStored->id = pty.id;
|
|
ctStored->name = pty.name;
|
|
ctStored->perUnit = pty.perUnit;
|
|
ctStored->units = pty.units;
|
|
ctStored->max = 0;
|
|
ctStored->min = 0;
|
|
}
|
|
|
|
~ConstraintsListItem( void )
|
|
{
|
|
delete ctStored;
|
|
}
|
|
|
|
private:
|
|
Constraint *ctStored;
|
|
|
|
public:
|
|
void setConstraint( const Constraint &constraint )
|
|
{
|
|
delete ctStored;
|
|
ctStored = new Constraint( constraint );
|
|
|
|
setOn( ctStored->enabled );
|
|
}
|
|
double maxVal()
|
|
{
|
|
return ctStored->max;
|
|
}
|
|
double minVal()
|
|
{
|
|
return ctStored->min;
|
|
}
|
|
int propertyId()
|
|
{
|
|
return ctStored->id;
|
|
}
|
|
void setMax( double maxValue )
|
|
{
|
|
ctStored->max = maxValue;
|
|
setText( 3, TQString::number( maxValue ) );
|
|
}
|
|
void setMin( double minValue )
|
|
{
|
|
ctStored->min = minValue;
|
|
setText( 2, TQString::number( minValue ) );
|
|
}
|
|
virtual TQString text( int column ) const
|
|
{
|
|
switch ( column ) {
|
|
case 1:
|
|
return ( ctStored->name );
|
|
case 2:
|
|
return ( TQString::number( ctStored->min ) );
|
|
case 3:
|
|
return ( TQString::number( ctStored->max ) );
|
|
case 4:
|
|
return ( TQString::number( ctStored->id ) );
|
|
default:
|
|
return ( TQString::null );
|
|
}
|
|
}
|
|
};
|
|
|
|
|
|
class PropertyListView : public TDEListView
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
PropertyListView( TQWidget *parent, RecipeDB * );
|
|
|
|
public slots:
|
|
void reload( void );
|
|
|
|
protected:
|
|
RecipeDB *database;
|
|
bool m_loading;
|
|
|
|
protected slots:
|
|
virtual void removeProperty( int id ) = 0;
|
|
virtual void createProperty( const IngredientProperty &property ) = 0;
|
|
};
|
|
|
|
|
|
|
|
class StdPropertyListView : public PropertyListView
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
StdPropertyListView( TQWidget *parent, RecipeDB *, bool editable = false );
|
|
|
|
protected:
|
|
virtual void removeProperty( int id );
|
|
virtual void createProperty( const IngredientProperty &property );
|
|
|
|
private slots:
|
|
void showPopup( TDEListView *, TQListViewItem *, const TQPoint & );
|
|
|
|
void createNew();
|
|
void remove
|
|
();
|
|
void rename();
|
|
|
|
void modProperty( TQListViewItem* i );
|
|
void saveProperty( TQListViewItem* i );
|
|
|
|
private:
|
|
bool checkBounds( const TQString &name );
|
|
|
|
TDEPopupMenu *kpop;
|
|
};
|
|
|
|
|
|
|
|
class PropertyConstraintListView : public PropertyListView
|
|
{
|
|
public:
|
|
PropertyConstraintListView( TQWidget *parent, RecipeDB * );
|
|
|
|
protected:
|
|
virtual void removeProperty( int id );
|
|
virtual void createProperty( const IngredientProperty &property );
|
|
};
|
|
|
|
class CheckPropertyListView : public StdPropertyListView
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
CheckPropertyListView( TQWidget *parent, RecipeDB *, bool editable = false );
|
|
|
|
protected:
|
|
virtual void createProperty( const IngredientProperty &property );
|
|
|
|
private:
|
|
bool checkBounds( const TQString &name );
|
|
};
|
|
|
|
#endif //PROPERTYLISTVIEW_H
|