From 9ee24391e61cbcd9dcee9ba20949c090fd03d57f Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Mon, 18 May 2020 18:03:50 +0300 Subject: [PATCH] Android: warn about essential packages not found Task-number: QTCREATORBUG-23829 Change-Id: Ic3ebd606bfde48b0f7152869a437f2f711ce1d03 Reviewed-by: hjk --- src/plugins/android/androidsdkmanagerwidget.cpp | 7 +++++++ src/plugins/android/androidsdkmodel.cpp | 12 +++++++++++- src/plugins/android/androidsdkmodel.h | 3 +++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/androidsdkmanagerwidget.cpp b/src/plugins/android/androidsdkmanagerwidget.cpp index 631b7dd385a..f1ebaa097e9 100644 --- a/src/plugins/android/androidsdkmanagerwidget.cpp +++ b/src/plugins/android/androidsdkmanagerwidget.cpp @@ -169,6 +169,13 @@ void AndroidSdkManagerWidget::setSdkManagerControlsEnabled(bool enable) void AndroidSdkManagerWidget::installEssentials() { m_sdkModel->selectMissingEssentials(); + if (!m_sdkModel->missingEssentials().isEmpty()) { + QMessageBox::warning(this, + tr("Android SDK Changes"), + tr("Qt Creator couldn't find the following essential packages: \"%1\".\n" + "Install them manually after the current operation is done.\n") + .arg(m_sdkModel->missingEssentials().join("\", \""))); + } m_ui->applySelectionButton->click(); } diff --git a/src/plugins/android/androidsdkmodel.cpp b/src/plugins/android/androidsdkmodel.cpp index b2dce193c59..91bd62f7c82 100644 --- a/src/plugins/android/androidsdkmodel.cpp +++ b/src/plugins/android/androidsdkmodel.cpp @@ -31,6 +31,11 @@ #include #include +#include + +namespace { +static Q_LOGGING_CATEGORY(androidSdkModelLog, "qtc.android.sdkmodel", QtWarningMsg) +} namespace Android { namespace Internal { @@ -294,7 +299,9 @@ void AndroidSdkModel::selectMissingEssentials() // Select SDK platform for (const SdkPlatform *platform : m_sdkPlatforms) { - if (pendingPkgs.contains(platform->sdkStylePath()) && + if (!platform->installedLocation().isEmpty()) { + pendingPkgs.removeOne(platform->sdkStylePath()); + } else if (pendingPkgs.contains(platform->sdkStylePath()) && platform->installedLocation().isEmpty()) { auto i = index(0, 0, index(1, 0)); m_changeState << platform; @@ -304,6 +311,9 @@ void AndroidSdkModel::selectMissingEssentials() if (pendingPkgs.isEmpty()) break; } + + m_missingEssentials = pendingPkgs; + qCDebug(androidSdkModelLog) << "Couldn't find some essential packages:" << m_missingEssentials; } QList AndroidSdkModel::userSelection() const diff --git a/src/plugins/android/androidsdkmodel.h b/src/plugins/android/androidsdkmodel.h index b7f89f7997c..af25edfbb8f 100644 --- a/src/plugins/android/androidsdkmodel.h +++ b/src/plugins/android/androidsdkmodel.h @@ -70,6 +70,8 @@ public: QList userSelection() const; void resetSelection(); + QStringList missingEssentials() const { return m_missingEssentials; } + private: void clearContainers(); void refreshData(); @@ -80,6 +82,7 @@ private: QList m_sdkPlatforms; QList m_tools; QSet m_changeState; + QStringList m_missingEssentials; }; } // namespace Internal