QString SubsurfaceSysInfo::osVersion() { #if defined(Q_OS_IOS) int major = (int(MacintoshVersion) >> 4) & 0xf; int minor = int(MacintoshVersion) & 0xf; if (Q_LIKELY(major < 10 && minor < 10)) { char buf[4] = { char(major + '0'), '.', char(minor + '0'), '\0' }; return QString::fromLatin1(buf, 3); } return QString::number(major) + QLatin1Char('.') + QString::number(minor); #elif defined(Q_OS_OSX) int minor = int(MacintoshVersion) - 2; // we're not running on Mac OS 9 Q_ASSERT(minor < 100); char buf[] = "10.0\0"; if (Q_LIKELY(minor < 10)) { buf[3] += minor; } else { buf[3] += minor / 10; buf[4] = '0' + minor % 10; } return QString::fromLatin1(buf); #elif defined(Q_OS_WIN) const char *version = winVer_helper(); if (version) return QString::fromLatin1(version).toLower(); // fall through // Android and Blackberry should not fall through to the Unix code #elif defined(Q_OS_ANDROID) // TBD #elif defined(Q_OS_BLACKBERRY) deviceinfo_details_t *deviceInfo; if (deviceinfo_get_details(&deviceInfo) == BPS_SUCCESS) { QString bbVersion = QString::fromLatin1(deviceinfo_details_get_device_os_version(deviceInfo)); deviceinfo_free_details(&deviceInfo); return bbVersion; } #elif defined(Q_OS_UNIX) QUnixOSVersion unixOsVersion = detectUnixVersion(); if (!unixOsVersion.versionIdentifier.isEmpty()) return unixOsVersion.versionIdentifier; #endif // fallback return unknownText(); }
QString RegisterService::deviceVersion() const { QString deviceVersion; if (bps_initialize() == BPS_SUCCESS) { qDebug() << "bps initialized"; deviceinfo_details_t *deviceDetails = 0; if (deviceinfo_get_details(&deviceDetails) == BPS_SUCCESS) { deviceVersion = deviceinfo_details_get_device_os_version(deviceDetails); deviceinfo_free_details(&deviceDetails); } else { qDebug() << "error retrieving device details"; } bps_shutdown(); } else { qDebug() << "error initializing bps"; } return deviceVersion; }