Periodic update of progress. #4
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -25,7 +25,8 @@ SOURCES += model/recipe/instruction.cpp \
 | 
			
		|||
    SQLite/sqlite3.c \
 | 
			
		||||
    model/database/resulttable.cpp \
 | 
			
		||||
    model/database/recipedatabase.cpp \
 | 
			
		||||
    utils/fileutils.cpp
 | 
			
		||||
    utils/fileutils.cpp \
 | 
			
		||||
    gui/newrecipedialog.cpp
 | 
			
		||||
 | 
			
		||||
HEADERS  += model/recipe/instruction.h \
 | 
			
		||||
    model/recipe/recipe.h \
 | 
			
		||||
| 
						 | 
				
			
			@ -40,11 +41,13 @@ HEADERS  += model/recipe/instruction.h \
 | 
			
		|||
    SQLite/sqlite3ext.h \
 | 
			
		||||
    model/database/resulttable.h \
 | 
			
		||||
    model/database/recipedatabase.h \
 | 
			
		||||
    utils/fileutils.h
 | 
			
		||||
    utils/fileutils.h \
 | 
			
		||||
    gui/newrecipedialog.h
 | 
			
		||||
 | 
			
		||||
LIBS += -ldl \
 | 
			
		||||
 | 
			
		||||
FORMS    += gui/mainwindow.ui
 | 
			
		||||
FORMS    += gui/mainwindow.ui \
 | 
			
		||||
    gui/newrecipedialog.ui
 | 
			
		||||
 | 
			
		||||
DISTFILES += \
 | 
			
		||||
    .gitignore
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -109,12 +109,25 @@
 | 
			
		|||
            </property>
 | 
			
		||||
            <property name="font">
 | 
			
		||||
             <font>
 | 
			
		||||
              <family>Source Sans Pro Light</family>
 | 
			
		||||
              <family>Noto Sans CJK KR Light</family>
 | 
			
		||||
              <pointsize>20</pointsize>
 | 
			
		||||
              <stylestrategy>PreferAntialias</stylestrategy>
 | 
			
		||||
             </font>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="autoFillBackground">
 | 
			
		||||
             <bool>false</bool>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="styleSheet">
 | 
			
		||||
             <string notr="true">background-color: rgb(83, 75, 255);</string>
 | 
			
		||||
             <string notr="true">QPushButton#newButton {
 | 
			
		||||
	background-color: rgb(235, 235, 255);
 | 
			
		||||
	border: 0px;
 | 
			
		||||
}
 | 
			
		||||
QPushButton#newButton:hover{
 | 
			
		||||
	background-color: rgb(245, 245, 255);
 | 
			
		||||
}
 | 
			
		||||
QPushButton#newButton:pressed{
 | 
			
		||||
	background-color: rgb(255, 255, 255);
 | 
			
		||||
}</string>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="text">
 | 
			
		||||
             <string>New</string>
 | 
			
		||||
| 
						 | 
				
			
			@ -134,12 +147,22 @@
 | 
			
		|||
            </property>
 | 
			
		||||
            <property name="font">
 | 
			
		||||
             <font>
 | 
			
		||||
              <family>Source Sans Pro Light</family>
 | 
			
		||||
              <family>Noto Sans CJK KR Light</family>
 | 
			
		||||
              <pointsize>20</pointsize>
 | 
			
		||||
              <stylestrategy>PreferAntialias</stylestrategy>
 | 
			
		||||
             </font>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="styleSheet">
 | 
			
		||||
             <string notr="true">background-color: rgb(112, 105, 255);</string>
 | 
			
		||||
             <string notr="true">QPushButton#openButton {
 | 
			
		||||
	background-color: rgb(222, 226, 255);
 | 
			
		||||
	border: 0px;
 | 
			
		||||
}
 | 
			
		||||
QPushButton#openButton:hover{
 | 
			
		||||
	background-color: rgb(232, 236, 255);
 | 
			
		||||
}
 | 
			
		||||
QPushButton#openButton:pressed{
 | 
			
		||||
	background-color: rgb(255, 255, 255);
 | 
			
		||||
}</string>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="text">
 | 
			
		||||
             <string>Open</string>
 | 
			
		||||
