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
