summaryrefslogtreecommitdiffstats
path: root/pictureswidget.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-03-17 11:48:24 +0100
committerArno <am@disconnect.de>2012-03-17 11:48:24 +0100
commit6b8c2cf35525c62b1e7a0279a7ebaa175848d268 (patch)
tree762291d670475cf7dcd95d8a2f2fc67ac63ea73b /pictureswidget.cpp
parent77645a5dcfcb968cf5a3e4d43b4e93c12710f79e (diff)
downloadSheMov-6b8c2cf35525c62b1e7a0279a7ebaa175848d268.tar.gz
SheMov-6b8c2cf35525c62b1e7a0279a7ebaa175848d268.tar.bz2
SheMov-6b8c2cf35525c62b1e7a0279a7ebaa175848d268.zip
Make nodes with children selectable in picture widget
This was a tough one. Lost in recursion. When selecting nodes with children in the picture widget, all files having this node as mapping parent are shown. Had to make some changes to SmTreeModel::findRecursive for this. I hope I didn't break anything. If I did, I'll fix it :) Also disposed of some comments and unused member variables.
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);
}