diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-09-26 23:06:00 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2021-10-25 09:21:22 +0000 |
commit | affe3ccf510e40ee21709db581dff08089f03725 (patch) | |
tree | 0bc465726f4511a784d0bb6e986699b60c05c607 /src/plugins/android/androiddevice.cpp | |
parent | 12bc192422c75d5e7866be17c3bb42352d64ab47 (diff) | |
download | qt-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.cpp | 27 |
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) |