Made adding ingredients, tags more secure with extra checks.
This commit is contained in:
parent
35982cd514
commit
9065df521a
|
@ -8,11 +8,26 @@ NewIngredientDialog::NewIngredientDialog(QWidget *parent) :
|
|||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
NewIngredientDialog::NewIngredientDialog(RecipeDatabase *recipeDB, QWidget *parent) : NewIngredientDialog(parent){
|
||||
this->recipeDB = recipeDB;
|
||||
this->populateFoodGroupBox();
|
||||
}
|
||||
|
||||
NewIngredientDialog::~NewIngredientDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
Ingredient NewIngredientDialog::getIngredient(){
|
||||
return Ingredient(ui->nameEdit->text().toLower().toStdString(), ui->foodGroupEdit->text().toLower().toStdString());
|
||||
return Ingredient(ui->nameEdit->text().toLower().toStdString(), ui->foodGroupBox->currentText().toStdString());
|
||||
}
|
||||
|
||||
void NewIngredientDialog::populateFoodGroupBox(){
|
||||
vector<string> foodGroups = this->recipeDB->retrieveAllFoodGroups();
|
||||
printf("Found %ld food Groups.\n", foodGroups.size());
|
||||
ui->foodGroupBox->clear();
|
||||
for (unsigned int i = 0; i < foodGroups.size(); i++){
|
||||
QString s = QString::fromStdString(foodGroups[i]);
|
||||
ui->foodGroupBox->insertItem(i, s);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <QDialog>
|
||||
#include "model/recipe/ingredients/ingredient.h"
|
||||
#include "model/database/recipedatabase.h"
|
||||
|
||||
namespace Ui {
|
||||
class NewIngredientDialog;
|
||||
|
@ -14,6 +15,7 @@ class NewIngredientDialog : public QDialog
|
|||
|
||||
public:
|
||||
explicit NewIngredientDialog(QWidget *parent = 0);
|
||||
NewIngredientDialog(RecipeDatabase *recipeDB, QWidget *parent = 0);
|
||||
~NewIngredientDialog();
|
||||
|
||||
//Access values.
|
||||
|
@ -21,6 +23,9 @@ class NewIngredientDialog : public QDialog
|
|||
|
||||
private:
|
||||
Ui::NewIngredientDialog *ui;
|
||||
RecipeDatabase *recipeDB;
|
||||
|
||||
void populateFoodGroupBox();
|
||||
};
|
||||
|
||||
#endif // NEWINGREDIENTDIALOG_H
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>240</width>
|
||||
<height>320</height>
|
||||
<width>367</width>
|
||||
<height>228</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -60,7 +60,42 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="foodGroupEdit"/>
|
||||
<widget class="QWidget" name="foodGroupSelectionWidget" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="foodGroupBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item alignment="Qt::AlignRight">
|
||||
<widget class="QPushButton" name="addFoodGroupButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../images.qrc">
|
||||
<normaloff>:/images/images/plus_icon.png</normaloff>:/images/images/plus_icon.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item alignment="Qt::AlignRight">
|
||||
<widget class="QPushButton" name="deleteFoodGroupButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../../images.qrc">
|
||||
<normaloff>:/images/images/minus_icon.png</normaloff>:/images/images/minus_icon.png</iconset>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
|
|
@ -145,13 +145,17 @@ void NewRecipeDialog::on_deleteIngredientButton_clicked(){
|
|||
}
|
||||
|
||||
void NewRecipeDialog::on_newIngredientButton_clicked(){
|
||||
NewIngredientDialog d(this);
|
||||
NewIngredientDialog d(this->recipeDB, this);
|
||||
d.show();
|
||||
if (d.exec() == QDialog::Accepted){
|
||||
Ingredient i = d.getIngredient();
|
||||
this->recipeDB->storeIngredient(i);
|
||||
this->populateIngredientsBox();
|
||||
ui->ingredientNameBox->setCurrentText(QString::fromStdString(i.getName()));
|
||||
if (!i.getName().empty() && !i.getFoodGroup().empty() && this->recipeDB->storeIngredient(i)){
|
||||
this->populateIngredientsBox();
|
||||
ui->ingredientNameBox->setCurrentText(QString::fromStdString(i.getName()));
|
||||
} else {
|
||||
QMessageBox::critical(this, "Error", "Unable to add ingredient.");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -161,12 +165,16 @@ void NewRecipeDialog::on_newTagButton_clicked(){
|
|||
if (d.exec() == QDialog::Accepted){
|
||||
RecipeTag tag = d.getTag();
|
||||
//Temporarily add this to the tags list, and it will be saved if the recipe is saved.
|
||||
this->tags.push_back(tag);
|
||||
this->tagsListModel.addTag(tag);
|
||||
ui->tagsComboBox->clear();
|
||||
for (unsigned int i = 0; i < this->tags.size(); i++){
|
||||
QString s = QString::fromStdString(this->tags[i].getValue());
|
||||
ui->tagsComboBox->insertItem(i, s);
|
||||
if (!tag.getValue().empty()){
|
||||
this->tags.push_back(tag);
|
||||
this->tagsListModel.addTag(tag);
|
||||
ui->tagsComboBox->clear();
|
||||
for (unsigned int i = 0; i < this->tags.size(); i++){
|
||||
QString s = QString::fromStdString(this->tags[i].getValue());
|
||||
ui->tagsComboBox->insertItem(i, s);
|
||||
}
|
||||
} else {
|
||||
QMessageBox::warning(this, "Empty Tag", "The tag you entered is blank!");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue