summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dog_hood.pngbin0 -> 778 bytes
-rw-r--r--seriestreemodel.cpp30
-rw-r--r--seriestreemodel.h3
-rw-r--r--seriestreewidget.cpp15
-rw-r--r--seriestreewidget.h2
-rw-r--r--shemov.cpp19
-rw-r--r--shemov.h2
-rw-r--r--shemov.qrc1
-rw-r--r--smglobals.cpp1
9 files changed, 70 insertions, 3 deletions
diff --git a/dog_hood.png b/dog_hood.png
new file mode 100644
index 0000000..d25fc5e
--- /dev/null
+++ b/dog_hood.png
Binary files differ
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 {
diff --git a/shemov.cpp b/shemov.cpp
index 4036d9a..6a4f13f 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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);
+}
diff --git a/shemov.h b/shemov.h
index 9406263..b926393 100644
--- a/shemov.h
+++ b/shemov.h
@@ -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;
diff --git a/shemov.qrc b/shemov.qrc
index 8c0789d..5c5368c 100644
--- a/shemov.qrc
+++ b/shemov.qrc
@@ -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