| 
						 | 
				
			
			@ -156,16 +179,32 @@
 | 
			
		|||
            </property>
 | 
			
		||||
            <property name="font">
 | 
			
		||||
             <font>
 | 
			
		||||
              <family>Source Sans Pro Light</family>
 | 
			
		||||
              <family>Noto Sans CJK KR Light</family>
 | 
			
		||||
              <pointsize>20</pointsize>
 | 
			
		||||
              <stylestrategy>PreferAntialias</stylestrategy>
 | 
			
		||||
             </font>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="autoFillBackground">
 | 
			
		||||
             <bool>false</bool>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="styleSheet">
 | 
			
		||||
             <string notr="true">background-color: rgb(137, 131, 255);</string>
 | 
			
		||||
             <string notr="true">QPushButton#browseButton {
 | 
			
		||||
	background-color: rgb(215, 215, 255);
 | 
			
		||||
	border: 0px;
 | 
			
		||||
}
 | 
			
		||||
QPushButton#browseButton:hover{
 | 
			
		||||
	background-color: rgb(225, 225, 255);
 | 
			
		||||
}
 | 
			
		||||
QPushButton#browseButton:pressed{
 | 
			
		||||
	background-color: rgb(255, 255, 255);
 | 
			
		||||
}</string>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="text">
 | 
			
		||||
             <string>Browse</string>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="flat">
 | 
			
		||||
             <bool>false</bool>
 | 
			
		||||
            </property>
 | 
			
		||||
           </widget>
 | 
			
		||||
          </item>
 | 
			
		||||
         </layout>
 | 
			
		||||
| 
						 | 
				
			
			@ -214,8 +253,13 @@
 | 
			
		|||
         </property>
 | 
			
		||||
         <property name="font">
 | 
			
		||||
          <font>
 | 
			
		||||
           <family>Source Sans Pro Light</family>
 | 
			
		||||
           <family>Noto Sans CJK KR Light</family>
 | 
			
		||||
           <pointsize>24</pointsize>
 | 
			
		||||
           <weight>50</weight>
 | 
			
		||||
           <italic>false</italic>
 | 
			
		||||
           <bold>false</bold>
 | 
			
		||||
           <stylestrategy>PreferAntialias</stylestrategy>
 | 
			
		||||
           <kerning>true</kerning>
 | 
			
		||||
          </font>
 | 
			
		||||
         </property>
 | 
			
		||||
         <property name="styleSheet">
 | 
			
		||||
| 
						 | 
				
			
			@ -299,7 +343,7 @@
 | 
			
		|||
               </property>
 | 
			
		||||
               <property name="font">
 | 
			
		||||
                <font>
 | 
			
		||||
                 <family>Source Sans Pro Light</family>
 | 
			
		||||
                 <family>Noto Sans CJK KR Thin</family>
 | 
			
		||||
                 <pointsize>18</pointsize>
 | 
			
		||||
                </font>
 | 
			
		||||
               </property>
 | 
			
		||||
| 
						 | 
				
			
			@ -324,8 +368,9 @@
 | 
			
		|||
               </property>
 | 
			
		||||
               <property name="font">
 | 
			
		||||
                <font>
 | 
			
		||||
                 <family>Source Sans Pro Light</family>
 | 
			
		||||
                 <pointsize>16</pointsize>
 | 
			
		||||
                 <family>Noto Sans CJK KR Light</family>
 | 
			
		||||
                 <pointsize>12</pointsize>
 | 
			
		||||
                 <stylestrategy>PreferAntialias</stylestrategy>
 | 
			
		||||
                </font>
 | 
			
		||||
               </property>
 | 
			
		||||
               <property name="styleSheet">
 | 
			
		||||
| 
						 | 
				
			
			@ -343,6 +388,9 @@
 | 
			
		|||
               <property name="horizontalScrollBarPolicy">
 | 
			
		||||
                <enum>Qt::ScrollBarAlwaysOff</enum>
 | 
			
		||||
               </property>
 | 
			
		||||
               <property name="selectionMode">
 | 
			
		||||
                <enum>QAbstractItemView::NoSelection</enum>
 | 
			
		||||
               </property>
 | 
			
		||||
               <property name="isWrapping" stdset="0">
 | 
			
		||||
                <bool>true</bool>
 | 
			
		||||
               </property>
 | 
			
		||||
