aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJarek Kobus <[email protected]>2024-10-17 17:28:50 +0200
committerJarek Kobus <[email protected]>2024-10-28 10:58:06 +0000
commit777cc17a0c288b545f9bd083ab3c3bf234672f63 (patch)
tree13485f55abf7489e56b8aaa224002e2a0d4d8eba /src
parentca8e5dbb4ee1f9f66d9dd0a2d24472a46d6bda5d (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.cpp21
-rw-r--r--src/plugins/android/androidsdkmanager.h5
-rw-r--r--src/plugins/android/androidsdkmodel.cpp20
-rw-r--r--src/plugins/android/androidsdkmodel.h1
-rw-r--r--src/plugins/android/androidsettingswidget.cpp20
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);
});