diff options
author | Arno <am@disconnect.de> | 2010-12-28 13:32:12 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-12-28 13:32:12 +0100 |
commit | ed5de88d481c31fbad120332651eb746a0c03de3 (patch) | |
tree | 39c5aec18eca4ea29d8250b4f16ecfc4e934df46 /seriestreewidget.h | |
parent | 6a56c5d5541bd471d78b4797ffccd378c1e73550 (diff) | |
download | SheMov-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 '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 |