summaryrefslogtreecommitdiffstats
path: root/src/widgets/propertylistview.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/propertylistview.h')
-rw-r--r--src/widgets/propertylistview.h203
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