Git commit 8475c7aafb3d05f6e91a882be3574b2a5bf67c80 by Jos=C3=A9 Manuel San= tamar=C3=ADa Lema. Committed on 12/07/2016 at 07:22. Pushed by joselema into branch 'master'. Allow RecipeDB to use KreAllIngHeadersModels M +46 -0 src/backends/qsqlrecipedb.cpp M +2 -0 src/backends/qsqlrecipedb.h M +2 -1 src/backends/recipedb.cpp M +6 -0 src/backends/recipedb.h http://commits.kde.org/krecipes/8475c7aafb3d05f6e91a882be3574b2a5bf67c80 diff --git a/src/backends/qsqlrecipedb.cpp b/src/backends/qsqlrecipedb.cpp index c30bd76..87bfa37 100644 --- a/src/backends/qsqlrecipedb.cpp +++ b/src/backends/qsqlrecipedb.cpp @@ -16,6 +16,7 @@ #include "datablocks/rating.h" #include "datablocks/weight.h" #include "models/kreallingredientsmodels.h" +#include "models/kreallingheadersmodels.h" #include "models/kresinglecolumnproxymodel.h" #include "propertycalculator.h" = @@ -224,6 +225,51 @@ KreAllIngredientsModels * QSqlRecipeDB::allIngredients= Models() return m_allIngredientsModels; } = +void QSqlRecipeDB::loadAllIngHeadersModels() +{ + if ( !m_allIngHeadersModels ) { + m_allIngHeadersModels =3D new KreAllIngHeadersModels( this ); + } + + QStandardItemModel * sourceModel =3D m_allIngHeadersModels->sourceModel(); + KreSingleColumnProxyModel * ingHeaderNameModel =3D + m_allIngHeadersModels->ingHeaderNameModel(); + KCompletion * ingHeaderNameCompletion =3D + m_allIngHeadersModels->ingHeaderNameCompletion(); + + QSqlQuery query( "SELECT id,name FROM ingredient_groups", *database); + query.exec(); + + CHECK_QUERY(query,return;) + + //Pre-allocate memory for model + sourceModel->setRowCount( getCount("ingredient_groups") ); + sourceModel->setColumnCount( 2 ); + + int row =3D 0; + QModelIndex index; + while( query.next() ) { + index =3D sourceModel->index( row, 0 ); + sourceModel->setData( index, query.value(0) ); + index =3D sourceModel->index( row, 1 ); + sourceModel->setData( index, query.value(1) ); + ingHeaderNameCompletion->addItem( query.value(1).toString() ); + ++row; + } + + ingHeaderNameModel->sort(0); + ingHeaderNameModel->setDynamicSortFilter( true ); +} + +KreAllIngHeadersModels * QSqlRecipeDB::allIngHeadersModels() +{ + if ( !m_allIngHeadersModels ) { + loadAllIngHeadersModels(); + } + return m_allIngHeadersModels; +} + + void QSqlRecipeDB::transaction() { if ( m_transactionsEnabled ) { diff --git a/src/backends/qsqlrecipedb.h b/src/backends/qsqlrecipedb.h index da8013d..472e812 100644 --- a/src/backends/qsqlrecipedb.h +++ b/src/backends/qsqlrecipedb.h @@ -97,6 +97,8 @@ public: = void loadAllIngredientsModels(); KreAllIngredientsModels * allIngredientsModels(); + void loadAllIngHeadersModels(); + KreAllIngHeadersModels * allIngHeadersModels(); = virtual void transaction(); virtual void commit(); diff --git a/src/backends/recipedb.cpp b/src/backends/recipedb.cpp index d36bfcd..bca2dd6 100644 --- a/src/backends/recipedb.cpp +++ b/src/backends/recipedb.cpp @@ -61,7 +61,8 @@ struct ingredient_nutrient_data = RecipeDB::RecipeDB() : QObject(), m_categoryCache(0), haltOperation(false), process(NULL), - m_allIngredientsModels(0) + m_allIngredientsModels(0), + m_allIngHeadersModels(0) { new KrecipesdbAdaptor( this ); QDBusConnection::sessionBus().registerObject("/KrecipesDB", this); diff --git a/src/backends/recipedb.h b/src/backends/recipedb.h index 945146f..2ff4599 100644 --- a/src/backends/recipedb.h +++ b/src/backends/recipedb.h @@ -47,6 +47,7 @@ class Weight; typedef QList WeightList; = class KreAllIngredientsModels; +class KreAllIngHeadersModels; = = class RecipeDB: public QObject @@ -171,8 +172,12 @@ public: /** Convenience method. Calls the above with arguments from KConfig. */ static RecipeDB* createDatabase(); = + //Database models, they are updated automatically on database changes + //via signals/slots connections between themselves and RecipeDB virtual void loadAllIngredientsModels() =3D 0; virtual KreAllIngredientsModels * allIngredientsModels() =3D 0; + virtual void loadAllIngHeadersModels() =3D 0; + virtual KreAllIngHeadersModels * allIngHeadersModels() =3D 0; = //FIXME: Actually this functions shouldn't be exposed here since RecipeDB= is suposed //to represent a generic database which may be not be based on SQL. Not a= big problem @@ -403,6 +408,7 @@ protected: CategoryTree *m_categoryCache; = KreAllIngredientsModels * m_allIngredientsModels; + KreAllIngHeadersModels * m_allIngHeadersModels; = private: QIODevice * m_dumpFile;