summaryrefslogtreecommitdiffstats
path: root/picfilesmodel.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-08-22 07:43:20 +0200
committerArno <am@disconnect.de>2013-08-22 07:43:20 +0200
commit369c14264c664b38049ac081cf60b8485a4042cb (patch)
tree5e77075e82d5d0caf7f0a7743a9a69f42ac9df9e /picfilesmodel.cpp
parentcd2d39368e2319eb7c949439e9688bf8319ec0a3 (diff)
downloadSheMov-369c14264c664b38049ac081cf60b8485a4042cb.tar.gz
SheMov-369c14264c664b38049ac081cf60b8485a4042cb.tar.bz2
SheMov-369c14264c664b38049ac081cf60b8485a4042cb.zip
Give Pictures some love!
* Show and archive size of pictures * Fix SqlQueries in PicFilesModel: removeFiles and changeMappings * use delegate in PictureView
Diffstat (limited to 'picfilesmodel.cpp')
-rw-r--r--picfilesmodel.cpp56
1 files changed, 32 insertions, 24 deletions
diff --git a/picfilesmodel.cpp b/picfilesmodel.cpp
index cb54503..21344dc 100644
--- a/picfilesmodel.cpp
+++ b/picfilesmodel.cpp
@@ -21,15 +21,8 @@ PicFilesModel::PicFilesModel(const QStringList &headers, QObject *parent) : SmTr
//setup database
mDb = QSqlDatabase::database("treedb");
- mPopulateQS = QString("SELECT DISTINCT(pics.ipicsid), pics.tfilename, pics.isize, pics.tformat, pics.dtadded, pics.cmd5sum FROM pics, pics_mappings WHERE pics_mappings.imappings_parents_id IN (%1) 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, pics.cpicsize FROM pics, pics_mappings WHERE pics_mappings.imappings_parents_id IN (%1) AND pics_mappings.ipics_id = pics.ipicsid ORDER BY pics.tfilename");
mMappingsQS = QString("SELECT DISTINCT(pics_mappings.imappings_parents_id) FROM pics_mappings, pics WHERE pics_mappings.ipics_id IN (%1)");
- mDeleteFileQ = new QSqlQuery(mDb);
- mDeleteFileQ->prepare("DELETE FROM pics WHERE ipicsid = :id");
- mDeleteMappingsQ = new QSqlQuery(mDb);
- mDeleteMappingsQ->prepare("DELETE FROM pics_mappings WHERE ipics_id = :id");
- mAddMappingsQ = new QSqlQuery(mDb);
- mAddMappingsQ->prepare("INSERT INTO pics_mappings(ipics_id, imappings_parents_id) VALUES(:pid, :id)");
-
}
void PicFilesModel::setMapping(int pMapId){
@@ -47,7 +40,7 @@ QVariant PicFilesModel::data(const QModelIndex &index, int role) const {
}
}
if(role == Qt::ForegroundRole){
- if(index.column() == SizeDisplay){
+ if(index.column() == Size){
int fileSize = index.data(SizeRole).toInt();
if(fileSize > 1024 * 1024 * 1024){
return QColor(Qt::red);
@@ -78,8 +71,8 @@ QVariant PicFilesModel::data(const QModelIndex &index, int role) const {
if(role == Md5SumRole){
return item->data(Md5Sum);
}
- if(role == SizeDisplayRole){
- return item->data(SizeDisplay);
+ if(role == PicSizeRole){
+ return item->data(PicSize);
}
return SmTreeModel::data(index, role);
}
@@ -118,27 +111,43 @@ QList<QList<QVariant> > PicFilesModel::allFiles() const {
return retval;
}
-void PicFilesModel::removeFiles(const QList<QPersistentModelIndex> &files){
- foreach(QPersistentModelIndex pi, files){
- mDeleteFileQ->bindValue(":id", pi.data(IdRole));
- if(mDeleteFileQ->exec()){
- QFile::remove(pi.data(FullPathRole).toString());
- removeRows(pi.row(), 1, QModelIndex());
+void PicFilesModel::removeFiles(const QList<QPair<int, QString> > &files){
+ QSqlQuery deleteFile(mDb);
+ deleteFile.prepare("DELETE FROM pics WHERE ipicsid = :id");
+ QList<int> success;
+ // remove from model
+ for(int i = 0; i < files.size(); ++i){
+ QPair<int, QString> cur = files.at(i);
+ deleteFile.bindValue(":id", cur.first);
+ if(deleteFile.exec()){
+ success << cur.first;
+ QFile::remove(cur.second);
+ }
+ }
+ // remove from view
+ foreach(int id, success){
+ QModelIndex idx = find(id, Id);
+ if(idx.isValid()){
+ removeRows(idx.row(), 1, QModelIndex());
}
}
}
bool PicFilesModel::changeMappings(const QList<int> &fileIds, const QList<QVariant> &parentIds){
mDb.transaction();
+ QSqlQuery deleteMappingsQ(mDb);
+ deleteMappingsQ.prepare("DELETE FROM pics_mappings WHERE ipics_id = :id");
+ QSqlQuery addMappingsQ(mDb);
+ addMappingsQ.prepare("INSERT INTO pics_mappings(ipics_id, imappings_parents_id) VALUES(:pid, :id)");
foreach(int fid, fileIds){
- mDeleteMappingsQ->bindValue(":id", fid);
- if(!mDeleteMappingsQ->exec()){
+ deleteMappingsQ.bindValue(":id", fid);
+ if(!deleteMappingsQ.exec()){
goto error;
}
foreach(QVariant pid, parentIds){
- mAddMappingsQ->bindValue(":pid", fid);
- mAddMappingsQ->bindValue(":id", pid);
- if(!mAddMappingsQ->exec()){
+ addMappingsQ.bindValue(":pid", fid);
+ addMappingsQ.bindValue(":id", pid);
+ if(!addMappingsQ.exec()){
goto error;
}
}
@@ -204,8 +213,7 @@ void PicFilesModel::populate(){
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
+ data << q.value(6); // picsize
SmTreeItem *child = new SmTreeItem(data, root);
root->appendChild(child);
}