/*************************************************************************** * 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 #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