summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pictureswidget.cpp6
-rw-r--r--pictureswidget.h1
-rw-r--r--pictureviewer2.cpp36
-rw-r--r--pictureviewer2.h8
-rw-r--r--shemov.cpp5
5 files changed, 52 insertions, 4 deletions
diff --git a/pictureswidget.cpp b/pictureswidget.cpp
index b1c144e..b420309 100644
--- a/pictureswidget.cpp
+++ b/pictureswidget.cpp
@@ -87,6 +87,7 @@ void PicturesWidget::constructWindowTitle(){
MappingData selected = mMappingTree->selectedItem();
if(selected.id != -1){
windowTitle = QString("%1 - [%2]").arg(mWindowTitleBase).arg(selected.path.join("/"));
+ mPictureView->setHoverWinVisible(false);
}
emit needWindowTitleChange(windowTitle);
}
@@ -96,6 +97,7 @@ void PicturesWidget::showInPicViewer(const QModelIndex &idx){
if(!real.isValid()){
return;
}
+
PicData pData = mPictureView->filesModel()->dataList(real);
mPicViewer->setFile(pData);
if(mPicViewerA){
@@ -175,6 +177,10 @@ void PictureView::setPVAll(){
mPV->addFiles(data, true);
}
+void PictureView::setHoverWinVisible(bool visible) const {
+ mHoverWin->setVisible(visible);
+}
+
void PictureView::hideEvent(QHideEvent *){
QByteArray pvHeader = header()->saveState();
QSettings s;
diff --git a/pictureswidget.h b/pictureswidget.h
index 0239560..cdc40b5 100644
--- a/pictureswidget.h
+++ b/pictureswidget.h
@@ -74,6 +74,7 @@ class PictureView : public QTreeView {
void refresh();
void setPVData(int replace = false);
void setPVAll();
+ void setHoverWinVisible(bool visible) const;
protected:
virtual void hideEvent(QHideEvent *);
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()){
diff --git a/pictureviewer2.h b/pictureviewer2.h
index 6126930..e18fc18 100644
--- a/pictureviewer2.h
+++ b/pictureviewer2.h
@@ -27,6 +27,7 @@ typedef QList<QList<QVariant> > PicDataList;
class PictureViewer2 : public QGraphicsView {
Q_OBJECT
public:
+ enum AssocActions { SlideAction, HideAction };
explicit PictureViewer2(QWidget *parent = 0);
void addFiles(const PicDataList &files, bool clear = true);
void setFile(const PicData &file);
@@ -35,14 +36,17 @@ class PictureViewer2 : public QGraphicsView {
public slots:
void next();
void previous();
- void slide();
+ void slide(bool);
void readSettings();
void writeSettings();
void shuffle();
+ void initActions();
protected:
virtual void wheelEvent(QWheelEvent *event);
virtual void contextMenuEvent(QContextMenuEvent *e);
+ virtual void keyPressEvent(QKeyEvent *e);
+ virtual void hideEvent(QHideEvent *);
private slots:
void showFile(const PicData &data);
@@ -63,6 +67,8 @@ class PictureViewer2 : public QGraphicsView {
bool mUseGradient;
QColor mBgColor;
QPointF mInfoPos;
+ QAction *mSlideA;
+ QAction *mHideA;
};
class PictureViewer2FileinfoItem : public QGraphicsItem {
diff --git a/shemov.cpp b/shemov.cpp
index 8fbceed..77c9a98 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -619,6 +619,7 @@ void SheMov::createActions(){
// viewer actions
mPVToggleA = new QAction(QIcon(":/dick_in_cage.png"), tr("Show/Hide Picture Viewer"), this);
mPVToggleA->setCheckable(true);
+ mPVToggleA->setData(PictureViewer2::HideAction);
connect(mPVToggleA, SIGNAL(toggled(bool)), mPicWidget, SLOT(showPicViewer(bool)));
mPVToggleA->setChecked(false);
mPicWidget->picView()->addAction(mPVToggleA);
@@ -644,7 +645,8 @@ void SheMov::createActions(){
mPicWidget->picView()->addAction(pvSep2);
mPVSlideA = new QAction(QIcon(":/chastity_belt_with_cuffs.png"), tr("Slide"), this);
mPVSlideA->setCheckable(true);
- connect(mPVSlideA, SIGNAL(triggered()), mPicWidget->picView()->PV(), SLOT(slide()));
+ mPVSlideA->setData(PictureViewer2::SlideAction);
+ connect(mPVSlideA, SIGNAL(toggled(bool)), mPicWidget->picView()->PV(), SLOT(slide(bool)));
mPicWidget->picView()->addAction(mPVSlideA);
QAction *pv2Sep1 = new QAction(this);
pv2Sep1->setSeparator(true);
@@ -664,6 +666,7 @@ void SheMov::createActions(){
mPicWidget->setPicViewerAction(mPVToggleA);
+ mPicWidget->picView()->PV()->initActions();
//don't add actions with checkable(true) unless you know what you're doing!
mPicActionGroup = new QActionGroup(this);
mPicActionGroup->addAction(mPWDeletePicFromA);