Skip to content

Commit

Permalink
[libconnman-qt] Expose connected & connecting from NetworkManager. Co…
Browse files Browse the repository at this point in the history
…ntributes to JB#41419
  • Loading branch information
rainemak committed Apr 9, 2019
1 parent 5b2f288 commit dfd36c8
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 15 deletions.
74 changes: 59 additions & 15 deletions libconnman-qt/networkmanager.cpp
Expand Up @@ -53,6 +53,9 @@ class NetworkManager::Private : public QObject
bool m_servicesAvailable;
bool m_technologiesAvailable;

bool m_connecting;
bool m_connected;

QStringList m_availableServicesOrder;
QStringList m_wifiServicesOrder;
QStringList m_cellularServicesOrder;
Expand All @@ -65,10 +68,17 @@ class NetworkManager::Private : public QObject
void setServicesAvailable(bool servicesAvailable);
void setTechnologiesAvailable(bool technologiesAvailable);

void updateState(const QString &newState);

public:
Private(NetworkManager *parent) :
QObject(parent), m_registered(false), m_servicesAvailable(false),
m_technologiesAvailable(false), m_connectedWifi(NULL) {}
Private(NetworkManager *parent)
: QObject(parent)
, m_registered(false)
, m_servicesAvailable(false)
, m_technologiesAvailable(false)
, m_connecting(false)
, m_connected(false)
, m_connectedWifi(NULL) {}
NetworkManager* manager()
{ return (NetworkManager*)parent(); }
void maybeCreateInterfaceProxyLater()
Expand Down Expand Up @@ -1126,20 +1136,21 @@ void NetworkManager::setSessionMode(bool sessionMode)

void NetworkManager::propertyChanged(const QString &name, const QVariant &value)
{
if (m_propertiesCache.value(name) == value)
return;
if (name == State) {
m_priv->updateState(value.toString());
} else {
if (m_propertiesCache.value(name) == value)
return;

m_propertiesCache[name] = value;
m_propertiesCache[name] = value;

if (name == State) {
Q_EMIT stateChanged(value.toString());
updateDefaultRoute();
} else if (name == OfflineMode) {
Q_EMIT offlineModeChanged(value.toBool());
} else if (name == SessionMode) {
Q_EMIT sessionModeChanged(value.toBool());
} else if (name == Private::InputRequestTimeout) {
Q_EMIT inputRequestTimeoutChanged();
if (name == OfflineMode) {
Q_EMIT offlineModeChanged(value.toBool());
} else if (name == SessionMode) {
Q_EMIT sessionModeChanged(value.toBool());
} else if (name == Private::InputRequestTimeout) {
Q_EMIT inputRequestTimeoutChanged();
}
}
}

Expand Down Expand Up @@ -1223,6 +1234,16 @@ bool NetworkManager::isValid() const
&& (!m_technologiesEnabled || m_priv->m_technologiesAvailable);
}

bool NetworkManager::connected() const
{
return m_priv->m_connected;
}

bool NetworkManager::connecting() const
{
return m_priv->m_connecting;
}

void NetworkManager::Private::setServicesAvailable(bool servicesAvailable)
{
m_servicesAvailable = servicesAvailable;
Expand All @@ -1233,6 +1254,29 @@ void NetworkManager::Private::setTechnologiesAvailable(bool technologiesAvailabl
m_technologiesAvailable = technologiesAvailable;
}

void NetworkManager::Private::updateState(const QString &newState)
{
if (manager()->state() == newState)
return;

manager()->m_propertiesCache[State] = newState;
Q_EMIT manager()->stateChanged(newState);

bool value = ConnmanState::connected(newState);
if (m_connected != value) {
m_connected = value;
Q_EMIT manager()->connectedChanged();
}

value = ConnmanState::connecting(newState);
if (m_connecting != value) {
m_connecting = value;
Q_EMIT manager()->connectingChanged();
}

manager()->updateDefaultRoute();
}

void NetworkManager::resetCountersForType(const QString &type)
{
if (m_proxy) {
Expand Down
9 changes: 9 additions & 0 deletions libconnman-qt/networkmanager.h
Expand Up @@ -47,6 +47,9 @@ class NetworkManager : public QObject
Q_PROPERTY(bool technologiesEnabled READ technologiesEnabled WRITE setTechnologiesEnabled NOTIFY technologiesEnabledChanged)
Q_PROPERTY(bool valid READ isValid NOTIFY validChanged)

Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged)
Q_PROPERTY(bool connecting READ connecting NOTIFY connectingChanged)

Q_PROPERTY(QString WifiTechnology READ wifiTechnologyPath CONSTANT)
Q_PROPERTY(QString CellularTechnology READ cellularTechnologyPath CONSTANT)
Q_PROPERTY(QString BluetoothTechnology READ bluetoothTechnologyPath CONSTANT)
Expand Down Expand Up @@ -95,6 +98,9 @@ class NetworkManager : public QObject

bool isValid() const;

bool connected() const;
bool connecting() const;

Q_INVOKABLE void resetCountersForType(const QString &type);

QString wifiTechnologyPath() const;
Expand Down Expand Up @@ -147,6 +153,9 @@ public Q_SLOTS:
void technologiesEnabledChanged();
void validChanged();

void connectedChanged();
void connectingChanged();

private:
typedef bool (*ServiceSelector)(NetworkService*);
void propertyChanged(const QString &name, const QVariant &value);
Expand Down
2 changes: 2 additions & 0 deletions plugin/plugins.qmltypes
Expand Up @@ -116,6 +116,8 @@ Module {
Property { name: "servicesEnabled"; type: "bool" }
Property { name: "technologiesEnabled"; type: "bool" }
Property { name: "valid"; type: "bool"; isReadonly: true }
Property { name: "connected"; type: "bool"; isReadonly: true }
Property { name: "connecting"; type: "bool"; isReadonly: true }
Property { name: "WifiTechnology"; type: "string"; isReadonly: true }
Property { name: "CellularTechnology"; type: "string"; isReadonly: true }
Property { name: "BluetoothTechnology"; type: "string"; isReadonly: true }
Expand Down

0 comments on commit dfd36c8

Please sign in to comment.