From 0f3219e77f65a4c3d67f34034e67775a32d2aacb Mon Sep 17 00:00:00 2001 From: Arno Date: Fri, 16 Aug 2013 19:36:09 +0200 Subject: Fix NewPicsDialog + NewPicFilesModel * remove some of the Transaction madness * make it possible to archive pics again It's far from finished.... --- newpicsdialog.cpp | 47 ++++++++++++++++------------------------------- 1 file changed, 16 insertions(+), 31 deletions(-) (limited to 'newpicsdialog.cpp') diff --git a/newpicsdialog.cpp b/newpicsdialog.cpp index 31e14c4..5f4009b 100644 --- a/newpicsdialog.cpp +++ b/newpicsdialog.cpp @@ -24,14 +24,7 @@ NewPicsDialog::NewPicsDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(paren } void NewPicsDialog::setupDlg(){ - //setup database mDb = QSqlDatabase::database("treedb"); - mAddFileQ = new QSqlQuery(mDb); - mAddFileQ->prepare("INSERT INTO pics (tfilename, cmd5sum, isize, tformat) VALUES(:fn, :md5, :size, :format)"); - mAddMappingQ = new QSqlQuery(mDb); - mAddMappingQ->prepare("INSERT INTO pics_mappings(ipics_id, imappings_parents_id) VALUES(:picid, :mapid)"); - - //files widget mFilesWidget = new QWidget; mFilesV = new SmTreeView; mFilesProxy = new QSortFilterProxyModel(this); @@ -134,36 +127,28 @@ void NewPicsDialog::accept(){ if(files.isEmpty()){ return QDialog::accept(); } - QList parentIds = mMappingEditWidget->model()->columnValues(MappingTreeResultModel::MappingId); - mDb.transaction(); + QList mappingParentsIds = mMappingEditWidget->model()->columnValues(MappingTreeResultModel::MappingId); + QSqlQuery addFileQ(mDb); + addFileQ.prepare("INSERT INTO pics (tfilename, cmd5sum, isize, tformat) VALUES(:fn, :md5, :size, :format)"); + QSqlQuery addMappingQ(mDb); + addMappingQ.prepare("INSERT INTO pics_mappings(ipics_id, imappings_parents_id) VALUES((SELECT ipicsid FROM pics where cmd5sum = :md5), :mapid)"); foreach(FileData d, files){ - mAddFileQ->bindValue(":fn", d.fileName); - mAddFileQ->bindValue(":md5", d.md5sum); - mAddFileQ->bindValue(":size", d.size); - mAddFileQ->bindValue(":format", d.mimeType); - if(mAddFileQ->exec()){ - QSqlQuery curPicIdQ("SELECT currval('pics_ipicsid__seq')", mDb); - QVariant picId; - while(curPicIdQ.next()){ - picId = curPicIdQ.value(0); - } - if(!picId.isValid()){ - mDb.rollback(); - return; - } - foreach(QVariant myId, parentIds){ - mAddMappingQ->bindValue(":picid", picId); - mAddMappingQ->bindValue(":mapid", myId); - if(!mAddMappingQ->exec()){ - mDb.rollback(); + addFileQ.bindValue(":fn", d.fileName); + addFileQ.bindValue(":md5", d.md5sum); + addFileQ.bindValue(":size", d.size); + addFileQ.bindValue(":format", d.mimeType); + if(addFileQ.exec()){ + foreach(QVariant mpid, mappingParentsIds){ + addMappingQ.bindValue(":mapid", mpid); + addMappingQ.bindValue(":md5", d.md5sum); + if(!addMappingQ.exec()){ return; } } + Helper::moveToArchive(d.fullPath, d.md5sum); + mFilesModel->clear(); } - Helper::moveToArchive(d.fullPath, d.md5sum); } - mDb.commit(); - mFilesModel->clear(); return QDialog::accept(); } -- cgit v1.2.3-70-g09d2