summaryrefslogtreecommitdiff
path: root/src/plugins/android/androiddevice.cpp
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2021-09-26 23:06:00 +0300
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2021-10-25 09:21:22 +0000
commitaffe3ccf510e40ee21709db581dff08089f03725 (patch)
tree0bc465726f4511a784d0bb6e986699b60c05c607 /src/plugins/android/androiddevice.cpp
parent12bc192422c75d5e7866be17c3bb42352d64ab47 (diff)
downloadqt-creator-affe3ccf510e40ee21709db581dff08089f03725.tar.gz
Android: Make refresh action device specific
Change-Id: I18386ad88e04696068f5f127cadb7ffcc6f25a56 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Diffstat (limited to 'src/plugins/android/androiddevice.cpp')
-rw-r--r--src/plugins/android/androiddevice.cpp27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp
index ea4ddbf8e1..662becee33 100644
--- a/src/plugins/android/androiddevice.cpp
+++ b/src/plugins/android/androiddevice.cpp
@@ -151,8 +151,9 @@ AndroidDevice::AndroidDevice()
setOsType(Utils::OsTypeOtherUnix);
setDeviceState(DeviceConnected);
- addDeviceAction({tr("Refresh"), [](const IDevice::Ptr &, QWidget *) {
- AndroidDeviceManager::instance()->updateDevicesListOnce();
+ addDeviceAction({tr("Refresh"), [](const IDevice::Ptr &device, QWidget *parent) {
+ Q_UNUSED(parent)
+ AndroidDeviceManager::instance()->updateDeviceState(device);
}});
addEmulatorActionsIfNotFound();
@@ -448,6 +449,28 @@ void AndroidDeviceManager::updateDevicesListOnce()
}
}
+void AndroidDeviceManager::updateDeviceState(const ProjectExplorer::IDevice::Ptr &device)
+{
+ const AndroidDevice *dev = static_cast<AndroidDevice *>(device.data());
+ const QString serial = dev->serialNumber();
+ DeviceManager *const devMgr = DeviceManager::instance();
+ const Utils::Id id = dev->id();
+ if (serial.isEmpty() && dev->machineType() == IDevice::Emulator) {
+ devMgr->setDeviceState(id, IDevice::DeviceConnected);
+ return;
+ }
+
+ const QStringList args = AndroidDeviceInfo::adbSelector(serial) << "shell" << "echo" << "1";
+ const SdkToolResult result = AndroidManager::runAdbCommand(args);
+ const int success = result.success();
+ if (success)
+ devMgr->setDeviceState(id, IDevice::DeviceReadyToUse);
+ else if (dev->machineType() == IDevice::Emulator || result.stdErr().contains("unauthorized"))
+ devMgr->setDeviceState(id, IDevice::DeviceConnected);
+ else
+ devMgr->setDeviceState(id, IDevice::DeviceDisconnected);
+}
+
void AndroidDeviceManager::startAvd(const ProjectExplorer::IDevice::Ptr &device, QWidget *parent)
{
Q_UNUSED(parent)