[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