diff options
author | Arno <arno@disconnect.de> | 2016-03-29 20:29:26 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2016-03-29 20:29:26 +0200 |
commit | aba573026ec3ca79e30d0350a645d91169421443 (patch) | |
tree | e7bbb974bbd72749d51556f20aae135b16ea3d47 /pictureviewer2.cpp | |
parent | bc11672a2bc4140f67476b79fc6b427f4a5cc4ec (diff) | |
download | SheMov-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.cpp | 66 |
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; |