forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -65,7 +65,7 @@ static CreateAvdInfo createAvdCommand(const CreateAvdInfo &info)
|
|||||||
{
|
{
|
||||||
CreateAvdInfo result = info;
|
CreateAvdInfo result = info;
|
||||||
CommandLine avdManager(androidConfig().avdManagerToolPath(), {"create", "avd", "-n", result.name});
|
CommandLine avdManager(androidConfig().avdManagerToolPath(), {"create", "avd", "-n", result.name});
|
||||||
avdManager.addArgs({"-k", result.systemImage->sdkStylePath()});
|
avdManager.addArgs({"-k", result.sdkStylePath});
|
||||||
|
|
||||||
if (result.sdcardSize > 0)
|
if (result.sdcardSize > 0)
|
||||||
avdManager.addArgs({"-c", QString("%1M").arg(result.sdcardSize)});
|
avdManager.addArgs({"-c", QString("%1M").arg(result.sdcardSize)});
|
||||||
|
@@ -28,8 +28,8 @@ namespace Internal { class AndroidSdkManager; }
|
|||||||
class CreateAvdInfo
|
class CreateAvdInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool isValid() const { return systemImage && systemImage->isValid() && !name.isEmpty(); }
|
QString sdkStylePath;
|
||||||
const SystemImage *systemImage = nullptr;
|
int apiLevel = -1;
|
||||||
QString name;
|
QString name;
|
||||||
QString abi;
|
QString abi;
|
||||||
QString deviceDefinition;
|
QString deviceDefinition;
|
||||||
|
@@ -31,6 +31,7 @@
|
|||||||
#include <QSpinBox>
|
#include <QSpinBox>
|
||||||
#include <QToolTip>
|
#include <QToolTip>
|
||||||
|
|
||||||
|
using namespace ProjectExplorer;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace Android::Internal {
|
namespace Android::Internal {
|
||||||
@@ -121,20 +122,22 @@ int AvdDialog::exec()
|
|||||||
{
|
{
|
||||||
const int execResult = QDialog::exec();
|
const int execResult = QDialog::exec();
|
||||||
if (execResult == QDialog::Accepted) {
|
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;
|
CreateAvdInfo result;
|
||||||
result.systemImage = systemImage();
|
result.sdkStylePath = si->sdkStylePath();
|
||||||
|
result.apiLevel = si->apiLevel();
|
||||||
result.name = name();
|
result.name = name();
|
||||||
result.abi = abi();
|
result.abi = abi();
|
||||||
result.deviceDefinition = deviceDefinition();
|
result.deviceDefinition = deviceDefinition();
|
||||||
result.sdcardSize = sdcardSize();
|
result.sdcardSize = sdcardSize();
|
||||||
result.overwrite = m_overwriteCheckBox->isChecked();
|
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;
|
const AndroidAvdManager avdManager;
|
||||||
QFutureWatcher<CreateAvdInfo> createAvdFutureWatcher;
|
QFutureWatcher<CreateAvdInfo> createAvdFutureWatcher;
|
||||||
|
|
||||||
@@ -167,22 +170,21 @@ bool AvdDialog::isValid() const
|
|||||||
return !name().isEmpty() && systemImage() && systemImage()->isValid() && !abi().isEmpty();
|
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";
|
qCWarning(avdDialogLog) << "System image of the created AVD is nullptr";
|
||||||
return IDevice::Ptr();
|
return IDevice::Ptr();
|
||||||
}
|
}
|
||||||
AndroidDevice *dev = new AndroidDevice();
|
AndroidDevice *dev = new AndroidDevice;
|
||||||
const Utils::Id deviceId = AndroidDevice::idFromAvdInfo(m_createdAvdInfo);
|
const Utils::Id deviceId = AndroidDevice::idFromAvdInfo(m_createdAvdInfo);
|
||||||
using namespace ProjectExplorer;
|
|
||||||
dev->setupId(IDevice::AutoDetected, deviceId);
|
dev->setupId(IDevice::AutoDetected, deviceId);
|
||||||
dev->setMachineType(IDevice::Emulator);
|
dev->setMachineType(IDevice::Emulator);
|
||||||
dev->settings()->displayName.setValue(m_createdAvdInfo.name);
|
dev->settings()->displayName.setValue(m_createdAvdInfo.name);
|
||||||
dev->setDeviceState(IDevice::DeviceConnected);
|
dev->setDeviceState(IDevice::DeviceConnected);
|
||||||
dev->setExtraData(Constants::AndroidAvdName, m_createdAvdInfo.name);
|
dev->setExtraData(Constants::AndroidAvdName, m_createdAvdInfo.name);
|
||||||
dev->setExtraData(Constants::AndroidCpuAbi, {m_createdAvdInfo.abi});
|
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);
|
return IDevice::Ptr(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user