From 53d5bc5a08695046346f0edb910d94ae6db0dcb6 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Tue, 14 Sep 2021 20:12:56 +0300 Subject: [PATCH] Android: Add channel and include_obsolete UI filters to SDK Manager Allow to filter channels and obsolete packages from the UI. Change-Id: Ifcaa2a1c3421a15e60f92b7a9b86cc9ab3554885 Reviewed-by: Alessandro Portale Reviewed-by: Leena Miettinen Reviewed-by: Qt CI Bot --- .../android/androidsdkmanagerwidget.cpp | 43 ++++++++++++ .../android/androidsdkmanagerwidget.ui | 66 +++++++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/src/plugins/android/androidsdkmanagerwidget.cpp b/src/plugins/android/androidsdkmanagerwidget.cpp index 9edb0fdf4ed..6d330960f79 100644 --- a/src/plugins/android/androidsdkmanagerwidget.cpp +++ b/src/plugins/android/androidsdkmanagerwidget.cpp @@ -150,6 +150,49 @@ AndroidSdkManagerWidget::AndroidSdkManagerWidget(AndroidConfig &config, m_sdkManager->acceptSdkLicense(false); m_ui->sdkLicensebuttonBox->setEnabled(false); // Wait for next license to enable controls }); + + connect(m_ui->oboleteCheckBox, &QCheckBox::stateChanged, [this](int state) { + const QString obsoleteArg = "--include_obsolete"; + QStringList args = m_androidConfig.sdkManagerToolArgs(); + if (state == Qt::Checked && !args.contains(obsoleteArg)) { + args.append(obsoleteArg); + m_androidConfig.setSdkManagerToolArgs(args); + } else if (state == Qt::Unchecked && args.contains(obsoleteArg)) { + args.removeAll(obsoleteArg); + m_androidConfig.setSdkManagerToolArgs(args); + } + m_sdkManager->reloadPackages(true); + }); + + connect(m_ui->channelCheckbox, QOverload::of(&QComboBox::currentIndexChanged), + [this](int index) { + QStringList args = m_androidConfig.sdkManagerToolArgs(); + QString existingArg; + for (int i = 0; i < 4; ++i) { + const QString arg = "--channel=" + QString::number(i); + if (args.contains(arg)) { + existingArg = arg; + break; + } + } + + if (index == 0 && !existingArg.isEmpty()) { + args.removeAll(existingArg); + m_androidConfig.setSdkManagerToolArgs(args); + } else if (index > 0) { + // Add 1 to account for Stable (second item) being channel 0 + const QString channelArg = "--channel=" + QString::number(index - 1); + if (existingArg != channelArg) { + if (!existingArg.isEmpty()) { + args.removeAll(existingArg); + m_androidConfig.setSdkManagerToolArgs(args); + } + args.append(channelArg); + m_androidConfig.setSdkManagerToolArgs(args); + } + } + m_sdkManager->reloadPackages(true); + }); } AndroidSdkManagerWidget::~AndroidSdkManagerWidget() diff --git a/src/plugins/android/androidsdkmanagerwidget.ui b/src/plugins/android/androidsdkmanagerwidget.ui index 3baa968402a..695965251c4 100644 --- a/src/plugins/android/androidsdkmanagerwidget.ui +++ b/src/plugins/android/androidsdkmanagerwidget.ui @@ -93,6 +93,72 @@ Show Packages + + + + + + + 0 + 0 + + + + Channel: + + + + + + + + Default + + + + + Stable + + + + + Beta + + + + + Dev + + + + + Canary + + + + + + + + + + + 0 + 0 + + + + Include obsolete + + + + + + + Qt::Horizontal + + +