OSDN Git Service

solid-networkstatus: do not require NetworkManager to build the status interface...
authorIvailo Monev <xakepa10@gmail.com>
Fri, 8 Apr 2022 18:56:14 +0000 (21:56 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Fri, 8 Apr 2022 18:57:10 +0000 (21:57 +0300)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
CMakeLists.txt
appveyor.yml
solid-networkstatus/kded/CMakeLists.txt
solid-networkstatus/kded/connmanstatus.cpp
solid-networkstatus/kded/connmanstatus.h
solid-networkstatus/kded/networkmanagerstatus.cpp
solid-networkstatus/kded/networkmanagerstatus.h
solid-networkstatus/kded/networkstatus.cpp
solid-networkstatus/kded/wicdstatus.cpp
solid-networkstatus/kded/wicdstatus.h

index c3953df..aff6939 100644 (file)
@@ -245,14 +245,6 @@ set_package_properties(Qalculate PROPERTIES
     PURPOSE "Needed to enable advanced features of the calculator runner"
 )
 
-macro_optional_find_package(NetworkManager)
-set_package_properties(NetworkManager PROPERTIES
-    DESCRIPTION "The NetworkManager headers"
-    URL "http://projects.gnome.org/NetworkManager"
-    TYPE OPTIONAL
-    PURPOSE "Needed for kded's networkstatus module"
-)
-
 macro_optional_find_package(LightDM)
 set_package_properties(LightDM PROPERTIES
     DESCRIPTION "Cross-desktop display manager"
index 84f218a..5d4d813 100644 (file)
@@ -19,7 +19,7 @@ build_script:
     sudo apt-get update -qq
 
     sudo apt-get install -qq cmake katie-dev katanalibs \
-        katana-baseapps xorg-dev libnm-dev libqalculate-dev libxxf86vm-dev \
+        katana-baseapps xorg-dev libqalculate-dev libxxf86vm-dev \
         libx11-xcb-dev libxcb-icccm4-dev libxcb-composite0-dev libxcb-damage0-dev \
         libxcb-xfixes0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-shape0-dev \
         libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev libxcb-image0-dev \
index 729575b..8a925e4 100644 (file)
@@ -8,18 +8,9 @@ set(kded_networkstatus_PART_SRCS
    wicdcustomtypes.cpp
    connmanstatus.cpp
    toolkitstatus.cpp
+   networkmanagerstatus.cpp
 )
 
-if(NETWORKMANAGER_FOUND)
-    if(${NETWORKMANAGER_VERSION} VERSION_EQUAL "0.7.0"
-        OR ${NETWORKMANAGER_VERSION} VERSION_GREATER "0.7.0")
-        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} ${NM-GLIB_INCLUDE_DIRS})
-        add_definitions(-DNM_BACKEND_ENABLED -DQT_NO_KEYWORDS)
-    endif()
-endif(NETWORKMANAGER_FOUND)
-
 qt4_add_dbus_adaptor(kded_networkstatus_PART_SRCS ../org.kde.Solid.Networking.Service.xml
         networkstatus.h NetworkStatusModule)
 
index aece952..f6c1c8c 100644 (file)
@@ -37,8 +37,7 @@ ConnmanStatus::ConnmanStatus(QObject *parent)
     m_connman(CONNMAN_DBUS_SERVICE, CONNMAN_DBUS_PATH, CONNMAN_DBUS_INTERFACE, QDBusConnection::systemBus())
 {
     if (isSupported()) {
-        QDBusConnection::systemBus().connect(CONNMAN_DBUS_SERVICE, CONNMAN_DBUS_PATH, CONNMAN_DBUS_INTERFACE,
-            "PropertyChanged", this, SLOT(connmanStateChanged()));
+        connect(&m_connman, SIGNAL(PropertyChanged()), this, SLOT(connmanStateChanged()));
         connmanStateChanged();
     }
 }
index c75dca4..917dd84 100644 (file)
@@ -33,9 +33,9 @@ public:
     ConnmanStatus(QObject *parent = 0);
 
     // reimplementations
