qtmobility/src/systeminfo/qsysteminfo_linux.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 11 06b8e2af4411
--- a/qtmobility/src/systeminfo/qsysteminfo_linux.cpp	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/src/systeminfo/qsysteminfo_linux.cpp	Mon May 03 13:18:40 2010 +0300
@@ -47,12 +47,12 @@
 #include <QTextStream>
 #include <QLocale>
 #include <QLibraryInfo>
-#include <QtGui>
 #include <QDebug>
 #include <QTimer>
 #include <QDir>
 #include <QTimer>
 #include <QMapIterator>
+#include <QSettings>
 
 #ifndef QT_NO_NETWORKMANAGER
 #include <qnetworkmanagerservice_linux_p.h>
@@ -92,8 +92,8 @@
     if(transDir.exists()) {
         QStringList localeList = transDir.entryList( QStringList() << QLatin1String("qt_*.qm") ,QDir::Files
                                                      | QDir::NoDotAndDotDot, QDir::Name);
-        foreach(QString localeName, localeList) {
-            QString lang = localeName.mid(3,2);
+        foreach(const QString localeName, localeList) {
+            const QString lang = localeName.mid(3,2);
             if(!langList.contains(lang) && !lang.isEmpty() && !lang.contains(QLatin1String("help"))) {
                 langList <<lang;
             }
@@ -156,7 +156,6 @@
 #if !defined(QT_NO_NETWORKMANAGER)
     setupNmConnections();
     updateActivePaths();
-    QTimer::singleShot(200, this,SLOT(getPrimaryMode()));
 #endif
 }
 
@@ -169,7 +168,7 @@
 {
     iface = new QNetworkManagerInterface(this);
 
-   foreach(QDBusObjectPath path, iface->getDevices()) {
+   foreach(const QDBusObjectPath path, iface->getDevices()) {
         QNetworkManagerInterfaceDevice *devIface = new QNetworkManagerInterfaceDevice(path.path(), this);
 
         switch(devIface->deviceType()) {
@@ -221,29 +220,9 @@
     return isDefault;
 }
 
-void QSystemNetworkInfoPrivate::getPrimaryMode()
+void QSystemNetworkInfoPrivate::primaryModeChanged()
 {
-    // try to see if there are any default route
-    bool anyDefaultRoute = false;
-
-    QMapIterator<QString, QString> i(activePaths);
-    QString devicepath;
-    while (i.hasNext()) {
-        i.next();
-        QScopedPointer<QNetworkManagerConnectionActive> activeCon;
-        activeCon.reset(new QNetworkManagerConnectionActive(i.key(), this));
-
-        if(activeCon->defaultRoute()) {
-            anyDefaultRoute = activeCon->defaultRoute();
-            QNetworkManagerInterfaceDevice *devIface = new QNetworkManagerInterfaceDevice(i.value(), this);
-            emit networkModeChanged(deviceTypeToMode(devIface->deviceType()));
-        }
-        devicepath = i.value();
-    }
-
-    if(!anyDefaultRoute) {
-        emit networkModeChanged(QSystemNetworkInfo::UnknownMode);
-    }
+    emit networkModeChanged(currentMode());
 }
 
 
@@ -305,10 +284,7 @@
             QScopedPointer<QNetworkManagerSettingsConnection> settingsConIface;
             settingsConIface.reset(new QNetworkManagerSettingsConnection(activeCon->serviceName(),activeCon->connection().path(), this));
             if(settingsConIface->isValid()) {
-                qWarning() << settingsConIface->getId();
                 return settingsConIface->getId();
-            } else {
-                //qWarning() << "not valid";
             }
         }
     }
@@ -321,15 +297,14 @@
     QScopedPointer<QNetworkManagerInterface> dbIface;
     dbIface.reset(new QNetworkManagerInterface(this));
 
-    QList <QDBusObjectPath> connections = dbIface->activeConnections();
+    const QList <QDBusObjectPath> connections = dbIface->activeConnections();
 
-    foreach(QDBusObjectPath activeconpath, connections) {
-
+    foreach(const QDBusObjectPath activeconpath, connections) {
         QScopedPointer<QNetworkManagerConnectionActive> activeCon;
         activeCon.reset(new QNetworkManagerConnectionActive(activeconpath.path(), this));
 
-        QList<QDBusObjectPath> devices = activeCon->devices();
-        foreach(QDBusObjectPath device, devices) {
+        const QList<QDBusObjectPath> devices = activeCon->devices();
+        foreach(const QDBusObjectPath device, devices) {
             activePaths.insert(activeconpath.path(),device.path());
         }
     }
@@ -384,7 +359,6 @@
             accessPointIface->setConnections();
             if(!connect(accessPointIface, SIGNAL(propertiesChanged(const QString &,QMap<QString,QVariant>)),
                         this,SLOT(nmAPPropertiesChanged( const QString &, QMap<QString,QVariant>)))) {
-             //   qWarning() << "connect is false";
             }
 
         }
@@ -401,7 +375,7 @@
         }
         if( i.key() == QLatin1String("Ip4Config")) {
             // || i.key() == "Ip46Config") {
-            getPrimaryMode();
+            primaryModeChanged();
         }
     }
 }
@@ -442,10 +416,10 @@
     case QSystemNetworkInfo::WlanMode:
         {
             QString result;
-            QString baseSysDir = QLatin1String("/sys/class/net/");
-            QDir wDir(baseSysDir);
-            QStringList dirs = wDir.entryList(QStringList() << QLatin1String("*"), QDir::AllDirs | QDir::NoDotAndDotDot);
-            foreach(QString dir, dirs) {
+            const QString baseSysDir = QLatin1String("/sys/class/net/");
+            const QDir wDir(baseSysDir);
+            const QStringList dirs = wDir.entryList(QStringList() << QLatin1String("*"), QDir::AllDirs | QDir::NoDotAndDotDot);
+            foreach(const QString dir, dirs) {
                 QString devFile = baseSysDir + dir;
                 QFileInfo fi(devFile + QLatin1String("/wireless/link"));
                 if(fi.exists()) {
@@ -464,10 +438,10 @@
     case QSystemNetworkInfo::EthernetMode:
         {
             QString result;
-            QString baseSysDir = QLatin1String("/sys/class/net/");
-            QDir eDir(baseSysDir);
-            QStringList dirs = eDir.entryList(QStringList() << QLatin1String("eth*"), QDir::AllDirs | QDir::NoDotAndDotDot);
-            foreach(QString dir, dirs) {
+            const QString baseSysDir = QLatin1String("/sys/class/net/");
+            const QDir eDir(baseSysDir);
+            const QStringList dirs = eDir.entryList(QStringList() << QLatin1String("eth*"), QDir::AllDirs | QDir::NoDotAndDotDot);
+            foreach(const QString dir, dirs) {
                 QString devFile = baseSysDir + dir;
                 QFileInfo fi(devFile + QLatin1String("/carrier"));
                 if(fi.exists()) {
@@ -527,6 +501,32 @@
     return QString();
 }
 
+QSystemNetworkInfo::NetworkMode QSystemNetworkInfoPrivate::currentMode()
+{
+    QSystemNetworkInfo::NetworkMode mode = QSystemNetworkInfo::UnknownMode;
+
+#if !defined(QT_NO_NETWORKMANAGER)
+    bool anyDefaultRoute = false;
+
+    QMapIterator<QString, QString> i(activePaths);
+    QString devicepath;
+    while (i.hasNext()) {
+        i.next();
+        QScopedPointer<QNetworkManagerConnectionActive> activeCon;
+        activeCon.reset(new QNetworkManagerConnectionActive(i.key(), this));
+
+        if(activeCon->defaultRoute()) {
+            anyDefaultRoute = activeCon->defaultRoute();
+            QNetworkManagerInterfaceDevice *devIface = new QNetworkManagerInterfaceDevice(i.value(), this);
+            return deviceTypeToMode(devIface->deviceType());
+        }
+        devicepath = i.value();
+    }
+#endif
+
+    return mode;
+}
+
 QSystemDisplayInfoPrivate::QSystemDisplayInfoPrivate(QSystemDisplayInfoLinuxCommonPrivate *parent)
         : QSystemDisplayInfoLinuxCommonPrivate(parent)
 {
@@ -561,12 +561,12 @@
 
 QString QSystemDeviceInfoPrivate::imei()
 {
-        return QLatin1String("Sim Not Available");
+        return QLatin1String("");
 }
 
 QString QSystemDeviceInfoPrivate::imsi()
 {
-        return QLatin1String("Sim Not Available");
+        return QLatin1String("");
 }
 
 QSystemDeviceInfo::SimStatus QSystemDeviceInfoPrivate::simStatus()
@@ -587,7 +587,7 @@
 }
 
  QSystemScreenSaverPrivate::QSystemScreenSaverPrivate(QSystemScreenSaverLinuxCommonPrivate *parent)
-         : QSystemScreenSaverLinuxCommonPrivate(parent)
+         : QSystemScreenSaverLinuxCommonPrivate(parent), currentPid(0)
  {
      kdeIsRunning = false;
      gnomeIsRunning = false;
@@ -596,33 +596,52 @@
 
  QSystemScreenSaverPrivate::~QSystemScreenSaverPrivate()
  {
- }
-
- bool QSystemScreenSaverPrivate::setScreenSaverInhibit()
- {
-     if(kdeIsRunning || gnomeIsRunning) {
+     if(currentPid != 0) {
 #if !defined(QT_NO_DBUS)
-         pid_t pid = getppid();
          QDBusConnection dbusConnection = QDBusConnection::sessionBus();
 
          QStringList ifaceList;
          ifaceList <<  QLatin1String("org.freedesktop.ScreenSaver");
          ifaceList << QLatin1String("org.gnome.ScreenSaver");
          QDBusInterface *connectionInterface;
-         foreach(QString iface, ifaceList) {
+         foreach(const QString iface, ifaceList) {
              connectionInterface = new QDBusInterface(QLatin1String(iface.toLatin1()),
                                                       QLatin1String("/ScreenSaver"),
                                                       QLatin1String(iface.toLatin1()),
                                                       dbusConnection);
-             QDBusReply<uint> reply =  connectionInterface->call(QLatin1String("Inhibit"),
-                                                                 QString::number((int)pid),
-                                                                 QLatin1String("QSystemScreenSaver"));
-             if(reply.isValid()) {
-                 currentPid = reply.value();
-                 qWarning() << "Inhibit" << currentPid;
-                 return reply.isValid();
-             } else {
-                 qWarning() << reply.error();
+             if(connectionInterface->isValid()) {
+                 QDBusReply<uint> reply =  connectionInterface->call(QLatin1String("UnInhibit"),
+                                                                     currentPid);
+             }
+         }
+#endif
+     }
+ }
+
+ bool QSystemScreenSaverPrivate::setScreenSaverInhibit()
+ {
+     if(kdeIsRunning || gnomeIsRunning) {
+#if !defined(QT_NO_DBUS)
+         const pid_t pid = getppid();
+         QDBusConnection dbusConnection = QDBusConnection::sessionBus();
+
+         QStringList ifaceList;
+         ifaceList <<  QLatin1String("org.freedesktop.ScreenSaver");
+         ifaceList << QLatin1String("org.gnome.ScreenSaver");
+         QDBusInterface *connectionInterface;
+         foreach(const QString iface, ifaceList) {
+             connectionInterface = new QDBusInterface(QLatin1String(iface.toLatin1()),
+                                                      QLatin1String("/ScreenSaver"),
+                                                      QLatin1String(iface.toLatin1()),
+                                                      dbusConnection);
+             if(connectionInterface->isValid()) {
+                 QDBusReply<uint> reply =  connectionInterface->call(QLatin1String("Inhibit"),
+                                                                     QString::number((int)pid),
+                                                                     QLatin1String("QSystemScreenSaver"));
+                 if(reply.isValid()) {
+                     currentPid = reply.value();
+                     return reply.isValid();
+                 }
              }
          }
 #endif
@@ -643,23 +662,12 @@
 
 bool QSystemScreenSaverPrivate::screenSaverInhibited()
 {
-    if(kdeIsRunning) {
-        QString kdeSSConfig;
-        if(QDir( QDir::homePath()+QLatin1String("/.kde4/")).exists()) {
-            kdeSSConfig = QDir::homePath()+QLatin1String("/.kde4/share/config/kscreensaverrc");
-        } else if(QDir(QDir::homePath()+QLatin1String("/.kde/")).exists()) {
-            kdeSSConfig = QDir::homePath()+QLatin1String("/.kde/share/config/kscreensaverrc");
+    if(kdeIsRunning || gnomeIsRunning) {
+        if(currentPid != 0) {
+            return true;
+        } else {
+            return false;
         }
-        QSettings kdeScreenSaveConfig(kdeSSConfig, QSettings::IniFormat);
-        kdeScreenSaveConfig.beginGroup(QLatin1String("ScreenSaver"));
-        if(kdeScreenSaveConfig.status() == QSettings::NoError) {
-            if(kdeScreenSaveConfig.value(QLatin1String("Enabled")).toBool() == false) {
-            } else {
-                return true;
-            }
-        }
-    } else if(gnomeIsRunning) {
-
     }
 
 #ifdef Q_WS_X11
@@ -726,20 +734,20 @@
 {
     if(kdeIsRunning || gnomeIsRunning) {
 #if !defined(QT_NO_DBUS)
-        pid_t pid = getppid();
+        const pid_t pid = getppid();
         QDBusConnection dbusConnection = QDBusConnection::sessionBus();
 
         QStringList ifaceList;
         ifaceList <<  QLatin1String("org.freedesktop.ScreenSaver");
         ifaceList << QLatin1String("org.gnome.ScreenSaver");
         QDBusInterface *connectionInterface;
-        foreach(QString iface, ifaceList) {
+        foreach(const QString iface, ifaceList) {
             connectionInterface = new QDBusInterface(QLatin1String(iface.toLatin1()),
                                                      QLatin1String("/ScreenSaver"),
                                                      QLatin1String(iface.toLatin1()),
                                                      dbusConnection);
 
-            QDBusReply<bool> reply =  connectionInterface->call(QLatin1String("GetActive"),
+            const QDBusReply<bool> reply =  connectionInterface->call(QLatin1String("GetActive"),
                                                                 QString::number((int)pid),
                                                                 QLatin1String("QSystemScreenSaver"));
             if(reply.isValid()) {