summaryrefslogtreecommitdiffstats
path: root/newpicsdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'newpicsdialog.cpp')
-rw-r--r--newpicsdialog.cpp41
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);
}