summaryrefslogtreecommitdiffstats
path: root/pictureviewer2.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-03-29 20:29:26 +0200
committerArno <arno@disconnect.de>2016-03-29 20:29:26 +0200
commitaba573026ec3ca79e30d0350a645d91169421443 (patch)
treee7bbb974bbd72749d51556f20aae135b16ea3d47 /pictureviewer2.cpp
parentbc11672a2bc4140f67476b79fc6b427f4a5cc4ec (diff)
downloadSheMov-aba573026ec3ca79e30d0350a645d91169421443.tar.gz
SheMov-aba573026ec3ca79e30d0350a645d91169421443.tar.bz2
SheMov-aba573026ec3ca79e30d0350a645d91169421443.zip
Make the SlideDialog do somethin
Well, implement functionality. Seems to work as intended.
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r--pictureviewer2.cpp66
1 files changed, 62 insertions, 4 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index ead82ea..d95602a 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -32,16 +32,17 @@
#include <QFile>
#include <QTemporaryFile>
#include <QMessageBox>
-#include <QCheckBox>
#include <QRadioButton>
#include <QGroupBox>
-#include <QSpinBox>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QGridLayout>
+#include <random>
+#include <chrono>
+
#include "pictureviewer2.h"
#include "picfilesmodel.h"
#include "pictureswidget.h"
@@ -59,6 +60,8 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0)
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setWindowState(Qt::WindowMaximized);
+ mSlideDlg = new PictureViewerSlideDlg(this);
+ connect(mSlideDlg, SIGNAL(accepted()), this, SLOT(doSlide()));
//initial file list
PicData initialData;
@@ -69,11 +72,13 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0)
mFiles << initialData;
//picture show
+ mTimer = new QTimer(this);
mSlideTimer = new QTimer(this);
mSlideTimerAll = new QTimer(this);
mSlideTimerRecent = new QTimer(this);
mCurTimer = mSlideTimer;
mSlideTimerAllRestart = true;
+ connect(mTimer, SIGNAL(timeout()), this, SLOT(nextSlide()));
connect(mSlideTimer, SIGNAL(timeout()), this, SLOT(next()));
connect(mSlideTimerAll, SIGNAL(timeout()), this, SLOT(nextFromAll()));
connect(mSlideTimerRecent, SIGNAL(timeout()), this, SLOT(nextFromRecent()));
@@ -493,9 +498,42 @@ void PictureViewer2::doControl(QGraphicsItem *item){
}
}
+void PictureViewer2::showSlide(){
+ mSlideTimer->stop();
+ mSlideDlg->show();
+}
+
void PictureViewer2::doSlide(){
- PictureViewerSlideDlg dlg(this);
- dlg.exec();
+ int result = mSlideDlg->result();
+ if(result == PictureViewerSlideDlg::NoSlide){
+ mTimer->stop();
+ return;
+ }
+ mNextSlideCtr = 0;
+ if(result == PictureViewerSlideDlg::SlideAll){
+ mPicFilesModel->selectFromAll();
+ }else if (result == PictureViewerSlideDlg::SlideRecent){
+ int days = mSlideDlg->days();
+ mPicFilesModel->selectFromRecent(days);
+ }else if (result == PictureViewerSlideDlg::SlideSelection){
+ MappingEditWidget *editWidget = mSlideDlg->mappingEditWidget();
+ QList<QVariant> mappingParentsIds = editWidget->model()->getMappings(editWidget->model()->root());
+ mPicFilesModel->selectFromSelection(mappingParentsIds);
+ }
+ mPicData = mPicFilesModel->allPics();
+ if(mSlideDlg->shuffle()){
+ unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
+ std::shuffle(mPicData.begin(), mPicData.end(), std::default_random_engine(seed));
+ }
+ auto picDataOld = mPicData;
+ mPicData.clear();
+ foreach(auto pd, picDataOld){
+ QList<QVariant> tmp;
+ tmp << Helper::createArchivePath(pd.value(0).toString(), pd.value(1).toString()) << pd.value(2);
+ mPicData << tmp;
+ }
+ mTotal = mPicData.count();
+ mTimer->start(5000);
}
void PictureViewer2::wheelEvent(QWheelEvent *event){
@@ -589,6 +627,26 @@ void PictureViewer2::resizeEvent(QResizeEvent *event){
showFile(mCurPicData);
}
+void PictureViewer2::nextSlide(){
+ if(mPicData.isEmpty()){
+ return;
+ }
+ if(mNextSlideCtr < mPicData.count()){
+ QString fullPath = mPicData.at(mNextSlideCtr).at(0).toString();
+ int fId = mPicData.at(mNextSlideCtr).at(1).toInt();
+ PicData pd = picData(fullPath, fId);
+ setFile(pd);
+ ++mNextSlideCtr;
+ }else{
+ mNextSlideCtr = 0;
+ QString fullPath = mPicData.at(mNextSlideCtr).at(0).toString();
+ int fId = mPicData.at(mNextSlideCtr).at(1).toInt();
+ PicData pd = picData(fullPath, fId);
+ setFile(pd);
+ ++mNextSlideCtr;
+ }
+}
+
void PictureViewer2::showFile(const PicData &file){
if(file.isEmpty()){
return;