diff options
author | Jarek Kobus <[email protected]> | 2024-10-17 17:28:50 +0200 |
---|---|---|
committer | Jarek Kobus <[email protected]> | 2024-10-28 10:58:06 +0000 |
commit | 777cc17a0c288b545f9bd083ab3c3bf234672f63 (patch) | |
tree | 13485f55abf7489e56b8aaa224002e2a0d4d8eba /src | |
parent | ca8e5dbb4ee1f9f66d9dd0a2d24472a46d6bda5d (diff) |
Android: Get rid of packageReloadBegin() signal
Since the packageReloadBegin() signal is always followed by the
packageReloadFinished() signal, emitted synchronously to the former one,
there is no need to have 2 separate signals. Particularly,
showing the progress on packageReloadBegin() and hiding it on
packageReloadFinished() is no-op, since the gui won't have a chance to
paint it (because of synchronous emission of both signals).
Thus, remove the packageReloadBegin() signal and remove the progress
indicator.
Rename packageReloadFinished() to packagesReloaded().
Inline clearContainers().
Change-Id: I0ad65dd4d915a1d164c8d398a84a568c57545a6f
Reviewed-by: Assam Boudjelthia <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/android/androidsdkmanager.cpp | 21 | ||||
-rw-r--r-- | src/plugins/android/androidsdkmanager.h | 5 | ||||
-rw-r--r-- | src/plugins/android/androidsdkmodel.cpp | 20 | ||||
-rw-r--r-- | src/plugins/android/androidsdkmodel.h | 1 | ||||
-rw-r--r-- | src/plugins/android/androidsettingswidget.cpp | 20 |
5 files changed, 29 insertions, 38 deletions
diff --git a/src/plugins/android/androidsdkmanager.cpp b/src/plugins/android/androidsdkmanager.cpp index ad1f9f4937b..2eab707d697 100644 --- a/src/plugins/android/androidsdkmanager.cpp +++ b/src/plugins/android/androidsdkmanager.cpp @@ -8,6 +8,7 @@ #include <coreplugin/icore.h> +#include <solutions/spinner/spinner.h> #include <solutions/tasking/conditional.h> #include <solutions/tasking/tasktreerunner.h> @@ -21,6 +22,7 @@ #include <QLoggingCategory> #include <QMessageBox> #include <QPlainTextEdit> +#include <QPointer> #include <QProgressBar> #include <QRegularExpression> #include <QTextCodec> @@ -29,6 +31,7 @@ namespace { Q_LOGGING_CATEGORY(sdkManagerLog, "qtc.android.sdkManager", QtWarningMsg) } +using namespace SpinnerSolution; using namespace Tasking; using namespace Utils; @@ -349,6 +352,7 @@ public: void runDialogRecipe(const Storage<DialogStorage> &dialogStorage, const GroupItem &licenseRecipe, const GroupItem &continuationRecipe); + QPointer<QWidget> m_spinnerTarget; AndroidSdkManager &m_sdkManager; AndroidSdkPackageList m_allPackages; FilePath lastSdkManagerPath; @@ -360,6 +364,11 @@ AndroidSdkManager::AndroidSdkManager() : m_d(new AndroidSdkManagerPrivate(*this) AndroidSdkManager::~AndroidSdkManager() = default; +void AndroidSdkManager::setSpinnerTarget(QWidget *spinnerTarget) +{ + m_d->m_spinnerTarget = spinnerTarget; +} + SdkPlatformList AndroidSdkManager::installedSdkPlatforms() { const AndroidSdkPackageList list = m_d->filteredPackages(AndroidSdkPackage::Installed, @@ -469,7 +478,7 @@ void AndroidSdkManager::refreshPackages() if (AndroidConfig::sdkManagerToolPath() != m_d->lastSdkManagerPath) reloadPackages(); else - emit packageReloadFinished(); + emit packagesReloaded(); } void AndroidSdkManager::reloadPackages() @@ -518,7 +527,11 @@ const AndroidSdkPackageList &AndroidSdkManagerPrivate::allPackages() void AndroidSdkManagerPrivate::reloadSdkPackages() { - emit m_sdkManager.packageReloadBegin(); + std::unique_ptr<Spinner> spinner; + if (m_spinnerTarget) { + spinner.reset(new Spinner(SpinnerSize::Medium, m_spinnerTarget)); + spinner->show(); + } qDeleteAll(m_allPackages); m_allPackages.clear(); @@ -527,7 +540,7 @@ void AndroidSdkManagerPrivate::reloadSdkPackages() if (AndroidConfig::sdkToolsVersion().isNull()) { // Configuration has invalid sdk path or corrupt installation. - emit m_sdkManager.packageReloadFinished(); + emit m_sdkManager.packagesReloaded(); return; } @@ -542,7 +555,7 @@ void AndroidSdkManagerPrivate::reloadSdkPackages() qCWarning(sdkManagerLog) << "Failed parsing packages:" << packageListing; } - emit m_sdkManager.packageReloadFinished(); + emit m_sdkManager.packagesReloaded(); } void AndroidSdkManagerPrivate::runDialogRecipe(const Storage<DialogStorage> &dialogStorage, diff --git a/src/plugins/android/androidsdkmanager.h b/src/plugins/android/androidsdkmanager.h index 47611368f42..f80de1bce8a 100644 --- a/src/plugins/android/androidsdkmanager.h +++ b/src/plugins/android/androidsdkmanager.h @@ -33,6 +33,8 @@ public: AndroidSdkManager(); ~AndroidSdkManager(); + void setSpinnerTarget(QWidget *spinnerTarget); + SdkPlatformList installedSdkPlatforms(); const AndroidSdkPackageList &allSdkPackages(); QStringList notFoundEssentialSdkPackages(); @@ -58,8 +60,7 @@ public: void runUpdate(); signals: - void packageReloadBegin(); - void packageReloadFinished(); + void packagesReloaded(); private: friend class AndroidSdkManagerPrivate; diff --git a/src/plugins/android/androidsdkmodel.cpp b/src/plugins/android/androidsdkmodel.cpp index c2b3ffdba31..86dbc320135 100644 --- a/src/plugins/android/androidsdkmodel.cpp +++ b/src/plugins/android/androidsdkmodel.cpp @@ -22,17 +22,8 @@ AndroidSdkModel::AndroidSdkModel(AndroidSdkManager *sdkManager, QObject *parent) m_sdkManager(sdkManager) { QTC_CHECK(m_sdkManager); - connect(m_sdkManager, &AndroidSdkManager::packageReloadBegin, this, [this] { - clearContainers(); - beginResetModel(); - }); - connect(m_sdkManager, &AndroidSdkManager::packageReloadFinished, this, [this] { - refreshData(); - endResetModel(); - }); - beginResetModel(); + connect(m_sdkManager, &AndroidSdkManager::packagesReloaded, this, &AndroidSdkModel::refreshData); refreshData(); - endResetModel(); } QVariant AndroidSdkModel::headerData(int section, Qt::Orientation orientation, int role) const @@ -278,16 +269,12 @@ void AndroidSdkModel::resetSelection() endResetModel(); } -void AndroidSdkModel::clearContainers() +void AndroidSdkModel::refreshData() { m_sdkPlatforms.clear(); m_tools.clear(); m_changeState.clear(); -} - -void AndroidSdkModel::refreshData() -{ - clearContainers(); + beginResetModel(); for (AndroidSdkPackage *p : m_sdkManager->allSdkPackages()) { if (p->type() == AndroidSdkPackage::SdkPlatformPackage) m_sdkPlatforms << static_cast<SdkPlatform *>(p); @@ -304,6 +291,7 @@ void AndroidSdkModel::refreshData() else return p1->state() < p2->state(); }); + endResetModel(); } } // namespace Internal diff --git a/src/plugins/android/androidsdkmodel.h b/src/plugins/android/androidsdkmodel.h index fdb148915af..60ecc622275 100644 --- a/src/plugins/android/androidsdkmodel.h +++ b/src/plugins/android/androidsdkmodel.h @@ -45,7 +45,6 @@ public: InstallationChange installationChange() const; private: - void clearContainers(); void refreshData(); AndroidSdkManager *m_sdkManager; diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index 4fbc3028892..c6cabe83fe0 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -23,7 +23,6 @@ #include <utils/infolabel.h> #include <utils/layoutbuilder.h> #include <utils/pathchooser.h> -#include <utils/progressindicator.h> #include <utils/qtcprocess.h> #include <utils/qtcassert.h> #include <utils/qtcprocess.h> @@ -188,8 +187,6 @@ private: SummaryWidget *m_androidSummary = nullptr; SummaryWidget *m_openSslSummary = nullptr; - ProgressIndicator *m_androidProgress = nullptr; - PathChooser *m_sdkLocationPathChooser; QPushButton *m_makeDefaultNdkButton; QListWidget *m_ndkListWidget; @@ -291,6 +288,7 @@ AndroidSettingsWidget::AndroidSettingsWidget() "be compatible with all registered Qt versions.")); auto androidDetailsWidget = new DetailsWidget; + m_sdkManager->setSpinnerTarget(androidDetailsWidget); m_ndkListWidget = new QListWidget; m_ndkListWidget->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents); @@ -352,10 +350,6 @@ AndroidSettingsWidget::AndroidSettingsWidget() m_androidSummary = new SummaryWidget(androidValidationPoints, Tr::tr("Android settings are OK."), Tr::tr("Android settings have errors."), androidDetailsWidget); - m_androidProgress = new ProgressIndicator(ProgressIndicatorSize::Medium, this); - m_androidProgress->attachToWidget(androidDetailsWidget); - m_androidProgress->hide(); - const QMap<int, QString> openSslValidationPoints = { { OpenSslPathExistsRow, Tr::tr("OpenSSL path exists.") }, { OpenSslPriPathExists, Tr::tr("QMake include project (openssl.pri) exists.") }, @@ -486,13 +480,9 @@ AndroidSettingsWidget::AndroidSettingsWidget() this, &AndroidSettingsWidget::openOpenJDKDownloadUrl); // Validate SDK again after any change in SDK packages. - connect(m_sdkManager, &AndroidSdkManager::packageReloadFinished, - this, &AndroidSettingsWidget::validateSdk); - connect(m_sdkManager, &AndroidSdkManager::packageReloadFinished, - m_androidProgress, &ProgressIndicator::hide); - connect(m_sdkManager, &AndroidSdkManager::packageReloadBegin, this, [this] { - m_androidSummary->setInProgressText("Retrieving packages information"); - m_androidProgress->show(); + connect(m_sdkManager, &AndroidSdkManager::packagesReloaded, this, [this] { + m_androidSummary->setInProgressText("Packages reloaded"); + validateSdk(); }); connect(sdkManagerToolButton, &QAbstractButton::clicked, this, [this] { executeAndroidSdkManagerDialog(m_sdkManager, this); @@ -513,7 +503,7 @@ AndroidSettingsWidget::AndroidSettingsWidget() updateUI(); apply(); - connect(m_sdkManager, &AndroidSdkManager::packageReloadFinished, this, [this] { + connect(m_sdkManager, &AndroidSdkManager::packagesReloaded, this, [this] { downloadOpenSslRepo(true); }, Qt::SingleShotConnection); }); |