diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2024-05-07 17:18:07 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2024-05-08 13:36:41 +0000 |
commit | 668e82429970898be494a855ad5fa085054e101b (patch) | |
tree | 35635857f283e7666a55411e9981d1913b8c1bd0 | |
parent | f82a68221fd36ffc183abb9dc898dbcda47ebd55 (diff) |
Android: Remove SystemInfo from CreateAvdInfo
Replace it with sdkStylePath and apiLevel fields what makes this
structure safe to be used in different threads.
Get rid of isValid() method.
Change-Id: Iafce161457f05698fb3d5ea4a2a7fa15f8d95b38
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
-rw-r--r-- | src/plugins/android/androidavdmanager.cpp | 2 | ||||
-rw-r--r-- | src/plugins/android/androidconfigurations.h | 4 | ||||
-rw-r--r-- | src/plugins/android/avddialog.cpp | 26 |
3 files changed, 17 insertions, 15 deletions
diff --git a/src/plugins/android/androidavdmanager.cpp b/src/plugins/android/androidavdmanager.cpp index ffa8b2ce7a..4670a90462 100644 --- a/src/plugins/android/androidavdmanager.cpp +++ b/src/plugins/android/androidavdmanager.cpp @@ -65,7 +65,7 @@ static CreateAvdInfo createAvdCommand(const CreateAvdInfo &info) { CreateAvdInfo result = info; CommandLine avdManager(androidConfig().avdManagerToolPath(), {"create", "avd", "-n", result.name}); - avdManager.addArgs({"-k", result.systemImage->sdkStylePath()}); + avdManager.addArgs({"-k", result.sdkStylePath}); if (result.sdcardSize > 0) avdManager.addArgs({"-c", QString("%1M").arg(result.sdcardSize)}); diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index ce4604de18..aa8f1da33a 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -28,8 +28,8 @@ namespace Internal { class AndroidSdkManager; } class CreateAvdInfo { public: - bool isValid() const { return systemImage && systemImage->isValid() && !name.isEmpty(); } - const SystemImage *systemImage = nullptr; + QString sdkStylePath; + int apiLevel = -1; QString name; QString abi; QString deviceDefinition; diff --git a/src/plugins/android/avddialog.cpp b/src/plugins/android/avddialog.cpp index a33e56bc6d..1d61385534 100644 --- a/src/plugins/android/avddialog.cpp +++ b/src/plugins/android/avddialog.cpp @@ -31,6 +31,7 @@ #include <QSpinBox> #include <QToolTip> +using namespace ProjectExplorer; using namespace Utils; namespace Android::Internal { @@ -121,20 +122,22 @@ int AvdDialog::exec() { const int execResult = QDialog::exec(); if (execResult == QDialog::Accepted) { + const SystemImage *si = systemImage(); + if (!si || !si->isValid() || name().isEmpty()) { + QMessageBox::warning(Core::ICore::dialogParent(), + Tr::tr("Create new AVD"), Tr::tr("Cannot create AVD. Invalid input.")); + return QDialog::Rejected; + } + CreateAvdInfo result; - result.systemImage = systemImage(); + result.sdkStylePath = si->sdkStylePath(); + result.apiLevel = si->apiLevel(); result.name = name(); result.abi = abi(); result.deviceDefinition = deviceDefinition(); result.sdcardSize = sdcardSize(); result.overwrite = m_overwriteCheckBox->isChecked(); - if (!result.isValid()) { - QMessageBox::warning(Core::ICore::dialogParent(), - Tr::tr("Create new AVD"), Tr::tr("Cannot create AVD. Invalid input.")); - return QDialog::Rejected; - } - const AndroidAvdManager avdManager; QFutureWatcher<CreateAvdInfo> createAvdFutureWatcher; @@ -167,22 +170,21 @@ bool AvdDialog::isValid() const return !name().isEmpty() && systemImage() && systemImage()->isValid() && !abi().isEmpty(); } -ProjectExplorer::IDevice::Ptr AvdDialog::device() const +IDevice::Ptr AvdDialog::device() const { - if (!m_createdAvdInfo.systemImage) { + if (m_createdAvdInfo.apiLevel < 0) { qCWarning(avdDialogLog) << "System image of the created AVD is nullptr"; return IDevice::Ptr(); } - AndroidDevice *dev = new AndroidDevice(); + AndroidDevice *dev = new AndroidDevice; const Utils::Id deviceId = AndroidDevice::idFromAvdInfo(m_createdAvdInfo); - using namespace ProjectExplorer; dev->setupId(IDevice::AutoDetected, deviceId); dev->setMachineType(IDevice::Emulator); dev->settings()->displayName.setValue(m_createdAvdInfo.name); dev->setDeviceState(IDevice::DeviceConnected); dev->setExtraData(Constants::AndroidAvdName, m_createdAvdInfo.name); dev->setExtraData(Constants::AndroidCpuAbi, {m_createdAvdInfo.abi}); - dev->setExtraData(Constants::AndroidSdk, m_createdAvdInfo.systemImage->apiLevel()); + dev->setExtraData(Constants::AndroidSdk, m_createdAvdInfo.apiLevel); return IDevice::Ptr(dev); } |