diff options
author | Eike Ziller <eike.ziller@qt.io> | 2020-07-10 14:40:38 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2020-07-13 12:00:25 +0000 |
commit | f4af71a3dd66afe90464692cadeb02fbd14a3d96 (patch) | |
tree | fbe637d6a75d5965064b9046f5f1ad6f1657a6f9 /src/tools | |
parent | 72bf4cd15fa9bf6842cfd1ea08dad142b3690f92 (diff) |
iOS Device: Show some more information in device options
Show iOS device name, identifier, OS version and cpu architecture.
Task-number: QTCREATORBUG-23016
Change-Id: I5fff2986a173800dabc585f17830cc242e436457
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/iostool/iosdevicemanager.cpp | 104 |
1 files changed, 39 insertions, 65 deletions
diff --git a/src/tools/iostool/iosdevicemanager.cpp b/src/tools/iostool/iosdevicemanager.cpp index ce3ff88c4dc..890dec82c9d 100644 --- a/src/tools/iostool/iosdevicemanager.cpp +++ b/src/tools/iostool/iosdevicemanager.cpp @@ -452,6 +452,10 @@ public: void deviceCallbackReturned(); QString commandName(); + QString getStringValue(AMDevice *device, + CFStringRef domain, + CFStringRef key, + const QString &fallback = QString()); }; class AppOpSession: public CommandSession { @@ -1584,82 +1588,52 @@ QString DevInfoSession::commandName() return QString::fromLatin1("DevInfoSession(%1, %2)").arg(deviceId); } +QString DevInfoSession::getStringValue(AMDevice *device, + CFStringRef domain, + CFStringRef key, + const QString &fallback) +{ + QString value = fallback; + CFPropertyListRef cfValue = lib()->deviceCopyValue(device, domain, key); + if (cfValue) { + if (CFGetTypeID(cfValue) == CFStringGetTypeID()) + value = QString::fromCFString(reinterpret_cast<CFStringRef>(cfValue)); + CFRelease(cfValue); + } + return value; +} + void DevInfoSession::deviceCallbackReturned() { if (debugAll) qDebug() << "device available"; QMap<QString,QString> res; - QString deviceNameKey = QLatin1String("deviceName"); - QString developerStatusKey = QLatin1String("developerStatus"); - QString deviceConnectedKey = QLatin1String("deviceConnected"); - QString osVersionKey = QLatin1String("osVersion"); - QString cpuArchitectureKey = "cpuArchitecture"; + const QString deviceNameKey = "deviceName"; + const QString developerStatusKey = "developerStatus"; + const QString deviceConnectedKey = "deviceConnected"; + const QString osVersionKey = "osVersion"; + const QString cpuArchitectureKey = "cpuArchitecture"; + const QString uniqueDeviceId = "uniqueDeviceId"; bool failure = !device; if (!failure) { failure = !connectDevice(); if (!failure) { res[deviceConnectedKey] = QLatin1String("YES"); - CFPropertyListRef cfDeviceName = lib()->deviceCopyValue(device, 0, - CFSTR("DeviceName")); - // CFShow(cfDeviceName); - if (cfDeviceName) { - if (CFGetTypeID(cfDeviceName) == CFStringGetTypeID()) - res[deviceNameKey] = QString::fromCFString(reinterpret_cast<CFStringRef>(cfDeviceName)); - CFRelease(cfDeviceName); - } - if (!res.contains(deviceNameKey)) - res[deviceNameKey] = QString(); - } - if (!failure) { - CFPropertyListRef cfDevStatus = lib()->deviceCopyValue(device, - CFSTR("com.apple.xcode.developerdomain"), - CFSTR("DeveloperStatus")); - // CFShow(cfDevStatus); - if (cfDevStatus) { - if (CFGetTypeID(cfDevStatus) == CFStringGetTypeID()) - res[developerStatusKey] = QString::fromCFString(reinterpret_cast<CFStringRef>(cfDevStatus)); - CFRelease(cfDevStatus); - } - if (!res.contains(developerStatusKey)) - res[developerStatusKey] = QLatin1String("*off*"); - } - if (!failure) { - CFPropertyListRef cfProductVersion = lib()->deviceCopyValue(device, - 0, - CFSTR("ProductVersion")); - //CFShow(cfProductVersion); - CFPropertyListRef cfBuildVersion = lib()->deviceCopyValue(device, - 0, - CFSTR("BuildVersion")); - //CFShow(cfBuildVersion); - CFPropertyListRef cfCpuArchitecture = lib()->deviceCopyValue(device, - 0, - CFSTR("CPUArchitecture")); - //CFShow(cfCpuArchitecture); - if (cfCpuArchitecture) { - if (CFGetTypeID(cfCpuArchitecture) == CFStringGetTypeID()) { - res[cpuArchitectureKey] = QString::fromCFString( - reinterpret_cast<CFStringRef>(cfCpuArchitecture)); - } - CFRelease(cfCpuArchitecture); - } - //CFShow(cfBuildVersion); - QString versionString; - if (cfProductVersion) { - if (CFGetTypeID(cfProductVersion) == CFStringGetTypeID()) - versionString = QString::fromCFString(reinterpret_cast<CFStringRef>(cfProductVersion)); - CFRelease(cfProductVersion); - } - if (cfBuildVersion) { - if (!versionString.isEmpty() && CFGetTypeID(cfBuildVersion) == CFStringGetTypeID()) - versionString += QString::fromLatin1(" (%1)").arg( - QString::fromCFString(reinterpret_cast<CFStringRef>(cfBuildVersion))); - CFRelease(cfBuildVersion); - } - if (!versionString.isEmpty()) - res[osVersionKey] = versionString; + res[deviceNameKey] = getStringValue(device, nullptr, CFSTR("DeviceName")); + res[developerStatusKey] = getStringValue(device, + CFSTR("com.apple.xcode.developerdomain"), + CFSTR("DeveloperStatus"), + "*off*"); + res[cpuArchitectureKey] = getStringValue(device, nullptr, CFSTR("CPUArchitecture")); + res[uniqueDeviceId] = getStringValue(device, nullptr, CFSTR("UniqueDeviceID")); + const QString productVersion = getStringValue(device, nullptr, CFSTR("ProductVersion")); + const QString buildVersion = getStringValue(device, nullptr, CFSTR("BuildVersion")); + if (!productVersion.isEmpty() && !buildVersion.isEmpty()) + res[osVersionKey] = QString("%1 (%2)").arg(productVersion, buildVersion); + else if (!productVersion.isEmpty()) + res[osVersionKey] = productVersion; else - res[osVersionKey] = QLatin1String("*unknown*"); + res[osVersionKey] = "*unknown*"; } disconnectDevice(); } |