summaryrefslogtreecommitdiffstats
path: root/src/dialogs/dietwizarddialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/dialogs/dietwizarddialog.h')
-rw-r--r--src/dialogs/dietwizarddialog.h222
1 files changed, 222 insertions, 0 deletions
diff --git a/src/dialogs/dietwizarddialog.h b/src/dialogs/dietwizarddialog.h
new file mode 100644
index 0000000..c848664
--- /dev/null
+++ b/src/dialogs/dietwizarddialog.h
@@ -0,0 +1,222 @@
+/***************************************************************************
+* Copyright (C) 2003 by *
+* Unai Garro ([email protected]) *
+* Cyril Bosselut ([email protected]) *
+* Jason Kivlighn ([email protected]) *
+* *
+* 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 DIETWIZARDDIALOG_H
+#define DIETWIZARDDIALOG_H
+
+#include <stdlib.h> // For RAND_MAX
+
+#include <tqcheckbox.h>
+#include <tqhbox.h>
+#include <tqhgroupbox.h>
+#include <tqlabel.h>
+#include <tqptrlist.h>
+#include <tqpushbutton.h>
+#include <tqslider.h>
+#include <tqspinbox.h>
+#include <tqtabwidget.h>
+#include <tqtoolbutton.h>
+#include <tqvaluelist.h>
+#include <tqvbox.h>
+#include <tqvgroupbox.h>
+#include <tqwidgetstack.h>
+
+#include <tdelistview.h>
+
+#include "datablocks/constraintlist.h"
+#include "datablocks/recipelist.h"
+#include "datablocks/elementlist.h"
+#include "datablocks/ingredientpropertylist.h"
+#include "datablocks/recipe.h"
+#include "datablocks/unitratiolist.h"
+
+#include "widgets/dblistviewbase.h"
+
+class KDoubleNumInput;
+
+class DishInput;
+class DishTitle;
+class MealInput;
+class RecipeDB;
+class RecipeList;
+class CategoryCheckListView;
+class PropertyConstraintListView;
+
+/**
+@author Unai Garro
+*/
+
+
+class DietWizardDialog: public TQVBox
+{
+
+ TQ_OBJECT
+
+public:
+
+ DietWizardDialog( TQWidget *parent, RecipeDB* db );
+ ~DietWizardDialog();
+
+private:
+ //Private variables
+ RecipeDB *database;
+
+ int dayNumber;
+ int mealNumber;
+
+ RecipeList *dietRList;
+
+ //Widgets
+ TQHBox *optionsBox;
+ TQVGroupBox *mealsSliderBox;
+ TQLabel *mealNumberLabel;
+ TQSlider *mealNumberSelector;
+ TQVGroupBox *daysSliderBox;
+ TQLabel *dayNumberLabel;
+ TQSlider *dayNumberSelector;
+ TQTabWidget *mealTabs;
+ MealInput *mealTab; // points to the current tab
+ TQPushButton *okButton;
+
+ //Methods
+ bool checkCategories( Recipe &rec, int meal, int dish );
+ bool checkConstraints( Recipe &rec, int meal, int dish );
+ bool checkLimits( IngredientPropertyList &properties, ConstraintList &constraints );
+ void loadConstraints( int meal, int dish, ConstraintList *constraints ) const;
+ void loadEnabledCategories( int meal, int dish, ElementList *categories );
+ void newTab( const TQString &name );
+ bool categoryFiltering( int meal, int dish ) const;
+ int getNecessaryFlags() const;
+
+public:
+ //Methods
+ void reload( ReloadFlags flags = Load );
+ RecipeList& dietList( void );
+
+private slots:
+ void changeDayNumber( int dn );
+ void changeMealNumber( int mn );
+ void createDiet( void );
+ void clear();
+ void createShoppingList( void );
+ void populateIteratorList( RecipeList &rl, TQValueList <RecipeList::Iterator> *il );
+signals:
+ void dietReady( void );
+};
+
+class MealInput: public TQWidget
+{
+ TQ_OBJECT
+
+public:
+ // Methods
+
+ MealInput( TQWidget *parent, RecipeDB *database );
+ ~MealInput();
+ void reload( ReloadFlags flag = Load );
+ int dishNo( void )
+ {
+ return dishNumber;
+ };
+ void setDishNo( int dn );
+ void showDish( int dn );
+
+ // Public widgets and variables
+ TQValueList <DishInput*> dishInputList; // The list of dishes
+
+private:
+ // Widgets
+ // Private Variables
+ int dishNumber;
+ RecipeDB *database;
+
+ // Settings section for the meal
+ TQHBox *mealOptions;
+
+ // Dish number setting
+ TQHBox *dishNumberBox;
+ TQLabel *dishNumberLabel;
+ TQSpinBox *dishNumberInput;
+
+ // Move <-> buttons
+ TQHGroupBox *toolBar;
+ TQToolButton *buttonNext;
+ TQToolButton *buttonPrev;
+
+ // Settings for the dish
+ TQWidgetStack *dishStack;
+
+public slots:
+ void nextDish( void );
+ void prevDish( void );
+
+private slots:
+ void changeDishNumber( int dn );
+
+};
+
+class DishInput: public TQWidget
+{
+ TQ_OBJECT
+
+public:
+ DishInput( TQWidget *parent, RecipeDB *database, const TQString &title );
+ ~DishInput();
+ // Methods
+ bool isCategoryFilteringEnabled( void ) const;
+ void loadConstraints( ConstraintList *constraints ) const;
+ void loadEnabledCategories( ElementList* categories );
+ void reload( ReloadFlags flag = Load );
+ void setDishTitle( const TQString & text );
+ void clear();
+
+
+private:
+ // Variables
+ bool categoryFiltering;
+ // Widgets
+ TQHGroupBox *listBox;
+ DishTitle *dishTitle;
+ TQVBox *categoriesBox;
+ TQCheckBox *categoriesEnabledBox;
+ CategoryCheckListView *categoriesView;
+ PropertyConstraintListView *constraintsView;
+ KDoubleNumInput *constraintsEditBox1;
+ KDoubleNumInput *constraintsEditBox2;
+ RecipeDB *database;
+
+private slots:
+ void enableCategories( bool enable );
+ void insertConstraintsEditBoxes( TQListViewItem* it );
+ void hideConstraintInputs();
+ void setMinValue( double minValue );
+ void setMaxValue( double maxValue );
+};
+
+class DishTitle: public TQWidget
+{
+
+ TQ_OBJECT
+
+public:
+ DishTitle( TQWidget *parent, const TQString &title );
+ ~DishTitle();
+ virtual TQSize sizeHint () const;
+ virtual TQSize minimumSizeHint() const;
+protected:
+ //Variables
+ TQString titleText;
+ //Methods
+ virtual void paintEvent( TQPaintEvent *p );
+};
+
+#endif