summaryrefslogtreecommitdiffstats
path: root/shemov.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-12-28 13:32:12 +0100
committerArno <am@disconnect.de>2010-12-28 13:32:12 +0100
commited5de88d481c31fbad120332651eb746a0c03de3 (patch)
tree39c5aec18eca4ea29d8250b4f16ecfc4e934df46 /shemov.cpp
parent6a56c5d5541bd471d78b4797ffccd378c1e73550 (diff)
downloadSheMov-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.cpp70
1 files changed, 62 insertions, 8 deletions
diff --git a/shemov.cpp b/shemov.cpp
index 286d33b..ccf773e 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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(){