/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #ifndef DBANALYZER_H #define DBANALYZER_H #include #include #include #include #include #include #include class QSqlQuery; class QTabWidget; class QTreeView; class QPushButton; class SmTreeModel; class DbAnalyzer; class QLabel; class DbAnalyzerDialog : public QDialog { Q_OBJECT public: enum DeleteMode { Actors, Genres }; explicit DbAnalyzerDialog(QWidget *parent = 0, Qt::WindowFlags f = 0); public slots: void refresh(); signals: void partClicked(int seriesPartId, int seriesId); void delItems(int mode, QList &ids); private slots: void cancelAnalyzer(); void analyzerStarted(); void analyzerFinished(); void noActorsDoubleClicked(const QModelIndex &); void deleteItems(); void tabChanged(int index); private: void populate(QTreeView *view ,SmTreeModel *model, const QList > &data); QTabWidget *mTab; QTreeView *mNoActorsV; QTreeView *mStrayActorsV; QTreeView *mStrayGenresV; SmTreeModel *mNoActorsM; SmTreeModel *mStrayActorsM; SmTreeModel *mStrayGenresM; QPushButton *mClose; QPushButton *mCancel; QPushButton *mDelete; QPushButton *mRefresh; QLabel *mTotal; QList mTotals; DbAnalyzer *mAnalyzer; }; class DbAnalyzer : public QThread { Q_OBJECT public: enum Status { Ok, Fail }; explicit DbAnalyzer(QObject *parent = 0); ~DbAnalyzer(); int status() { return mStatus; } const QList > noActors() { return mNoActorR; } const QList > strayActors() { return mStrayActorR; } const QList > strayGenres() { return mStrayGenresR; } public slots: void setCancel(bool canceled); signals: void message(const QString &); protected: void run(); private: void noActorsCheck(); const QList > strayCheck(QSqlQuery *query); QSqlDatabase mDb; QSqlQuery *mNoActorQuery; QSqlQuery *mStrayActorsQuery; QSqlQuery *mStrayGenresQuery; QList > mNoActorR; QList > mStrayActorR; QList > mStrayGenresR; QMutex mCancelMutex; QMutex mStatusMutex; bool mCanceled; int mStatus; }; #endif // DBANALYZER_H