-    Solid::Networking::Status status() const;
-    bool isSupported() const;
-    QString serviceName() const;
+    Solid::Networking::Status status() const final;
+    bool isSupported() const final;
+    QString serviceName() const final;
 
 private Q_SLOTS:
     void connmanStateChanged();
index 6c7159b..f34370a 100644 (file)
@@ -1,6 +1,6 @@
 /*  This file is part of the KDE project
 
-    Copyright (c) 2010 Klarälvdalens Datakonsult AB,
+    Copyright (c) 2010 Klarälvdalens Datakonsult AB,
                        a KDAB Group company <info@kdab.com>
     Author: Kevin Ottens <kevin.ottens@kdab.com>
 
 
 #include <QtDBus/QDBusReply>
 
-#include <NetworkManager.h>
+#include <KDebug>
 
-#if !defined(NM_CHECK_VERSION)
-    #define NM_CHECK_VERSION(x,y,z) 0
-#endif
+#define NM_DBUS_SERVICE "org.freedesktop.NetworkManager"
+#define NM_DBUS_PATH "/org/freedesktop/NetworkManager"
+#define NM_DBUS_INTERFACE "org.freedesktop.NetworkManager"
 
-NetworkManagerStatus::NetworkManagerStatus( QObject *parent )
-    : SystemStatusInterface( parent ),
-    m_status( Solid::Networking::Unknown ),
-    m_manager( NM_DBUS_SERVICE,
-               NM_DBUS_PATH,
-               NM_DBUS_INTERFACE,
-               QDBusConnection::systemBus() )
+NetworkManagerStatus::NetworkManagerStatus(QObject *parent)
+    : SystemStatusInterface(parent),
+    m_status(Solid::Networking::Unknown),
+    m_nm(NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, QDBusConnection::systemBus())
 {
     if (isSupported()) {
-        connect( &m_manager, SIGNAL(StateChanged(uint)),
-                this, SLOT(nmStateChanged(uint)));
+        connect(&m_nm, SIGNAL(StateChanged(uint)), this, SLOT(nmStateChanged(uint)));
 
-        QDBusReply<uint> reply = m_manager.call( "state" );
-
-        if ( reply.isValid() ) {
-            m_status = convertNmState( reply );
+        QDBusReply<uint> reply = m_nm.call("state");
+        if (reply.isValid()) {
+            nmStateChanged(reply.value());
         }
     }
 }
@@ -61,51 +56,41 @@ Solid::Networking::Status NetworkManagerStatus::status() const
 
 bool NetworkManagerStatus::isSupported() const
 {
-    return m_manager.isValid();
+    return m_nm.isValid();
 }
 
 QString NetworkManagerStatus::serviceName() const
 {
-    return QString(NM_DBUS_SERVICE);
-}
-
-void NetworkManagerStatus::nmStateChanged( uint nmState )
-{
-    m_status = convertNmState( nmState );
-    Q_EMIT statusChanged( m_status );
+    return QString::fromLatin1(NM_DBUS_SERVICE);
 }
 
-Solid::Networking::Status NetworkManagerStatus::convertNmState( uint nmState )
+void NetworkManagerStatus::nmStateChanged(uint nmState)
 {
-    Solid::Networking::Status status = Solid::Networking::Unknown;
-
+    m_status = Solid::Networking::Unknown;
+    // for reference:
+    // https://developer-old.gnome.org/NetworkManager/stable/gdbus-org.freedesktop.NetworkManager.html
     switch (nmState) {
-    case NM_STATE_UNKNOWN:
-    case NM_STATE_ASLEEP:
+    case 0:
+    case 10:
         break;
-    case NM_STATE_CONNECTING:
-        status = Solid::Networking::Connecting;
+    case 20:
+        m_status = Solid::Networking::Unconnected;
         break;
-#if NM_CHECK_VERSION(0,8,992)
-    case NM_STATE_CONNECTED_LOCAL:
-    case NM_STATE_CONNECTED_SITE:
-    case NM_STATE_CONNECTED_GLOBAL:
-#else
-    case NM_STATE_CONNECTED:
-#endif
-        status = Solid::Networking::Connected;
+    case 30:
+        m_status = Solid::Networking::Disconnecting;
         break;
-    case NM_STATE_DISCONNECTED:
-        status = Solid::Networking::Unconnected;
+    case 40:
+        m_status = Solid::Networking::Connecting;
         break;
-#if NM_CHECK_VERSION(0,8,992)
-    case NM_STATE_DISCONNECTING:
-        status = Solid::Networking::Disconnecting;
+    case 50:
+    case 60:
+    case 70:
+        m_status = Solid::Networking::Connected;
         break;
-#endif
+    default:
+        kWarning() << "unknown state" << nmState;
     }
-
-    return status;
+    Q_EMIT statusChanged(m_status);
 }
 
 #include "moc_networkmanagerstatus.cpp"
index 9ef0a7b..5b81106 100644 (file)
@@ -1,6 +1,6 @@
 /*  This file is part of the KDE project
 
-    Copyright (c) 2010 Klarälvdalens Datakonsult AB,
+    Copyright (c) 2010 Klarlvdalens Datakonsult AB,
                        a KDAB Group company <info@kdab.com>
     Author: Kevin Ottens <kevin.ottens@kdab.com>
 
@@ -32,20 +32,19 @@ class NetworkManagerStatus : public SystemStatusInterface
 {
     Q_OBJECT
 public:
-    NetworkManagerStatus( QObject *parent = 0 );
+    NetworkManagerStatus(QObject *parent = 0);
 
-    /* reimp */ Solid::Networking::Status status() const;
-    /* reimp */ bool isSupported() const;
-    /* reimp */ QString serviceName() const;
+    // reimplementations
+    Solid::Networking::Status status() const final;
+    bool isSupported() const final;
+    QString serviceName() const final;
 
 private Q_SLOTS:
