diff options
Diffstat (limited to 'src/widgets/propertylistview.h')
-rw-r--r-- | src/widgets/propertylistview.h | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/src/widgets/propertylistview.h b/src/widgets/propertylistview.h new file mode 100644 index 0000000..62c249f --- /dev/null +++ b/src/widgets/propertylistview.h @@ -0,0 +1,203 @@ +/*************************************************************************** +* 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 |