diff options
author | Arno <am@disconnect.de> | 2013-07-27 07:18:32 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-07-27 07:18:32 +0200 |
commit | 1b1d3a18a8fffdd61f533fd4b0bde4f75d683212 (patch) | |
tree | 51b60f6afbe4a5e1bd8617a7c18f08a30e971526 /archivemodel.cpp | |
parent | 8fba0fcb81e7b517804f34a5c8ad3741f92926da (diff) | |
download | SheMov-1b1d3a18a8fffdd61f533fd4b0bde4f75d683212.tar.gz SheMov-1b1d3a18a8fffdd61f533fd4b0bde4f75d683212.tar.bz2 SheMov-1b1d3a18a8fffdd61f533fd4b0bde4f75d683212.zip |
Cleanup closeEvent
Don't try to delete all the prepared statements manually. Get rid of the
~destructors and just close the QSqlDatabase. close() deletes all
Statements.
Also, quit() all QThreads on closeEvent() except CompleterProducer. When
the experimental archive view gets merged, that QThread is gone. No need
to bother...
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r-- | archivemodel.cpp | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 28a9cbb..4ca9f1c 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -878,7 +878,7 @@ void ArchiveFilesModel::readConfig(){ /* * ArchiveCollector BEGIN */ -ArchiveCollector::ArchiveCollector(int numFields, int order, QObject *parent) : QThread(parent), mRootItem(0), mNumFields(numFields), mSortOrder(order) { +ArchiveCollector::ArchiveCollector(int numFields, int order, QObject *parent) : QThread(parent), mRootItem(0), mNumFields(numFields), mSortOrder(order), mCancelled(false) { QString dbName = QString("%1").arg((qint64(this))); mDb = QSqlDatabase::cloneDatabase(QSqlDatabase::database("treedb"), dbName); mDb.open(); @@ -919,7 +919,9 @@ void ArchiveCollector::run(){ void ArchiveCollector::populateBySeriesName() { fetchSeries(QVariant(), mRootItem); for(int i = 0; i < mRootItem->childCount(); ++i){ - checkCancelled(); + if(checkCancelled()){ + return; + } fetchParts(QVariant(), mRootItem->child(i)); } } @@ -927,7 +929,9 @@ void ArchiveCollector::populateBySeriesName() { void ArchiveCollector::populateByGenre(){ QSqlQuery genreIdQuery = QSqlQuery("SELECT igenres_id, tgenrename FROM genres ORDER BY tgenrename", mDb); while(genreIdQuery.next()){ - checkCancelled(); + if(checkCancelled()){ + return; + } QList<QVariant> genreIdData; genreIdData << genreIdQuery.value(1) << genreIdQuery.value(0) << QVariant() << QVariant() << ArchiveModel::GenreNode << false << QVariant() << QVariant(); SmTreeItem *genreIdItem = new SmTreeItem(genreIdData, mRootItem); @@ -939,7 +943,9 @@ void ArchiveCollector::populateByGenre(){ void ArchiveCollector::populateByActor(){ QSqlQuery actorIdQuery = QSqlQuery("SELECT iactors_id, tactorname FROM actors ORDER BY tactorname", mDb); while(actorIdQuery.next()){ - checkCancelled(); + if(checkCancelled()){ + return; + } QList<QVariant> actorIdData; actorIdData << actorIdQuery.value(1) << actorIdQuery.value(0) << QVariant() << QVariant() << ArchiveModel::ActorNode << false << QVariant() << QVariant(); SmTreeItem *actorIdItem = new SmTreeItem(actorIdData, mRootItem); @@ -950,7 +956,9 @@ void ArchiveCollector::populateByActor(){ void ArchiveCollector::fetchChildren(SmTreeItem *parent){ for(int i = 0; i < parent->childCount(); ++i){ - checkCancelled(); + if(checkCancelled()){ + return; + } fetchSeries(parent->child(i)->data(ArchiveModel::GenericId), parent->child(i)); for(int j = 0; j < parent->child(i)->childCount(); ++j){ checkCancelled(); @@ -983,7 +991,9 @@ void ArchiveCollector::fetchSeries(const QVariant &id, SmTreeItem *parent){ return; } while(seriesIdQuery.next()){ - checkCancelled(); + if(checkCancelled()){ + return; + } QList<QVariant> seriesData; seriesData << seriesIdQuery.value(1) << seriesIdQuery.value(0) << QVariant() << QVariant() << ArchiveModel::SeriesNode << false << QVariant() << QVariant(); SmTreeItem *seriesItem = new SmTreeItem(seriesData, parent); @@ -1009,7 +1019,9 @@ void ArchiveCollector::fetchParts(const QVariant &id, SmTreeItem *parent){ } partsQuery.exec(); while(partsQuery.next()){ - checkCancelled(); + if(checkCancelled()){ + return; + } QList<QVariant> partData; partData << parent->data(ArchiveModel::Name) << parent->data(ArchiveModel::GenericId) << partsQuery.value(0) << partsQuery.value(1) << ArchiveModel::SeriesPartNode << partsQuery.value(2) << partsQuery.value(3) << QVariant(); SmTreeItem *partItem = new SmTreeItem(partData, parent); @@ -1018,10 +1030,7 @@ void ArchiveCollector::fetchParts(const QVariant &id, SmTreeItem *parent){ parent->setData(ArchiveModel::Count, parent->childCount()); } -void ArchiveCollector::checkCancelled(){ +bool ArchiveCollector::checkCancelled(){ QMutexLocker l(&mCancelledMx); - if(mCancelled){ - mCancelled = false; - quit(); - } + return mCancelled; } |