diff options
Diffstat (limited to 'seriestreewidget.h')
-rw-r--r-- | seriestreewidget.h | 44 |
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 |