You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
229 lines
5.7 KiB
229 lines
5.7 KiB
/***************************************************************************
|
|
* 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 <tdelistview.h>
|
|
#include <knuminput.h>
|
|
#include <kpushbutton.h>
|
|
#include <kiconloader.h>
|
|
#include <kled.h>
|
|
|
|
#include <ntqlabel.h>
|
|
#include <ntqgroupbox.h>
|
|
#include <ntqmap.h>
|
|
#include <ntqobject.h>
|
|
#include <ntqtabwidget.h>
|
|
#include <ntqtoolbutton.h>
|
|
#include <ntqvbox.h>
|
|
|
|
#include "datablocks/elementlist.h"
|
|
|
|
class TQTabWidget;
|
|
class TQTimeEdit;
|
|
class TQDragEvent;
|
|
class TQButtonGroup;
|
|
class TQWidgetStack;
|
|
class TQTextEdit;
|
|
|
|
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 TQVBox
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
|
|
RecipeInputDialog( TQWidget* 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
|
|
TQTabWidget* tabWidget;
|
|
TQGroupBox* recipeTab;
|
|
TQGroupBox* instructionsTab;
|
|
|
|
//Recipe Photo
|
|
ImageDropLabel *photoLabel;
|
|
TQPixmap sourcePhoto;
|
|
TQPushButton *changePhotoButton;
|
|
|
|
//Recipe Body
|
|
KreTextEdit* instructionsEdit;
|
|
TQLabel* titleLabel;
|
|
KLineEdit* titleEdit;
|
|
|
|
//Additional recipe data
|
|
TQLabel* yieldLabel;
|
|
FractionInput* yieldNumInput;
|
|
KLineEdit* yieldTypeEdit;
|
|
TQTimeEdit *prepTimeEdit;
|
|
TQLabel* authorLabel;
|
|
KLineEdit* authorShow;
|
|
TQPushButton* addAuthorButton;
|
|
TQLabel* categoryLabel;
|
|
KLineEdit* categoryShow;
|
|
TQPushButton* addCategoryButton;
|
|
|
|
//Ingredient inputs
|
|
TDEListView* ingredientList;
|
|
TQGroupBox *ingredientGBox;
|
|
IngredientInputWidget *ingInput;
|
|
ClickableLed *propertyStatusLed;
|
|
TQLabel *propertyStatusLabel;
|
|
TQPushButton *propertyStatusButton;
|
|
TQTextEdit *statusTextView;
|
|
KDialogBase *propertyStatusDialog;
|
|
|
|
// Buttons to move ingredients up & down...
|
|
KPushButton* upButton;
|
|
KPushButton* downButton;
|
|
KPushButton* removeButton;
|
|
KPushButton* addButton;
|
|
KPushButton* ingParserButton;
|
|
|
|
//Function buttons
|
|
TQGroupBox* functionsBox;
|
|
TQToolButton* saveButton;
|
|
TQToolButton* closeButton;
|
|
TQToolButton* showButton;
|
|
TQToolButton* resizeButton;
|
|
|
|
TQToolButton* spellCheckButton;
|
|
|
|
KWidgetListbox *ratingListDisplayWidget;
|
|
|
|
TQMap<int,TQString> propertyStatusMapRed;
|
|
TQMap<int,TQString> propertyStatusMapYellow;
|
|
|
|
// Internal functions
|
|
int createNewYieldIfNecessary( const TQString &yield );
|
|
void saveRecipe( void );
|
|
void showCategories( void );
|
|
void showAuthors( void );
|
|
int ingItemIndex( TQListView *listview, const TQListViewItem *item ) const;
|
|
void addRating( const Rating &rating, RatingDisplayWidget *item );
|
|
TQString statusMessage() const;
|
|
TQString conversionPath( const TQString &ingUnit, const TQString &toUnit, const TQString &fromUnit, const TQString &propUnit ) const;
|
|
|
|
// Signals & Slots
|
|
|
|
private slots:
|
|
void changePhoto( void );
|
|
void clearPhoto( void );
|
|
void moveIngredientUp( void );
|
|
void moveIngredientDown( void );
|
|
void removeIngredient( void );
|
|
void syncListView( TQListViewItem* it, const TQString &new_text, int col );
|
|
void recipeChanged( void );
|
|
void recipeChanged( const TQString &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 TQString &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( TQWidget* w, const TQString &title );
|
|
void enableSaveOption( bool en = true );
|
|
void showRecipe( int recipeID ); //Indicates krecipesview to show it
|
|
void titleChanged( const TQString &title );
|
|
|
|
|
|
};
|
|
|
|
class ClickableLed : public KLed
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
ClickableLed( TQWidget *parent );
|
|
|
|
protected:
|
|
virtual void mouseReleaseEvent( TQMouseEvent* );
|
|
|
|
signals:
|
|
void clicked();
|
|
};
|
|
|
|
class ImageDropLabel : public TQLabel
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
ImageDropLabel( TQWidget *parent, TQPixmap &_sourcePhoto );
|
|
|
|
signals:
|
|
void changed();
|
|
|
|
protected:
|
|
void dragEnterEvent( TQDragEnterEvent* event );
|
|
void dropEvent( TQDropEvent* event );
|
|
|
|
private:
|
|
TQPixmap &sourcePhoto;
|
|
};
|
|
|
|
#endif
|