loadCovers funcionando....

falta integrar la ordenaci?n sensible al locale...
This commit is contained in:
Luis Ángel San Martín
2012-05-25 00:07:53 +02:00
parent 3533a9ec64
commit bdef116ad2
8 changed files with 322 additions and 310 deletions

View File

@ -34,7 +34,7 @@ QSqlDatabase DataBaseManagement::loadDatabase(QString path)
{
//TODO check path
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(path);
db.setDatabaseName(path+"/library.ydb");
if (!db.open()) {
/*QMessageBox::critical( 0, QObject::tr("Cannot open database"),
QObject::tr("Unable to establish a database connection.\n"

View File

@ -15,8 +15,8 @@ private:
public:
DataBaseManagement();
TreeModel * newTreeModel(QString path);
QSqlDatabase createDatabase(QString name, QString path);
QSqlDatabase loadDatabase(QString path);
static QSqlDatabase createDatabase(QString name, QString path);
static QSqlDatabase loadDatabase(QString path);
};
#endif

View File

@ -50,10 +50,16 @@
#include "treeitem.h"
#include "treemodel.h"
#include "data_base_management.h"
TreeModel::TreeModel(QObject *parent)
: QAbstractItemModel(parent)
{
}
//! [0]
TreeModel::TreeModel( QSqlQuery &sqlquery, QObject *parent)
: QAbstractItemModel(parent)
: QAbstractItemModel(parent),rootItem(0)
{
//lo m<>s probable es que el nodo ra<72>z no necesite tener informaci<63>n
QList<QVariant> rootData;
@ -87,6 +93,9 @@ QVariant TreeModel::data(const QModelIndex &index, int role) const
if (!index.isValid())
return QVariant();
if (role == Qt::DecorationRole)
return QVariant(QIcon(":/images/folder.png"));
if (role != Qt::DisplayRole)
return QVariant();
@ -171,6 +180,25 @@ int TreeModel::rowCount(const QModelIndex &parent) const
}
//! [8]
void TreeModel::setupModelData(QString path)
{
if(rootItem == 0)
delete rootItem; //TODO comprobar que se libera bien la memoria
//inicializar el nodo ra<72>z
QList<QVariant> rootData;
rootData << "root"; //id 0, padre 0, title "root" (el id, y el id del padre van a ir en la clase TreeItem)
rootItem = new TreeItem(rootData);
rootItem->id = 0;
//cargar la base de datos
_database = DataBaseManagement::loadDatabase(path);
//crear la consulta
QSqlQuery selectQuery("select * from folder order by parentId,name",_database);
setupModelData(selectQuery,rootItem);
}
void TreeModel::setupModelData(QSqlQuery &sqlquery, TreeItem *parent)
{
//64 bits para la primary key, es decir la misma precisi<73>n que soporta sqlit 2^64
@ -189,4 +217,9 @@ void TreeModel::setupModelData(QSqlQuery &sqlquery, TreeItem *parent)
//se a<>ade el item al map, de forma que se pueda encontrar como padre en siguientes iteraciones
items.insert(item->id,item);
}
}
QSqlDatabase & TreeModel::getDatabase()
{
return _database;
}

View File

@ -45,6 +45,7 @@
#include <QModelIndex>
#include <QVariant>
#include <QSqlQuery>
#include <QSqlDatabase>
class TreeItem;
@ -54,6 +55,7 @@ class TreeModel : public QAbstractItemModel
Q_OBJECT
public:
TreeModel(QObject *parent = 0);
TreeModel( QSqlQuery &sqlquery, QObject *parent = 0);
~TreeModel();
@ -66,11 +68,14 @@ public:
QModelIndex parent(const QModelIndex &index) const;
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
void setupModelData(QString path);
QSqlDatabase & getDatabase();
private:
void setupModelData( QSqlQuery &sqlquery, TreeItem *parent);
TreeItem *rootItem; //el <20>rbol
QSqlDatabase _database;
};
//! [0]