forked from qt-creator/qt-creator
Android: Hide OptionsDialog inside cpp file
Change-Id: I26cacdd743b51d57e154cb0dd454b8cdf07cb153 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
#include <utils/qtcprocess.h>
|
||||||
|
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QDialogButtonBox>
|
#include <QDialogButtonBox>
|
||||||
@@ -25,6 +26,67 @@ using namespace std::placeholders;
|
|||||||
|
|
||||||
namespace Android::Internal {
|
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
|
class PackageFilterModel : public QSortFilterProxyModel
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -159,7 +221,7 @@ AndroidSdkManagerDialog::AndroidSdkManagerDialog(AndroidSdkManager *sdkManager,
|
|||||||
connect(m_buttonBox, &QDialogButtonBox::rejected, this, &AndroidSdkManagerDialog::reject);
|
connect(m_buttonBox, &QDialogButtonBox::rejected, this, &AndroidSdkManagerDialog::reject);
|
||||||
|
|
||||||
connect(optionsButton, &QPushButton::clicked, this, [this] {
|
connect(optionsButton, &QPushButton::clicked, this, [this] {
|
||||||
OptionsDialog dlg(m_sdkManager, androidConfig().sdkManagerToolArgs(), this);
|
OptionsDialog dlg(m_sdkManager, this);
|
||||||
if (dlg.exec() == QDialog::Accepted) {
|
if (dlg.exec() == QDialog::Accepted) {
|
||||||
QStringList arguments = dlg.sdkManagerArguments();
|
QStringList arguments = dlg.sdkManagerArguments();
|
||||||
if (arguments != androidConfig().sdkManagerToolArgs()) {
|
if (arguments != androidConfig().sdkManagerToolArgs()) {
|
||||||
@@ -260,56 +322,4 @@ bool PackageFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sour
|
|||||||
return showTopLevel || ((packageState(srcIndex) & m_packageState) && packageFound(srcIndex));
|
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
|
} // Android::Internal
|
||||||
|
@@ -4,36 +4,17 @@
|
|||||||
|
|
||||||
#include "androidsdkmanager.h"
|
#include "androidsdkmanager.h"
|
||||||
|
|
||||||
#include <utils/qtcprocess.h>
|
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QDialogButtonBox;
|
class QDialogButtonBox;
|
||||||
class QLineEdit;
|
|
||||||
class QPlainTextEdit;
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace Utils { class OutputFormatter; }
|
|
||||||
|
|
||||||
namespace Android::Internal {
|
namespace Android::Internal {
|
||||||
|
|
||||||
class AndroidSdkManager;
|
class AndroidSdkManager;
|
||||||
class AndroidSdkModel;
|
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
|
class AndroidSdkManagerDialog : public QDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Reference in New Issue
Block a user