From ba9c314b4ba68b2da1d6c59accbcb9cf1aa5f897 Mon Sep 17 00:00:00 2001 From: Arno Date: Fri, 16 Nov 2012 16:43:50 +0100 Subject: Usability: Make archiving pics easier To make archiving pictures from different sources easier, add a NewPicsDialog to PictureViewer. Add shortcuts to show the dialog and adding pics to it. After adding all pics with the same mappping, just click OK and add them to the archive. Shortcuts: Meta+s: Show NewPicsDialog Meta+a: Add current pic --- newpicsdialog.cpp | 6 ++++++ newpicsdialog.h | 5 ++++- pictureviewer2.cpp | 12 +++++++++++- pictureviewer2.h | 4 ++++ shemov.cpp | 12 ++++++++++++ shemov.h | 2 ++ 6 files changed, 39 insertions(+), 2 deletions(-) diff --git a/newpicsdialog.cpp b/newpicsdialog.cpp index 272bf2d..c0bf76e 100644 --- a/newpicsdialog.cpp +++ b/newpicsdialog.cpp @@ -167,6 +167,7 @@ void NewPicsDialog::accept(){ Helper::moveToArchive(d.fullPath, d.md5sum); } mDb.commit(); + mFilesModel->clear(); return QDialog::accept(); } @@ -321,6 +322,11 @@ QList NewPicFilesModel::validFiles() const { return retval; } +void NewPicFilesModel::clear(){ + SmTreeItem *newRoot = new SmTreeItem(NumFields); + setRoot(newRoot); +} + bool NewPicFilesModel::haveMd5(const QString &md5) const { mMd5Query->bindValue(":md5", md5); mMd5Query->exec(); diff --git a/newpicsdialog.h b/newpicsdialog.h index 17e012e..110f4fc 100644 --- a/newpicsdialog.h +++ b/newpicsdialog.h @@ -35,11 +35,11 @@ class NewPicsDialog : public QDialog { public slots: void selectFiles(); void removeFiles(); + void addFiles(const QStringList &files); void accept(); private: void setupDlg(); - void addFiles(const QStringList &files); QTabWidget *mTab; QWidget *mFilesWidget; MappingEditWidget *mMappingEditWidget; @@ -74,6 +74,9 @@ class NewPicFilesModel : public SmTreeModel { void removeFile(const QModelIndex &idx); QList validFiles() const; + public slots: + void clear(); + private: bool haveMd5(const QString &md5) const; QSqlDatabase mDb; diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 9aba348..f385abc 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -35,6 +35,7 @@ #include "mappingtreemodel.h" #include "smtreeitem.h" #include "configurationdialog.h" +#include "newpicsdialog.h" #include "helper.h" PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0), mCurPos(0), mDefaultFile(":/picgone.png"), mFnItem(0), mMappingItem(0) { @@ -56,9 +57,10 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) mSlideTimer = new QTimer(this); connect(mSlideTimer, SIGNAL(timeout()), this, SLOT(next())); - //models + //models + dialogs mMappingTreeModel = static_cast(SmGlobals::instance()->model("MappingTree")); mPicFilesModel = static_cast(SmGlobals::instance()->model("PicFiles")); + mNewPicsDlg = new NewPicsDialog(this); //setup gui mScene = new QGraphicsScene(this); @@ -236,6 +238,14 @@ void PictureViewer2::copyCurrent(){ } } +void PictureViewer2::showNewPicsDialog(){ + mNewPicsDlg->show(); +} + +void PictureViewer2::addToNewPics(){ + mNewPicsDlg->addFiles(QStringList() << mCurPicData.at(PicFilesModel::FullPath).toString()); +} + void PictureViewer2::wheelEvent(QWheelEvent *event){ int steps = event->delta() / 8 / 15; if(steps < 0){ diff --git a/pictureviewer2.h b/pictureviewer2.h index 9d5c1c5..631f5f8 100644 --- a/pictureviewer2.h +++ b/pictureviewer2.h @@ -26,6 +26,7 @@ class QGraphicsItem; class SmTreeItem; class MappingTreeModel; class PicFilesModel; +class NewPicsDialog; typedef QList PicData; typedef QList > PicDataList; @@ -51,6 +52,8 @@ class PictureViewer2 : public QGraphicsView { void shuffle(); void initActions(); void copyCurrent(); + void showNewPicsDialog(); + void addToNewPics(); protected: virtual void wheelEvent(QWheelEvent *event); @@ -90,6 +93,7 @@ class PictureViewer2 : public QGraphicsView { MappingTreeModel *mMappingTreeModel; PicFilesModel *mPicFilesModel; PicData mCurPicData; + NewPicsDialog *mNewPicsDlg; }; class PictureViewer2Item : public QGraphicsItem { diff --git a/shemov.cpp b/shemov.cpp index 817c808..155b37d 100644 --- a/shemov.cpp +++ b/shemov.cpp @@ -198,6 +198,8 @@ void SheMov::tabChanged(int newTab){ mPicActionGroup->setEnabled(newTab == 2); mFilterFavoritesA->setEnabled(newTab == 1); mPVSelectAllA->disconnect(); + mPVShowNPDialogA->setEnabled(newTab == 0); + mPVAddToNPA->setEnabled(newTab == 0); switch(newTab){ case 0: connect(mPVSelectAllA, SIGNAL(triggered()), mFSWidget, SLOT(selectAllPV())); @@ -699,6 +701,16 @@ void SheMov::createActions(){ connect(mPVCopyToA, SIGNAL(triggered()), picViewer, SLOT(copyCurrent())); picViewer->addAction(mPVCopyToA); + // NewPicsDialog actions + mPVShowNPDialogA = new QAction(tr("Show new pics dialog..."), this); + mPVShowNPDialogA->setShortcut(tr("Meta+s")); + connect(mPVShowNPDialogA, SIGNAL(triggered()), picViewer, SLOT(showNewPicsDialog())); + picViewer->addAction(mPVShowNPDialogA); + mPVAddToNPA = new QAction(tr("Add to new pics dialog"), this); + mPVAddToNPA->setShortcut(tr("Meta+a")); + connect(mPVAddToNPA, SIGNAL(triggered()), picViewer, SLOT(addToNewPics())); + picViewer->addAction(mPVAddToNPA); + // assign actions to PictureViewer2 members, so they can be toggled from within picViewer->initActions(); diff --git a/shemov.h b/shemov.h index d1a4ee2..96d0de1 100644 --- a/shemov.h +++ b/shemov.h @@ -183,6 +183,8 @@ class SheMov : public QMainWindow { QAction *mPVSlideA; QAction *mPVShuffleA; QAction *mPVCopyToA; + QAction *mPVShowNPDialogA; + QAction *mPVAddToNPA; QActionGroup *mPicActionGroup; //EndActions -- cgit v1.2.3-70-g09d2