From d64806231418befcba5a1de172e793c7355e306a Mon Sep 17 00:00:00 2001 From: Andrew Lalis Date: Fri, 2 Feb 2018 13:27:57 +0100 Subject: [PATCH] Re-organized files, added model objects, basic UI. --- RecipeDB.pro | 26 ++- gui/mainwindow.ui | 205 ++++++++++++++++++++-- gui/menubuttonstylesheet.qrc | 4 + sources/main.cpp => main.cpp | 6 +- model/database/database.cpp | 13 ++ model/database/database.h | 29 +++ model/recipe/ingredient.cpp | 37 ++++ model/recipe/ingredient.h | 27 +++ model/recipe/instruction.cpp | 6 + model/recipe/instruction.h | 11 ++ model/recipe/recipe.cpp | 6 + model/recipe/recipe.h | 26 +++ model/recipe/recipeingredient.cpp | 30 ++++ model/recipe/recipeingredient.h | 29 +++ {sources => userInterface}/mainwindow.cpp | 2 +- {headers => userInterface}/mainwindow.h | 0 16 files changed, 434 insertions(+), 23 deletions(-) create mode 100644 gui/menubuttonstylesheet.qrc rename sources/main.cpp => main.cpp (94%) create mode 100644 model/database/database.cpp create mode 100644 model/database/database.h create mode 100644 model/recipe/ingredient.cpp create mode 100644 model/recipe/ingredient.h create mode 100644 model/recipe/instruction.cpp create mode 100644 model/recipe/instruction.h create mode 100644 model/recipe/recipe.cpp create mode 100644 model/recipe/recipe.h create mode 100644 model/recipe/recipeingredient.cpp create mode 100644 model/recipe/recipeingredient.h rename {sources => userInterface}/mainwindow.cpp (83%) rename {headers => userInterface}/mainwindow.h (100%) diff --git a/RecipeDB.pro b/RecipeDB.pro index 557202f..235d559 100644 --- a/RecipeDB.pro +++ b/RecipeDB.pro @@ -12,16 +12,28 @@ TARGET = RecipeDB TEMPLATE = app -SOURCES += sources/main.cpp \ - sources/mainwindow.cpp \ - SQLite/sqlite3.c +SOURCES += SQLite/sqlite3.c \ + model/recipe/ingredient.cpp \ + model/recipe/instruction.cpp \ + model/recipe/recipe.cpp \ + model/recipe/recipeingredient.cpp \ + userInterface/mainwindow.cpp \ + main.cpp \ + model/database/database.cpp -HEADERS += \ - headers/mainwindow.h \ - SQLite/sqlite3.h \ - SQLite/sqlite3ext.h +HEADERS += SQLite/sqlite3.h \ + SQLite/sqlite3ext.h \ + model/recipe/ingredient.h \ + model/recipe/instruction.h \ + model/recipe/recipe.h \ + model/recipe/recipeingredient.h \ + userInterface/mainwindow.h \ + model/database/database.h FORMS += gui/mainwindow.ui DISTFILES += \ .gitignore + +RESOURCES += \ + gui/menubuttonstylesheet.qrc diff --git a/gui/mainwindow.ui b/gui/mainwindow.ui index 6050363..365f358 100644 --- a/gui/mainwindow.ui +++ b/gui/mainwindow.ui @@ -1,24 +1,205 @@ + MainWindow - - + + 0 0 - 400 - 300 + 1000 + 500 - - MainWindow + + + 0 + 0 + - - - - + + false + + + RecipeDB + + + 1.000000000000000 + + + + + + 0 + 0 + 150 + 500 + + + + false + + + background-color: rgb(0, 0, 104) + + + + + 0 + -1 + 151 + 51 + + + + + Source Sans Pro Light + 24 + 75 + true + + + + false + + + color: rgb(255, 255, 255); + + + Recipe DB + + + Qt::RichText + + + Qt::AlignCenter + + + + + + 0 + 53 + 151 + 451 + + + + + 6 + + + QLayout::SetDefaultConstraint + + + + + + Source Sans Pro Light + 16 + + + + false + + + background-color: rgb(255, 255, 255); +color: rgb(0, 0, 104); + + + New + + + false + + + false + + + false + + + false + + + + + + + + Source Sans Pro Light + 16 + + + + background-color: rgb(255, 255, 255); +color: rgb(0, 0, 104); + + + Open + + + false + + + + + + + + Source Sans Pro Light + 16 + + + + background-color: rgb(255, 255, 255); +color: rgb(0, 0, 104); + + + Browse + + + + + + + + + + 149 + -1 + 861 + 511 + + + + background-color: qlineargradient(spread:pad, x1:0, y1:0.466, x2:1, y2:0.534, stop:0 rgba(0, 55, 104, 255), stop:1 rgba(0, 0, 0, 255)); + + + QFrame::Plain + + + 0 + + + Qt::ScrollBarAsNeeded + + + false + + + + + 0 + 0 + 859 + 509 + + + + + - - + diff --git a/gui/menubuttonstylesheet.qrc b/gui/menubuttonstylesheet.qrc new file mode 100644 index 0000000..7801296 --- /dev/null +++ b/gui/menubuttonstylesheet.qrc @@ -0,0 +1,4 @@ + + + + diff --git a/sources/main.cpp b/main.cpp similarity index 94% rename from sources/main.cpp rename to main.cpp index 23847b0..4ec32ba 100644 --- a/sources/main.cpp +++ b/main.cpp @@ -1,12 +1,12 @@ -#include "headers/mainwindow.h" +#include "userInterface/mainwindow.h" #include #include #include "SQLite/sqlite3.h" -static int callback(void* data, int argc, char** argv, char** azColName){ +static int callback(void* data, int rows, char** argv, char** azColName){ int i; fprintf(stderr, "%s: ", (const char*)data); - for(i=0; ireturnCode = sqlite3_open(this->filename.c_str(), &this->db); + if (this->returnCode){ + fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); + exit(EXIT_FAILURE); + } +} diff --git a/model/database/database.h b/model/database/database.h new file mode 100644 index 0000000..a0c5548 --- /dev/null +++ b/model/database/database.h @@ -0,0 +1,29 @@ +#ifndef DATABASE_H +#define DATABASE_H + +#include +#include + +#include "SQLite/sqlite3.h" +#include "model/recipe/ingredient.h" + +using namespace std; + +class Database +{ +public: + Database(string filename); + + void insertIngredient(Ingredient); + vector getIngredients(); +private: + string filename; + sqlite3* db; + int returnCode; + string sql; + char* errorMsg; + + void openConnection(); +}; + +#endif // DATABASE_H diff --git a/model/recipe/ingredient.cpp b/model/recipe/ingredient.cpp new file mode 100644 index 0000000..5cdcc53 --- /dev/null +++ b/model/recipe/ingredient.cpp @@ -0,0 +1,37 @@ +#include "headers/ingredient.h" + +Ingredient::Ingredient(){ + setId(-1); + setName("NULL"); + setFoodGroup("NULL"); +} + +Ingredient::Ingredient(int id, string name, string foodGroup){ + setId(id); + setName(name); + setFoodGroup(foodGroup); +} + +int Ingredient::getId(){ + return this->id; +} + +string Ingredient::getName(){ + return this->name; +} + +string Ingredient::getFoodGroup(){ + return this->foodGroup; +} + +void Ingredient::setId(int newId){ + this->id = newId; +} + +void Ingredient::setName(string newName){ + this->name = newName; +} + +void Ingredient::setFoodGroup(string newFoodGroup){ + this->foodGroup = newFoodGroup; +} diff --git a/model/recipe/ingredient.h b/model/recipe/ingredient.h new file mode 100644 index 0000000..2f4b0d0 --- /dev/null +++ b/model/recipe/ingredient.h @@ -0,0 +1,27 @@ +#ifndef INGREDIENT_H +#define INGREDIENT_H + +#include + +using namespace std; + +class Ingredient +{ +public: + Ingredient(); + Ingredient(int id, string name, string foodGroup); + + int getId(); + string getName(); + string getFoodGroup(); + + void setId(int newId); + void setName(string newName); + void setFoodGroup(string newFoodGroup); +protected: + int id; + string name; + string foodGroup; +}; + +#endif // INGREDIENT_H diff --git a/model/recipe/instruction.cpp b/model/recipe/instruction.cpp new file mode 100644 index 0000000..4da0c44 --- /dev/null +++ b/model/recipe/instruction.cpp @@ -0,0 +1,6 @@ +#include "headers/instruction.h" + +Instruction::Instruction() +{ + +} diff --git a/model/recipe/instruction.h b/model/recipe/instruction.h new file mode 100644 index 0000000..3698c64 --- /dev/null +++ b/model/recipe/instruction.h @@ -0,0 +1,11 @@ +#ifndef INSTRUCTION_H +#define INSTRUCTION_H + + +class Instruction +{ +public: + Instruction(); +}; + +#endif // INSTRUCTION_H \ No newline at end of file diff --git a/model/recipe/recipe.cpp b/model/recipe/recipe.cpp new file mode 100644 index 0000000..e510e52 --- /dev/null +++ b/model/recipe/recipe.cpp @@ -0,0 +1,6 @@ +#include "headers/recipe.h" + +Recipe::Recipe() +{ + +} diff --git a/model/recipe/recipe.h b/model/recipe/recipe.h new file mode 100644 index 0000000..bcdee54 --- /dev/null +++ b/model/recipe/recipe.h @@ -0,0 +1,26 @@ +#ifndef RECIPE_H +#define RECIPE_H + +#include +#include +#include + +#include "headers/ingredient.h" +#include "headers/instruction.h" + +using namespace std; + +class Recipe +{ +public: + Recipe(); + + string getName(); +private: + string name; + vector tags; + vector ingredients; + vector instructions; +}; + +#endif // RECIPE_H diff --git a/model/recipe/recipeingredient.cpp b/model/recipe/recipeingredient.cpp new file mode 100644 index 0000000..ad43dfa --- /dev/null +++ b/model/recipe/recipeingredient.cpp @@ -0,0 +1,30 @@ +#include "headers/recipeingredient.h" + +RecipeIngredient::RecipeIngredient(int id, string name, string foodGroup, int quantity, string unit) : Ingredient(id, name, foodGroup){ + setQuantity(quantity); + setUnit(unit); +} + +RecipeIngredient::RecipeIngredient(Ingredient i, int quantity, string unit){ + setId(i.getId()); + setName(i.getName()); + setFoodGroup(i.getFoodGroup()); + setQuantity(quantity); + setUnit(unit); +} + +string RecipeIngredient::getComment(){ + return this->comment; +} + +void RecipeIngredient::setQuantity(int newQuantity){ + this->quantity = newQuantity; +} + +void RecipeIngredient::setUnit(string newUnit){ + this->unit = newUnit; +} + +void RecipeIngredient::setComment(string newComment){ + this->comment = newComment; +} diff --git a/model/recipe/recipeingredient.h b/model/recipe/recipeingredient.h new file mode 100644 index 0000000..388a1a3 --- /dev/null +++ b/model/recipe/recipeingredient.h @@ -0,0 +1,29 @@ +#ifndef RECIPEINGREDIENT_H +#define RECIPEINGREDIENT_H + +#include + +#include "headers/ingredient.h" + +using namespace std; + +class RecipeIngredient : public Ingredient +{ +public: + RecipeIngredient(int id, string name, string foodGroup, int quantity, string unit); + RecipeIngredient(Ingredient i, int quantity, string unit); + + int getQuantity(); + string getUnit(); + string getComment(); + + void setQuantity(int newQuantity); + void setUnit(string newUnit); + void setComment(string newComment); +private: + int quantity; + string unit; + string comment; +}; + +#endif // RECIPEINGREDIENT_H diff --git a/sources/mainwindow.cpp b/userInterface/mainwindow.cpp similarity index 83% rename from sources/mainwindow.cpp rename to userInterface/mainwindow.cpp index 73a6e0b..3e2f80b 100644 --- a/sources/mainwindow.cpp +++ b/userInterface/mainwindow.cpp @@ -1,4 +1,4 @@ -#include "headers/mainwindow.h" +#include "userInterface/mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : diff --git a/headers/mainwindow.h b/userInterface/mainwindow.h similarity index 100% rename from headers/mainwindow.h rename to userInterface/mainwindow.h