summaryrefslogtreecommitdiffstats
path: root/pictureswidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pictureswidget.cpp')
-rw-r--r--pictureswidget.cpp58
1 files changed, 36 insertions, 22 deletions
diff --git a/pictureswidget.cpp b/pictureswidget.cpp
index 8492dd2..f274425 100644
--- a/pictureswidget.cpp
+++ b/pictureswidget.cpp
@@ -245,14 +245,14 @@ void PictureView::setFileMappings(){
}
PicFilesModel::PicFilesModel(const QStringList &headers, QObject *parent) : SmTreeModel(headers, parent) {
+ //conjure up model
+ mMappingTreeModel = static_cast<MappingTreeModel*>(SmGlobals::instance()->model("MappingTree"));
+
//setup database
mDb = QSqlDatabase::database("treedb");
- mPopulateQ = new QSqlQuery(mDb);
- mPopulateQ->prepare("SELECT pics.tfilename, pics.isize, pics.tformat, pics.dtadded, pics.cmd5sum, pics.ipicsid FROM pics, pics_mappings WHERE pics_mappings.imapping_id = :mapid AND pics_mappings.ipics_id = pics.ipicsid ORDER BY pics.tfilename");
+ mPopulateQS = QString("SELECT DISTINCT(pics.ipicsid), pics.tfilename, pics.isize, pics.tformat, pics.dtadded, pics.cmd5sum FROM pics, pics_mappings WHERE pics_mappings.imapping_id IN (%1) AND pics_mappings.ipics_id = pics.ipicsid ORDER BY pics.tfilename");
mDeleteFileQ = new QSqlQuery(mDb);
mDeleteFileQ->prepare("DELETE FROM pics WHERE ipicsid = :id");
- mCurMappingIdsQ = new QSqlQuery(mDb);
- mCurMappingIdsQ->prepare("SELECT DISTINCT(pics_mappings.imapping_id) FROM pics_mappings, pics WHERE pics_mappings.ipics_id IN (SELECT ipicsid FROM pics, pics_mappings WHERE pics_mappings.imapping_id = :mid AND pics_mappings.ipics_id = pics.ipicsid)");
mCurMappingIdsQS = QString("SELECT DISTINCT(pics_mappings.imapping_id) FROM pics_mappings, pics WHERE pics_mappings.ipics_id IN (%1)");
mDeleteMappingsQ = new QSqlQuery(mDb);
mDeleteMappingsQ->prepare("DELETE FROM pics_mappings WHERE ipics_id = :id");
@@ -262,6 +262,22 @@ PicFilesModel::PicFilesModel(const QStringList &headers, QObject *parent) : SmTr
mAllFilesQ->prepare("SELECT pics.tfilename, pics.isize, pics.tformat, pics.dtadded, pics.cmd5sum, pics.ipicsid FROM pics");
}
+PicFilesModel::~PicFilesModel(){
+ delete mDeleteFileQ;
+ delete mDeleteMappingsQ;
+ delete mAddMappingsQ;
+ delete mAllFilesQ;
+ mDb = QSqlDatabase::database();
+}
+
+void PicFilesModel::setMapping(int mappingId){
+ QList<QVariant> ids = mMappingTreeModel->childList(mappingId, MappingTreeModel::Id);
+ mMappingIds.clear();
+ foreach(QVariant i, ids){
+ mMappingIds << i.toInt();
+ }
+}
+
QList<int> PicFilesModel::mappingIds(const QList<QVariant> &fileIds){
QList<int> retval;
QStringList ids;
@@ -384,23 +400,21 @@ bool PicFilesModel::changeMappings(const QList<int> &fileIds, const QList<int> &
void PicFilesModel::populate(){
SmTreeItem *root = new SmTreeItem(NumFields);
- mPopulateQ->bindValue(":mapid", mMappingId);
- if(mPopulateQ->exec()){
- while(mPopulateQ->next()){
- QList<QVariant> data;
- data << mPopulateQ->value(0) << mPopulateQ->value(1) << mPopulateQ->value(2); // Filename, size and Mime type
- data << Helper::createArchivePath(mPopulateQ->value(0).toString(), mPopulateQ->value(4).toString()); // full path;
- data << mPopulateQ->value(5) << mPopulateQ->value(3) << mPopulateQ->value(4); //Id, added and md5
- QLocale l;
- data << l.toString(mPopulateQ->value(1).toInt());
- SmTreeItem *child = new SmTreeItem(data, root);
- root->appendChild(child);
- }
- mCurMappingsIds.clear();
- mCurMappingIdsQ->bindValue(":mid", mMappingId);
- while(mCurMappingIdsQ->next()){
- mCurMappingsIds << mCurMappingIdsQ->value(0).toInt();
- }
- setRoot(root);
+ QStringList idList;
+ foreach(int id, mMappingIds){
+ idList << QString::number(id);
+ }
+ QString query = mPopulateQS.arg(idList.join(","));
+ QSqlQuery q(query, mDb);
+ while(q.next()){
+ QList<QVariant> data;
+ data << q.value(1) << q.value(2) << q.value(3); // Filename, size and Mime type
+ data << Helper::createArchivePath(q.value(1).toString(), q.value(5).toString()); // full path;
+ data << q.value(0) << q.value(4) << q.value(5); //Id, added and md5
+ QLocale l;
+ data << l.toString(q.value(2).toInt()); //sizedisplay
+ SmTreeItem *child = new SmTreeItem(data, root);
+ root->appendChild(child);
}
+ setRoot(root);
}