summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-11-16 16:43:50 +0100
committerArno <am@disconnect.de>2012-11-16 16:43:50 +0100
commitba9c314b4ba68b2da1d6c59accbcb9cf1aa5f897 (patch)
treeb28c4ee1d91a27b8eb11da29395fa3d42dad5ceb
parent7a56ffb6f1afc5ed09459230d47621fa4a1963b6 (diff)
downloadSheMov-ba9c314b4ba68b2da1d6c59accbcb9cf1aa5f897.tar.gz
SheMov-ba9c314b4ba68b2da1d6c59accbcb9cf1aa5f897.tar.bz2
SheMov-ba9c314b4ba68b2da1d6c59accbcb9cf1aa5f897.zip
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
-rw-r--r--newpicsdialog.cpp6
-rw-r--r--newpicsdialog.h5
-rw-r--r--pictureviewer2.cpp12
-rw-r--r--pictureviewer2.h4
-rw-r--r--shemov.cpp12
-rw-r--r--shemov.h2
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<FileData> 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<FileData> 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<MappingTreeModel*>(SmGlobals::instance()->model("MappingTree"));
mPicFilesModel = static_cast<PicFilesModel*>(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<QVariant> PicData;
typedef QList<QList<QVariant> > 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