-    void nmStateChanged( uint nmState );
+    void nmStateChanged(uint nmState);
 
 private:
-    static Solid::Networking::Status convertNmState( uint nmState );
-
     Solid::Networking::Status m_status;
-    QDBusInterface m_manager;
+    QDBusInterface m_nm;
 };
 
 #endif
index 755d344..c758c43 100644 (file)
 
 #include "systemstatusinterface.h"
 
-#ifdef NM_BACKEND_ENABLED
 #include "networkmanagerstatus.h"
-#endif
-
 #include "wicdstatus.h"
 #include "connmanstatus.h"
 #include "toolkitstatus.h"
@@ -282,9 +279,7 @@ void NetworkStatusModule::backendUnregistered()
 void NetworkStatusModule::init()
 {
     if (backends.isEmpty()) {
-#ifdef NM_BACKEND_ENABLED
         backends << new NetworkManagerStatus( this );
-#endif
         backends << new WicdStatus( this );
         backends << new ConnmanStatus( this );
         backends << new ToolkitStatus( this );
index 9769b67..abecb89 100644 (file)
@@ -38,8 +38,7 @@ WicdStatus::WicdStatus(QObject *parent)
 {
     qDBusRegisterMetaType<WicdConnectionInfo>();
     if (isSupported()) {
-        QDBusConnection::systemBus().connect(WICD_DBUS_SERVICE, WICD_DAEMON_DBUS_PATH, WICD_DAEMON_DBUS_INTERFACE,
-            "StatusChanged", this, SLOT(wicdStateChanged()));
+        connect(&m_wicd, SIGNAL(StatusChanged()), this, SLOT(wicdStateChanged()));
         wicdStateChanged();
     }
 }
index 66e6f04..6bdc14f 100644 (file)
@@ -30,11 +30,12 @@ class WicdStatus : public SystemStatusInterface
 {
     Q_OBJECT
 public:
-    WicdStatus( QObject *parent = 0 );
+    WicdStatus(QObject *parent = 0);
 
-    /* reimp */ Solid::Networking::Status status() const;
-    /* reimp */ bool isSupported() const;
-    /* reimp */ QString serviceName() const;
+    // reimplementations
+    Solid::Networking::Status status() const final;
+    bool isSupported() const final;
+    QString serviceName() const final;
 
 private Q_SLOTS:
     void wicdStateChanged();