diff --git a/RecipeDB.pro b/RecipeDB.pro index c2c8a98..e573956 100644 --- a/RecipeDB.pro +++ b/RecipeDB.pro @@ -27,7 +27,9 @@ SOURCES += model/recipe/instruction.cpp \ model/database/recipedatabase.cpp \ utils/fileutils.cpp \ gui/newrecipedialog.cpp \ - model/recipe/tags/taglistmodel.cpp + model/recipe/tags/taglistmodel.cpp \ + gui/newDialogs/newingredientdialog.cpp \ + gui/newDialogs/newtagdialog.cpp HEADERS += model/recipe/instruction.h \ model/recipe/recipe.h \ @@ -44,12 +46,16 @@ HEADERS += model/recipe/instruction.h \ model/database/recipedatabase.h \ utils/fileutils.h \ gui/newrecipedialog.h \ - model/recipe/tags/taglistmodel.h + model/recipe/tags/taglistmodel.h \ + gui/newDialogs/newingredientdialog.h \ + gui/newDialogs/newtagdialog.h LIBS += -ldl \ FORMS += gui/mainwindow.ui \ - gui/newrecipedialog.ui + gui/newrecipedialog.ui \ + gui/newDialogs/newingredientdialog.ui \ + gui/newDialogs/newtagdialog.ui DISTFILES += \ .gitignore diff --git a/gui/mainwindow.ui b/gui/mainwindow.ui index ae24fae..252d695 100644 --- a/gui/mainwindow.ui +++ b/gui/mainwindow.ui @@ -25,6 +25,10 @@ RecipeDB + + + :/images/images/icon.png:/images/images/icon.png + 1.000000000000000 @@ -556,6 +560,8 @@ p, li { white-space: pre-wrap; } - + + + diff --git a/gui/newDialogs/newingredientdialog.cpp b/gui/newDialogs/newingredientdialog.cpp new file mode 100644 index 0000000..5b7597a --- /dev/null +++ b/gui/newDialogs/newingredientdialog.cpp @@ -0,0 +1,18 @@ +#include "newingredientdialog.h" +#include "ui_newingredientdialog.h" + +NewIngredientDialog::NewIngredientDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::NewIngredientDialog) +{ + ui->setupUi(this); +} + +NewIngredientDialog::~NewIngredientDialog() +{ + delete ui; +} + +Ingredient NewIngredientDialog::getIngredient(){ + return Ingredient(ui->nameEdit->text().toLower().toStdString(), ui->foodGroupEdit->text().toLower().toStdString()); +} diff --git a/gui/newDialogs/newingredientdialog.h b/gui/newDialogs/newingredientdialog.h new file mode 100644 index 0000000..4c94275 --- /dev/null +++ b/gui/newDialogs/newingredientdialog.h @@ -0,0 +1,26 @@ +#ifndef NEWINGREDIENTDIALOG_H +#define NEWINGREDIENTDIALOG_H + +#include +#include "model/recipe/ingredients/ingredient.h" + +namespace Ui { +class NewIngredientDialog; +} + +class NewIngredientDialog : public QDialog +{ + Q_OBJECT + + public: + explicit NewIngredientDialog(QWidget *parent = 0); + ~NewIngredientDialog(); + + //Access values. + Ingredient getIngredient(); + + private: + Ui::NewIngredientDialog *ui; +}; + +#endif // NEWINGREDIENTDIALOG_H diff --git a/gui/newDialogs/newingredientdialog.ui b/gui/newDialogs/newingredientdialog.ui new file mode 100644 index 0000000..8f4f268 --- /dev/null +++ b/gui/newDialogs/newingredientdialog.ui @@ -0,0 +1,120 @@ + + + NewIngredientDialog + + + + 0 + 0 + 240 + 320 + + + + New Ingredient + + + + :/images/images/icon.png:/images/images/icon.png + + + true + + + + + + true + + + + + + + + + Name + + + Qt::AlignCenter + + + + + + + + + + + + + + + + Food Group + + + Qt::AlignCenter + + + + + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + buttonBox + accepted() + NewIngredientDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + NewIngredientDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/gui/newDialogs/newtagdialog.cpp b/gui/newDialogs/newtagdialog.cpp new file mode 100644 index 0000000..dd26afc --- /dev/null +++ b/gui/newDialogs/newtagdialog.cpp @@ -0,0 +1,18 @@ +#include "newtagdialog.h" +#include "ui_newtagdialog.h" + +NewTagDialog::NewTagDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::newTagDialog) +{ + ui->setupUi(this); +} + +NewTagDialog::~NewTagDialog() +{ + delete ui; +} + +RecipeTag NewTagDialog::getTag(){ + return RecipeTag(ui->tagEdit->text().toLower().toStdString()); +} diff --git a/gui/newDialogs/newtagdialog.h b/gui/newDialogs/newtagdialog.h new file mode 100644 index 0000000..e096f21 --- /dev/null +++ b/gui/newDialogs/newtagdialog.h @@ -0,0 +1,26 @@ +#ifndef NEWTAGDIALOG_H +#define NEWTAGDIALOG_H + +#include + +#include "model/recipe/tags/recipetag.h" + +namespace Ui { +class newTagDialog; +} + +class NewTagDialog : public QDialog +{ + Q_OBJECT + + public: + explicit NewTagDialog(QWidget *parent = 0); + ~NewTagDialog(); + + //Access values + RecipeTag getTag(); + private: + Ui::newTagDialog *ui; +}; + +#endif // NEWTAGDIALOG_H diff --git a/gui/newDialogs/newtagdialog.ui b/gui/newDialogs/newtagdialog.ui new file mode 100644 index 0000000..fd77812 --- /dev/null +++ b/gui/newDialogs/newtagdialog.ui @@ -0,0 +1,92 @@ + + + newTagDialog + + + + 0 + 0 + 240 + 320 + + + + Dialog + + + + :/images/images/icon.png:/images/images/icon.png + + + true + + + + + + + + + New Tag + + + Qt::AlignCenter + + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + buttonBox + accepted() + newTagDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + newTagDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/gui/newrecipedialog.cpp b/gui/newrecipedialog.cpp index 058b0dd..4cfaeea 100644 --- a/gui/newrecipedialog.cpp +++ b/gui/newrecipedialog.cpp @@ -118,3 +118,27 @@ void NewRecipeDialog::on_selectImageButton_clicked(){ ui->imageDisplayLabel->setPixmap(QPixmap(filename)); } } + +void NewRecipeDialog::on_deleteIngredientButton_clicked(){ + QModelIndexList indexList = ui->ingredientsListView->selectionModel()->selectedIndexes(); + for (QModelIndexList::iterator it = indexList.begin(); it != indexList.end(); ++it){ + QModelIndex i = *it; + this->ingredientListModel.deleteIngredient(i.row()); + } +} + +void NewRecipeDialog::on_newIngredientButton_clicked(){ + NewIngredientDialog d(this); + d.show(); + if (d.exec() == QDialog::Accepted){ + Ingredient i = d.getIngredient(); + this->recipeDB->storeIngredient(i); + this->populateIngredientsBox(); + } +} + +void NewRecipeDialog::on_newTagButton_clicked(){ + newTagDialog + d.show(); + +} diff --git a/gui/newrecipedialog.h b/gui/newrecipedialog.h index 6e14097..43ff140 100644 --- a/gui/newrecipedialog.h +++ b/gui/newrecipedialog.h @@ -10,6 +10,9 @@ #include "model/recipe/ingredients/ingredientlistmodel.h" #include "model/recipe/tags/taglistmodel.h" +#include "gui/newDialogs/newingredientdialog.h" +#include "gui/newDialogs/newtagdialog.h" + namespace Ui { class NewRecipeDialog; } @@ -42,6 +45,12 @@ class NewRecipeDialog : public QDialog void on_selectImageButton_clicked(); + void on_deleteIngredientButton_clicked(); + + void on_newIngredientButton_clicked(); + + void on_newTagButton_clicked(); + private: Ui::NewRecipeDialog *ui; RecipeDatabase *recipeDB; diff --git a/gui/newrecipedialog.ui b/gui/newrecipedialog.ui index 25ffbbc..9a72e5e 100644 --- a/gui/newrecipedialog.ui +++ b/gui/newrecipedialog.ui @@ -22,6 +22,13 @@ New Recipe + + + :/images/images/icon.png:/images/images/icon.png + + + true + 0 @@ -327,6 +334,9 @@ QFrame::NoFrame + + QAbstractItemView::MultiSelection + @@ -599,6 +609,9 @@ QFrame::NoFrame + + QAbstractItemView::MultiSelection + 100 @@ -610,7 +623,7 @@ - + @@ -665,6 +678,9 @@ + + background-color: rgb(250, 250, 255); + @@ -728,6 +744,12 @@ + + background-color: rgb(255, 255, 255); + + + QFrame::NoFrame + Enter instructions here. @@ -741,9 +763,15 @@ Qt::LeftToRight + + false + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + true + diff --git a/images.qrc b/images.qrc index 6634926..5f9348c 100644 --- a/images.qrc +++ b/images.qrc @@ -1,5 +1,6 @@ images/no_image.png + images/icon.png diff --git a/images/icon.png b/images/icon.png new file mode 100644 index 0000000..9a2db3c Binary files /dev/null and b/images/icon.png differ diff --git a/model/recipe/ingredients/ingredientlistmodel.cpp b/model/recipe/ingredients/ingredientlistmodel.cpp index 360d48c..7763671 100644 --- a/model/recipe/ingredients/ingredientlistmodel.cpp +++ b/model/recipe/ingredients/ingredientlistmodel.cpp @@ -55,6 +55,7 @@ bool IngredientListModel::addIngredient(RecipeIngredient ri){ void IngredientListModel::deleteIngredient(int index){ this->ingredients.erase(this->ingredients.begin() + index); + emit dataChanged(createIndex(0, 0), createIndex(this->ingredients.size()-1, 0)); } vector IngredientListModel::getIngredients(){ diff --git a/model/recipe/tags/taglistmodel.cpp b/model/recipe/tags/taglistmodel.cpp index 4555cd7..149ad3e 100644 --- a/model/recipe/tags/taglistmodel.cpp +++ b/model/recipe/tags/taglistmodel.cpp @@ -41,6 +41,7 @@ bool TagListModel::addTag(RecipeTag tag){ void TagListModel::deleteTag(int index){ this->tags.erase(this->tags.begin() + index); + emit dataChanged(createIndex(0, 0), createIndex(this->tags.size()-1, 0)); } vector TagListModel::getTags(){