diff options
-rw-r--r-- | dog_hood.png | bin | 0 -> 778 bytes | |||
-rw-r--r-- | seriestreemodel.cpp | 30 | ||||
-rw-r--r-- | seriestreemodel.h | 3 | ||||
-rw-r--r-- | seriestreewidget.cpp | 15 | ||||
-rw-r--r-- | seriestreewidget.h | 2 | ||||
-rw-r--r-- | shemov.cpp | 19 | ||||
-rw-r--r-- | shemov.h | 2 | ||||
-rw-r--r-- | shemov.qrc | 1 | ||||
-rw-r--r-- | smglobals.cpp | 1 |
9 files changed, 70 insertions, 3 deletions
diff --git a/dog_hood.png b/dog_hood.png Binary files differnew file mode 100644 index 0000000..d25fc5e --- /dev/null +++ b/dog_hood.png diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp index 7cc578a..a86cad6 100644 --- a/seriestreemodel.cpp +++ b/seriestreemodel.cpp @@ -45,6 +45,10 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree mNextDvdNoQuery->prepare("SELECT MAX(idvd) FROM files"); mGenreFilterQuery = new QSqlQuery(mDb); mGenreFilterQuery->prepare("SELECT DISTINCT(series.iseries_id), series.tseries_name FROM series, seriesparts, seriesparts_genremap, genres where tgenrename LIKE :pat AND genres.igenres_id = seriesparts_genremap.igenres_id AND seriesparts_genremap.iseriesparts_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id"); + mFavoriteSeriesIdQuery = new QSqlQuery(mDb); + mFavoriteSeriesIdQuery->prepare("SELECT DISTINCT(series.iseries_id), series.tseries_name FROM series, seriesparts WHERE seriesparts.bfavorite = true and seriesparts.iseries_id = series.iseries_id"); + mFavoriteSeriesPartsQuery = new QSqlQuery(mDb); + mFavoriteSeriesPartsQuery->prepare("SELECT iseriesparts_id, iseriespart FROM seriesparts WHERE iseries_id = :id AND bfavorite = true"); populate(); } @@ -62,6 +66,8 @@ SeriesTreeModel::~SeriesTreeModel(){ delete mSortedMovieListQuery; delete mNextDvdNoQuery; delete mGenreFilterQuery; + delete mFavoriteSeriesIdQuery; + delete mFavoriteSeriesPartsQuery; mDb = QSqlDatabase(); } @@ -448,6 +454,30 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column } } +void SeriesTreeModel::setFavoriteFilter(){ + if(mFavoriteSeriesIdQuery->exec()){ + mSeriesPartSeriesMap.clear(); + SmTreeItem *rootItem = new SmTreeItem(6); + while(mFavoriteSeriesIdQuery->next()){ + QList<QVariant> seriesData; + seriesData << mFavoriteSeriesIdQuery->value(1) << mFavoriteSeriesIdQuery->value(0) << QVariant() << QVariant() << Series << false; + SmTreeItem *seriesItem = new SmTreeItem(seriesData, rootItem); + rootItem->appendChild(seriesItem); + mFavoriteSeriesPartsQuery->bindValue(":id", seriesData.at(1)); + if(mFavoriteSeriesPartsQuery->exec()){ + while(mFavoriteSeriesPartsQuery->next()){ + QList<QVariant> partData; + partData << seriesData.at(Name) << seriesData.at(SeriesId) << mFavoriteSeriesPartsQuery->value(0) << mFavoriteSeriesPartsQuery->value(1) << Part << true; + SmTreeItem *partItem = new SmTreeItem(partData, seriesItem); + seriesItem->appendChild(partItem); + mSeriesPartSeriesMap.insert(mFavoriteSeriesPartsQuery->value(0).toInt(), seriesData.at(1).toInt()); + } + } + } + setRoot(rootItem); + } +} + void SeriesTreeModel::readSettings(){ QSettings s; QVariant fc = s.value("ui/favoritecolor"); diff --git a/seriestreemodel.h b/seriestreemodel.h index 9c1d2d1..7ac08de 100644 --- a/seriestreemodel.h +++ b/seriestreemodel.h @@ -50,6 +50,7 @@ class SeriesTreeModel : public SmTreeModel { void clearFilter(); void setMappingFilter(const QString &filter, const QString &table); void setFileFilter(const QString &filter, const QString &column, int queryType); + void setFavoriteFilter(); signals: void needResort(); @@ -80,6 +81,8 @@ class SeriesTreeModel : public SmTreeModel { QSqlQuery *mSortedMovieListQuery; QSqlQuery *mNextDvdNoQuery; QSqlQuery *mGenreFilterQuery; + QSqlQuery *mFavoriteSeriesIdQuery; + QSqlQuery *mFavoriteSeriesPartsQuery; QHash<int, int> mSeriesPartSeriesMap; QColor mFavoriteColor; }; diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp index 976d55a..fba155b 100644 --- a/seriestreewidget.cpp +++ b/seriestreewidget.cpp @@ -290,6 +290,21 @@ void SeriesTreeWidget::filter(){ expandItems(mExpandedItems); } +void SeriesTreeWidget::filterFavorites(bool checked){ + if(checked){ + mOldFilterText = mFilterEdit->text(); + clearFilter(); + mModel->setFavoriteFilter(); + expandItems(mExpandedItems); + }else{ + mFilterEdit->setText(mOldFilterText); + filter(); + } + mFilterEdit->setEnabled(!checked); + mFilter->setEnabled(!checked); + mClear->setEnabled(!checked); +} + void SeriesTreeWidget::clearFilter(){ mModel->clearFilter(); mProxy->setFilterRegExp(QString()); diff --git a/seriestreewidget.h b/seriestreewidget.h index c5027c7..70e17ac 100644 --- a/seriestreewidget.h +++ b/seriestreewidget.h @@ -55,6 +55,7 @@ class SeriesTreeWidget : public QWidget { void addCover(); void setFilterMode(int mode); void filter(); + void filterFavorites(bool checked); private slots: void clearFilter(); @@ -81,6 +82,7 @@ class SeriesTreeWidget : public QWidget { QCompleter *mFilterCompleter; QThread *mCompleterProducerThread; CompleterProducer *mCompleterProducer; + QString mOldFilterText; }; class SeriesTreeView : public QTreeView { @@ -536,6 +536,10 @@ void SheMov::createActions(){ connect(mFilterBySizeA, SIGNAL(triggered()), mFilterMapper, SLOT(map())); mFilterGroup->addAction(mFilterBySizeA); connect(mFilterMapper, SIGNAL(mapped(int)), mATree->seriesWidget(), SLOT(setFilterMode(int))); + mFilterFavoritesA = new QAction(QIcon(":/dog_hood.png"), tr("Favorites only"), this); + mFilterFavoritesA->setCheckable(true); + connect(mFilterFavoritesA, SIGNAL(triggered(bool)), this, SLOT(toggleFilterGroup(bool))); + connect(mFilterFavoritesA, SIGNAL(triggered(bool)), mATree->seriesWidget(), SLOT(filterFavorites(bool))); //file view hover mFSHoverGroup = new QActionGroup(this); @@ -667,6 +671,10 @@ void SheMov::createMenus(){ sep17->setSeparator(true); mTreeViewMenu->addAction(sep17); mTreeViewMenu->addMenu(mTreeFilterMenu); + QAction *sep18 = new QAction(this); + sep18->setSeparator(true); + mTreeViewMenu->addAction(sep18); + mTreeViewMenu->addAction(mFilterFavoritesA); //FileSystem view menu mFSViewMenu = new QMenu(tr("&View"), this); @@ -744,9 +752,9 @@ void SheMov::createMenus(){ sep6->setSeparator(true); mATree->seriesWidget()->seriesTree()->addAction(sep6); mATree->seriesWidget()->seriesTree()->addAction(mAddCoverA); - QAction *sep18 = new QAction(this); - sep18->setSeparator(true); - mATree->seriesWidget()->seriesTree()->addAction(sep18); + QAction *sep19 = new QAction(this); + sep19->setSeparator(true); + mATree->seriesWidget()->seriesTree()->addAction(sep19); mATree->seriesWidget()->seriesTree()->addAction(mToggleFavoriteA); //ArchiveTreeView fileWidget context menu @@ -842,6 +850,7 @@ void SheMov::createToolBar(){ toolBar->addAction(mShowLocalA); toolBar->addSeparator(); toolBar->addActions(mFilterGroup->actions()); + toolBar->addAction(mFilterFavoritesA); toolBar->addSeparator(); toolBar->addAction(mHoverPicsA); toolBar->addAction(mHoverArchiveA); @@ -963,3 +972,7 @@ void SheMov::toggleHover(QObject *object){ void SheMov::checkMount(bool mounted){ mMountDvdA->setChecked(mounted); } + +void SheMov::toggleFilterGroup(bool checked){ + mFilterGroup->setEnabled(!checked); +} @@ -47,6 +47,7 @@ class SheMov : public QMainWindow { void checkConsistency(); void toggleHover(QObject *object); void checkMount(bool mounted); + void toggleFilterGroup(bool checked); signals: void configChanged(); @@ -132,6 +133,7 @@ class SheMov : public QMainWindow { QAction *mFilterByDvdNoA; QAction *mFilterBySizeA; QActionGroup *mFilterGroup; + QAction *mFilterFavoritesA; //TreeView FileWidget Actions QAction *mMoveToBurnA; @@ -27,5 +27,6 @@ <file>big_tit.png</file> <file>bizarre_amputee.png</file> <file>spreadingpants.png</file> + <file>dog_hood.png</file> </qresource> </RCC> diff --git a/smglobals.cpp b/smglobals.cpp index 3084bd6..de71872 100644 --- a/smglobals.cpp +++ b/smglobals.cpp @@ -128,6 +128,7 @@ SmGlobals::SmGlobals() : mPictureViewer(0), mFrameCache(0){ mIcons.insert("Big tit", ":/big_tit.png"); mIcons.insert("Bizarre amputee", ":/bizarre_amputee.png"); mIcons.insert("Spreading pants", ":/spreadingpants.png"); + mIcons.insert("Leather dog hood", ":/dog_hood.png"); } //FrameCache |