summaryrefslogtreecommitdiffstats
path: root/pictureviewer2.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2015-08-12 19:29:44 +0200
committerArno <arno@disconnect.de>2015-08-12 19:29:44 +0200
commitdc2927587eb758754babf98adb764c3bbdccd024 (patch)
tree7fc3a9c94f2e895862de0523a06475a3572112e7 /pictureviewer2.cpp
parent49b943474c4ac39ee5f0f2e900fddd1253a84366 (diff)
downloadSheMov-dc2927587eb758754babf98adb764c3bbdccd024.tar.gz
SheMov-dc2927587eb758754babf98adb764c3bbdccd024.tar.bz2
SheMov-dc2927587eb758754babf98adb764c3bbdccd024.zip
Implement slide through all pictures
Wow, that was much more complicated than I first thought, but it seems to work. Maybe it's much more convoluted than it has to be :)
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r--pictureviewer2.cpp83
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);