[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/runtime/solid-networkstatus/kded
From:       Kevin Ottens <ervin () kde ! org>
Date:       2010-09-15 14:11:54
Message-ID: 20100915141154.5D643AC88E () svn ! kde ! org
[Download RAW message or body]

SVN commit 1175665 by ervin:

Cut the dependency to libsolidcontrol (and then workspace), provide a
new in process abstraction to deal with different subsystems. Add an
implementation for NetworkManager 0.7.


 M  +16 -5     CMakeLists.txt  
 A             networkmanagerstatus.cpp   [License: LGPL]
 A             networkmanagerstatus.h   [License: LGPL]
 M  +32 -5     networkstatus.cpp  
 A             systemstatusinterface.cpp   [License: LGPL]
 A             systemstatusinterface.h   [License: LGPL]


--- trunk/KDE/kdebase/runtime/solid-networkstatus/kded/CMakeLists.txt #1175664:1175665
@@ -1,11 +1,22 @@
 ########### next target ###############
 
-set(kded_networkstatus_PART_SRCS networkstatus.cpp network.cpp)
+set(kded_networkstatus_PART_SRCS
+   networkstatus.cpp
+   network.cpp
+   systemstatusinterface.cpp
+)
 
-#if(NETWORKMANAGER_FOUND)
-#    MESSAGE(STATUS "Adding in-process NetworkManager service-wart to kded module")
-#endif(NETWORKMANAGER_FOUND)
+macro_optional_find_package(NetworkManager)
+macro_ensure_version("0.7.0" ${NETWORKMANAGER_VERSION} NM_0_7)
 
+if(NETWORKMANAGER_FOUND AND NM_0_7)
+    MESSAGE(STATUS "Adding in-process NetworkManager service-wart to kded module")
+
+    set(kded_networkstatus_PART_SRCS ${kded_networkstatus_PART_SRCS} networkmanagerstatus.cpp)
+    include_directories(${NETWORKMANAGER_INCLUDE_DIRS})
+    add_definitions(-DNM_BACKEND_ENABLED)
+endif(NETWORKMANAGER_FOUND AND NM_0_7)
+
 qt4_add_dbus_adaptor(kded_networkstatus_PART_SRCS ../org.kde.Solid.Networking.Service.xml
         networkstatus.h NetworkStatusModule)
 
@@ -17,7 +28,7 @@
 
 kde4_add_plugin(kded_networkstatus ${kded_networkstatus_PART_SRCS})
 
-target_link_libraries(kded_networkstatus ${KDE4_KIO_LIBS} solidcontrol)
+target_link_libraries(kded_networkstatus ${KDE4_KDECORE_LIBS})
 
 install(TARGETS kded_networkstatus DESTINATION ${PLUGIN_INSTALL_DIR})
 
--- trunk/KDE/kdebase/runtime/solid-networkstatus/kded/networkstatus.cpp #1175664:1175665
@@ -1,6 +1,10 @@
 /*  This file is part of kdebase/workspace/solid
     Copyright (C) 2005,2007 Will Stephenson <wstephenson@kde.org>
 
+    Copyright (c) 2010 Klarälvdalens Datakonsult AB,
+                       a KDAB Group company <info@kdab.com>
+    Author: Kevin Ottens <kevin.ottens@kdab.com>
+
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
     License version 2 as published by the Free Software Foundation.
@@ -32,6 +36,12 @@
 #include "clientadaptor.h"
 #include "serviceadaptor.h"
 
+#include "systemstatusinterface.h"
+
+#ifdef NM_BACKEND_ENABLED
+#include "networkmanagerstatus.h"
+#endif
+
 #include <kpluginfactory.h>
 
 K_PLUGIN_FACTORY(NetworkStatusFactory,
@@ -46,7 +56,7 @@
 class NetworkStatusModule::Private
 {
 public:
-    Private() : status( Solid::Networking::Unknown ), serviceWatcher( 0 )
+    Private() : status( Solid::Networking::Unknown ), backend( 0 ), serviceWatcher( 0 )
     {
 
     }
@@ -56,7 +66,7 @@
     }
     NetworkMap networks;
     Solid::Networking::Status status;
-    Solid::Control::NetworkManager::Notifier * notifier;
+    SystemStatusInterface *backend;
     QDBusServiceWatcher *serviceWatcher;
 };
 
@@ -184,11 +194,28 @@
 
 void NetworkStatusModule::init()
 {
-    d->notifier = Solid::Control::NetworkManager::notifier();
-    connect( d->notifier, SIGNAL(statusChanged(Solid::Networking::Status)),
+    QList<SystemStatusInterface*> backends;
+#ifdef NM_BACKEND_ENABLED
+    backends << new NetworkManagerStatus( this );
+#endif
+
+    while ( !backends.isEmpty() ) {
+        d->backend = backends.takeFirst();
+        if ( d->backend->isSupported() ) {
+            qDeleteAll(backends);
+            backends.clear();
+        } else {
+            delete d->backend;
+            d->backend = 0;
+        }
+    }
+
+    if ( d->backend != 0 ) {
+        connect( d->backend, SIGNAL(statusChanged(Solid::Networking::Status)),
             this, SLOT(solidNetworkingStatusChanged(Solid::Networking::Status)));
-    Solid::Networking::Status status = Solid::Control::NetworkManager::status();
+        Solid::Networking::Status status = d->backend->status();
     registerNetwork( QLatin1String("SolidNetwork"), status, QLatin1String("org.kde.kded") );
+    }
 
     d->serviceWatcher = new QDBusServiceWatcher(this);
     d->serviceWatcher->setConnection(QDBusConnection::sessionBus());
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic