summaryrefslogtreecommitdiffstats
path: root/krecipes/src/dialogs/recipeinputdialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'krecipes/src/dialogs/recipeinputdialog.h')
-rw-r--r--krecipes/src/dialogs/recipeinputdialog.h228
1 files changed, 228 insertions, 0 deletions
diff --git a/krecipes/src/dialogs/recipeinputdialog.h b/krecipes/src/dialogs/recipeinputdialog.h
new file mode 100644
index 0000000..7b09345
--- /dev/null
+++ b/krecipes/src/dialogs/recipeinputdialog.h
@@ -0,0 +1,228 @@
+/***************************************************************************
+* Copyright (C) 2003-2005 by *
+* Unai Garro (ugarro@users.sourceforge.net) *
+* Cyril Bosselut (bosselut@b1project.com) *
+* 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 RECIPEINPUTDIALOG_H
+#define RECIPEINPUTDIALOG_H
+
+#include <kdialog.h>
+#include <ktextedit.h>
+#include <klineedit.h>
+#include <kcombobox.h>
+#include <klistview.h>
+#include <knuminput.h>
+#include <kpushbutton.h>
+#include <kiconloader.h>
+#include <kled.h>
+
+#include <qlabel.h>
+#include <qgroupbox.h>
+#include <qmap.h>
+#include <qobject.h>
+#include <qtabwidget.h>
+#include <qtoolbutton.h>
+#include <qvbox.h>
+
+#include "datablocks/elementlist.h"
+
+class QTabWidget;
+class QTimeEdit;
+class QDragEvent;
+class QButtonGroup;
+class QWidgetStack;
+class QTextEdit;
+
+class KreTextEdit;
+class KWidgetListbox;
+class KDialogBase;
+
+class ImageDropLabel;
+class Recipe;
+class ElementList;
+class RecipeDB;
+class FractionInput;
+class Ingredient;
+class Rating;
+class RatingDisplayWidget;
+class IngredientInputWidget;
+class ClickableLed;
+
+/**
+@author Unai Garro
+*/
+class RecipeInputDialog: public QVBox
+{
+ Q_OBJECT
+
+public:
+
+ RecipeInputDialog( QWidget* parent, RecipeDB* db );
+ void loadRecipe( int recipeID );
+ ~RecipeInputDialog();
+ void newRecipe( void );
+ bool everythingSaved();
+ void reload( void );
+ int loadedRecipeID() const;
+
+private:
+
+ // Internal Data
+ Recipe *loadedRecipe; //Loaded Recipe
+ RecipeDB *database;
+ bool changedSignalEnabled;
+ bool unsavedChanges;
+
+ // Widgets
+ QTabWidget* tabWidget;
+ QGroupBox* recipeTab;
+ QGroupBox* instructionsTab;
+
+ //Recipe Photo
+ ImageDropLabel *photoLabel;
+ QPixmap sourcePhoto;
+ QPushButton *changePhotoButton;
+
+ //Recipe Body
+ KreTextEdit* instructionsEdit;
+ QLabel* titleLabel;
+ KLineEdit* titleEdit;
+
+ //Additional recipe data
+ QLabel* yieldLabel;
+ FractionInput* yieldNumInput;
+ KLineEdit* yieldTypeEdit;
+ QTimeEdit *prepTimeEdit;
+ QLabel* authorLabel;
+ KLineEdit* authorShow;
+ QPushButton* addAuthorButton;
+ QLabel* categoryLabel;
+ KLineEdit* categoryShow;
+ QPushButton* addCategoryButton;
+
+ //Ingredient inputs
+ KListView* ingredientList;
+ QGroupBox *ingredientGBox;
+ IngredientInputWidget *ingInput;
+ ClickableLed *propertyStatusLed;
+ QLabel *propertyStatusLabel;
+ QPushButton *propertyStatusButton;
+ QTextEdit *statusTextView;
+ KDialogBase *propertyStatusDialog;
+
+ // Buttons to move ingredients up & down...
+ KPushButton* upButton;
+ KPushButton* downButton;
+ KPushButton* removeButton;
+ KPushButton* addButton;
+ KPushButton* ingParserButton;
+
+ //Function buttons
+ QGroupBox* functionsBox;
+ QToolButton* saveButton;
+ QToolButton* closeButton;
+ QToolButton* showButton;
+ QToolButton* resizeButton;
+
+ QToolButton* spellCheckButton;
+
+ KWidgetListbox *ratingListDisplayWidget;
+
+ QMap<int,QString> propertyStatusMapRed;
+ QMap<int,QString> propertyStatusMapYellow;
+
+ // Internal functions
+ int createNewYieldIfNecessary( const QString &yield );
+ void saveRecipe( void );
+ void showCategories( void );
+ void showAuthors( void );
+ int ingItemIndex( QListView *listview, const QListViewItem *item ) const;
+ void addRating( const Rating &rating, RatingDisplayWidget *item );
+ QString statusMessage() const;
+ QString conversionPath( const QString &ingUnit, const QString &toUnit, const QString &fromUnit, const QString &propUnit ) const;
+
+ // Signals & Slots
+
+private slots:
+ void changePhoto( void );
+ void clearPhoto( void );
+ void moveIngredientUp( void );
+ void moveIngredientDown( void );
+ void removeIngredient( void );
+ void syncListView( QListViewItem* it, const QString &new_text, int col );
+ void recipeChanged( void );
+ void recipeChanged( const QString &t );
+ void enableChangedSignal( bool en = true );
+ void addCategory( void );
+ void addAuthor( void );
+ void enableSaveButton( bool enabled );
+ void closeOptions( void );
+ void showRecipe( void );
+ void prepTitleChanged( const QString &title );
+ void recipeRemoved( int id );
+ void slotIngredientParser();
+ void slotAddRating();
+ void slotEditRating();
+ void slotRemoveRating();
+ void addIngredient( const Ingredient &ing, bool noHeader = false );
+ void addIngredientHeader( const Element &header );
+ void updatePropertyStatus();
+ void updatePropertyStatus( const Ingredient &ing, bool updateIndicator );
+ void showStatusIndicator();
+
+public slots:
+ bool save ( void ); // Activated when krecipes.cpp sends signal save()
+ void spellCheck( void );
+ void resizeRecipe( void );
+
+signals:
+ void changed( void );
+ void closeRecipe( void );
+ void createButton( QWidget* w, const QString &title );
+ void enableSaveOption( bool en = true );
+ void showRecipe( int recipeID ); //Indicates krecipesview to show it
+ void titleChanged( const QString &title );
+
+
+};
+
+class ClickableLed : public KLed
+{
+Q_OBJECT
+
+public:
+ ClickableLed( QWidget *parent );
+
+protected:
+ virtual void mouseReleaseEvent( QMouseEvent* );
+
+signals:
+ void clicked();
+};
+
+class ImageDropLabel : public QLabel
+{
+ Q_OBJECT
+
+public:
+ ImageDropLabel( QWidget *parent, QPixmap &_sourcePhoto );
+
+signals:
+ void changed();
+
+protected:
+ void dragEnterEvent( QDragEnterEvent* event );
+ void dropEvent( QDropEvent* event );
+
+private:
+ QPixmap &sourcePhoto;
+};
+
+#endif