Call busy indicator from C++

Given the number of identical calls, most pool retrieval functions have
been also aggregated in a single function, postDownload.
This commit is contained in:
Luca Beltrame 2015-02-22 11:36:03 +01:00
parent 59ccfb3aac
commit 532d93ae2f
2 changed files with 34 additions and 18 deletions

View file

@ -117,6 +117,9 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
m_view->rootObject()->setProperty("poolMode", QVariant(false)); m_view->rootObject()->setProperty("poolMode", QVariant(false));
ctxt->setContextProperty("infiniteScroll", DanbooruSettings::self()->infiniteScrolling()); ctxt->setContextProperty("infiniteScroll", DanbooruSettings::self()->infiniteScrolling());
auto rootObj = m_view->rootObject();
connect(m_service, SIGNAL(postDownloadFinished()), rootObj, SIGNAL(downloadFinished()));
statusBar()->addPermanentWidget(m_connectWidget); statusBar()->addPermanentWidget(m_connectWidget);
statusBar()->hide(); statusBar()->hide();
@ -145,9 +148,9 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
actionCollection()->action(QLatin1String("morePosts"))->setEnabled(true); actionCollection()->action(QLatin1String("morePosts"))->setEnabled(true);
if (DanbooruSettings::self()->autoDownload()) { if (DanbooruSettings::self()->autoDownload()) {
m_view->rootObject()->setProperty("poolMode", QVariant(false));
m_service->setPostTags(QStringList()); postDownload(QStringList(), false);
m_service->getPostList();
} }
m_connectWidget->hide(); m_connectWidget->hide();
statusBar()->hide(); statusBar()->hide();
@ -173,6 +176,7 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
auto pool = m_poolModel->poolAt(index.row()); auto pool = m_poolModel->poolAt(index.row());
clearModels(); clearModels();
m_view->rootObject()->setProperty("poolMode", QVariant(true)); m_view->rootObject()->setProperty("poolMode", QVariant(true));
QMetaObject::invokeMethod(m_view->rootObject(), "downloadStarted");
m_service->getPool(pool->id()); m_service->getPool(pool->id());
}); });
@ -182,11 +186,8 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
QDockWidget* searchDockWidget = findChild<QDockWidget*>(QLatin1String("SearchView")); QDockWidget* searchDockWidget = findChild<QDockWidget*>(QLatin1String("SearchView"));
searchDockWidget->hide(); searchDockWidget->hide();
clearModels(); postDownload(m_searchWidget->selectedTags(), true /* relatedTags */);
m_service->setPostTags(m_searchWidget->selectedTags());
m_view->rootObject()->setProperty("poolMode", QVariant(false));
m_service->getPostList();
m_service->getRelatedTags(m_searchWidget->selectedTags());
}); });
connect(m_searchWidget, &DanbooruSearchWidget::rejected, [this]() { connect(m_searchWidget, &DanbooruSearchWidget::rejected, [this]() {
@ -348,7 +349,11 @@ void DanbooruMainWindow::setupActions()
}); });
connect(nextPageAction, &QAction::triggered, [this]() {m_service->nextPostPage();}); connect(nextPageAction, &QAction::triggered, [this]() {
QMetaObject::invokeMethod(m_view->rootObject(), "downloadStarted");
m_service->nextPostPage();
}
);
} }
@ -429,10 +434,8 @@ void DanbooruMainWindow::downloadPosts()
return; return;
} }
clearModels();
m_service->setPostTags(QStringList()); postDownload(QStringList(), false);
m_view->rootObject()->setProperty("poolMode", QVariant(false));
m_service->getPostList();
} }
@ -499,11 +502,8 @@ void DanbooruMainWindow::searchTag(const QModelIndex &index)
QString tagName = m_tagModel->itemAt(index.row())->name(); QString tagName = m_tagModel->itemAt(index.row())->name();
QStringList tags = {tagName}; QStringList tags = {tagName};
clearModels();
m_view->rootObject()->setProperty("poolMode", QVariant(false)); postDownload(tags, true /* relatedTags */);
m_service->getRelatedTags(tags);
m_service->setPostTags(tags);
m_service->getPostList();
} }
@ -516,4 +516,19 @@ void DanbooruMainWindow::clearModels()
} }
void DanbooruMainWindow::postDownload(const QStringList &tags, bool relatedTags)
{
clearModels();
m_view->rootObject()->setProperty("poolMode", QVariant(false));
m_service->setPostTags(tags);
if(relatedTags) {
m_service->getRelatedTags(tags);
}
QMetaObject::invokeMethod(m_view->rootObject(), "downloadStarted");
m_service->getPostList();
}
} // namespace Danbooru } // namespace Danbooru

View file

@ -93,6 +93,7 @@ private:
void setupDockWidgets(); void setupDockWidgets();
void setupConnections(); void setupConnections();
void clearModels(); void clearModels();
void postDownload(const QStringList& tags = QStringList(), bool relatedTags = false);
private Q_SLOTS: private Q_SLOTS:
void connectToBoard(); void connectToBoard();