Android: Merge androidsettings{page,widget}.{h,cpp}

du -s .obj:  106256 -> 103628

Change-Id: I960ad42e1f73d2cd11aadcf5e2eaa0d840e3e9af
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2020-01-10 12:53:28 +01:00
parent 3746612bd0
commit 5cd0749830
8 changed files with 93 additions and 183 deletions

View File

@@ -37,7 +37,6 @@ add_qtc_plugin(Android
androidsdkmanagerwidget.cpp androidsdkmanagerwidget.h androidsdkmanagerwidget.ui androidsdkmanagerwidget.cpp androidsdkmanagerwidget.h androidsdkmanagerwidget.ui
androidsdkmodel.cpp androidsdkmodel.h androidsdkmodel.cpp androidsdkmodel.h
androidsdkpackage.cpp androidsdkpackage.h androidsdkpackage.cpp androidsdkpackage.h
androidsettingspage.cpp androidsettingspage.h
androidsettingswidget.cpp androidsettingswidget.h androidsettingswidget.ui androidsettingswidget.cpp androidsettingswidget.h androidsettingswidget.ui
androidsignaloperation.cpp androidsignaloperation.h androidsignaloperation.cpp androidsignaloperation.h
androidtoolchain.cpp androidtoolchain.h androidtoolchain.cpp androidtoolchain.h

View File

@@ -11,7 +11,6 @@ HEADERS += \
androidmanager.h \ androidmanager.h \
androidrunconfiguration.h \ androidrunconfiguration.h \
androidruncontrol.h \ androidruncontrol.h \
androidsettingspage.h \
androidsettingswidget.h \ androidsettingswidget.h \
androidtoolchain.h \ androidtoolchain.h \
androiderrormessage.h \ androiderrormessage.h \
@@ -56,7 +55,6 @@ SOURCES += \
androidmanager.cpp \ androidmanager.cpp \
androidrunconfiguration.cpp \ androidrunconfiguration.cpp \
androidruncontrol.cpp \ androidruncontrol.cpp \
androidsettingspage.cpp \
androidsettingswidget.cpp \ androidsettingswidget.cpp \
androidtoolchain.cpp \ androidtoolchain.cpp \
androiderrormessage.cpp \ androiderrormessage.cpp \

View File

@@ -87,8 +87,6 @@ Project {
"androidsdkmodel.h", "androidsdkmodel.h",
"androidsdkpackage.cpp", "androidsdkpackage.cpp",
"androidsdkpackage.h", "androidsdkpackage.h",
"androidsettingspage.cpp",
"androidsettingspage.h",
"androidsettingswidget.cpp", "androidsettingswidget.cpp",
"androidsettingswidget.h", "androidsettingswidget.h",
"androidsettingswidget.ui", "androidsettingswidget.ui",

View File

@@ -38,7 +38,7 @@
#include "androidqtversion.h" #include "androidqtversion.h"
#include "androidrunconfiguration.h" #include "androidrunconfiguration.h"
#include "androidruncontrol.h" #include "androidruncontrol.h"
#include "androidsettingspage.h" #include "androidsettingswidget.h"
#include "androidtoolchain.h" #include "androidtoolchain.h"
#include "javaeditor.h" #include "javaeditor.h"

View File

@@ -1,45 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 BogDan Vatra <bog_dan_ro@yahoo.com>
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "androidsettingspage.h"
#include "androidsettingswidget.h"
#include "androidconstants.h"
#include <projectexplorer/projectexplorerconstants.h>
namespace Android {
namespace Internal {
AndroidSettingsPage::AndroidSettingsPage()
{
setId(Constants::ANDROID_SETTINGS_ID);
setDisplayName(tr("Android"));
setCategory(ProjectExplorer::Constants::DEVICE_SETTINGS_CATEGORY);
setWidgetCreator([] { return new AndroidSettingsWidget; });
}
} // namespace Internal
} // namespace Android

View File

@@ -1,42 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2016 BogDan Vatra <bog_dan_ro@yahoo.com>
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#pragma once
#include <coreplugin/dialogs/ioptionspage.h>
namespace Android {
namespace Internal {
class AndroidSettingsPage : public Core::IOptionsPage
{
Q_OBJECT
public:
AndroidSettingsPage();
};
} // namespace Internal
} // namespace Android

View File

@@ -49,22 +49,94 @@
#include <qtsupport/qtkitinformation.h> #include <qtsupport/qtkitinformation.h>
#include <qtsupport/qtversionmanager.h> #include <qtsupport/qtversionmanager.h>
#include <QFile> #include <QAbstractTableModel>
#include <QTextStream>
#include <QProcess>
#include <QTimer>
#include <QTime>
#include <QDesktopServices> #include <QDesktopServices>
#include <QFileDialog> #include <QFutureWatcher>
#include <QList>
#include <QMessageBox> #include <QMessageBox>
#include <QModelIndex> #include <QModelIndex>
#include <QtCore/QUrl> #include <QString>
#include <QTimer>
#include <QUrl>
#include <QWidget>
#include <memory>
namespace Android { namespace Android {
namespace Internal { namespace Internal {
namespace { class AndroidSdkManagerWidget;
class AndroidAvdManager;
class AvdModel final : public QAbstractTableModel
{
Q_DECLARE_TR_FUNCTIONS(Android::Internal::AvdModel)
public:
void setAvdList(const AndroidDeviceInfoList &list);
QString avdName(const QModelIndex &index) const;
QModelIndex indexForAvdName(const QString &avdName) const;
protected:
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const final;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const final;
int rowCount(const QModelIndex &parent = QModelIndex()) const final;
int columnCount(const QModelIndex &parent = QModelIndex()) const final;
private:
AndroidDeviceInfoList m_list;
};
class AndroidSettingsWidget final : public Core::IOptionsPageWidget
{
Q_DECLARE_TR_FUNCTIONS(Android::Internal::AndroidSettingsWidget)
public:
// Todo: This would be so much simpler if it just used Utils::PathChooser!!!
AndroidSettingsWidget();
~AndroidSettingsWidget() final;
private:
void apply() final { saveSettings(); }
void finish() final {}
void saveSettings();
void validateJdk();
void validateNdk();
void onSdkPathChanged();
void validateSdk();
void openSDKDownloadUrl();
void openNDKDownloadUrl();
void openOpenJDKDownloadUrl();
void addAVD();
void avdAdded();
void removeAVD();
void startAVD();
void avdActivated(const QModelIndex &);
void dataPartitionSizeEditingFinished();
void manageAVD();
void createKitToggled();
void updateUI();
void updateAvds();
void startUpdateAvd();
void enableAvdControls();
void disableAvdControls();
Ui_AndroidSettingsWidget *m_ui;
AndroidSdkManagerWidget *m_sdkManagerWidget = nullptr;
AndroidConfig m_androidConfig;
AvdModel m_AVDModel;
QFutureWatcher<CreateAvdInfo> m_futureWatcher;
QFutureWatcher<AndroidDeviceInfoList> m_virtualDevicesWatcher;
QString m_lastAddedAvd;
std::unique_ptr<AndroidAvdManager> m_avdManager;
std::unique_ptr<AndroidSdkManager> m_sdkManager;
};
enum JavaValidation { enum JavaValidation {
JavaPathExistsRow, JavaPathExistsRow,
JavaJdkValidRow JavaJdkValidRow
@@ -82,7 +154,6 @@ enum AndroidValidation {
NdkDirStructureRow, NdkDirStructureRow,
NdkinstallDirOkRow NdkinstallDirOkRow
}; };
}
class SummaryWidget : public QWidget class SummaryWidget : public QWidget
{ {
@@ -581,6 +652,15 @@ void AndroidSettingsWidget::manageAVD()
} }
} }
// AndroidSettingsPage
AndroidSettingsPage::AndroidSettingsPage()
{
setId(Constants::ANDROID_SETTINGS_ID);
setDisplayName(AndroidSettingsWidget::tr("Android"));
setCategory(ProjectExplorer::Constants::DEVICE_SETTINGS_CATEGORY);
setWidgetCreator([] { return new AndroidSettingsWidget; });
}
} // namespace Internal } // namespace Internal
} // namespace Android } // namespace Android

View File

@@ -25,93 +25,15 @@
#pragma once #pragma once
#include "androidconfigurations.h"
#include <QList>
#include <QString>
#include <QWidget>
#include <QAbstractTableModel>
#include <QFutureWatcher>
#include <memory>
#include <coreplugin/dialogs/ioptionspage.h> #include <coreplugin/dialogs/ioptionspage.h>
QT_BEGIN_NAMESPACE
class Ui_AndroidSettingsWidget;
QT_END_NAMESPACE
namespace Android { namespace Android {
namespace Internal { namespace Internal {
class AndroidSdkManagerWidget; class AndroidSettingsPage final : public Core::IOptionsPage
class AndroidAvdManager;
class AvdModel: public QAbstractTableModel
{ {
Q_OBJECT
public: public:
void setAvdList(const AndroidDeviceInfoList &list); AndroidSettingsPage();
QString avdName(const QModelIndex &index) const;
QModelIndex indexForAvdName(const QString &avdName) const;
protected:
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
private:
AndroidDeviceInfoList m_list;
};
class AndroidSettingsWidget : public Core::IOptionsPageWidget
{
Q_OBJECT
public:
// Todo: This would be so much simpler if it just used Utils::PathChooser!!!
AndroidSettingsWidget();
~AndroidSettingsWidget() final;
private:
void apply() final { saveSettings(); }
void finish() final {}
void saveSettings();
void validateJdk();
void validateNdk();
void onSdkPathChanged();
void validateSdk();
void openSDKDownloadUrl();
void openNDKDownloadUrl();
void openOpenJDKDownloadUrl();
void addAVD();
void avdAdded();
void removeAVD();
void startAVD();
void avdActivated(const QModelIndex &);
void dataPartitionSizeEditingFinished();
void manageAVD();
void createKitToggled();
void updateUI();
void updateAvds();
void startUpdateAvd();
void enableAvdControls();
void disableAvdControls();
Ui_AndroidSettingsWidget *m_ui;
AndroidSdkManagerWidget *m_sdkManagerWidget = nullptr;
AndroidConfig m_androidConfig;
AvdModel m_AVDModel;
QFutureWatcher<CreateAvdInfo> m_futureWatcher;
QFutureWatcher<AndroidDeviceInfoList> m_virtualDevicesWatcher;
QString m_lastAddedAvd;
std::unique_ptr<AndroidAvdManager> m_avdManager;
std::unique_ptr<AndroidSdkManager> m_sdkManager;
}; };
} // namespace Internal } // namespace Internal