diff options
author | Arno <am@disconnect.de> | 2010-12-28 13:32:12 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-12-28 13:32:12 +0100 |
commit | ed5de88d481c31fbad120332651eb746a0c03de3 (patch) | |
tree | 39c5aec18eca4ea29d8250b4f16ecfc4e934df46 /shemov.cpp | |
parent | 6a56c5d5541bd471d78b4797ffccd378c1e73550 (diff) | |
download | SheMov-ed5de88d481c31fbad120332651eb746a0c03de3.tar.gz SheMov-ed5de88d481c31fbad120332651eb746a0c03de3.tar.bz2 SheMov-ed5de88d481c31fbad120332651eb746a0c03de3.zip |
Pimp my filters!
Enhanced the filter function in ArchiveTreeView. The prefixes are gone.
The filter mode is now selectable by menu or toolbar.
Created 7 new icons, also selectable in the configuration menu. As a
bonus the filter QLineEdit now comes with a QCompleter. The
QStringListModel of the completer is filled in a separate thread. The
QThread is only used as a resource for control. The work is done in a
QObject connected to the QThread's started() signal as described in
http://labs.qt.nokia.com/2006/12/04/threading-without-the-headache/
Diffstat (limited to 'shemov.cpp')
-rw-r--r-- | shemov.cpp | 70 |
1 files changed, 62 insertions, 8 deletions
@@ -171,6 +171,7 @@ void SheMov::tabChanged(int newTab){ mBackDirA->setEnabled(true); mShowNoCoverDialogA->setEnabled(false); mFilesTreeHeadersGroup->setEnabled(false); + mFilterGroup->setEnabled(false); } if(newTab == 1){ setWindowTitle(mATree->windowTitle()); @@ -178,6 +179,7 @@ void SheMov::tabChanged(int newTab){ mBackDirA->setEnabled(false); mShowNoCoverDialogA->setEnabled(true); mFilesTreeHeadersGroup->setEnabled(true); + mFilterGroup->setEnabled(true); } updateSelectionCount(QItemSelection(), QItemSelection()); } @@ -479,6 +481,46 @@ void SheMov::createActions(){ connect(mHoverMoviesA, SIGNAL(triggered()), hoverMapper, SLOT(map())); mHoverTreeGroup->addAction(mHoverMoviesA); + //Tree view filter + mFilterGroup = new QActionGroup(this); + mFilterMapper = new QSignalMapper(this); + mFilterBySeriesA = new QAction(QIcon(":/butt_plug.png"), tr("Series name"), this); + mFilterBySeriesA->setCheckable(true); + mFilterMapper->setMapping(mFilterBySeriesA, SeriesTreeWidget::FilterSeries); + connect(mFilterBySeriesA, SIGNAL(triggered()), mFilterMapper, SLOT(map())); + mFilterGroup->addAction(mFilterBySeriesA); + mFilterByActorA = new QAction(QIcon(":/bizarre_amputee.png"), tr("Actor"), this); + mFilterByActorA->setCheckable(true); + mFilterMapper->setMapping(mFilterByActorA, SeriesTreeWidget::FilterActor); + connect(mFilterByActorA, SIGNAL(triggered()), mFilterMapper, SLOT(map())); + mFilterGroup->addAction(mFilterByActorA); + mFilterByGenreA = new QAction(QIcon(":/spreadingpants.png"), tr("Genre"), this); + mFilterByGenreA->setCheckable(true); + mFilterMapper->setMapping(mFilterByGenreA, SeriesTreeWidget::FilterGenre); + connect(mFilterByGenreA, SIGNAL(triggered()), mFilterMapper, SLOT(map())); + mFilterGroup->addAction(mFilterByGenreA); + mFilterByQualityA = new QAction(QIcon(":/shackles.png"), tr("Quality"), this); + mFilterByQualityA->setCheckable(true); + mFilterMapper->setMapping(mFilterByQualityA, SeriesTreeWidget::FilterQuality); + connect(mFilterByQualityA, SIGNAL(triggered()), mFilterMapper, SLOT(map())); + mFilterGroup->addAction(mFilterByQualityA); + mFilterByFilenameA = new QAction(QIcon(":/steel_collar.png"), tr("Filename"), this); + mFilterByFilenameA->setCheckable(true); + mFilterMapper->setMapping(mFilterByFilenameA, SeriesTreeWidget::FilterFileName); + connect(mFilterByFilenameA, SIGNAL(triggered()), mFilterMapper, SLOT(map())); + mFilterGroup->addAction(mFilterByFilenameA); + mFilterByDvdNoA = new QAction(QIcon(":/big_ass.png"), tr("Dvd No."), this); + mFilterByDvdNoA->setCheckable(true); + mFilterMapper->setMapping(mFilterByDvdNoA, SeriesTreeWidget::FilterDvdNo); + connect(mFilterByDvdNoA, SIGNAL(triggered()), mFilterMapper, SLOT(map())); + mFilterGroup->addAction(mFilterByDvdNoA); + mFilterBySizeA = new QAction(QIcon(":/hourglass_figure.png"), tr("Size"), this); + mFilterBySizeA->setCheckable(true); + mFilterMapper->setMapping(mFilterBySizeA, SeriesTreeWidget::FilterSize); + connect(mFilterBySizeA, SIGNAL(triggered()), mFilterMapper, SLOT(map())); + mFilterGroup->addAction(mFilterBySizeA); + connect(mFilterMapper, SIGNAL(mapped(int)), mATree->seriesWidget(), SLOT(setFilterMode(int))); + //file view hover mFSHoverGroup = new QActionGroup(this); mFSHoverGroup->setExclusive(false); @@ -594,26 +636,29 @@ void SheMov::createMenus(){ sep14->setSeparator(true); mTreeViewMenu->addAction(sep14); mTreeHeaderMenu = new QMenu(tr("Show headers"), this); - foreach(QAction *a, mFilesTreeHeadersGroup->actions()){ - mTreeHeaderMenu->addAction(a); - } + mTreeHeaderMenu->addActions(mFilesTreeHeadersGroup->actions()); mTreeViewMenu->addMenu(mTreeHeaderMenu); QAction *sep15 = new QAction(this); sep15->setSeparator(true); mTreeViewMenu->addAction(sep15); mTreeHoverMenu = new QMenu(tr("Hover over"), this); - foreach(QAction *a, mHoverTreeGroup->actions()){ - mTreeHoverMenu->addAction(a); - } + mTreeHoverMenu->addActions(mHoverTreeGroup->actions()); mTreeViewMenu->addMenu(mTreeHoverMenu); mViewAVMenuA = menuBar()->addMenu(mTreeViewMenu); + mTreeFilterMenu = new QMenu(tr("Filter by"), this); + mTreeFilterMenu->addActions(mFilterGroup->actions()); + QAction *sep17 = new QAction(this); + sep17->setSeparator(true); + mTreeViewMenu->addAction(sep17); + mTreeViewMenu->addMenu(mTreeFilterMenu); //FileSystem view menu mFSViewMenu = new QMenu(tr("&View"), this); mFSHoverMenu = new QMenu(tr("Hover over"), this); - foreach(QAction *a, mFSHoverGroup->actions()){ + mFSHoverMenu->addActions(mFSHoverGroup->actions()); + /*foreach(QAction *a, mFSHoverGroup->actions()){ mFSHoverMenu->addAction(a); - } + }*/ mFSViewMenu->addMenu(mFSHoverMenu); mViewFSMenuA = menuBar()->addMenu(mFSViewMenu); @@ -779,6 +824,8 @@ void SheMov::createToolBar(){ toolBar->addAction(mShowArchivedA); toolBar->addAction(mShowLocalA); toolBar->addSeparator(); + toolBar->addActions(mFilterGroup->actions()); + toolBar->addSeparator(); toolBar->addAction(mHoverPicsA); toolBar->addAction(mHoverArchiveA); toolBar->addAction(mHoverDirectoriesA); @@ -871,6 +918,13 @@ void SheMov::readSettings(){ pal.setColor(QPalette::AlternateBase, Qt::white); } qApp->setPalette(pal); + int seriesFilterMode = s.value("archive/filtermode").toInt(); + QAction *filterAction = qobject_cast<QAction*>(mFilterMapper->mapping(seriesFilterMode)); + if(filterAction){ + filterAction->trigger(); + mATree->seriesWidget()->filter(); + } + } void SheMov::checkConsistency(){ |