summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dbanalyzer.cpp51
-rw-r--r--dbanalyzer.h7
2 files changed, 53 insertions, 5 deletions
diff --git a/dbanalyzer.cpp b/dbanalyzer.cpp
index 22478c5..539a1bc 100644
--- a/dbanalyzer.cpp
+++ b/dbanalyzer.cpp
@@ -60,6 +60,21 @@ DbAnalyzerDialog::DbAnalyzerDialog(QWidget *parent, Qt::WindowFlags f) : QDialog
mStrayActorsV->setAlternatingRowColors(true);
strayActorsT->setLayout(strayActorsL);
+ //strac genres
+ QWidget *strayGenresT = new QWidget;
+ QStringList strayGenresHeaders = QStringList() << tr("Genre") << tr("Genre Id") << tr("Count");
+ mStrayGenresV = new QTreeView;
+ mStrayGenresM = new SmTreeModel(strayGenresHeaders, this);
+ mStrayGenresV->setModel(mStrayGenresM);
+ QVBoxLayout *strayGenresL = new QVBoxLayout;
+ strayGenresL->addWidget(mStrayGenresV);
+ mStrayGenresV->setColumnHidden(1, true);
+ mStrayGenresV->setEditTriggers(QTreeView::NoEditTriggers);
+ mStrayGenresV->setSelectionBehavior(QAbstractItemView::SelectRows);
+ mStrayGenresV->setSelectionMode(QAbstractItemView::ExtendedSelection);
+ mStrayGenresV->setAlternatingRowColors(true);
+ strayGenresT->setLayout(strayGenresL);
+
//buttons
mCancel = new QPushButton(tr("Cancel"));
connect(mCancel, SIGNAL(clicked()), this, SLOT(cancelAnalyzer()));
@@ -72,6 +87,7 @@ DbAnalyzerDialog::DbAnalyzerDialog(QWidget *parent, Qt::WindowFlags f) : QDialog
//setup dialog
mTab->addTab(noActorsT, tr("No Actors"));
mTab->addTab(strayActorsT, tr("Stray actors"));
+ mTab->addTab(strayGenresT, tr("Stray genres"));
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(mTab);
QHBoxLayout *buttonLayout = new QHBoxLayout;
@@ -104,6 +120,7 @@ void DbAnalyzerDialog::analyzerFinished(){
mClose->setEnabled(true);
populate(mNoActorsV, mNoActorsM, mAnalyzer->noActors());
populate(mStrayActorsV, mStrayActorsM, mAnalyzer->strayActors());
+ populate(mStrayGenresV, mStrayGenresM, mAnalyzer->strayGenres());
}
void DbAnalyzerDialog::noActorsDoubleClicked(const QModelIndex &idx){
@@ -126,6 +143,10 @@ void DbAnalyzerDialog::deleteItems(){
view = mStrayActorsV;
deleteMode = Actors;
break;
+ case 2:
+ view = mStrayGenresV;
+ deleteMode = Genres;
+ break;
default:
view = 0;
break;
@@ -164,12 +185,15 @@ DbAnalyzer::DbAnalyzer(QObject *parent) : QThread(parent), mCanceled(false), mSt
mNoActorQuery = new QSqlQuery(mDb);
mNoActorQuery->prepare("SELECT series.tseries_name, seriesparts.iseriespart, seriesparts.tsubtitle, series.iseries_id, seriesparts.iseriesparts_id FROM series, seriesparts LEFT JOIN seriesparts_actormap ON seriesparts.iseriesparts_id = seriesparts_actormap.iseriesparts_id WHERE iactors_id IS NULL AND seriesparts.iseries_id = series.iseries_id ORDER BY tseries_name");
mStrayActorsQuery = new QSqlQuery(mDb);
- mStrayActorsQuery->prepare("SELECT actors.tactorname, actors.iactors_id, COUNT(seriesparts_actormap.iactors_id) FROM actors LEFT JOIN seriesparts_actormap ON actors.iactors_id = seriesparts_actormap.iactors_id WHERE seriesparts_actormap.iactors_id IS NULL GROUP BY actors.iactors_id, actors.tactorname ORDER BY actors.tactorname;");
+ mStrayActorsQuery->prepare("SELECT actors.tactorname, actors.iactors_id, COUNT(seriesparts_actormap.iactors_id) FROM actors LEFT JOIN seriesparts_actormap ON actors.iactors_id = seriesparts_actormap.iactors_id WHERE seriesparts_actormap.iactors_id IS NULL GROUP BY actors.iactors_id, actors.tactorname ORDER BY actors.tactorname");
+ mStrayGenresQuery = new QSqlQuery(mDb);
+ mStrayGenresQuery->prepare("SELECT genres.tgenrename, genres.igenres_id, COUNT(seriesparts_genremap.igenres_id) FROM genres LEFT JOIN seriesparts_genremap ON genres.igenres_id = seriesparts_genremap.igenres_id WHERE seriesparts_genremap.igenres_id IS NULL GROUP BY genres.igenres_id, genres.tgenrename ORDER BY genres.tgenrename");
}
DbAnalyzer::~DbAnalyzer(){
delete mNoActorQuery;
delete mStrayActorsQuery;
+ delete mStrayGenresQuery;
mDb.close();
mDb = QSqlDatabase();
QSqlDatabase::removeDatabase("analyzerDb");
@@ -182,7 +206,8 @@ void DbAnalyzer::setCancel(bool canceled){
void DbAnalyzer::run(){
noActorsCheck();
- strayActorsCheck();
+ mStrayActorR = strayCheck(mStrayActorsQuery);
+ mStrayGenresR = strayCheck(mStrayGenresQuery);
}
void DbAnalyzer::noActorsCheck(){
@@ -208,7 +233,25 @@ void DbAnalyzer::noActorsCheck(){
emit message(tr("Done fetching movies"));
}
-void DbAnalyzer::strayActorsCheck(){
+const QList<QList<QVariant> > DbAnalyzer::strayCheck(QSqlQuery *query){
+ if(!query->exec()){
+ QMutexLocker m(&mStatusMutex);
+ mStatus = Fail;
+ return QList<QList<QVariant> >();
+ }
+ QList<QList<QVariant> > retval;
+ while(query->next()){
+ if(mCanceled){
+ break;
+ }
+ QList<QVariant> res;
+ res << query->value(0) << query->value(1) << query->value(2);
+ retval << res;
+ }
+ return retval;
+}
+
+/*void DbAnalyzer::strayActorsCheck(){
if(!mStrayActorsQuery->exec()){
QMutexLocker m(&mStatusMutex);
mStatus = Fail;
@@ -224,4 +267,4 @@ void DbAnalyzer::strayActorsCheck(){
mStrayActorR << res;
}
emit message(tr("Done fetching stray actors"));
-}
+}*/
diff --git a/dbanalyzer.h b/dbanalyzer.h
index b300c3a..1e47742 100644
--- a/dbanalyzer.h
+++ b/dbanalyzer.h
@@ -46,8 +46,10 @@ class DbAnalyzerDialog : public QDialog {
QTabWidget *mTab;
QTreeView *mNoActorsV;
QTreeView *mStrayActorsV;
+ QTreeView *mStrayGenresV;
SmTreeModel *mNoActorsM;
SmTreeModel *mStrayActorsM;
+ SmTreeModel *mStrayGenresM;
QPushButton *mClose;
QPushButton *mCancel;
QPushButton *mDelete;
@@ -63,6 +65,7 @@ class DbAnalyzer : public QThread {
int status() { return mStatus; }
const QList<QList<QVariant> > noActors() { return mNoActorR; }
const QList<QList<QVariant> > strayActors() { return mStrayActorR; }
+ const QList<QList<QVariant> > strayGenres() { return mStrayGenresR; }
public slots:
void setCancel(bool canceled);
@@ -75,12 +78,14 @@ class DbAnalyzer : public QThread {
private:
void noActorsCheck();
- void strayActorsCheck();
+ const QList<QList<QVariant> > strayCheck(QSqlQuery *query);
QSqlDatabase mDb;
QSqlQuery *mNoActorQuery;
QSqlQuery *mStrayActorsQuery;
+ QSqlQuery *mStrayGenresQuery;
QList<QList<QVariant> > mNoActorR;
QList<QList<QVariant> > mStrayActorR;
+ QList<QList<QVariant> > mStrayGenresR;
QMutex mCancelMutex;
QMutex mStatusMutex;
bool mCanceled;