diff options
author | Arno <am@disconnect.de> | 2013-08-22 07:43:20 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-08-22 07:43:20 +0200 |
commit | 369c14264c664b38049ac081cf60b8485a4042cb (patch) | |
tree | 5e77075e82d5d0caf7f0a7743a9a69f42ac9df9e /newpicsdialog.cpp | |
parent | cd2d39368e2319eb7c949439e9688bf8319ec0a3 (diff) | |
download | SheMov-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 'newpicsdialog.cpp')
-rw-r--r-- | newpicsdialog.cpp | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/newpicsdialog.cpp b/newpicsdialog.cpp index 2d56ddc..d4f247c 100644 --- a/newpicsdialog.cpp +++ b/newpicsdialog.cpp @@ -7,16 +7,18 @@ #include <QSqlQuery> #include <QSortFilterProxyModel> -#include <QtWidgets/QPushButton> +#include <QPushButton> #include <QSettings> -#include <QtWidgets/QFileDialog> -#include <QtWidgets/QVBoxLayout> +#include <QFileDialog> +#include <QVBoxLayout> +#include <QHeaderView> #include "newpicsdialog.h" #include "smtreeitem.h" #include "helper.h" #include "mappingtreewidget.h" #include "mappingtreemodel.h" +#include "delegates.h" #include "smglobals.h" NewPicsDialog::NewPicsDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) { @@ -28,11 +30,14 @@ void NewPicsDialog::setupDlg(){ mFilesWidget = new QWidget; mFilesV = new SmTreeView; mFilesProxy = new QSortFilterProxyModel(this); - mFilesModel = new NewPicFilesModel(QStringList() << tr("Filename") << tr("Size") << tr("Val.") << tr("Md5") << tr("Mime type") << tr("Full path"), this); + mFilesModel = new NewPicFilesModel(QStringList() << tr("Filename") << tr("Size") << tr("Val.") << tr("Md5") << tr("Mime type") << tr("Full path") << tr("Pic. Size"), this); mFilesProxy->setSourceModel(mFilesModel); mFilesV->setModel(mFilesProxy); mFilesV->setSortingEnabled(true); - mFilesV->setColumnHidden(2, true); + mFilesV->setColumnHidden(NewPicFilesModel::Valid, true); + mFilesV->setItemDelegateForColumn(NewPicFilesModel::Size, new SizeDelegate(this)); + mFilesV->header()->moveSection(6, 2); //move picsize to front + mFilesV->header()->moveSection(5, 3); //move mime type to front mFilesV->setAlternatingRowColors(true); mAddFiles = new QPushButton(tr("Select...")); connect(mAddFiles, SIGNAL(clicked()), this, SLOT(selectFiles())); @@ -137,7 +142,7 @@ void NewPicsDialog::accept(){ } QList<QVariant> mappingParentsIds = mMappingEditWidget->model()->columnValues(MappingTreeResultModel::MappingId); QSqlQuery addFileQ(mDb); - addFileQ.prepare("INSERT INTO pics (tfilename, cmd5sum, isize, tformat) VALUES(:fn, :md5, :size, :format)"); + addFileQ.prepare("INSERT INTO pics (tfilename, cmd5sum, isize, tformat, cpicsize) VALUES(:fn, :md5, :size, :format, :picsize)"); 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){ @@ -145,6 +150,7 @@ void NewPicsDialog::accept(){ addFileQ.bindValue(":md5", d.md5sum); addFileQ.bindValue(":size", d.size); addFileQ.bindValue(":format", d.mimeType); + addFileQ.bindValue(":picsize", d.picSize); if(addFileQ.exec()){ foreach(QVariant mpid, mappingParentsIds){ addMappingQ.bindValue(":mapid", mpid); @@ -162,8 +168,6 @@ void NewPicsDialog::accept(){ NewPicFilesModel::NewPicFilesModel(const QStringList &header, QObject *parent) : SmTreeModel(header, parent){ mDb = QSqlDatabase::database("treedb"); - mMd5Query = new QSqlQuery(mDb); - mMd5Query->prepare("SELECT COUNT(*) FROM pics WHERE cmd5sum = :md5"); } Qt::ItemFlags NewPicFilesModel::flags(const QModelIndex &index) const{ @@ -191,6 +195,9 @@ QVariant NewPicFilesModel::data(const QModelIndex &index, int role) const{ if(role == FullPathRole){ return item->data(FullPath); } + if(role == PicSizeRole){ + return item->data(PicSize); + } if(role == Qt::DecorationRole && index.column() == 0){ bool valid = item->data(Valid).toBool(); if(valid){ @@ -228,6 +235,9 @@ bool NewPicFilesModel::setData(const QModelIndex &index, const QVariant &value, if(role == FullPathRole){ item->setData(FullPath, value); } + if(role == PicSizeRole){ + item->setData(PicSize, value); + } return true; } @@ -249,6 +259,8 @@ void NewPicFilesModel::setFiles(const QStringList &paths) { valid = false; } fileData << fi.fileName() << valid << md5 << mt << fi.absoluteFilePath(); + QVariant picSize = Helper::picSize(fi.absoluteFilePath()); + fileData << picSize; SmTreeItem *newFile = new SmTreeItem(fileData, rootItem); rootItem->appendChild(newFile); } @@ -269,6 +281,7 @@ void NewPicFilesModel::addFile(const QString &path){ if(haveMd5(md5)){ valid = false; } + QVariant picSize = Helper::picSize(fi.absoluteFilePath()); insertRows(0, 1, QModelIndex()); QModelIndex inserted = index(0, 1, QModelIndex()); setData(inserted, fi.fileName(), FileNameRole); @@ -277,6 +290,7 @@ void NewPicFilesModel::addFile(const QString &path){ setData(inserted, md5, Md5SumRole); setData(inserted, mt, MimeTypeRole); setData(inserted, fi.absoluteFilePath(), FullPathRole); + setData(inserted, picSize, PicSizeRole); } void NewPicFilesModel::removeFile(const QModelIndex &idx){ @@ -301,6 +315,7 @@ QList<FileData> NewPicFilesModel::validFiles() const { data.md5sum = child->data(Md5Sum).toString(); data.mimeType = child->data(MimeType).toString(); data.fullPath = child->data(FullPath).toString(); + data.picSize = child->data(PicSize).toString(); retval << data; } return retval; @@ -312,11 +327,13 @@ void NewPicFilesModel::clear(){ } bool NewPicFilesModel::haveMd5(const QString &md5) const { - mMd5Query->bindValue(":md5", md5); - mMd5Query->exec(); + QSqlQuery md5Query(mDb); + md5Query.prepare("SELECT COUNT(*) FROM pics WHERE cmd5sum = :md5"); + md5Query.bindValue(":md5", md5); + md5Query.exec(); int count = 0; - while(mMd5Query->next()){ - count = mMd5Query->value(0).toInt(); + while(md5Query.next()){ + count = md5Query.value(0).toInt(); } return ((count > 0) ? true : false); } |