summaryrefslogtreecommitdiffstats
path: root/pictureviewer2.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-03-17 15:15:53 +0100
committerArno <am@disconnect.de>2012-03-17 15:15:53 +0100
commit1e14ae6748f271265dd719ac0766a2da3501a21f (patch)
treecf1547eb8a55637a8bf1e9a952ce9d07085e0117 /pictureviewer2.cpp
parente595a9be49615c45f40c57e8385e9fd76bb394e8 (diff)
downloadSheMov-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.cpp36
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()){