From 83d2b014f563b9de387c4d8e9e45adbb36b56825 Mon Sep 17 00:00:00 2001 From: Arno Date: Wed, 28 Dec 2011 19:36:05 +0100 Subject: Mark items in DbAnalyzerDialog It's now possible to mark items in DbAnalyzerDialog with a different color, when there are no covers or actor information available on the net. I enhanced SmTreeItem to contain a QVariant::foregroundColor, and made SmTreeModel return it when QModelIndex::data with role Qt::ForegroundRole is called. Maybe that could be useful for other things like favorites and such... --- dbanalyzer.h | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'dbanalyzer.h') diff --git a/dbanalyzer.h b/dbanalyzer.h index 653aa70..25b0bfb 100644 --- a/dbanalyzer.h +++ b/dbanalyzer.h @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -27,7 +28,7 @@ class QLabel; class DbAnalyzerDialog : public QDialog { Q_OBJECT public: - enum DeleteMode { Actors, Genres }; + enum Mode { Actors, Genres }; explicit DbAnalyzerDialog(QWidget *parent = 0, Qt::WindowFlags f = 0); public slots: @@ -44,9 +45,12 @@ class DbAnalyzerDialog : public QDialog { void noDataDoubleClicked(const QModelIndex &); void deleteItems(); void tabChanged(int index); + void setMarks(); + void deleteMarks(); private: - void populate(QTreeView *view ,SmTreeModel *model, const QList > &data); + void populate(QTreeView *view ,SmTreeModel *model, const QList > &data, const QHash &marks = QHash()); + const QList currentIds() const; QTabWidget *mTab; QTreeView *mNoActorsV; QTreeView *mNoCoversV; @@ -58,27 +62,34 @@ class DbAnalyzerDialog : public QDialog { SmTreeModel *mStrayGenresM; QPushButton *mClose; QPushButton *mCancel; - QPushButton *mDelete; + QPushButton *mMark; QPushButton *mRefresh; QLabel *mTotal; QList mTotals; DbAnalyzer *mAnalyzer; + int mMarkMode; + QTreeView *mCurrentView; }; class DbAnalyzer : public QThread { Q_OBJECT public: enum Status { Ok, Fail }; + enum Marks { NOMARKS = 0, MARKS_ACTORS = 1, MARKS_COVERS = 2 }; explicit DbAnalyzer(QObject *parent = 0); ~DbAnalyzer(); int status() { return mStatus; } - const QList > noActors() { return mNoActorR; } - const QList > noCovers() { return mNoCoverR; } + const QList > noActors() const { return mNoActorR; } + const QHash actorMarks() const { return mActorMarks; } + const QList > noCovers() const { return mNoCoverR; } + const QHash coverMarks() const { return mCoverMarks; } const QList > strayActors() { return mStrayActorR; } const QList > strayGenres() { return mStrayGenresR; } public slots: void setCancel(bool canceled); + void setMarks(const QList &ids, int reason, int mark_id); + void deleteMarks(const QList &ids, int reason); signals: void message(const QString &); @@ -89,15 +100,22 @@ class DbAnalyzer : public QThread { private: const QList > noDataCheck(QSqlQuery *query); const QList > strayCheck(QSqlQuery *query); + QHash marks(int markType); + void setStatus(int status); QSqlDatabase mDb; QSqlQuery *mNoActorQuery; QSqlQuery *mNoCoverQuery; QSqlQuery *mStrayActorsQuery; QSqlQuery *mStrayGenresQuery; + QSqlQuery *mMarksQuery; + QSqlQuery *mSetMarksQuery; + QSqlQuery *mDeleteMarksQuery; QList > mNoActorR; QList > mNoCoverR; QList > mStrayActorR; QList > mStrayGenresR; + QHash mActorMarks; + QHash mCoverMarks; QMutex mCancelMutex; QMutex mStatusMutex; bool mCanceled; -- cgit v1.2.3-70-g09d2