I have made the following changes intended for :
  CE:MW:Shared / connman-qt

Please review and accept or decline.
BOSS has already run some checks on this request.
See the "Messages from BOSS" section below.

https://build.pub.meego.com//request/show/5497

Thank You,
rojkov

[This message was auto-generated]

---

Request # 5497:

Messages from BOSS:

State: review at 2012-08-10T15:06:07 by bossbot

Reviews:
       accepted by bossbot : Prechecks succeeded.
       new for CE-maintainers : Please replace this text with a review and 
approve/reject the review (not the SR). BOSS will take care of the rest

Changes:
  submit: home:rojkov:branches:CE:MW:Shared / connman-qt -> CE:MW:Shared / 
connman-qt
  
changes files:
--------------
--- connman-qt.changes
+++ connman-qt.changes
@@ -0,0 +1,4 @@
+* Fri Aug 10 2012 Dmitry Rozhkov <[email protected]> - 0.2.2
+- Applied patch from Kuisma Salonen tracking availability of
+  connman service. Fixes NEMO#226.
+

old:
----
  connman-qt-0.2.1.tar.bz2

new:
----
  connman-qt-0.2.2.tar.bz2

spec files:
-----------
--- connman-qt.spec
+++ connman-qt.spec
@@ -1,6 +1,6 @@
 # 
 # Do NOT Edit the Auto-generated Part!
-# Generated by: spectacle version 0.24
+# Generated by: spectacle version 0.24.1
 # 
 
 Name:       connman-qt
@@ -9,7 +9,7 @@
 # << macros
 
 Summary:    qt bindings for connman
-Version:    0.2.1
+Version:    0.2.2
 Release:    1
 Group:      System/GUI/Other
 License:    Apache License

other changes:
--------------

++++++ connman-qt-0.2.1.tar.bz2 -> connman-qt-0.2.2.tar.bz2
--- libconnman-qt/networkmanager.cpp
+++ libconnman-qt/networkmanager.cpp
@@ -33,26 +33,31 @@
     m_getTechnologiesWatcher(NULL),
     m_getServicesWatcher(NULL),
     m_defaultRoute(NULL),
-    watcher(NULL)
+    watcher(NULL),
+    m_available(false)
 {
     registerCommonDataTypes();
-    connectToConnman();
+
+
+    watcher = new 
QDBusServiceWatcher("net.connman",QDBusConnection::systemBus(),
+            QDBusServiceWatcher::WatchForRegistration |
+            QDBusServiceWatcher::WatchForUnregistration, this);
+    connect(watcher, SIGNAL(serviceRegistered(QString)),
+            this, SLOT(connectToConnman(QString)));
+    connect(watcher, SIGNAL(serviceUnregistered(QString)),
+            this, SLOT(connmanUnregistered(QString)));
+
+
+    m_available = 
QDBusConnection::systemBus().interface()->isServiceRegistered("net.connman");
+
+    if(m_available)
+        connectToConnman();
 }
 
 NetworkManager::~NetworkManager() {}
 
 void NetworkManager::connectToConnman(QString)
 {
-    if(!watcher) {
-        watcher = new 
QDBusServiceWatcher("net.connman",QDBusConnection::systemBus(),
-                QDBusServiceWatcher::WatchForRegistration |
-                QDBusServiceWatcher::WatchForUnregistration, this);
-        connect(watcher, SIGNAL(serviceRegistered(QString)),
-                this, SLOT(connectToConnman(QString)));
-        connect(watcher, SIGNAL(serviceUnregistered(QString)),
-                this, SLOT(disconnectFromConnman(QString)));
-    }
-
     disconnectFromConnman();
     m_manager = new Manager("net.connman", "/",
             QDBusConnection::systemBus(), this);
@@ -61,6 +66,10 @@
         qDebug("manager is invalid. connman may not be running or is invalid");
         delete m_manager;
         m_manager = NULL;
+
+        // shouldn't happen but in this case service isn't available
+        if(m_available)
+            emit availabilityChanged(m_available = false);
     } else {
         QDBusPendingReply<QVariantMap> props_reply = 
m_manager->GetProperties();
         m_getPropertiesWatcher = new QDBusPendingCallWatcher(props_reply, 
m_manager);
@@ -83,8 +92,11 @@
                 this,
                 SLOT(getServicesReply(QDBusPendingCallWatcher*)));
 
+        if(!m_available)
+            emit availabilityChanged(m_available = true);
+
+        qDebug("connected");
     }
-    qDebug("connected");
 }
 
 void NetworkManager::disconnectFromConnman(QString)
@@ -96,6 +108,16 @@
     // FIXME: should we delete technologies and services?
 }
 
+
+void NetworkManager::connmanUnregistered(QString)
+{
+    disconnectFromConnman();
+
+    if(m_available)
+        emit availabilityChanged(m_available = false);
+}
+
+
 // These functions is a part of setup procedure
 
 void NetworkManager::getPropertiesReply(QDBusPendingCallWatcher *call)
@@ -234,6 +256,13 @@
 
 // Getters
 
+
+bool NetworkManager::isAvailable() const
+{
+    return m_available;
+}
+
+
 const QString NetworkManager::state() const
 {
     return m_propertiesCache[State].toString();
@@ -279,14 +308,15 @@
                                QDBusVariant(QVariant(offlineMode)));
 }
 
