Luis Ángel San Martín 2bc1c4f4c3 a?adida la capacidad de ocultar completamente el "comic flow", ha sido necesario modificar el c?digo de pictureflow para evitar un error inesperado al renderizar
completada la b?squeda con el soporte para incluir el nombre de los archivos, aunque falta por a?adir el scroll autom?tico

arreglada la actualizaci?n de las librer?as, ahora se a?ade el nodo ra?z a la tabla folder, el nodo ra?z ahora tiene id=1 y padre 1, se debe excluir de todas las b?squedas
2012-06-03 16:21:01 +02:00

72 lines
2.0 KiB
C++

#include "folder.h"
#include <QSqlQuery>
#include <QSqlRecord>
#include <QVariant>
qulonglong Folder::insert(QSqlDatabase & db)
{
QSqlQuery query(db);
query.prepare("INSERT INTO folder (parentId, name, path) "
"VALUES (:parentId, :name, :path)");
query.bindValue(":parentId", parentId);
query.bindValue(":name", name);
query.bindValue(":path", path);
query.exec();
return query.lastInsertId().toLongLong();
}
QList<LibraryItem *> Folder::getFoldersFromParent(qulonglong parentId, QSqlDatabase & db)
{
QList<LibraryItem *> list;
QSqlQuery selectQuery(db); //TODO check
selectQuery.prepare("SELECT * FROM folder WHERE parentId = :parentId and id <> 1");
selectQuery.bindValue(":parentId", parentId);
selectQuery.exec();
Folder * currentItem;
while (selectQuery.next())
{
QList<QVariant> data;
QSqlRecord record = selectQuery.record();
for(int i=0;i<record.count();i++)
data << record.value(i);
//TODO sort by sort indicator and name
currentItem = new Folder(record.value(0).toLongLong(),record.value(1).toLongLong(),record.value(2).toString(),record.value(2).toString());
int lessThan = 0;
if(list.isEmpty())
list.append(currentItem);
else
{
Folder * last = static_cast<Folder *>(list.back());
QString nameLast = last->name; //TODO usar info name si está disponible, sino el nombre del fichero.....
QString nameCurrent = currentItem->name;
QList<LibraryItem *>::iterator i;
i = list.end();
i--;
while ((0 > (lessThan = nameCurrent.localeAwareCompare(nameLast))) && i != list.begin())
{
i--;
nameLast = (*i)->name;
}
if(lessThan>0) //si se ha encontrado un elemento menor que current, se inserta justo después
list.insert(++i,currentItem);
else
list.insert(i,currentItem);
}
}
return list;
}
void Folder::removeFromDB(QSqlDatabase & db)
{
QSqlQuery query(db);
query.prepare("DELETE FROM folder WHERE id = :id");
query.bindValue(":id", id);
query.exec();
}