From e3fb97b5ceaf016aecc071d24e5484131cfcd36f Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Sun, 30 May 2021 14:27:02 +0300 Subject: [PATCH] Android: give a visual indication when sdkmanager is reloading packages Add an info message when sdkmanager is reloading the packages, and also don't expand the summary widget when the widgets are not active, which can be when the packages are being reloaded or when the licenses are being reviewed, this will give more space for reviewing the licenses instead of having the summary take most of the settings page space. Change-Id: I6acf3f6edc3b3d3fa78f0ba00308a21f8bb4fa72 Reviewed-by: Alessandro Portale Reviewed-by: Assam Boudjelthia --- src/plugins/android/androidsettingswidget.cpp | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index ab6106816de..a7e6973ab1d 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -116,6 +117,8 @@ private: SummaryWidget *m_androidSummary = nullptr; SummaryWidget *m_openSslSummary = nullptr; + + ProgressIndicator *m_androidProgress = nullptr; }; enum AndroidValidation { @@ -196,11 +199,23 @@ public: updateUi(); } + void setInProgressText(const QString &text) + { + m_detailsWidget->setIcon({}); + m_detailsWidget->setSummaryText(QString("%1...").arg(text)); + m_detailsWidget->setState(DetailsWidget::Collapsed); + } + void setSetupOk(bool ok) { m_detailsWidget->setState(ok ? DetailsWidget::Collapsed : DetailsWidget::Expanded); } + void setState(DetailsWidget::State state) + { + m_detailsWidget->setState(state); + } + private: void updateUi() { bool ok = allRowsOk(); @@ -286,6 +301,8 @@ AndroidSettingsWidget::AndroidSettingsWidget() m_ui.androidOpenSSLSettingsGroupBox->setEnabled(false); m_ui.CreateKitCheckBox->setEnabled(false); m_ui.managerTabWidget->tabBar()->setEnabled(false); + m_androidSummary->setState(DetailsWidget::Collapsed); + m_androidProgress->hide(); }); connect(m_sdkManagerWidget, &AndroidSdkManagerWidget::updatingSdkFinished, [this] { m_ui.androidSettingsGroupBox->setEnabled(true); @@ -319,6 +336,9 @@ AndroidSettingsWidget::AndroidSettingsWidget() m_androidSummary = new SummaryWidget(androidValidationPoints, tr("Android settings are OK."), tr("Android settings have errors."), m_ui.androidDetailsWidget); + m_androidProgress = new Utils::ProgressIndicator(ProgressIndicatorSize::Medium, this); + m_androidProgress->attachToWidget(m_ui.androidDetailsWidget); + m_androidProgress->hide(); QMap openSslValidationPoints; openSslValidationPoints[OpenSslPathExistsRow] = tr("OpenSSL path exists."); @@ -400,6 +420,12 @@ AndroidSettingsWidget::AndroidSettingsWidget() // 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_ui.sdkToolsAutoDownloadButton, &QAbstractButton::clicked, this, &AndroidSettingsWidget::downloadSdk); connect(&m_sdkDownloader, &AndroidSdkDownloader::sdkDownloaderError, this, [this](const QString &error) {