summaryrefslogtreecommitdiffstats
path: root/seriestreewidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'seriestreewidget.h')
-rw-r--r--seriestreewidget.h44
1 files changed, 43 insertions, 1 deletions
diff --git a/seriestreewidget.h b/seriestreewidget.h
index fc55415..02a6693 100644
--- a/seriestreewidget.h
+++ b/seriestreewidget.h
@@ -12,6 +12,8 @@
#include <QTreeView>
#include <QSortFilterProxyModel>
#include <QDialog>
+#include <QSqlDatabase>
+#include <QHash>
class QLineEdit;
class QPushButton;
@@ -19,6 +21,10 @@ class QSortFilterProxyModel;
class QComboBox;
class QEvent;
class QLabel;
+class QCompleter;
+class QStringListModel;
+class QSqlQuery;
+class QThread;
class SeriesTreeModel;
class SeriesTreeView;
class SeriesTreeSortModel;
@@ -26,13 +32,16 @@ class HoverWindow;
class FilesTreeModel;
class AddCoverDialog;
class HoverWindow;
+class CompleterProducer;
class SeriesTreeWidget : public QWidget {
Q_OBJECT
public:
+ enum FilterMode { FilterSeries = 1, FilterActor = 2, FilterGenre = 3, FilterSize = 4, FilterQuality = 5, FilterFileName = 6, FilterDvdNo = 7 };
explicit SeriesTreeWidget(QWidget *parent = 0);
SeriesTreeView *seriesTree() { return mView; }
SeriesTreeSortModel *seriesProxy() { return mProxy; }
+ int filterMode() const { return mFilterMode; }
public slots:
void newSeries();
@@ -42,15 +51,17 @@ class SeriesTreeWidget : public QWidget {
void writeSettings();
void expandCurrent();
void addCover();
+ void setFilterMode(int mode);
+ void filter();
private slots:
- void filter();
void clearFilter();
void resort();
void itemExpanded(const QModelIndex &);
void itemCollaped(const QModelIndex &);
void expandItems(const QStringList &items);
void editItem();
+ void producerFinished(QStringListModel *model);
signals:
void filesReload();
@@ -64,6 +75,10 @@ class SeriesTreeWidget : public QWidget {
SeriesTreeModel *mModel;
AddCoverDialog *mCoverDialog;
QStringList mExpandedItems;
+ int mFilterMode;
+ QCompleter *mFilterCompleter;
+ QThread *mCompleterProducerThread;
+ CompleterProducer *mCompleterProducer;
};
class SeriesTreeView : public QTreeView {
@@ -119,4 +134,31 @@ class AddCoverDialog : public QDialog {
FilesTreeModel *mFilesModel;
};
+class CompleterProducer : public QObject {
+ Q_OBJECT
+ public:
+ CompleterProducer(int Mode = SeriesTreeWidget::FilterSeries, QObject *parent = 0);
+ ~CompleterProducer();
+
+ public slots:
+ void produce();
+ void setMode(int mode) { mMode = mode; }
+
+ signals:
+ void done(QStringListModel *model);
+
+ private:
+ QStringListModel *mModel;
+ int mMode;
+ QSqlDatabase mDb;
+ QSqlQuery *mSeriesQuery;
+ QSqlQuery *mActorsQuery;
+ QSqlQuery *mGenresQuery;
+ QSqlQuery *mSizeQuery;
+ QSqlQuery *mQualityQuery;
+ QSqlQuery *mFileNameQuery;
+ QSqlQuery *mDvdNoQuery;
+ QHash<int, QSqlQuery*> mQueryHash;
+};
+
#endif