diff options
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r-- | pictureviewer2.cpp | 83 |
1 files changed, 77 insertions, 6 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index 7033a52..d8cae44 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -56,7 +56,11 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) //picture show mSlideTimer = new QTimer(this); + mSlideTimerAll = new QTimer(this); + mCurTimer = mSlideTimer; + mSlideTimerAllRestart = true; connect(mSlideTimer, SIGNAL(timeout()), this, SLOT(next())); + connect(mSlideTimerAll, SIGNAL(timeout()), this, SLOT(nextFromAll())); //models + dialogs mMappingTreeModel = static_cast<MappingTreeModel*>(SmGlobals::instance()->model("MappingTree")); @@ -113,6 +117,11 @@ void PictureViewer2::addFiles(const QStringList &files, bool clear){ addFiles(pd, clear); } +void PictureViewer2::addFile(const QString &fullPath, int fileId){ + mFiles << picData(fullPath, fileId); +} + + void PictureViewer2::addFiles(const QString &dir, bool clear){ QFileInfo fi(dir); if(!fi.isDir()){ @@ -145,7 +154,12 @@ void PictureViewer2::setPixmap(const QPixmap &pm){ setFile(tf.fileName()); } -PicData PictureViewer2::picData(const QString &fullPath){ +void PictureViewer2::setSlideSelected(){ + mCurTimer = mSlideTimer; + mSlideA->setChecked(true); +} + +PicData PictureViewer2::picData(const QString &fullPath, int fileId){ QFileInfo fi(fullPath); if(!fi.exists()){ return PicData(); @@ -155,7 +169,7 @@ PicData PictureViewer2::picData(const QString &fullPath){ retval << fi.fileName() << fi.size(); retval << Helper::mimeType(fullPath); retval << fi.absoluteFilePath(); - retval << -1 << QDateTime(); + retval << fileId << QDateTime(); retval << Helper::md5Sum(fullPath); QLocale l; retval << l.toString(fi.size()); @@ -211,14 +225,39 @@ void PictureViewer2::selectPic(const QString &path){ } } +void PictureViewer2::toggleSlide(bool slide){ + if(slide){ + mCurTimer->start(5000); + }else{ + mCurTimer->stop(); + } +} + void PictureViewer2::slide(bool){ - if(mSlideTimer->isActive()){ + mSlideTimerAll->stop(); + mCurTimer = mSlideTimer; + if(mSlideTimer->isActive()){ mSlideTimer->stop(); }else{ + PicDataList data = mPicFilesModel->allFiles(); + addFiles(data, true); mSlideTimer->start(5000); } } +void PictureViewer2::slideThrouhghAll(bool){ + mSlideTimer->stop(); + mCurTimer = mSlideTimerAll; + mShowMappingItem = true; + if(mSlideTimerAll->isActive()){ + mSlideTimerAll->stop(); + }else{ + mSlideTimer->stop(); + mSlideTimerAllRestart = true; + mSlideTimerAll->start(5000); + } +} + void PictureViewer2::readSettings(){ QSettings s; mUseGradient = s.value("ui/pvgradient").toBool(); @@ -253,9 +292,15 @@ void PictureViewer2::initActions(){ if(a->data().toInt() == HideAction){ mHideA = a; } - if(a->data().toInt() == SlideAction){ + if(a->data().toInt() == SlideSelectedAction){ mSlideA = a; } + if(a->data().toInt() == ToggleSlideAction){ + mToggleSlideA = a; + } + if(a->data().toInt() == SlideAllAction){ + mSlideAllA = a; + } if(a->data().toInt() == MarkAction){ mMarkA = a; } @@ -368,7 +413,7 @@ void PictureViewer2::keyPressEvent(QKeyEvent *e){ mHideA->toggle(); } if(e->key() == Qt::Key_Space){ - mSlideA->toggle(); + mToggleSlideA->toggle(); } if(e->key() == Qt::Key_M){ markCurrent(); @@ -394,7 +439,6 @@ void PictureViewer2::keyPressEvent(QKeyEvent *e){ void PictureViewer2::showEvent(QShowEvent *e){ mHideA->setChecked(true); - //mSize = size(); QGraphicsView::showEvent(e); } @@ -532,6 +576,22 @@ void PictureViewer2::docFromTree(SmTreeItem *start, QTextCursor *cur, int indent } } +void PictureViewer2::nextFromAll(){ + if(mSlideTimerAllRestart){ + mSlideTimerAll->stop(); + mPicFilesModel->allPicIds(); + mSlideTimerAllRestart = false; + setNextBatch(); + mSlideTimerAll->start(); + } + if(mCurPos == mFiles.size()){ + setNextBatch(); + } + mMarkA->setChecked(mMarkedFiles.contains(mFiles.at(mCurPos))); + showFile(mFiles.at(mCurPos)); + ++mCurPos; +} + void PictureViewer2::setGradient(const QPixmap &pic){ QPoint val1 = QPoint(qrand() % pic.width(), qrand() % pic.height()); QPoint val2 = QPoint(qrand() % pic.width(), qrand() % pic.height()); @@ -544,6 +604,17 @@ void PictureViewer2::setGradient(const QPixmap &pic){ setBackgroundBrush(QBrush(g)); } +void PictureViewer2::setNextBatch(){ + mSlideTimerAll->stop(); + mFiles.clear(); + QList<QList<QVariant> > data = mPicFilesModel->getNextBatch(); + foreach(QList<QVariant> l, data){ + addFile(l.value(0).toString(), l.value(1).toInt()); + } + mCurPos = 0; + mSlideTimerAll->start(); +} + QTextDocument *PictureViewer2::treeToString(const SmTreeItem *root) const{ QTextDocument *retval = new QTextDocument; retval->setIndentWidth(2); |