+  // these shouldn't crash even if connman isn't available
 void NetworkManager::registerAgent(const QString &path)
 {
-    Q_ASSERT(m_manager);
-    m_manager->RegisterAgent(QDBusObjectPath(path));
+    if(m_manager)
+        m_manager->RegisterAgent(QDBusObjectPath(path));
 }
 
 void NetworkManager::unregisterAgent(const QString &path)
 {
-    Q_ASSERT(m_manager);
-    m_manager->UnregisterAgent(QDBusObjectPath(path));
+    if(m_manager)
+        m_manager->UnregisterAgent(QDBusObjectPath(path));
 }
--- libconnman-qt/networkmanager.h
+++ libconnman-qt/networkmanager.h
@@ -31,6 +31,7 @@
 {
     Q_OBJECT;
 
+    Q_PROPERTY(bool available READ isAvailable NOTIFY availabilityChanged);
     Q_PROPERTY(QString state READ state NOTIFY stateChanged);
     Q_PROPERTY(bool offlineMode READ offlineMode WRITE setOfflineMode NOTIFY 
offlineModeChanged);
     Q_PROPERTY(NetworkService* defaultRoute READ defaultRoute NOTIFY 
defaultRouteChanged);
@@ -39,6 +40,8 @@
     NetworkManager(QObject* parent=0);
     virtual ~NetworkManager();
 
+    bool isAvailable() const;
+
     NetworkTechnology* getTechnology(const QString &type) const;
     const QVector<NetworkService*> getServices() const;
 
@@ -52,6 +55,8 @@
     void unregisterAgent(const QString &path);
 
 signals:
+    void availabilityChanged(bool available);
+
     void stateChanged(const QString &state);
     void offlineModeChanged(bool offlineMode);
     void technologiesChanged(const QMap<QString, NetworkTechnology*> &added,
@@ -76,9 +81,12 @@
     static const QString State;
     static const QString OfflineMode;
 
+    bool m_available;
+
 private slots:
     void connectToConnman(QString = "");
     void disconnectFromConnman(QString = "");
+    void connmanUnregistered(QString = "");
     void getPropertiesReply(QDBusPendingCallWatcher *call);
     void getTechnologiesReply(QDBusPendingCallWatcher *call);
     void getServicesReply(QDBusPendingCallWatcher *call);
--- plugin/networkingmodel.cpp
+++ plugin/networkingmodel.cpp
@@ -28,6 +28,8 @@
                 this,
                 SIGNAL(wifiPoweredChanged(bool)));
     }
+    connect(m_manager, SIGNAL(availabilityChanged(bool)),
+            this, SLOT(managerAvailabilityChanged(bool)));
     connect(m_manager,
             SIGNAL(technologiesChanged(QMap<QString, NetworkTechnology*>, 
QStringList)),
             this,
@@ -45,6 +47,11 @@
     m_manager->unregisterAgent(QString(AGENT_PATH));
 }
 
+bool NetworkingModel::isAvailable() const
+{
+    return m_manager->isAvailable();
+}
+
 QList<QObject*> NetworkingModel::networks() const
 {
     const QString wifi("wifi");
@@ -102,6 +109,14 @@
     emit technologiesChanged();
 }
 
+void NetworkingModel::managerAvailabilityChanged(bool available)
+{
+    if(available)
+        m_manager->registerAgent(QString(AGENT_PATH));
+
+    emit availabilityChanged(available);
+}
+
 void NetworkingModel::requestUserInput(ServiceReqData* data)
 {
     m_req_data = data;
--- plugin/networkingmodel.h
+++ plugin/networkingmodel.h
@@ -27,6 +27,7 @@
 {
     Q_OBJECT;
 
+    Q_PROPERTY(bool available READ isAvailable NOTIFY availabilityChanged);
     Q_PROPERTY(bool wifiPowered READ isWifiPowered WRITE setWifiPowered NOTIFY 
wifiPoweredChanged);
     Q_PROPERTY(QList<QObject*> networks READ networks NOTIFY networksChanged);
 
@@ -34,6 +35,8 @@
     NetworkingModel(QObject* parent=0);
     virtual ~NetworkingModel();
 
+    bool isAvailable() const;
+
     QList<QObject*> networks() const;
     bool isWifiPowered() const;
     void requestUserInput(ServiceReqData* data);
@@ -45,6 +48,7 @@
     void sendUserReply(const QVariantMap &input);
 
 signals:
+    void availabilityChanged(bool available);
     void wifiPoweredChanged(const bool &wifiPowered);
     void networksChanged();
     void technologiesChanged();
@@ -60,6 +64,8 @@
     void updateTechnologies(const QMap<QString, NetworkTechnology*> &added,
                             const QStringList &removed);
 
+    void managerAvailabilityChanged(bool available);
+
 private:
     Q_DISABLE_COPY(NetworkingModel);
 };

++++++ connman-qt.yaml
--- connman-qt.yaml
+++ connman-qt.yaml
@@ -1,6 +1,6 @@
 Name: connman-qt
 Summary: qt bindings for connman
-Version: 0.2.1
+Version: 0.2.2
 Release: 1
 Group: System/GUI/Other
 License: Apache License



Reply via email to