summaryrefslogtreecommitdiffstats
path: root/shemov.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-12-11 13:06:20 +0100
committerArno <am@disconnect.de>2010-12-11 13:06:20 +0100
commitc3b7144f5aef2906d85339d3b9c5bf8eaa3a6356 (patch)
treecb5c3d8d6ad572148f36cfc8b75307fdea386b9f /shemov.cpp
parenta87e4d8c3c2102e9728dd5df303acca7ae08b343 (diff)
downloadSheMov-c3b7144f5aef2906d85339d3b9c5bf8eaa3a6356.tar.gz
SheMov-c3b7144f5aef2906d85339d3b9c5bf8eaa3a6356.tar.bz2
SheMov-c3b7144f5aef2906d85339d3b9c5bf8eaa3a6356.zip
Implement hover over movies
What started as an attempt to show a frame from a movie when hovering over it, ended in a huge bugfix commit for hover related stuff. This commit is definitely not atomic. When hovering over a movie present on the filesytem a frame is shown. The time frame is configurable. While digging into the code I noticed some bugs. Bugfixes: * fix label for hove archive action. It was labeled for hovering over directories in FSWidget. * Hovering over directories didn't have an action. Also read the appropriate value from QSettings. Other: * add icons for hovering over directories and hovering over movies * replace SheMov::toggleHover(pics|some other) with a QSignalMapper
Diffstat (limited to 'shemov.cpp')
-rw-r--r--shemov.cpp54
1 files changed, 37 insertions, 17 deletions
diff --git a/shemov.cpp b/shemov.cpp
index 0d6c12c..c4b543c 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -102,6 +102,7 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
setCentralWidget(centralWidget);
show();
mATree->seriesWidget()->readSettings();
+ mATree->filesWidget()->filesTree()->readConfig();
mFSWidget->readSettings();
readSettings();
mFSWidget->fileView()->setFocus(Qt::ActiveWindowFocusReason);
@@ -486,12 +487,30 @@ void SheMov::createActions(){
connect(mOpenWithMapperAV, SIGNAL(mapped(QString)), mATree, SLOT(playSelected(QString)));
connect(mCleanupMapper, SIGNAL(mapped(QString)), mATree, SLOT(cleanDatabase(QString)));
connect(viewMapper, SIGNAL(mapped(int)), mATree, SLOT(setFileViewMode(int)));
+
+ //hover
+ QSignalMapper *hoverMapper = new QSignalMapper(this);
mHoverPicsA = new QAction(QIcon(":/bald_pussy.png"), tr("Hover over pictures"), this);
- connect(mHoverPicsA, SIGNAL(toggled(bool)), this, SLOT(toggleHoverPics(bool)));
+ mHoverPicsA->setData("ui/hoverpics");
mHoverPicsA->setCheckable(true);
- mHoverArchiveA = new QAction(QIcon(":/prince_albert.png"), tr("Hover over directories"), this);
- connect(mHoverArchiveA, SIGNAL(toggled(bool)), this, SLOT(toggleHoverArchive(bool)));
+ hoverMapper->setMapping(mHoverPicsA, mHoverPicsA);
+ connect(mHoverPicsA, SIGNAL(triggered()), hoverMapper, SLOT(map()));
+ mHoverArchiveA = new QAction(QIcon(":/prince_albert.png"), tr("Hover over archive tree"), this);
+ mHoverArchiveA->setData("ui/hoverarchive");
mHoverArchiveA->setCheckable(true);
+ hoverMapper->setMapping(mHoverArchiveA, mHoverArchiveA);
+ connect(mHoverArchiveA, SIGNAL(triggered()), hoverMapper, SLOT(map()));
+ mHoverDirectoriesA = new QAction(QIcon(":/french_maid_dress.png"), tr("Hover over directories"), this);
+ mHoverDirectoriesA->setData("ui/hoverdirs");
+ mHoverDirectoriesA->setCheckable(true);
+ hoverMapper->setMapping(mHoverDirectoriesA, mHoverDirectoriesA);
+ connect(mHoverDirectoriesA, SIGNAL(triggered()), hoverMapper, SLOT(map()));
+ mHoverMoviesA = new QAction(QIcon(":/ball_gag.png"), tr("Hover over movies"), this);
+ mHoverMoviesA->setData("ui/hovermovies");
+ mHoverMoviesA->setCheckable(true);
+ hoverMapper->setMapping(mHoverMoviesA, mHoverMoviesA);
+ connect(mHoverMoviesA, SIGNAL(triggered()), hoverMapper, SLOT(map()));
+ connect(hoverMapper, SIGNAL(mapped(QObject*)), this, SLOT(toggleHover(QObject*)));
}
void SheMov::createMenus(){
@@ -722,6 +741,8 @@ void SheMov::createToolBar(){
toolBar->addSeparator();
toolBar->addAction(mHoverPicsA);
toolBar->addAction(mHoverArchiveA);
+ toolBar->addAction(mHoverDirectoriesA);
+ toolBar->addAction(mHoverMoviesA);
toolBar->addSeparator();
toolBar->addAction(mMountDvdA);
addToolBar(Qt::LeftToolBarArea, toolBar);
@@ -775,10 +796,10 @@ void SheMov::readSettings(){
default:
;
}
- bool hoverPics = s.value("ui/hoverpics").toBool();
- mHoverPicsA->setChecked(hoverPics);
- bool hoverArchive = s.value("ui/hoverarchive").toBool();
- mHoverArchiveA->setChecked(hoverArchive);
+ mHoverPicsA->setChecked(s.value("ui/hoverpics").toBool());
+ mHoverArchiveA->setChecked(s.value("ui/hoverarchive").toBool());
+ mHoverDirectoriesA->setChecked(s.value("ui/hoverdirs").toBool());
+ mHoverMoviesA->setChecked(s.value("ui/hovermovies").toBool());
QString dvdMount = s.value("paths/dvdmount").toString();
if(dvdMount.isEmpty()){
mMountDvdA->setEnabled(false);
@@ -805,16 +826,15 @@ void SheMov::checkConsistency(){
c.exec();
}
-void SheMov::toggleHoverArchive(bool toggled){
- QSettings s;
- s.setValue("ui/hoverarchive", toggled);
- emit configChanged();
-}
-
-void SheMov::toggleHoverPics(bool toggled){
- QSettings s;
- s.setValue("ui/hoverpics", toggled);
- emit configChanged();
+void SheMov::toggleHover(QObject *object){
+ QAction *action = qobject_cast<QAction*>(object);
+ if(action){
+ QSettings s;
+ QString toSet = action->data().toString();
+ bool checked = action->isChecked();
+ s.setValue(toSet, checked);
+ emit configChanged();
+ }
}
void SheMov::checkMount(bool mounted){