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:
		
					parent
					
						
							
								59ccfb3aac
							
						
					
				
			
			
				commit
				
					
						532d93ae2f
					
				
			
		
					 2 changed files with 34 additions and 18 deletions
				
			
		| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue