diff --git a/src/plugins/squish/squishfilehandler.cpp b/src/plugins/squish/squishfilehandler.cpp index 99ee316bf2b..115086bc742 100644 --- a/src/plugins/squish/squishfilehandler.cpp +++ b/src/plugins/squish/squishfilehandler.cpp @@ -74,17 +74,15 @@ public: setWindowTitle(Tr::tr("Recording Settings")); auto squishTools = SquishTools::instance(); - connect(squishTools, &SquishTools::queryFinished, this, - [this] (const QString &out, const QString &) { + QApplication::setOverrideCursor(Qt::WaitCursor); + + squishTools->queryServerSettings([this] (const QString &out, const QString &) { SquishServerSettings s; s.setFromXmlOutput(out); QApplication::restoreOverrideCursor(); for (const QString &app : s.mappedAuts.keys()) aut.addItem(app); }); - - QApplication::setOverrideCursor(Qt::WaitCursor); - squishTools->queryServerSettings(); } diff --git a/src/plugins/squish/squishsettings.cpp b/src/plugins/squish/squishsettings.cpp index d6dc68d91ae..17daef73f41 100644 --- a/src/plugins/squish/squishsettings.cpp +++ b/src/plugins/squish/squishsettings.cpp @@ -406,15 +406,13 @@ SquishServerSettingsWidget::SquishServerSettingsWidget(QWidget *parent) // query settings SquishTools *squishTools = SquishTools::instance(); - connect(squishTools, &SquishTools::queryFinished, this, - [this, progress] (const QString &out, const QString &) { + squishTools->queryServerSettings([this, progress] (const QString &out, const QString &) { m_serverSettings.setFromXmlOutput(out); m_originalSettings.setFromXmlOutput(out); repopulateApplicationView(); progress->hide(); setEnabled(true); }); - squishTools->queryServerSettings(); } void SquishServerSettingsWidget::repopulateApplicationView() diff --git a/src/plugins/squish/squishtools.cpp b/src/plugins/squish/squishtools.cpp index 614ac1f1e82..df63485fcc0 100644 --- a/src/plugins/squish/squishtools.cpp +++ b/src/plugins/squish/squishtools.cpp @@ -260,10 +260,12 @@ void SquishTools::runTestCases(const FilePath &suitePath, startSquishServer(RunTestRequested); } -void SquishTools::queryServerSettings() +void SquishTools::queryServerSettings(QueryCallback callback) { if (m_shutdownInitiated) return; + m_queryCallback = callback; + if (m_state != Idle) { QMessageBox::critical(Core::ICore::dialogParent(), Tr::tr("Error"), @@ -686,9 +688,11 @@ void SquishTools::onRunnerFinished() if (m_request == RunnerQueryRequested) { const QString error = m_licenseIssues ? Tr::tr("Could not get Squish license from server.") : QString(); - emit queryFinished(m_fullRunnerOutput, error); + if (m_queryCallback) + m_queryCallback(m_fullRunnerOutput, error); setState(RunnerStopped); m_fullRunnerOutput.clear(); + m_queryCallback = {}; return; } diff --git a/src/plugins/squish/squishtools.h b/src/plugins/squish/squishtools.h index 72825514e44..d9400f7ad07 100644 --- a/src/plugins/squish/squishtools.h +++ b/src/plugins/squish/squishtools.h @@ -61,12 +61,14 @@ public: Finished }; + using QueryCallback = std::function; + State state() const { return m_state; } void runTestCases(const Utils::FilePath &suitePath, const QStringList &testCases = QStringList()); void recordTestCase(const Utils::FilePath &suitePath, const QString &testCaseName, const SuiteConf &suiteConf); - void queryServerSettings(); + void queryServerSettings(QueryCallback callback); void writeServerSettingsChanges(const QList &changes); void requestExpansion(const QString &name); @@ -77,7 +79,6 @@ signals: void squishTestRunStarted(); void squishTestRunFinished(); void resultOutputCreated(const QByteArray &output); - void queryFinished(const QString &output, const QString &error); void configChangesFailed(QProcess::ProcessError error); void configChangesWritten(); void localsUpdated(const QString &output); @@ -161,6 +162,7 @@ private: QTimer *m_requestVarsTimer = nullptr; qint64 m_readResultsCount; int m_autId = 0; + QueryCallback m_queryCallback; bool m_shutdownInitiated = false; bool m_closeRunnerOnEndRecord = false; bool m_licenseIssues = false; diff --git a/src/plugins/squish/squishwizardpages.cpp b/src/plugins/squish/squishwizardpages.cpp index b40a037cf45..62535b5a3ce 100644 --- a/src/plugins/squish/squishwizardpages.cpp +++ b/src/plugins/squish/squishwizardpages.cpp @@ -126,8 +126,8 @@ void SquishToolkitsPage::fetchServerSettings() auto squishTools = SquishTools::instance(); QTC_ASSERT(squishTools, return); - connect(squishTools, &SquishTools::queryFinished, this, - [this] (const QString &out, const QString &error) { + QApplication::setOverrideCursor(Qt::WaitCursor); + squishTools->queryServerSettings([this](const QString &out, const QString &error) { SquishServerSettings s; s.setFromXmlOutput(out); QApplication::restoreOverrideCursor(); @@ -149,8 +149,6 @@ void SquishToolkitsPage::fetchServerSettings() m_errorLabel->setVisible(true); } }); - QApplication::setOverrideCursor(Qt::WaitCursor); - squishTools->queryServerSettings(); } /********************************* ScriptLanguagePage ********************************************/