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 <alessandro.portale@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
Assam Boudjelthia
2021-05-30 14:27:02 +03:00
committed by Alessandro Portale
parent 92e3eb722a
commit e3fb97b5ce

View File

@@ -41,6 +41,7 @@
#include <utils/infolabel.h> #include <utils/infolabel.h>
#include <utils/listmodel.h> #include <utils/listmodel.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/progressindicator.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
@@ -116,6 +117,8 @@ private:
SummaryWidget *m_androidSummary = nullptr; SummaryWidget *m_androidSummary = nullptr;
SummaryWidget *m_openSslSummary = nullptr; SummaryWidget *m_openSslSummary = nullptr;
ProgressIndicator *m_androidProgress = nullptr;
}; };
enum AndroidValidation { enum AndroidValidation {
@@ -196,11 +199,23 @@ public:
updateUi(); 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) void setSetupOk(bool ok)
{ {
m_detailsWidget->setState(ok ? DetailsWidget::Collapsed : DetailsWidget::Expanded); m_detailsWidget->setState(ok ? DetailsWidget::Collapsed : DetailsWidget::Expanded);
} }
void setState(DetailsWidget::State state)
{
m_detailsWidget->setState(state);
}
private: private:
void updateUi() { void updateUi() {
bool ok = allRowsOk(); bool ok = allRowsOk();
@@ -286,6 +301,8 @@ AndroidSettingsWidget::AndroidSettingsWidget()
m_ui.androidOpenSSLSettingsGroupBox->setEnabled(false); m_ui.androidOpenSSLSettingsGroupBox->setEnabled(false);
m_ui.CreateKitCheckBox->setEnabled(false); m_ui.CreateKitCheckBox->setEnabled(false);
m_ui.managerTabWidget->tabBar()->setEnabled(false); m_ui.managerTabWidget->tabBar()->setEnabled(false);
m_androidSummary->setState(DetailsWidget::Collapsed);
m_androidProgress->hide();
}); });
connect(m_sdkManagerWidget, &AndroidSdkManagerWidget::updatingSdkFinished, [this] { connect(m_sdkManagerWidget, &AndroidSdkManagerWidget::updatingSdkFinished, [this] {
m_ui.androidSettingsGroupBox->setEnabled(true); m_ui.androidSettingsGroupBox->setEnabled(true);
@@ -319,6 +336,9 @@ AndroidSettingsWidget::AndroidSettingsWidget()
m_androidSummary = new SummaryWidget(androidValidationPoints, tr("Android settings are OK."), m_androidSummary = new SummaryWidget(androidValidationPoints, tr("Android settings are OK."),
tr("Android settings have errors."), tr("Android settings have errors."),
m_ui.androidDetailsWidget); m_ui.androidDetailsWidget);
m_androidProgress = new Utils::ProgressIndicator(ProgressIndicatorSize::Medium, this);
m_androidProgress->attachToWidget(m_ui.androidDetailsWidget);
m_androidProgress->hide();
QMap<int, QString> openSslValidationPoints; QMap<int, QString> openSslValidationPoints;
openSslValidationPoints[OpenSslPathExistsRow] = tr("OpenSSL path exists."); openSslValidationPoints[OpenSslPathExistsRow] = tr("OpenSSL path exists.");
@@ -400,6 +420,12 @@ AndroidSettingsWidget::AndroidSettingsWidget()
// Validate SDK again after any change in SDK packages. // Validate SDK again after any change in SDK packages.
connect(&m_sdkManager, &AndroidSdkManager::packageReloadFinished, connect(&m_sdkManager, &AndroidSdkManager::packageReloadFinished,
this, &AndroidSettingsWidget::validateSdk); 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, connect(m_ui.sdkToolsAutoDownloadButton, &QAbstractButton::clicked,
this, &AndroidSettingsWidget::downloadSdk); this, &AndroidSettingsWidget::downloadSdk);
connect(&m_sdkDownloader, &AndroidSdkDownloader::sdkDownloaderError, this, [this](const QString &error) { connect(&m_sdkDownloader, &AndroidSdkDownloader::sdkDownloaderError, this, [this](const QString &error) {