diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-07-07 17:48:48 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-07-10 20:45:37 -0400 |
| commit | c38e864c92b7958099d74048fdfc88a5d3b40dcc (patch) | |
| tree | 4bec21ca5863d3be49135498d5108e73cccee271 /src | |
| parent | 724945ab33864c1fd8d3162bdd85ca66f8bb311d (diff) | |
set the progress dialog's parent to main window as soon as it's available
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cpp | 3 | ||||
| -rw-r--r-- | src/nxmaccessmanager.cpp | 37 | ||||
| -rw-r--r-- | src/nxmaccessmanager.h | 5 |
3 files changed, 39 insertions, 6 deletions
diff --git a/src/main.cpp b/src/main.cpp index f2571685..0b078f03 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -697,6 +697,9 @@ int runApplication(MOApplication &application, SingleInstance &instance, // set up main window and its data structures MainWindow mainWindow(settings, organizer, pluginContainer); + NexusInterface::instance(&pluginContainer) + ->getAccessManager()->setTopLevelWidget(&mainWindow); + QObject::connect(&mainWindow, SIGNAL(styleChanged(QString)), &application, SLOT(setStyleFile(QString))); QObject::connect(&instance, SIGNAL(messageSent(QString)), &organizer, diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp index ee6c03f1..5c72d3e2 100644 --- a/src/nxmaccessmanager.cpp +++ b/src/nxmaccessmanager.cpp @@ -47,7 +47,9 @@ namespace { NXMAccessManager::NXMAccessManager(QObject *parent, const QString &moVersion) : QNetworkAccessManager(parent) + , m_TopLevel(nullptr) , m_ValidateReply(nullptr) + , m_ProgressDialog(nullptr) , m_MOVersion(moVersion) { m_ValidateTimeout.setSingleShot(true); @@ -70,6 +72,20 @@ NXMAccessManager::~NXMAccessManager() } } +void NXMAccessManager::setTopLevelWidget(QWidget* w) +{ + m_TopLevel = w; + + if (m_ProgressDialog) { + const auto wasVisible = m_ProgressDialog->isVisible(); + + m_ProgressDialog->hide(); + m_ProgressDialog->setParent(w, m_ProgressDialog->windowFlags() | Qt::Dialog); + m_ProgressDialog->setModal(false); + m_ProgressDialog->setVisible(wasVisible); + } +} + QNetworkReply *NXMAccessManager::createRequest( QNetworkAccessManager::Operation operation, const QNetworkRequest &request, QIODevice *device) @@ -124,7 +140,11 @@ void NXMAccessManager::startValidationCheck() request.setRawHeader("Application-Name", "MO2"); request.setRawHeader("Application-Version", m_MOVersion.toUtf8()); - m_ProgressDialog = new QProgressDialog(nullptr); + if (!m_ProgressDialog) { + m_ProgressDialog = new QProgressDialog(m_TopLevel); + m_ProgressDialog->setModal(false); + } + m_ProgressDialog->setLabelText(tr("Validating Nexus Connection")); QList<QPushButton*> buttons = m_ProgressDialog->findChildren<QPushButton*>(); buttons.at(0)->setEnabled(false); @@ -142,16 +162,23 @@ void NXMAccessManager::startValidationCheck() bool NXMAccessManager::validated() const { if (m_ValidateState == VALIDATE_CHECKING) { - QProgressDialog progress; - progress.setLabelText(tr("Validating Nexus Connection")); + if (!m_ProgressDialog) { + m_ProgressDialog = new QProgressDialog(m_TopLevel); + m_ProgressDialog->setModal(false); + } + + m_ProgressDialog->setLabelText(tr("Validating Nexus Connection")); QList<QPushButton*> buttons = m_ProgressDialog->findChildren<QPushButton*>(); buttons.at(0)->setEnabled(false); - progress.show(); + m_ProgressDialog->show(); while (m_ValidateState == VALIDATE_CHECKING) { QCoreApplication::processEvents(); QThread::msleep(100); } - progress.hide(); + + m_ProgressDialog->hide(); + m_ProgressDialog->deleteLater(); + m_ProgressDialog = nullptr; } return m_ValidateState == VALIDATE_VALID; diff --git a/src/nxmaccessmanager.h b/src/nxmaccessmanager.h index 1bdeae40..16dde612 100644 --- a/src/nxmaccessmanager.h +++ b/src/nxmaccessmanager.h @@ -41,6 +41,8 @@ public: ~NXMAccessManager(); + void setTopLevelWidget(QWidget* w); + bool validated() const; bool validateAttempted() const; @@ -94,9 +96,10 @@ protected: QIODevice *device); private: + QWidget* m_TopLevel; QTimer m_ValidateTimeout; QNetworkReply *m_ValidateReply; - QProgressDialog *m_ProgressDialog { nullptr }; + mutable QProgressDialog* m_ProgressDialog; QString m_MOVersion; |
