From a2554a9f75aeca52b763a95944903b2174fbb495 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Wed, 28 Jun 2017 15:43:20 +0200 Subject: [PATCH] ui: Show progress dialog for maven source group within parent window --- src/lib_gui/qt/view/QtDialogView.cpp | 31 +++++++++++++++++-- src/lib_gui/qt/view/QtDialogView.h | 4 +++ .../QtProjectWizzardContentPath.cpp | 4 ++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/lib_gui/qt/view/QtDialogView.cpp b/src/lib_gui/qt/view/QtDialogView.cpp index 5a67a732..e6e38d4e 100644 --- a/src/lib_gui/qt/view/QtDialogView.cpp +++ b/src/lib_gui/qt/view/QtDialogView.cpp @@ -9,12 +9,14 @@ #include "data/access/StorageAccess.h" #include "qt/window/QtIndexingDialog.h" #include "qt/window/QtMainWindow.h" +#include "qt/window/QtWindow.h" #include "utility/messaging/type/MessageStatus.h" #include "utility/utility.h" QtDialogView::QtDialogView(QtMainWindow* mainWindow, StorageAccess* storageAccess) : DialogView(storageAccess) , m_mainWindow(mainWindow) + , m_parentWindow(nullptr) , m_windowStack(this) , m_resultReady(false) { @@ -258,6 +260,16 @@ int QtDialogView::confirm(const std::string& message, const std::vector T* QtDialogView::createWindow() { - T* window = new T(m_mainWindow); + T* window = nullptr; + if (m_parentWindow) + { + window = new T(m_parentWindow); + } + else + { + window = new T(m_mainWindow); + } connect(window, SIGNAL(canceled()), &m_windowStack, SLOT(popWindow())); connect(window, SIGNAL(finished()), &m_windowStack, SLOT(clearWindows())); @@ -330,7 +350,14 @@ template void QtDialogView::setUIBlocked(bool blocked) { - m_mainWindow->setContentEnabled(!blocked); + if (m_parentWindow) + { + m_parentWindow->setEnabled(!blocked); + } + else + { + m_mainWindow->setContentEnabled(!blocked); + } if (blocked) { diff --git a/src/lib_gui/qt/view/QtDialogView.h b/src/lib_gui/qt/view/QtDialogView.h index e5521a03..a408aba0 100644 --- a/src/lib_gui/qt/view/QtDialogView.h +++ b/src/lib_gui/qt/view/QtDialogView.h @@ -13,6 +13,7 @@ #include "utility/messaging/type/MessageWindowClosed.h" class QtMainWindow; +class QtWindow; class QtDialogView : public QObject @@ -46,6 +47,8 @@ public: int confirm(const std::string& message, const std::vector& options) override; + void setParentWindow(QtWindow* window); + private: void handleMessage(MessageInterruptTasks* message) override; void handleMessage(MessageNewErrors* message) override; @@ -60,6 +63,7 @@ private: void setUIBlocked(bool blocked); QtMainWindow* m_mainWindow; + QtWindow* m_parentWindow; QtWindowStack m_windowStack; diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPath.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPath.cpp index 1987126e..90a900ee 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPath.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPath.cpp @@ -7,8 +7,8 @@ #include #include "Application.h" -#include "component/view/DialogView.h" #include "qt/element/QtLocationPicker.h" +#include "qt/view/QtDialogView.h" #include "settings/ApplicationSettings.h" #include "settings/SourceGroupSettingsCxx.h" #include "settings/SourceGroupSettingsJava.h" @@ -226,6 +226,7 @@ std::vector QtProjectWizzardContentPathSourceMaven::getFileNames() std::vector list; std::shared_ptr dialogView = Application::getInstance()->getDialogView(); + std::dynamic_pointer_cast(dialogView)->setParentWindow(m_window); dialogView->showUnknownProgressDialog("Preparing Project", "Maven\nGenerating Source Files"); const bool success = utility::mavenGenerateSources(mavenPath, mavenProjectRoot); @@ -268,6 +269,7 @@ std::vector QtProjectWizzardContentPathSourceMaven::getFileNames() } } dialogView->hideUnknownProgressDialog(); + std::dynamic_pointer_cast(dialogView)->setParentWindow(nullptr); return list; }