diff options
author | Arno <am@disconnect.de> | 2012-03-17 15:15:53 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2012-03-17 15:15:53 +0100 |
commit | 1e14ae6748f271265dd719ac0766a2da3501a21f (patch) | |
tree | cf1547eb8a55637a8bf1e9a952ce9d07085e0117 /pictureviewer2.cpp | |
parent | e595a9be49615c45f40c57e8385e9fd76bb394e8 (diff) | |
download | SheMov-1e14ae6748f271265dd719ac0766a2da3501a21f.tar.gz SheMov-1e14ae6748f271265dd719ac0766a2da3501a21f.tar.bz2 SheMov-1e14ae6748f271265dd719ac0766a2da3501a21f.zip |
Add keyboard actions to PictureViewer2
Never, ever forget: QVariant() casts to a valid int! Again, this was a
tough one, but maybe I shouldn't drink and program.
PictureViewer2 reacts to Escape and Space. Escape hides it and stops the
slide timer, Space activates the slide timer.
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r-- | pictureviewer2.cpp | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index d5a6300..a5f250b 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -99,8 +99,8 @@ void PictureViewer2::previous(){ showFile(mFiles.at(mCurPos)); } -void PictureViewer2::slide(){ - if(mSlideTimer->isActive()){ +void PictureViewer2::slide(bool){ + if(mSlideTimer->isActive()){ mSlideTimer->stop(); }else{ mSlideTimer->start(5000); @@ -126,6 +126,22 @@ void PictureViewer2::shuffle(){ std::random_shuffle(mFiles.begin(), mFiles.end()); } +void PictureViewer2::initActions(){ + foreach(QAction *a, actions()){ + //never, ever forget this when casting to int + //an invalid QVariant casts to a valid int! + if(!a->data().isValid()){ + continue; + } + if(a->data().toInt() == HideAction){ + mHideA = a; + } + if(a->data().toInt() == SlideAction){ + mSlideA = a; + } + } +} + void PictureViewer2::wheelEvent(QWheelEvent *event){ int steps = event->delta() / 8 / 15; if(steps < 0){ @@ -143,6 +159,22 @@ void PictureViewer2::contextMenuEvent(QContextMenuEvent *e){ ctxMenu.exec(e->globalPos()); } +void PictureViewer2::keyPressEvent(QKeyEvent *e){ + if(e->key() == Qt::Key_Escape){ + mHideA->toggle(); + } + if(e->key() == Qt::Key_Space){ + mSlideA->toggle(); + } + e->accept(); +} + +void PictureViewer2::hideEvent(QHideEvent *){ + if(mSlideTimer->isActive()){ + mSlideA->toggle(); + } +} + void PictureViewer2::showFile(const PicData &file){ QPixmap pixmap(file.at(PicFilesModel::FullPath).toString()); if(pixmap.isNull()){ |