Android: Simplify device action related code

ICore::dialogParent() is a good parent for most dialogs.

Change-Id: I86438bed9eb074d3821768f21a417f0912502d17
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2025-01-10 15:11:07 +01:00
parent c671905bf7
commit ca102fde6e

View File

@@ -98,7 +98,7 @@ public:
}
void setupDevicesWatcher();
void eraseAvd(const IDevice::Ptr &device, QWidget *parent);
void eraseAvd(const IDevice::Ptr &device);
Group m_avdListRecipe{};
TaskTreeRunner m_avdListRunner;
@@ -137,12 +137,12 @@ static void updateDeviceState(const IDevice::ConstPtr &device)
devMgr->setDeviceState(id, IDevice::DeviceConnected);
}
static void setEmulatorArguments(QWidget *parent)
static void setEmulatorArguments()
{
const QString helpUrl =
"https://developer.android.com/studio/run/emulator-commandline#startup-options";
QInputDialog dialog(parent ? parent : Core::ICore::dialogParent());
QInputDialog dialog(Core::ICore::dialogParent());
dialog.setWindowTitle(Tr::tr("Emulator Command-line Startup Options"));
dialog.setLabelText(Tr::tr("Emulator command-line startup options "
"(<a href=\"%1\">Help Web Page</a>):")
@@ -224,10 +224,10 @@ public:
void updateDeviceFromUi() final {}
static QString dialogTitle();
static bool messageDialog(const QString &msg, QMessageBox::Icon icon, QWidget *parent = nullptr);
static bool criticalDialog(const QString &error, QWidget *parent = nullptr);
static bool infoDialog(const QString &msg, QWidget *parent = nullptr);
static bool questionDialog(const QString &question, QWidget *parent = nullptr);
static bool messageDialog(const QString &msg, QMessageBox::Icon icon);
static bool criticalDialog(const QString &error);
static bool infoDialog(const QString &msg);
static bool questionDialog(const QString &question);
};
static void setupWifiForDevice(const IDevice::Ptr &device, QWidget *parent)
@@ -235,7 +235,7 @@ static void setupWifiForDevice(const IDevice::Ptr &device, QWidget *parent)
if (device->deviceState() != IDevice::DeviceReadyToUse) {
AndroidDeviceWidget::infoDialog(
Tr::tr("The device has to be connected with ADB debugging "
"enabled to use this feature."), parent);
"enabled to use this feature."));
return;
}
@@ -246,18 +246,18 @@ static void setupWifiForDevice(const IDevice::Ptr &device, QWidget *parent)
args.append({"tcpip", wifiDevicePort});
if (!runAdbCommand(args).success) {
AndroidDeviceWidget::criticalDialog(
Tr::tr("Opening connection port %1 failed.").arg(wifiDevicePort), parent);
Tr::tr("Opening connection port %1 failed.").arg(wifiDevicePort));
return;
}
QTimer::singleShot(2000, parent, [adbSelector, parent] {
QTimer::singleShot(2000, parent, [adbSelector] {
// Get device IP address
QStringList args = adbSelector;
args.append({"shell", "ip", "route"});
const SdkToolResult ipRes = runAdbCommand(args);
if (!ipRes.success) {
AndroidDeviceWidget::criticalDialog(
Tr::tr("Retrieving the device IP address failed."), parent);
Tr::tr("Retrieving the device IP address failed."));
return;
}
@@ -271,7 +271,7 @@ static void setupWifiForDevice(const IDevice::Ptr &device, QWidget *parent)
}
if (!ipRegex.match(ipParts.last()).hasMatch()) {
AndroidDeviceWidget::criticalDialog(
Tr::tr("The retrieved IP address is invalid."), parent);
Tr::tr("The retrieved IP address is invalid."));
return;
}
@@ -280,8 +280,7 @@ static void setupWifiForDevice(const IDevice::Ptr &device, QWidget *parent)
args.append({"connect", QString("%1:%2").arg(ip).arg(wifiDevicePort)});
if (!runAdbCommand(args).success) {
AndroidDeviceWidget::criticalDialog(
Tr::tr("Connecting to the device IP \"%1\" failed.").arg(ip),
parent);
Tr::tr("Connecting to the device IP \"%1\" failed.").arg(ip));
return;
}
});
@@ -342,10 +341,10 @@ QString AndroidDeviceWidget::dialogTitle()
return Tr::tr("Android Device Manager");
}
bool AndroidDeviceWidget::messageDialog(const QString &msg, QMessageBox::Icon icon, QWidget *parent)
bool AndroidDeviceWidget::messageDialog(const QString &msg, QMessageBox::Icon icon)
{
qCDebug(androidDeviceLog) << msg;
QMessageBox box(parent ? parent : Core::ICore::dialogParent());
QMessageBox box(Core::ICore::dialogParent());
box.QDialog::setWindowTitle(dialogTitle());
box.setText(msg);
box.setIcon(icon);
@@ -353,19 +352,19 @@ bool AndroidDeviceWidget::messageDialog(const QString &msg, QMessageBox::Icon ic
return box.exec();
}
bool AndroidDeviceWidget::criticalDialog(const QString &error, QWidget *parent)
bool AndroidDeviceWidget::criticalDialog(const QString &error)
{
return messageDialog(error, QMessageBox::Critical, parent);
return messageDialog(error, QMessageBox::Critical);
}
bool AndroidDeviceWidget::infoDialog(const QString &message, QWidget *parent)
bool AndroidDeviceWidget::infoDialog(const QString &message)
{
return messageDialog(message, QMessageBox::Information, parent);
return messageDialog(message, QMessageBox::Information);
}
bool AndroidDeviceWidget::questionDialog(const QString &question, QWidget *parent)
bool AndroidDeviceWidget::questionDialog(const QString &question)
{
QMessageBox box(parent ? parent : Core::ICore::dialogParent());
QMessageBox box(Core::ICore::dialogParent());
box.QDialog::setWindowTitle(dialogTitle());
box.setText(question);
box.setIcon(QMessageBox::Question);
@@ -426,15 +425,15 @@ void AndroidDevice::addActionsIfNotFound()
}
if (!hasEraseAction) {
addDeviceAction({eraseAvdAction, [](const IDevice::Ptr &device, QWidget *parent) {
s_instance->eraseAvd(device, parent);
addDeviceAction({eraseAvdAction, [](const IDevice::Ptr &device, QWidget *) {
s_instance->eraseAvd(device);
}});
}
if (!hasAvdArgumentsAction) {
addDeviceAction({avdArgumentsAction, [](const IDevice::Ptr &device, QWidget *parent) {
addDeviceAction({avdArgumentsAction, [](const IDevice::Ptr &device, QWidget *) {
Q_UNUSED(device)
setEmulatorArguments(parent);
setEmulatorArguments();
}});
}
} else if (machineType() == Hardware && !ipRegex.match(id().toString()).hasMatch()) {
@@ -943,7 +942,7 @@ void AndroidDeviceManagerInstance::setupDevicesWatcher()
updateAvdList();
}
void AndroidDeviceManagerInstance::eraseAvd(const IDevice::Ptr &device, QWidget *parent)
void AndroidDeviceManagerInstance::eraseAvd(const IDevice::Ptr &device)
{
if (!device)
return;
@@ -954,7 +953,7 @@ void AndroidDeviceManagerInstance::eraseAvd(const IDevice::Ptr &device, QWidget
const QString name = static_cast<const AndroidDevice *>(device.get())->avdName();
const QString question
= Tr::tr("Erase the Android AVD \"%1\"?\nThis cannot be undone.").arg(name);
if (!AndroidDeviceWidget::questionDialog(question, parent))
if (!AndroidDeviceWidget::questionDialog(question))
return;
qCDebug(androidDeviceLog) << QString("Erasing Android AVD \"%1\" from the system.").arg(name);