From f5511bcd26442979107970a895fcb8db11bcf3f5 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 3 May 2024 17:12:05 +0200 Subject: [PATCH] Android: Hide OptionsDialog inside cpp file Change-Id: I26cacdd743b51d57e154cb0dd454b8cdf07cb153 Reviewed-by: Alessandro Portale --- .../android/androidsdkmanagerdialog.cpp | 116 ++++++++++-------- src/plugins/android/androidsdkmanagerdialog.h | 19 --- 2 files changed, 63 insertions(+), 72 deletions(-) diff --git a/src/plugins/android/androidsdkmanagerdialog.cpp b/src/plugins/android/androidsdkmanagerdialog.cpp index 047f3d3d44a..8a6d941fd13 100644 --- a/src/plugins/android/androidsdkmanagerdialog.cpp +++ b/src/plugins/android/androidsdkmanagerdialog.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include @@ -25,6 +26,67 @@ using namespace std::placeholders; namespace Android::Internal { +class OptionsDialog : public QDialog +{ +public: + OptionsDialog(AndroidSdkManager *sdkManager, QWidget *parent) + : QDialog(parent) + { + QTC_CHECK(sdkManager); + resize(800, 480); + setWindowTitle(Tr::tr("SDK Manager Arguments")); + + m_argumentDetailsEdit = new QPlainTextEdit; + m_argumentDetailsEdit->setReadOnly(true); + + m_process.setEnvironment(androidConfig().toolsEnvironment()); + m_process.setCommand({androidConfig().sdkManagerToolPath(), + {"--help", "--sdk_root=" + androidConfig().sdkLocation().toString()}}); + connect(&m_process, &Process::done, this, [this] { + const QString output = m_process.allOutput(); + QString argumentDetails; + const int tagIndex = output.indexOf("Common Arguments:"); + if (tagIndex >= 0) { + const int detailsIndex = output.indexOf('\n', tagIndex); + if (detailsIndex >= 0) + argumentDetails = output.mid(detailsIndex + 1); + } + if (argumentDetails.isEmpty()) + argumentDetails = Tr::tr("Cannot load available arguments for \"sdkmanager\" command."); + m_argumentDetailsEdit->setPlainText(argumentDetails); + }); + m_process.start(); + + auto dialogButtons = new QDialogButtonBox; + dialogButtons->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); + connect(dialogButtons, &QDialogButtonBox::accepted, this, &OptionsDialog::accept); + connect(dialogButtons, &QDialogButtonBox::rejected, this, &OptionsDialog::reject); + + m_argumentsEdit = new QLineEdit; + m_argumentsEdit->setText(androidConfig().sdkManagerToolArgs().join(" ")); + + using namespace Layouting; + + Column { + Form { Tr::tr("SDK manager arguments:"), m_argumentsEdit, br }, + Tr::tr("Available arguments:"), + m_argumentDetailsEdit, + dialogButtons, + }.attachTo(this); + } + + QStringList sdkManagerArguments() const + { + const QString userInput = m_argumentsEdit->text().simplified(); + return userInput.isEmpty() ? QStringList() : userInput.split(' '); + } + +private: + QPlainTextEdit *m_argumentDetailsEdit = nullptr; + QLineEdit *m_argumentsEdit = nullptr; + Process m_process; +}; + class PackageFilterModel : public QSortFilterProxyModel { public: @@ -159,7 +221,7 @@ AndroidSdkManagerDialog::AndroidSdkManagerDialog(AndroidSdkManager *sdkManager, connect(m_buttonBox, &QDialogButtonBox::rejected, this, &AndroidSdkManagerDialog::reject); connect(optionsButton, &QPushButton::clicked, this, [this] { - OptionsDialog dlg(m_sdkManager, androidConfig().sdkManagerToolArgs(), this); + OptionsDialog dlg(m_sdkManager, this); if (dlg.exec() == QDialog::Accepted) { QStringList arguments = dlg.sdkManagerArguments(); if (arguments != androidConfig().sdkManagerToolArgs()) { @@ -260,56 +322,4 @@ bool PackageFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sour return showTopLevel || ((packageState(srcIndex) & m_packageState) && packageFound(srcIndex)); } -OptionsDialog::OptionsDialog(AndroidSdkManager *sdkManager, const QStringList &args, - QWidget *parent) - : QDialog(parent) -{ - QTC_CHECK(sdkManager); - resize(800, 480); - setWindowTitle(Tr::tr("SDK Manager Arguments")); - - m_argumentDetailsEdit = new QPlainTextEdit(this); - m_argumentDetailsEdit->setReadOnly(true); - - m_process.setEnvironment(androidConfig().toolsEnvironment()); - m_process.setCommand({androidConfig().sdkManagerToolPath(), - {"--help", "--sdk_root=" + androidConfig().sdkLocation().toString()}}); - connect(&m_process, &Process::done, this, [this] { - const QString output = m_process.allOutput(); - QString argumentDetails; - const int tagIndex = output.indexOf("Common Arguments:"); - if (tagIndex >= 0) { - const int detailsIndex = output.indexOf('\n', tagIndex); - if (detailsIndex >= 0) - argumentDetails = output.mid(detailsIndex + 1); - } - if (argumentDetails.isEmpty()) - argumentDetails = Tr::tr("Cannot load available arguments for \"sdkmanager\" command."); - m_argumentDetailsEdit->setPlainText(argumentDetails); - }); - m_process.start(); - - auto dialogButtons = new QDialogButtonBox; - dialogButtons->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); - connect(dialogButtons, &QDialogButtonBox::accepted, this, &OptionsDialog::accept); - connect(dialogButtons, &QDialogButtonBox::rejected, this, &OptionsDialog::reject); - - m_argumentsEdit = new QLineEdit(this); - m_argumentsEdit->setText(args.join(" ")); - - using namespace Layouting; - Column { - Form { Tr::tr("SDK manager arguments:"), m_argumentsEdit, br }, - Tr::tr("Available arguments:"), - m_argumentDetailsEdit, - dialogButtons, - }.attachTo(this); -} - -QStringList OptionsDialog::sdkManagerArguments() const -{ - const QString userInput = m_argumentsEdit->text().simplified(); - return userInput.isEmpty() ? QStringList() : userInput.split(' '); -} - } // Android::Internal diff --git a/src/plugins/android/androidsdkmanagerdialog.h b/src/plugins/android/androidsdkmanagerdialog.h index b1372782c61..35a9de172a5 100644 --- a/src/plugins/android/androidsdkmanagerdialog.h +++ b/src/plugins/android/androidsdkmanagerdialog.h @@ -4,36 +4,17 @@ #include "androidsdkmanager.h" -#include - #include QT_BEGIN_NAMESPACE class QDialogButtonBox; -class QLineEdit; -class QPlainTextEdit; QT_END_NAMESPACE -namespace Utils { class OutputFormatter; } - namespace Android::Internal { class AndroidSdkManager; class AndroidSdkModel; -class OptionsDialog : public QDialog -{ -public: - OptionsDialog(AndroidSdkManager *sdkManager, const QStringList &args, QWidget *parent = nullptr); - - QStringList sdkManagerArguments() const; - -private: - QPlainTextEdit *m_argumentDetailsEdit = nullptr; - QLineEdit *m_argumentsEdit = nullptr; - Utils::Process m_process; -}; - class AndroidSdkManagerDialog : public QDialog { public: