logic: Show hidden indexing dialog on refresh

* Fixed refresh restarted when refreshing while processing files
This commit is contained in:
Eberhard Graether
2018-10-17 01:30:33 +02:00
parent d78e80b548
commit 842bce8b32
12 changed files with 64 additions and 40 deletions
+13 -6
View File
@@ -134,8 +134,8 @@ void QtDialogView::hideProgressDialog()
}
void QtDialogView::startIndexingDialog(
Project* project, const std::vector<RefreshMode>& enabledModes, const RefreshInfo& info,
std::function<void(const RefreshInfo& info)> onStartIndexing)
Project* project, const std::vector<RefreshMode>& enabledModes, const RefreshMode initialMode,
std::function<void(const RefreshInfo& info)> onStartIndexing, std::function<void()> onCancelIndexing)
{
m_refreshInfos.clear();
@@ -146,9 +146,6 @@ void QtDialogView::startIndexingDialog(
m_windowStack.clearWindows();
QtIndexingDialog* window = createWindow();
window->setupStart(enabledModes);
m_refreshInfos.emplace(info.mode, info);
connect(window, &QtIndexingDialog::setMode,
[=](RefreshMode refreshMode)
@@ -157,6 +154,7 @@ void QtDialogView::startIndexingDialog(
if (it != m_refreshInfos.end())
{
window->updateRefreshInfo(it->second);
window->show();
return;
}
@@ -184,6 +182,7 @@ void QtDialogView::startIndexingDialog(
timer->stop();
hideUnknownProgress();
window->show();
}
);
}
@@ -209,11 +208,19 @@ void QtDialogView::startIndexingDialog(
connect(window, &QtWindow::canceled,
[=]()
{
Task::dispatch(std::make_shared<TaskLambda>(
[=]()
{
onCancelIndexing();
}
));
setUIBlocked(false);
}
);
window->updateRefreshInfo(info);
window->setupStart(enabledModes, initialMode);
window->hide();
setUIBlocked(true);
}
);
+2 -2
View File
@@ -40,8 +40,8 @@ public:
void hideProgressDialog() override;
void startIndexingDialog(
Project* project, const std::vector<RefreshMode>& enabledModes, const RefreshInfo& info,
std::function<void(const RefreshInfo& info)> onStartIndexing) override;
Project* project, const std::vector<RefreshMode>& enabledModes, const RefreshMode initialMode,
std::function<void(const RefreshInfo& info)> onStartIndexing, std::function<void()> onCancelIndexing) override;
void updateIndexingDialog(
size_t startedFileCount, size_t finishedFileCount, size_t totalFileCount, const std::vector<FilePath>& sourcePaths) override;
DatabasePolicy finishedIndexingDialog(
+9 -2
View File
@@ -3,12 +3,13 @@
#include <QHBoxLayout>
#include <QFrame>
#include "MessageIndexingShowDialog.h"
#include "MessageRefresh.h"
#include "ResourcePaths.h"
#include "QtSearchBarButton.h"
#include "utilityQt.h"
#include "QtViewWidgetWrapper.h"
#include "utilityQt.h"
QtRefreshView::QtRefreshView(ViewLayout* viewLayout)
: RefreshView(viewLayout)
@@ -25,7 +26,13 @@ QtRefreshView::QtRefreshView(ViewLayout* viewLayout)
new QtSearchBarButton(ResourcePaths::getGuiPath().concatenate(L"refresh_view/images/refresh.png"));
refreshButton->setObjectName("refresh_button");
refreshButton->setToolTip("refresh");
m_widget->connect(refreshButton, &QPushButton::clicked, [](){ MessageRefresh().dispatch(); });
m_widget->connect(refreshButton, &QPushButton::clicked,
[]()
{
MessageIndexingShowDialog().dispatch();
MessageRefresh().dispatch();
}
);
layout->addWidget(refreshButton);
m_widget->setLayout(layout);