From f5fda9b530941d57c2258b4c2bcb4c1021debd95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Sat, 26 Aug 2017 16:17:17 +0200 Subject: [PATCH] Fixed db Fixed data base info retrieving in FolderModel. --- YACReaderLibrary/db/folder_model.cpp | 68 ++++++++++++++++++---------- 1 file changed, 45 insertions(+), 23 deletions(-) diff --git a/YACReaderLibrary/db/folder_model.cpp b/YACReaderLibrary/db/folder_model.cpp index 6b5886a7..a2d4b1d6 100644 --- a/YACReaderLibrary/db/folder_model.cpp +++ b/YACReaderLibrary/db/folder_model.cpp @@ -317,19 +317,27 @@ void FolderModel::setupModelData(QSqlQuery &sqlquery, FolderItem *parent) //se a�ade el nodo 0 items.insert(parent->id,parent); + QSqlRecord record = sqlquery.record(); + + int name = record.indexOf("name"); + int path = record.indexOf("path"); + int finished = record.indexOf("finished"); + int completed = record.indexOf("completed"); + int id = record.indexOf("id"); + int parentId = record.indexOf("parentId"); + while (sqlquery.next()) { QList data; - QSqlRecord record = sqlquery.record(); - data << record.value("name").toString(); - data << record.value("path").toString(); - data << record.value("finished").toBool(); - data << record.value("completed").toBool(); + data << sqlquery.value(name).toString(); + data << sqlquery.value(path).toString(); + data << sqlquery.value(finished).toBool(); + data << sqlquery.value(completed).toBool(); FolderItem * item = new FolderItem(data); - item->id = record.value("id").toULongLong(); + item->id = sqlquery.value(id).toULongLong(); //la inserci�n de hijos se hace de forma ordenada - FolderItem * parent = items.value(record.value("parentId").toULongLong()); + FolderItem * parent = items.value(sqlquery.value(parentId).toULongLong()); //if(parent !=0) //TODO if parent==0 the parent of item was removed from the DB and delete on cascade didn't work, ERROR. parent->appendChild(item); //se a�ade el item al map, de forma que se pueda encontrar como padre en siguientes iteraciones @@ -341,20 +349,27 @@ void FolderModel::updateFolderModelData(QSqlQuery &sqlquery, FolderItem *parent) { Q_UNUSED(parent); - while (sqlquery.next()) { - QLOG_DEBUG () << "habia next"; - QList data; - QSqlRecord record = sqlquery.record(); + QSqlRecord record = sqlquery.record(); - data << record.value("name").toString(); - data << record.value("path").toString(); - data << record.value("finished").toBool(); - data << record.value("completed").toBool(); + int name = record.indexOf("name"); + int path = record.indexOf("path"); + int finished = record.indexOf("finished"); + int completed = record.indexOf("completed"); + int id = record.indexOf("id"); + int parentId = record.indexOf("parentId"); + + while (sqlquery.next()) { + QList data; + + data << sqlquery.value(name).toString(); + data << sqlquery.value(path).toString(); + data << sqlquery.value(finished).toBool(); + data << sqlquery.value(completed).toBool(); FolderItem * item = new FolderItem(data); - item->id = record.value("id").toULongLong(); + item->id = sqlquery.value(id).toULongLong(); //la inserci�n de hijos se hace de forma ordenada - FolderItem * parent = items.value(record.value("parentId").toULongLong()); + FolderItem * parent = items.value(sqlquery.value(parentId).toULongLong()); if(parent !=0) //TODO if parent==0 the parent of item was removed from the DB and delete on cascade didn't work, ERROR. parent->appendChild(item); //se a�ade el item al map, de forma que se pueda encontrar como padre en siguientes iteraciones @@ -727,21 +742,28 @@ void FolderModelProxy::setupFilteredModelData(QSqlQuery &sqlquery, FolderItem *p //se a�ade el nodo 0 al modelo que representa el arbol de elementos que cumplen con el filtro filteredItems.insert(parent->id,parent); + QSqlRecord record = sqlquery.record(); + + int name = record.indexOf("name"); + int path = record.indexOf("path"); + int finished = record.indexOf("finished"); + int completed = record.indexOf("completed"); + int parentIdIndex = record.indexOf("parentId"); + while (sqlquery.next()) { //se procesan todos los folders que cumplen con el filtro //datos de la base de datos QList data; - QSqlRecord record = sqlquery.record(); - data << record.value("name").toString(); - data << record.value("path").toString(); - data << record.value("finished").toBool(); - data << record.value("completed").toBool(); + data << sqlquery.value(name).toString(); + data << sqlquery.value(path).toString(); + data << sqlquery.value(finished).toBool(); + data << sqlquery.value(completed).toBool(); FolderItem * item = new FolderItem(data); item->id = sqlquery.value(0).toULongLong(); //id del padre - quint64 parentId = record.value("parentId").toULongLong(); + quint64 parentId = sqlquery.value(parentIdIndex).toULongLong(); //se a�ade el item al map, de forma que se pueda encontrar como padre en siguientes iteraciones if(!filteredItems.contains(item->id))