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 <coreplugin/icore.h>
|
||||||
|
|
||||||
|
#include <solutions/spinner/spinner.h>
|
||||||
#include <solutions/tasking/conditional.h>
|
#include <solutions/tasking/conditional.h>
|
||||||
#include <solutions/tasking/tasktreerunner.h>
|
#include <solutions/tasking/tasktreerunner.h>
|
||||||
|
|
||||||
@@ -21,6 +22,7 @@
|
|||||||
#include <QLoggingCategory>
|
#include <QLoggingCategory>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QPlainTextEdit>
|
#include <QPlainTextEdit>
|
||||||
|
#include <QPointer>
|
||||||
#include <QProgressBar>
|
#include <QProgressBar>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include <QTextCodec>
|
#include <QTextCodec>
|
||||||
@@ -29,6 +31,7 @@ namespace {
|
|||||||
Q_LOGGING_CATEGORY(sdkManagerLog, "qtc.android.sdkManager", QtWarningMsg)
|
Q_LOGGING_CATEGORY(sdkManagerLog, "qtc.android.sdkManager", QtWarningMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
using namespace SpinnerSolution;
|
||||||
using namespace Tasking;
|
using namespace Tasking;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
@@ -349,6 +352,7 @@ public:
|
|||||||
void runDialogRecipe(const Storage<DialogStorage> &dialogStorage,
|
void runDialogRecipe(const Storage<DialogStorage> &dialogStorage,
|
||||||
const GroupItem &licenseRecipe, const GroupItem &continuationRecipe);
|
const GroupItem &licenseRecipe, const GroupItem &continuationRecipe);
|
||||||
|
|
||||||
|
QPointer<QWidget> m_spinnerTarget;
|
||||||
AndroidSdkManager &m_sdkManager;
|
AndroidSdkManager &m_sdkManager;
|
||||||
AndroidSdkPackageList m_allPackages;
|
AndroidSdkPackageList m_allPackages;
|
||||||
FilePath lastSdkManagerPath;
|
FilePath lastSdkManagerPath;
|
||||||
@@ -360,6 +364,11 @@ AndroidSdkManager::AndroidSdkManager() : m_d(new AndroidSdkManagerPrivate(*this)
|
|||||||
|
|
||||||
AndroidSdkManager::~AndroidSdkManager() = default;
|
AndroidSdkManager::~AndroidSdkManager() = default;
|
||||||
|
|
||||||
|
void AndroidSdkManager::setSpinnerTarget(QWidget *spinnerTarget)
|
||||||
|
{
|
||||||
|
m_d->m_spinnerTarget = spinnerTarget;
|
||||||
|
}
|
||||||
|
|
||||||
SdkPlatformList AndroidSdkManager::installedSdkPlatforms()
|
SdkPlatformList AndroidSdkManager::installedSdkPlatforms()
|
||||||
{
|
{
|
||||||
const AndroidSdkPackageList list = m_d->filteredPackages(AndroidSdkPackage::Installed,
|
const AndroidSdkPackageList list = m_d->filteredPackages(AndroidSdkPackage::Installed,
|
||||||
@@ -469,7 +478,7 @@ void AndroidSdkManager::refreshPackages()
|
|||||||
if (AndroidConfig::sdkManagerToolPath() != m_d->lastSdkManagerPath)
|
if (AndroidConfig::sdkManagerToolPath() != m_d->lastSdkManagerPath)
|
||||||
reloadPackages();
|
reloadPackages();
|
||||||
else
|
else
|
||||||
emit packageReloadFinished();
|
emit packagesReloaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidSdkManager::reloadPackages()
|
void AndroidSdkManager::reloadPackages()
|
||||||
@@ -518,7 +527,11 @@ const AndroidSdkPackageList &AndroidSdkManagerPrivate::allPackages()
|
|||||||
|
|
||||||
void AndroidSdkManagerPrivate::reloadSdkPackages()
|
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);
|
qDeleteAll(m_allPackages);
|
||||||
m_allPackages.clear();
|
m_allPackages.clear();
|
||||||
|
|
||||||
@@ -527,7 +540,7 @@ void AndroidSdkManagerPrivate::reloadSdkPackages()
|
|||||||
|
|
||||||
if (AndroidConfig::sdkToolsVersion().isNull()) {
|
if (AndroidConfig::sdkToolsVersion().isNull()) {
|
||||||
// Configuration has invalid sdk path or corrupt installation.
|
// Configuration has invalid sdk path or corrupt installation.
|
||||||
emit m_sdkManager.packageReloadFinished();
|
emit m_sdkManager.packagesReloaded();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -542,7 +555,7 @@ void AndroidSdkManagerPrivate::reloadSdkPackages()
|
|||||||
qCWarning(sdkManagerLog) << "Failed parsing packages:" << packageListing;
|
qCWarning(sdkManagerLog) << "Failed parsing packages:" << packageListing;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit m_sdkManager.packageReloadFinished();
|
emit m_sdkManager.packagesReloaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidSdkManagerPrivate::runDialogRecipe(const Storage<DialogStorage> &dialogStorage,
|
void AndroidSdkManagerPrivate::runDialogRecipe(const Storage<DialogStorage> &dialogStorage,
|
||||||
|
@@ -33,6 +33,8 @@ public:
|
|||||||
AndroidSdkManager();
|
AndroidSdkManager();
|
||||||
~AndroidSdkManager();
|
~AndroidSdkManager();
|
||||||
|
|
||||||
|
void setSpinnerTarget(QWidget *spinnerTarget);
|
||||||
|
|
||||||
SdkPlatformList installedSdkPlatforms();
|
SdkPlatformList installedSdkPlatforms();
|
||||||
const AndroidSdkPackageList &allSdkPackages();
|
const AndroidSdkPackageList &allSdkPackages();
|
||||||
QStringList notFoundEssentialSdkPackages();
|
QStringList notFoundEssentialSdkPackages();
|
||||||
@@ -58,8 +60,7 @@ public:
|
|||||||
void runUpdate();
|
void runUpdate();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void packageReloadBegin();
|
void packagesReloaded();
|
||||||
void packageReloadFinished();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class AndroidSdkManagerPrivate;
|
friend class AndroidSdkManagerPrivate;
|
||||||
|
@@ -22,17 +22,8 @@ AndroidSdkModel::AndroidSdkModel(AndroidSdkManager *sdkManager, QObject *parent)
|
|||||||
m_sdkManager(sdkManager)
|
m_sdkManager(sdkManager)
|
||||||
{
|
{
|
||||||
QTC_CHECK(m_sdkManager);
|
QTC_CHECK(m_sdkManager);
|
||||||
connect(m_sdkManager, &AndroidSdkManager::packageReloadBegin, this, [this] {
|
connect(m_sdkManager, &AndroidSdkManager::packagesReloaded, this, &AndroidSdkModel::refreshData);
|
||||||
clearContainers();
|
|
||||||
beginResetModel();
|
|
||||||
});
|
|
||||||
connect(m_sdkManager, &AndroidSdkManager::packageReloadFinished, this, [this] {
|
|
||||||
refreshData();
|
|
||||||
endResetModel();
|
|
||||||
});
|
|
||||||
beginResetModel();
|
|
||||||
refreshData();
|
refreshData();
|
||||||
endResetModel();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant AndroidSdkModel::headerData(int section, Qt::Orientation orientation, int role) const
|
QVariant AndroidSdkModel::headerData(int section, Qt::Orientation orientation, int role) const
|
||||||
@@ -278,16 +269,12 @@ void AndroidSdkModel::resetSelection()
|
|||||||
endResetModel();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidSdkModel::clearContainers()
|
void AndroidSdkModel::refreshData()
|
||||||
{
|
{
|
||||||
m_sdkPlatforms.clear();
|
m_sdkPlatforms.clear();
|
||||||
m_tools.clear();
|
m_tools.clear();
|
||||||
m_changeState.clear();
|
m_changeState.clear();
|
||||||
}
|
beginResetModel();
|
||||||
|
|
||||||
void AndroidSdkModel::refreshData()
|
|
||||||
{
|
|
||||||
clearContainers();
|
|
||||||
for (AndroidSdkPackage *p : m_sdkManager->allSdkPackages()) {
|
for (AndroidSdkPackage *p : m_sdkManager->allSdkPackages()) {
|
||||||
if (p->type() == AndroidSdkPackage::SdkPlatformPackage)
|
if (p->type() == AndroidSdkPackage::SdkPlatformPackage)
|
||||||
m_sdkPlatforms << static_cast<SdkPlatform *>(p);
|
m_sdkPlatforms << static_cast<SdkPlatform *>(p);
|
||||||
@@ -304,6 +291,7 @@ void AndroidSdkModel::refreshData()
|
|||||||
else
|
else
|
||||||
return p1->state() < p2->state();
|
return p1->state() < p2->state();
|
||||||
});
|
});
|
||||||
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -45,7 +45,6 @@ public:
|
|||||||
InstallationChange installationChange() const;
|
InstallationChange installationChange() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void clearContainers();
|
|
||||||
void refreshData();
|
void refreshData();
|
||||||
|
|
||||||
AndroidSdkManager *m_sdkManager;
|
AndroidSdkManager *m_sdkManager;
|
||||||
|
@@ -23,7 +23,6 @@
|
|||||||
#include <utils/infolabel.h>
|
#include <utils/infolabel.h>
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
#include <utils/pathchooser.h>
|
#include <utils/pathchooser.h>
|
||||||
#include <utils/progressindicator.h>
|
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/qtcprocess.h>
|
#include <utils/qtcprocess.h>
|
||||||
@@ -188,8 +187,6 @@ private:
|
|||||||
SummaryWidget *m_androidSummary = nullptr;
|
SummaryWidget *m_androidSummary = nullptr;
|
||||||
SummaryWidget *m_openSslSummary = nullptr;
|
SummaryWidget *m_openSslSummary = nullptr;
|
||||||
|
|
||||||
ProgressIndicator *m_androidProgress = nullptr;
|
|
||||||
|
|
||||||
PathChooser *m_sdkLocationPathChooser;
|
PathChooser *m_sdkLocationPathChooser;
|
||||||
QPushButton *m_makeDefaultNdkButton;
|
QPushButton *m_makeDefaultNdkButton;
|
||||||
QListWidget *m_ndkListWidget;
|
QListWidget *m_ndkListWidget;
|
||||||
@@ -291,6 +288,7 @@ AndroidSettingsWidget::AndroidSettingsWidget()
|
|||||||
"be compatible with all registered Qt versions."));
|
"be compatible with all registered Qt versions."));
|
||||||
|
|
||||||
auto androidDetailsWidget = new DetailsWidget;
|
auto androidDetailsWidget = new DetailsWidget;
|
||||||
|
m_sdkManager->setSpinnerTarget(androidDetailsWidget);
|
||||||
|
|
||||||
m_ndkListWidget = new QListWidget;
|
m_ndkListWidget = new QListWidget;
|
||||||
m_ndkListWidget->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
|
m_ndkListWidget->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
|
||||||
@@ -352,10 +350,6 @@ AndroidSettingsWidget::AndroidSettingsWidget()
|
|||||||
m_androidSummary = new SummaryWidget(androidValidationPoints, Tr::tr("Android settings are OK."),
|
m_androidSummary = new SummaryWidget(androidValidationPoints, Tr::tr("Android settings are OK."),
|
||||||
Tr::tr("Android settings have errors."),
|
Tr::tr("Android settings have errors."),
|
||||||
androidDetailsWidget);
|
androidDetailsWidget);
|
||||||
m_androidProgress = new ProgressIndicator(ProgressIndicatorSize::Medium, this);
|
|
||||||
m_androidProgress->attachToWidget(androidDetailsWidget);
|
|
||||||
m_androidProgress->hide();
|
|
||||||
|
|
||||||
const QMap<int, QString> openSslValidationPoints = {
|
const QMap<int, QString> openSslValidationPoints = {
|
||||||
{ OpenSslPathExistsRow, Tr::tr("OpenSSL path exists.") },
|
{ OpenSslPathExistsRow, Tr::tr("OpenSSL path exists.") },
|
||||||
{ OpenSslPriPathExists, Tr::tr("QMake include project (openssl.pri) exists.") },
|
{ OpenSslPriPathExists, Tr::tr("QMake include project (openssl.pri) exists.") },
|
||||||
@@ -486,13 +480,9 @@ AndroidSettingsWidget::AndroidSettingsWidget()
|
|||||||
this, &AndroidSettingsWidget::openOpenJDKDownloadUrl);
|
this, &AndroidSettingsWidget::openOpenJDKDownloadUrl);
|
||||||
|
|
||||||
// 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::packagesReloaded, this, [this] {
|
||||||
this, &AndroidSettingsWidget::validateSdk);
|
m_androidSummary->setInProgressText("Packages reloaded");
|
||||||
connect(m_sdkManager, &AndroidSdkManager::packageReloadFinished,
|
validateSdk();
|
||||||
m_androidProgress, &ProgressIndicator::hide);
|
|
||||||
connect(m_sdkManager, &AndroidSdkManager::packageReloadBegin, this, [this] {
|
|
||||||
m_androidSummary->setInProgressText("Retrieving packages information");
|
|
||||||
m_androidProgress->show();
|
|
||||||
});
|
});
|
||||||
connect(sdkManagerToolButton, &QAbstractButton::clicked, this, [this] {
|
connect(sdkManagerToolButton, &QAbstractButton::clicked, this, [this] {
|
||||||
executeAndroidSdkManagerDialog(m_sdkManager, this);
|
executeAndroidSdkManagerDialog(m_sdkManager, this);
|
||||||
@@ -513,7 +503,7 @@ AndroidSettingsWidget::AndroidSettingsWidget()
|
|||||||
updateUI();
|
updateUI();
|
||||||
apply();
|
apply();
|
||||||
|
|
||||||
connect(m_sdkManager, &AndroidSdkManager::packageReloadFinished, this, [this] {
|
connect(m_sdkManager, &AndroidSdkManager::packagesReloaded, this, [this] {
|
||||||
downloadOpenSslRepo(true);
|
downloadOpenSslRepo(true);
|
||||||
}, Qt::SingleShotConnection);
|
}, Qt::SingleShotConnection);
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user