diff options
author | Xizhi Zhu <xizhi.zhu@nokia.com> | 2011-05-06 14:44:19 +0300 |
---|---|---|
committer | Xizhi Zhu <xizhi.zhu@nokia.com> | 2011-05-06 16:50:23 +0300 |
commit | b22d9dc6f6a086cce8845ca4408729031aeafae7 (patch) | |
tree | 9d722b420c36fdffd0d9ea1243984fe461b17a69 | |
parent | 41700066a246204b6151ab71f452aed8e3768b17 (diff) |
Improve QSystemInfo a little bit.
Docs fixed.
On Linux, /proc/sys/kernel/osrelease is returned as the firmware version, /etc/issue is used for OS version.
Returning Qt version in the common code.
-rw-r--r-- | src/systeminfo/linux/qsysteminfo_linux_common.cpp | 81 | ||||
-rw-r--r-- | src/systeminfo/qsystemgeneralinfo.cpp | 35 | ||||
-rw-r--r-- | src/systeminfo/qsysteminfo_mac.mm | 6 | ||||
-rw-r--r-- | src/systeminfo/qsysteminfo_maemo.cpp | 8 | ||||
-rw-r--r-- | src/systeminfo/qsysteminfo_s60.cpp | 4 | ||||
-rw-r--r-- | src/systeminfo/qsysteminfo_win.cpp | 6 | ||||
-rw-r--r-- | tests/auto/qdeclarativesysteminfo/tst_qdeclarativesysteminfo.cpp | 38 |
7 files changed, 40 insertions, 138 deletions
diff --git a/src/systeminfo/linux/qsysteminfo_linux_common.cpp b/src/systeminfo/linux/qsysteminfo_linux_common.cpp index 6907003082..57e02d3760 100644 --- a/src/systeminfo/linux/qsysteminfo_linux_common.cpp +++ b/src/systeminfo/linux/qsysteminfo_linux_common.cpp @@ -508,84 +508,39 @@ bool QSystemInfoLinuxCommonPrivate::hasHalUsbFeature(qint32 usbClass) QString QSystemInfoLinuxCommonPrivate::version(QSystemInfo::Version type, const QString ¶meter) { + Q_UNUSED(parameter) + switch(type) { case QSystemInfo::Firmware: { -#if !defined(QT_NO_HAL) - QHalDeviceInterface iface(QLatin1String("/org/freedesktop/Hal/devices/computer")); - QString str; - if (iface.isValid()) { - str = iface.getPropertyString(QLatin1String("system.kernel.version")); - if (!str.isEmpty()) - return str; - if (parameter == "versionDate") { - str = iface.getPropertyString(QLatin1String("system.firmware.release_date")); - if (!str.isEmpty()) - return str; - } else { - str = iface.getPropertyString(QLatin1String("system.firmware.version")); - if (str.isEmpty()) { - if (!str.isEmpty()) - return str; - } - } - } + QFile firmware("/proc/sys/kernel/osrelease"); + if (firmware.open(QIODevice::ReadOnly)) + return firmware.readAll().simplified(); break; -#endif // QT_NO_HAL } case QSystemInfo::Os: { - if (QFile::exists("/usr/bin/lsb_release")) { - QProcess syscall; - QString program = "/usr/bin/lsb_release"; - QStringList arguments; - arguments << "-r"; - syscall.start(program, arguments); - syscall.waitForFinished(); - QString desc = syscall.readAllStandardOutput(); - desc = desc.section(":",1,1); - return desc.simplified(); - } - - QFile versionFile2("/etc/issue"); - if (!versionFile2.open(QIODevice::ReadOnly | QIODevice::Text)) { - qDebug() << "File not opened"; - } else { - QString line; - QString strvalue; - QTextStream in(&versionFile2); - do { - line = in.readLine(); - line.remove("\\n"); - line.remove("\\l"); - strvalue = line.simplified(); - break; - } while (!line.isNull()); - versionFile2.close(); - if(!strvalue.isEmpty()) - return strvalue; - } - - QFile versionFile3(QLatin1String("/proc/version")); - if (!versionFile3.open(QIODevice::ReadOnly | QIODevice::Text)) { - qDebug() << "File not opened"; - } else { - QString strvalue; - strvalue = QLatin1String(versionFile3.readAll().trimmed()); - versionFile3.close(); - return strvalue; + QFile os("/etc/issue"); + if (os.open(QIODevice::ReadOnly)) { + QByteArray content = os.readAll(); + if (!content.isEmpty()) { + QList<QByteArray> list(content.split(' ')); + bool ok = false; + foreach (const QByteArray &field, list) { + field.toDouble(&ok); + if (ok) + return field; + } + } } break; } - case QSystemInfo::QtCore : - return QString(qVersion()); - default: break; }; - return QString("Not Available"); + return QString(); } QString QSystemInfoLinuxCommonPrivate::currentCountryCode() const diff --git a/src/systeminfo/qsystemgeneralinfo.cpp b/src/systeminfo/qsystemgeneralinfo.cpp index 0553f4eda4..b991f3f577 100644 --- a/src/systeminfo/qsystemgeneralinfo.cpp +++ b/src/systeminfo/qsystemgeneralinfo.cpp @@ -58,29 +58,6 @@ QSystemInfoPrivate *getSystemInfoPrivate() { return sysinfoPrivate(); } \inmodule QtSystemInfo \since 1.0 \brief The QSystemInfo class provides access to various general information from the system. - \bold NOTE: In the future, parts of the QtSystemInfo API may be moved and renamed into an existing Qt class that provides similiar functionality. - - \table - \header - \o Class - \row - \o QSystemInfo::currentLanguage - \row - \o QSystemInfo::availableLanguages - \row - \o QSystemInfo::currentCountryCode - \row - \o QSystemDisplayInfo::displayBrightness - \row - \o QSystemDisplayInfo::colorDepth - \row - \o QSystemScreenSaver::screenSaverInhibited - \row - \o QSystemScreenSaver::setScreenSaverInhibit - \endtable - - Platform notes: Some functionality may or may not be supported on various platforms, depending on if there - is a reliable way to gather such information. */ /*! @@ -188,20 +165,18 @@ QStringList QSystemInfo::availableLanguages() } /*! - Returns the version of QSystemInfo::Version \a type, - with optional platform dependent \a parameter as a string. + Returns the version of QSystemInfo::Version \a type, with optional platform dependent + \a parameter as a string. - Version will be returned in "major.minor.build" form. - - In case a particular version does not use the "build" part, it is set to 0. - If a particular element is not available at all, an error "Not Installed" will be returned by - the API. + In case of error or not available, an empty string is returned. */ QString QSystemInfo::version(QSystemInfo::Version type, const QString ¶meter) { switch(type) { case QSystemInfo::QtMobility: return QLatin1String(QTM_VERSION_STR); + case QSystemInfo::QtCore: + return QString(qVersion()); default: return sysinfoPrivate()->version(type, parameter); } diff --git a/src/systeminfo/qsysteminfo_mac.mm b/src/systeminfo/qsysteminfo_mac.mm index 6c25811e2c..282cb1fb0e 100644 --- a/src/systeminfo/qsysteminfo_mac.mm +++ b/src/systeminfo/qsysteminfo_mac.mm @@ -423,7 +423,6 @@ void QSystemInfoPrivate::disconnectNotify(const char *signal) QString QSystemInfoPrivate::version(QSystemInfo::Version type, const QString ¶meter) { Q_UNUSED(parameter); - QString errorStr = "Not Available"; bool useDate = false; if(parameter == QLatin1String("versionDate")) { useDate = true; @@ -437,9 +436,6 @@ QString QSystemInfoPrivate::version(QSystemInfo::Version type, const QString &p return ver; } break; - case QSystemInfo::QtCore: - return qVersion(); - break; case QSystemInfo::Firmware: { return QSystemDeviceInfoPrivate::model(); @@ -448,7 +444,7 @@ QString QSystemInfoPrivate::version(QSystemInfo::Version type, const QString &p default: break; }; - return errorStr; + return QString(); } diff --git a/src/systeminfo/qsysteminfo_maemo.cpp b/src/systeminfo/qsysteminfo_maemo.cpp index 2635da0eba..5ca84201b7 100644 --- a/src/systeminfo/qsysteminfo_maemo.cpp +++ b/src/systeminfo/qsysteminfo_maemo.cpp @@ -183,14 +183,6 @@ QString QSystemInfoPrivate::currentCountryCode() const QString QSystemInfoPrivate::version(QSystemInfo::Version type, const QString ¶meter) { switch(type) { - case QSystemInfo::Os: { - QString sysinfodValue = sysinfodValueForKey("/device/sw-release-ver"); //("/device/content-ver"); - if (!sysinfodValue.isEmpty()) { - sysinfodValue = sysinfodValue.section("_", 2, 4); - return sysinfodValue; - } - } - case QSystemInfo::Firmware: { QString sysinfodValue = sysinfodValueForKey("/device/sw-release-ver"); if (!sysinfodValue.isEmpty()) diff --git a/src/systeminfo/qsysteminfo_s60.cpp b/src/systeminfo/qsysteminfo_s60.cpp index 109eb850fe..d0fda3ecf6 100644 --- a/src/systeminfo/qsysteminfo_s60.cpp +++ b/src/systeminfo/qsysteminfo_s60.cpp @@ -316,10 +316,6 @@ QString QSystemInfoPrivate::version(QSystemInfo::Version type, const QString & { return S60Version(); } - case QSystemInfo::QtCore: - { - return qVersion(); - } case QSystemInfo::Firmware: { QString versionText; diff --git a/src/systeminfo/qsysteminfo_win.cpp b/src/systeminfo/qsysteminfo_win.cpp index c833add372..8dc84f441c 100644 --- a/src/systeminfo/qsysteminfo_win.cpp +++ b/src/systeminfo/qsysteminfo_win.cpp @@ -512,7 +512,6 @@ QStringList QSystemInfoPrivate::availableLanguages() const QString QSystemInfoPrivate::version(QSystemInfo::Version type, const QString ¶meter) { Q_UNUSED(parameter); - QString errorStr = "Not Available"; bool useDate = false; if(parameter == "versionDate") { useDate = true; @@ -541,15 +540,12 @@ QString QSystemInfoPrivate::version(QSystemInfo::Version type, const QString &p #endif } break; - case QSystemInfo::QtCore : - return qVersion(); - break; case QSystemInfo::Firmware : { } break; }; - return errorStr; + return QString(); } diff --git a/tests/auto/qdeclarativesysteminfo/tst_qdeclarativesysteminfo.cpp b/tests/auto/qdeclarativesysteminfo/tst_qdeclarativesysteminfo.cpp index 25e1b298d5..1203b5aec2 100644 --- a/tests/auto/qdeclarativesysteminfo/tst_qdeclarativesysteminfo.cpp +++ b/tests/auto/qdeclarativesysteminfo/tst_qdeclarativesysteminfo.cpp @@ -43,7 +43,6 @@ #include <QtTest/QtTest> #include "qdeclarativegeneralinfo_p.h" -#include <QDebug> QTM_USE_NAMESPACE Q_DECLARE_METATYPE(QSystemInfo::Version); @@ -91,7 +90,7 @@ void tst_QDeclarativeSystemInfo::tst_availableLanguages() QDeclarativeGeneralInfo si; QVERIFY(!si.availableLanguages().isEmpty()); QStringList available = si.availableLanguages(); - foreach(QString lang, available) { + foreach (QString lang, available) { QCOMPARE(lang.length(), 2); QVERIFY(lang == lang.toLower()); } @@ -99,25 +98,21 @@ void tst_QDeclarativeSystemInfo::tst_availableLanguages() void tst_QDeclarativeSystemInfo::tst_versions_data() { - QTest::addColumn<QSystemInfo::Version>("version"); - QTest::addColumn<QString>("parameter"); - - QTest::newRow("Os") << QSystemInfo::Os << ""; - QTest::newRow("QtCore") << QSystemInfo::QtCore << ""; - QTest::newRow("Firmware") << QSystemInfo::Firmware << ""; + QTest::addColumn<QSystemInfo::Version>("version"); + QTest::addColumn<QString>("parameter"); + QTest::newRow("Os") << QSystemInfo::Os << ""; + QTest::newRow("QtCore") << QSystemInfo::QtCore << ""; + QTest::newRow("Firmware") << QSystemInfo::Firmware << ""; } void tst_QDeclarativeSystemInfo::tst_versions() { - { - QFETCH(QSystemInfo::Version, version); - QFETCH(QString, parameter); - QDeclarativeGeneralInfo si; - QString vers = si.version(version, parameter); - QVERIFY(!vers.isEmpty() - || vers.isEmpty()); - } + QFETCH(QSystemInfo::Version, version); + QFETCH(QString, parameter); + QDeclarativeGeneralInfo si; + QString vers = si.version(version, parameter); + QVERIFY(!vers.isEmpty() || vers.isEmpty()); } void tst_QDeclarativeSystemInfo::tst_countryCode() @@ -149,13 +144,10 @@ void tst_QDeclarativeSystemInfo::tst_hasFeatures_data() void tst_QDeclarativeSystemInfo::tst_hasFeatures() { - { - QFETCH(QSystemInfo::Feature, feature); - QDeclarativeGeneralInfo si; - qWarning() << si.hasFeatureSupported(feature); - QVERIFY(si.hasFeatureSupported(feature) == false - || si.hasFeatureSupported(feature) == true); - } + QFETCH(QSystemInfo::Feature, feature); + QDeclarativeGeneralInfo si; + QVERIFY(si.hasFeatureSupported(feature) == false + || si.hasFeatureSupported(feature) == true); } void tst_QDeclarativeSystemInfo::tst_detailFeatures_data() |