diff options
author | Arno <am@disconnect.de> | 2010-12-11 13:06:20 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-12-11 13:06:20 +0100 |
commit | c3b7144f5aef2906d85339d3b9c5bf8eaa3a6356 (patch) | |
tree | cb5c3d8d6ad572148f36cfc8b75307fdea386b9f /shemov.cpp | |
parent | a87e4d8c3c2102e9728dd5df303acca7ae08b343 (diff) | |
download | SheMov-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.cpp | 54 |
1 files changed, 37 insertions, 17 deletions
@@ -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){ |