| 
						 | 
				
			
			@ -397,7 +445,7 @@
 | 
			
		|||
               </property>
 | 
			
		||||
               <property name="font">
 | 
			
		||||
                <font>
 | 
			
		||||
                 <family>Source Sans Pro Light</family>
 | 
			
		||||
                 <family>Noto Sans CJK KR Thin</family>
 | 
			
		||||
                 <pointsize>18</pointsize>
 | 
			
		||||
                </font>
 | 
			
		||||
               </property>
 | 
			
		||||
| 
						 | 
				
			
			@ -445,11 +493,11 @@
 | 
			
		|||
                <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
 | 
			
		||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
 | 
			
		||||
p, li { white-space: pre-wrap; }
 | 
			
		||||
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
 | 
			
		||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#00ff40;">This is some </span><span style=" font-size:16pt; color:#a33c3e;">colored text and </span><a href="https://www.google.com"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">link</span></a></p></body></html></string>
 | 
			
		||||
</style></head><body style=" font-family:'Liberation Serif Bold'; font-size:11pt; font-weight:400; font-style:normal;">
 | 
			
		||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; color:#00ff40;">This is some </span><span style=" font-family:'MS Shell Dlg 2'; font-size:16pt; color:#a33c3e;">colored text and </span><a href="https://www.google.com"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt; text-decoration: underline; color:#0000ff;">link</span></a></p></body></html></string>
 | 
			
		||||
               </property>
 | 
			
		||||
               <property name="textInteractionFlags">
 | 
			
		||||
                <set>Qt::LinksAccessibleByMouse</set>
 | 
			
		||||
                <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
 | 
			
		||||
               </property>
 | 
			
		||||
              </widget>
 | 
			
		||||
             </item>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
#include "newrecipedialog.h"
 | 
			
		||||
#include "ui_newrecipedialog.h"
 | 
			
		||||
 | 
			
		||||
