forked from qt-creator/qt-creator
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 <assam.boudjelthia@qt.io>
This commit is contained in:
@@ -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,
|
||||
|
@@ -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;
|
||||
|
@@ -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] {
|
||||
connect(m_sdkManager, &AndroidSdkManager::packagesReloaded, this, &AndroidSdkModel::refreshData);
|
||||
refreshData();
|
||||
endResetModel();
|
||||
});
|
||||
beginResetModel();
|
||||
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
|
||||
|
@@ -45,7 +45,6 @@ public:
|
||||
InstallationChange installationChange() const;
|
||||
|
||||
private:
|
||||
void clearContainers();
|
||||
void refreshData();
|
||||
|
||||
AndroidSdkManager *m_sdkManager;
|
||||
|
@@ -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);
|
||||
});
|
||||
|
Reference in New Issue
Block a user