summaryrefslogtreecommitdiffstats
path: root/archivemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r--archivemodel.cpp33
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;
}