NewRecipeDialog::NewRecipeDialog(QWidget *parent) :
 | 
			
		||||
	QDialog(parent),
 | 
			
		||||
	ui(new Ui::NewRecipeDialog)
 | 
			
		||||
{
 | 
			
		||||
	ui->setupUi(this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
NewRecipeDialog::~NewRecipeDialog()
 | 
			
		||||
{
 | 
			
		||||
	delete ui;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
#ifndef NEWRECIPEDIALOG_H
 | 
			
		||||
#define NEWRECIPEDIALOG_H
 | 
			
		||||
 | 
			
		||||
#include <QDialog>
 | 
			
		||||
 | 
			
		||||
namespace Ui {
 | 
			
		||||
class NewRecipeDialog;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class NewRecipeDialog : public QDialog
 | 
			
		||||
{
 | 
			
		||||
		Q_OBJECT
 | 
			
		||||
 | 
			
		||||
	public:
 | 
			
		||||
		explicit NewRecipeDialog(QWidget *parent = 0);
 | 
			
		||||
		~NewRecipeDialog();
 | 
			
		||||
 | 
			
		||||
	private:
 | 
			
		||||
		Ui::NewRecipeDialog *ui;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // NEWRECIPEDIALOG_H
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
<?xml version='1.0'?>
 | 
			
		||||
<ui version="4.0">
 | 
			
		||||
 <class>NewRecipeDialog</class>
 | 
			
		||||
 <widget class="QDialog" name="NewRecipeDialog">
 | 
			
		||||
  <property name="geometry">
 | 
			
		||||
   <rect>
 | 
			
		||||
    <x>0</x>
 | 
			
		||||
    <y>0</y>
 | 
			
		||||
    <width>640</width>
 | 
			
		||||
    <height>480</height>
 | 
			
		||||
   </rect>
 | 
			
		||||
  </property>
 | 
			
		||||
  <property name="windowTitle">
 | 
			
		||||
   <string>Dialog</string>
 | 
			
		||||
  </property>
 | 
			
		||||
 </widget>
 | 
			
		||||
 <resources/>
 | 
			
		||||
 <connections/>
 | 
			
		||||
</ui>
 | 
			
		||||
							
								
								
									
										18
									
								
								main.cpp
								
								
								
								
							
							
						
						
									
										18
									
								
								main.cpp
								
								
								
								
							| 
						 | 
				
			
			@ -13,22 +13,16 @@ int main(int argc, char *argv[])
 | 
			
		|||
	//TESTING CODE
 | 
			
		||||
 | 
			
		||||
	RecipeDatabase recipeDB("recipes");
 | 
			
		||||
//	recipeDB.storeIngredient(Ingredient("Apple", "Fruit"));
 | 
			
		||||
//	recipeDB.storeIngredient(Ingredient("Corn", "Vegetable"));
 | 
			
		||||
//	recipeDB.storeIngredient(Ingredient("Lettuce", "Vegetable"));
 | 
			
		||||
//	recipeDB.storeIngredient(Ingredient("Carrot", "Vegetable"));
 | 
			
		||||
 | 
			
		||||
//	recipeDB.executeSQL("SELECT * FROM ingredient;").printData();
 | 
			
		||||
 | 
			
		||||
	//TESTING CODE
 | 
			
		||||
	vector<RecipeIngredient> ri;
 | 
			
		||||
	ri.push_back(RecipeIngredient("flour", "grains", 3.0f, UnitOfMeasure("cup", "cups", "c")));
 | 
			
		||||
	ri.push_back(RecipeIngredient("Baking Powder", "Additives", 1.0f, UnitOfMeasure("Teaspoon", "Teaspoons", "Tsp")));
 | 
			
		||||
//	vector<RecipeIngredient> ri;
 | 
			
		||||
//	ri.push_back(RecipeIngredient("flour", "grains", 3.0f, UnitOfMeasure("cup", "cups", "c")));
 | 
			
		||||
//	ri.push_back(RecipeIngredient("Baking Powder", "Additives", 1.0f, UnitOfMeasure("Teaspoon", "Teaspoons", "Tsp")));
 | 
			
		||||
 | 
			
		||||
	Recipe rec("Example", ri, Instruction("<b>BOLD</b><i>iTaLiCs</i>"), QImage(), vector<RecipeTag>(), QDate::currentDate(), QTime(0, 30), QTime(0, 25), 10.0f);
 | 
			
		||||
//	Recipe rec("Example", ri, Instruction("<b>BOLD</b><i>iTaLiCs</i>"), QImage(), vector<RecipeTag>(), QDate::currentDate(), QTime(0, 30), QTime(0, 25), 10.0f);
 | 
			
		||||
 | 
			
		||||
	bool success = recipeDB.storeRecipe(rec);
 | 
			
		||||
	printf("Storage successful: %d\n", success);
 | 
			
		||||
//	bool success = recipeDB.storeRecipe(rec);
 | 
			
		||||
//	printf("Storage successful: %d\n", success);
 | 
			
		||||
 | 
			
		||||
	Recipe reloadRec = recipeDB.retrieveRecipe("Example");
 | 
			
		||||
	reloadRec.print();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -117,7 +117,6 @@ Recipe RecipeDatabase::retrieveRecipe(string name){
 | 
			
		|||
		fprintf(stderr, "Error: No recipe with name %s found!\n", name.c_str());
 | 
			
		||||
		return Recipe();
 | 
			
		||||
	}
 | 
			
		||||
	t.printData();
 | 
			
		||||
	Recipe r;
 | 
			
		||||
	int id = std::stoi(t.valueAt(0, 0));
 | 
			
		||||
	r.setName(t.valueAt(0, 1));
 | 
			
		||||
| 
						 | 
				
			
			@ -137,7 +136,6 @@ vector<RecipeIngredient> RecipeDatabase::retrieveRecipeIngredients(int recipeId)
 | 
			
		|||
									 "INNER JOIN recipeIngredient "
 | 
			
		||||
									 "ON ingredient.ingredientId = recipeIngredient.ingredientId "
 | 
			
		||||
									 "AND recipeIngredient.recipeId = "+std::to_string(recipeId)+";");
 | 
			
		||||
	t.printData();
 | 
			
		||||
	vector<RecipeIngredient> ings;
 | 
			
		||||
	for (unsigned int row = 0; row < t.rowCount(); row++){
 | 
			
		||||
		RecipeIngredient r(t.valueAt(row, 0), t.valueAt(row, 1), std::stof(t.valueAt(row, 2)), UnitOfMeasure(t.valueAt(row, 3)));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,10 +10,22 @@ int IngredientListModel::rowCount(const QModelIndex &parent) const{
 | 
			
		|||
 | 
			
		||||
QVariant IngredientListModel::data(const QModelIndex &index, int role) const{
 | 
			
		||||
    int row = index.row();
 | 
			
		||||
	RecipeIngredient i = this->ingredients[row];
 | 
			
		||||
 | 
			
		||||
	string displayStr;
 | 
			
		||||
 | 
			
		||||
	if (std::ceil(i.getQuantity()) == i.getQuantity()){
 | 
			
		||||
		//The quantity is an integer and should be casted.
 | 
			
		||||
		displayStr += std::to_string((int)i.getQuantity());
 | 
			
		||||
	} else {
 | 
			
		||||
		displayStr += std::to_string(i.getQuantity());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	displayStr += " " + i.getUnit().getAbbreviation() + " " + i.getName();
 | 
			
		||||
 | 
			
		||||
    switch(role){
 | 
			
		||||
    case Qt::DisplayRole:
 | 
			
		||||
        return QString::fromStdString(ingredients[row].getName());
 | 
			
		||||
		return QString::fromStdString(displayStr);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return QVariant();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,19 +1,21 @@
 | 
			
		|||
#include "unitofmeasure.h"
 | 
			
		||||
 | 
			
		||||
UnitOfMeasure::UnitOfMeasure(string name, string plural, string abbreviation){
 | 
			
		||||
UnitOfMeasure::UnitOfMeasure(string name, string plural, string abbreviation, int type){
 | 
			
		||||
    this->name = name;
 | 
			
		||||
    this->plural = plural;
 | 
			
		||||
	this->abbreviation = abbreviation;
 | 
			
		||||
	this->type = type;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
UnitOfMeasure::UnitOfMeasure(string name){
 | 
			
		||||
	this->name = name;
 | 
			
		||||
	this->plural = name + "s";
 | 
			
		||||
	this->abbreviation = "NULL";
 | 
			
		||||
	this->type = MISC;
 | 
			
		||||
	///TODO: Make actual guessing of this stuff.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
UnitOfMeasure::UnitOfMeasure() : UnitOfMeasure::UnitOfMeasure("", "", ""){
 | 
			
		||||
UnitOfMeasure::UnitOfMeasure() : UnitOfMeasure::UnitOfMeasure("", "", "", MISC){
 | 
			
		||||
    //Default constructor initializes all fields to empty strings.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -26,5 +28,9 @@ string UnitOfMeasure::getNamePlural() const{
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
string UnitOfMeasure::getAbbreviation() const{
 | 
			
		||||
    return this->abbreviation;
 | 
			
		||||
	return this->abbreviation;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int UnitOfMeasure::getType() const{
 | 
			
		||||
	return this->type;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,8 +12,14 @@ using namespace std;
 | 
			
		|||
class UnitOfMeasure
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	//Constants Declarations.
 | 
			
		||||
	static const int MASS = 1;
 | 
			
		||||
	static const int VOLUME = 2;
 | 
			
		||||
	static const int LENGTH = 3;
 | 
			
		||||
	static const int MISC = 4;
 | 
			
		||||
 | 
			
		||||
    //Full constructor.
 | 
			
		||||
    UnitOfMeasure(string name, string plural, string abbreviation);
 | 
			
		||||
	UnitOfMeasure(string name, string plural, string abbreviation, int type);
 | 
			
		||||
	//Attempt to guess unit from just a string.
 | 
			
		||||
	UnitOfMeasure(string name);
 | 
			
		||||
    //Constructor with default values.
 | 
			
		||||
| 
						 | 
				
			
			@ -23,10 +29,13 @@ public:
 | 
			
		|||
    string getName() const;
 | 
			
		||||
    string getNamePlural() const;
 | 
			
		||||
    string getAbbreviation() const;
 | 
			
		||||
	int getType() const;
 | 
			
		||||
private:
 | 
			
		||||
    string name;                //The name of the unit of measure.
 | 
			
		||||
    string plural;              //The plural name.
 | 
			
		||||
    string abbreviation;        //A short version of the unit.
 | 
			
		||||
	int type;					//The type of unit, as one of the constants above.
 | 
			
		||||
	double metricCoefficient;	//The conversion from this unit to the standard metric unit.
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // UNITOFMEASURE_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue