Added table model, having trouble getting it to work.
This commit is contained in:
parent
cc802e5d0d
commit
17cbeb0d1c
|
@ -33,7 +33,8 @@ SOURCES += model/recipe/instruction.cpp \
|
||||||
gui/newDialogs/newunitdialog.cpp \
|
gui/newDialogs/newunitdialog.cpp \
|
||||||
utils/aspectratiopixmaplabel.cpp \
|
utils/aspectratiopixmaplabel.cpp \
|
||||||
utils/stringutils.cpp \
|
utils/stringutils.cpp \
|
||||||
gui/openrecipedialog.cpp
|
gui/openrecipedialog.cpp \
|
||||||
|
model/recipe/recipetablemodel.cpp
|
||||||
|
|
||||||
HEADERS += model/recipe/instruction.h \
|
HEADERS += model/recipe/instruction.h \
|
||||||
model/recipe/recipe.h \
|
model/recipe/recipe.h \
|
||||||
|
@ -56,7 +57,8 @@ HEADERS += model/recipe/instruction.h \
|
||||||
gui/newDialogs/newunitdialog.h \
|
gui/newDialogs/newunitdialog.h \
|
||||||
utils/aspectratiopixmaplabel.h \
|
utils/aspectratiopixmaplabel.h \
|
||||||
utils/stringutils.h \
|
utils/stringutils.h \
|
||||||
gui/openrecipedialog.h
|
gui/openrecipedialog.h \
|
||||||
|
model/recipe/recipetablemodel.h
|
||||||
|
|
||||||
LIBS += -ldl \
|
LIBS += -ldl \
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,22 @@ OpenRecipeDialog::OpenRecipeDialog(QWidget *parent) :
|
||||||
ui(new Ui::OpenRecipeDialog)
|
ui(new Ui::OpenRecipeDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
ui->recipeTableView->setModel(&this->recipeTableModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
OpenRecipeDialog::OpenRecipeDialog(RecipeDatabase *recipeDB, QWidget *parent) : OpenRecipeDialog(parent){
|
||||||
|
this->recipeDB = recipeDB;
|
||||||
|
this->populateRecipesTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
OpenRecipeDialog::~OpenRecipeDialog()
|
OpenRecipeDialog::~OpenRecipeDialog()
|
||||||
{
|
{
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OpenRecipeDialog::populateRecipesTable(){
|
||||||
|
vector<Recipe> recipes = this->recipeDB->retrieveAllRecipes();
|
||||||
|
this->recipeTableModel.setRecipes(recipes);
|
||||||
|
ui->recipeTableView->update(QModelIndex());
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
|
||||||
|
#include "model/database/recipedatabase.h"
|
||||||
|
#include "model/recipe/recipetablemodel.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class OpenRecipeDialog;
|
class OpenRecipeDialog;
|
||||||
}
|
}
|
||||||
|
@ -13,10 +16,15 @@ class OpenRecipeDialog : public QDialog
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit OpenRecipeDialog(QWidget *parent = 0);
|
explicit OpenRecipeDialog(QWidget *parent = 0);
|
||||||
|
OpenRecipeDialog(RecipeDatabase *recipeDB, QWidget *parent = 0);
|
||||||
~OpenRecipeDialog();
|
~OpenRecipeDialog();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::OpenRecipeDialog *ui;
|
Ui::OpenRecipeDialog *ui;
|
||||||
|
RecipeDatabase *recipeDB;
|
||||||
|
RecipeTableModel recipeTableModel;
|
||||||
|
|
||||||
|
void populateRecipesTable();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // OPENRECIPEDIALOG_H
|
#endif // OPENRECIPEDIALOG_H
|
||||||
|
|
|
@ -155,6 +155,15 @@ Recipe RecipeDatabase::retrieveRecipe(string name){
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vector<Recipe> RecipeDatabase::retrieveAllRecipes(){
|
||||||
|
ResultTable t = this->selectFrom("recipe", "name", "ORDER BY name");
|
||||||
|
vector<Recipe> recipes;
|
||||||
|
for (unsigned int row = 0; row < t.rowCount(); row++){
|
||||||
|
recipes.push_back(this->retrieveRecipe(t.valueAt(row, 0)));
|
||||||
|
}
|
||||||
|
return recipes;
|
||||||
|
}
|
||||||
|
|
||||||
vector<RecipeIngredient> RecipeDatabase::retrieveRecipeIngredients(int recipeId){
|
vector<RecipeIngredient> RecipeDatabase::retrieveRecipeIngredients(int recipeId){
|
||||||
ResultTable t = this->executeSQL("SELECT ingredient.name, ingredient.foodGroup, "//0, 1
|
ResultTable t = this->executeSQL("SELECT ingredient.name, ingredient.foodGroup, "//0, 1
|
||||||
"recipeIngredient.quantity, recipeIngredient.unitName, recipeIngredient.comment,"//2, 3, 4
|
"recipeIngredient.quantity, recipeIngredient.unitName, recipeIngredient.comment,"//2, 3, 4
|
||||||
|
|
|
@ -32,6 +32,7 @@ class RecipeDatabase : public Database
|
||||||
|
|
||||||
//Retrieval.
|
//Retrieval.
|
||||||
Recipe retrieveRecipe(string name);
|
Recipe retrieveRecipe(string name);
|
||||||
|
vector<Recipe> retrieveAllRecipes();
|
||||||
vector<RecipeIngredient> retrieveRecipeIngredients(int recipeId);
|
vector<RecipeIngredient> retrieveRecipeIngredients(int recipeId);
|
||||||
vector<Ingredient> retrieveAllIngredients();
|
vector<Ingredient> retrieveAllIngredients();
|
||||||
vector<UnitOfMeasure> retrieveAllUnitsOfMeasure();
|
vector<UnitOfMeasure> retrieveAllUnitsOfMeasure();
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
#include "recipetablemodel.h"
|
||||||
|
|
||||||
|
RecipeTableModel::RecipeTableModel()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
RecipeTableModel::RecipeTableModel(vector<Recipe> recipes){
|
||||||
|
this->setRecipes(recipes);
|
||||||
|
}
|
||||||
|
|
||||||
|
int RecipeTableModel::rowCount(const QModelIndex &parent) const{
|
||||||
|
Q_UNUSED(parent);
|
||||||
|
return this->recipes.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
int RecipeTableModel::columnCount(const QModelIndex &parent) const{
|
||||||
|
Q_UNUSED(parent);
|
||||||
|
return 2;//FIX THIS TO BE MORE ADAPTIVE EVENTUALLY.
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant RecipeTableModel::data(const QModelIndex &index, int role) const{
|
||||||
|
int row = index.row();
|
||||||
|
int col = index.column();
|
||||||
|
Recipe r = this->recipes[row];
|
||||||
|
|
||||||
|
if (role == Qt::DisplayRole){
|
||||||
|
switch(col){
|
||||||
|
case 0:
|
||||||
|
return QString::fromStdString(r.getName());
|
||||||
|
case 1:
|
||||||
|
return QString::fromStdString(r.getCreatedDate().toString().toStdString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant RecipeTableModel::headerData(int section, Qt::Orientation orientation, int role) const{
|
||||||
|
if (role != Qt::DisplayRole){
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
if (orientation == Qt::Horizontal){
|
||||||
|
switch (section){
|
||||||
|
case 0:
|
||||||
|
return "Name";
|
||||||
|
case 1:
|
||||||
|
return "Created On";
|
||||||
|
}
|
||||||
|
} else if (orientation == Qt::Vertical){
|
||||||
|
return QString::fromStdString(std::to_string(section));
|
||||||
|
}
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RecipeTableModel::setRecipes(vector<Recipe> recipes){
|
||||||
|
this->recipes = recipes;
|
||||||
|
emit dataChanged(createIndex(0, 0), createIndex(this->recipes.size()-1, 2));
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
#ifndef RECIPETABLEMODEL_H
|
||||||
|
#define RECIPETABLEMODEL_H
|
||||||
|
|
||||||
|
#include <QAbstractTableModel>
|
||||||
|
|
||||||
|
#include "model/recipe/recipe.h"
|
||||||
|
|
||||||
|
class RecipeTableModel : public QAbstractTableModel
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RecipeTableModel();
|
||||||
|
RecipeTableModel(vector<Recipe> recipes);
|
||||||
|
|
||||||
|
//Overridden methods.
|
||||||
|
int rowCount(const QModelIndex &parent = QModelIndex()) const;
|
||||||
|
int columnCount(const QModelIndex &parent = QModelIndex()) const;
|
||||||
|
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
|
||||||
|
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
|
||||||
|
|
||||||
|
//Normal methods.
|
||||||
|
void setRecipes(vector<Recipe> recipes);
|
||||||
|
|
||||||
|
private:
|
||||||
|
vector<Recipe> recipes;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // RECIPETABLEMODEL_H
|
|
@ -77,3 +77,9 @@ void MainWindow::on_newButton_clicked(){
|
||||||
this->loadFromRecipe(r);
|
this->loadFromRecipe(r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_openButton_clicked(){
|
||||||
|
OpenRecipeDialog d(this->recipeDB, this);
|
||||||
|
d.show();
|
||||||
|
d.exec();
|
||||||
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "model/recipe/recipe.h"
|
#include "model/recipe/recipe.h"
|
||||||
#include "model/recipe/ingredients/ingredientlistmodel.h"
|
#include "model/recipe/ingredients/ingredientlistmodel.h"
|
||||||
#include "gui/newrecipedialog.h"
|
#include "gui/newrecipedialog.h"
|
||||||
|
#include "gui/openrecipedialog.h"
|
||||||
#include "utils/stringutils.h"
|
#include "utils/stringutils.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -30,6 +31,8 @@ public:
|
||||||
private slots:
|
private slots:
|
||||||
void on_newButton_clicked();
|
void on_newButton_clicked();
|
||||||
|
|
||||||
|
void on_openButton_clicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
RecipeDatabase *recipeDB;
|
RecipeDatabase *recipeDB;
|
||||||
|
|
Loading…
Reference in New Issue