summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVille Voutilainen <ville.voutilainen@qt.io>2018-08-30 18:52:51 +0300
committerVille Voutilainen <ville.voutilainen@qt.io>2018-08-31 09:47:41 +0000
commit0ecd391912f6338d5aef6105600fc8c321c83bd8 (patch)
tree50f3976e3d9fc7752a08b081aea0b3d09d1603d7
parent27ac1af572dc9b17d4283b225b6c73b13f758546 (diff)
Fix ip address tracking and display
Task-number: QTBUG-69814 Change-Id: Ifc90871c11aeddd1d07c5f1feb2a4292f0d36463 Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io> (cherry picked from commit 65b663a9be5d27cbb77b48f9e392c9463416383a)
-rw-r--r--src/networksettings/connman/qnetworksettingsmanager_p.cpp5
-rw-r--r--src/networksettings/connman/qnetworksettingsmanager_p.h3
-rw-r--r--src/networksettings/connman/qnetworksettingsservice_p.cpp8
-rw-r--r--src/networksettings/qnetworksettingsmanager.cpp42
-rw-r--r--src/networksettings/qnetworksettingsmanager.h7
-rw-r--r--src/settingsui/settingsuiplugin/SettingsHeader.qml41
6 files changed, 53 insertions, 53 deletions
diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.cpp b/src/networksettings/connman/qnetworksettingsmanager_p.cpp
index cadcf6b..bd656c6 100644
--- a/src/networksettings/connman/qnetworksettingsmanager_p.cpp
+++ b/src/networksettings/connman/qnetworksettingsmanager_p.cpp
@@ -48,6 +48,7 @@ QNetworkSettingsManagerPrivate::QNetworkSettingsManagerPrivate(QNetworkSettingsM
, m_agent(Q_NULLPTR)
, m_serviceWatcher(Q_NULLPTR)
, m_currentWifiConnection(Q_NULLPTR)
+ , m_currentWiredConnection(Q_NULLPTR)
, m_initialized(false)
{
qDBusRegisterMetaType<ConnmanMapStruct>();
@@ -230,9 +231,9 @@ void QNetworkSettingsManagerPrivate::handleNewService(const QString &servicePath
q, &QNetworkSettingsManager::clearConnectionState);
connect(service, &QNetworkSettingsService::serviceConnected,
- q, &QNetworkSettingsManager::setCurrentWifiConnection);
+ q, &QNetworkSettingsManager::setCurrentConnection);
connect(service, &QNetworkSettingsService::serviceDisconnected,
- q, &QNetworkSettingsManager::clearCurrentWifiConnection);
+ q, &QNetworkSettingsManager::clearCurrentConnection);
if (service->name().length() > 0 && service->type() != QNetworkSettingsType::Unknown) {
m_serviceModel->append(service);
diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.h b/src/networksettings/connman/qnetworksettingsmanager_p.h
index d2146a9..b9133ab 100644
--- a/src/networksettings/connman/qnetworksettingsmanager_p.h
+++ b/src/networksettings/connman/qnetworksettingsmanager_p.h
@@ -72,6 +72,8 @@ public:
void tryNextConnection();
void setCurrentWifiConnection(QNetworkSettingsService *connection) {m_currentWifiConnection = connection;}
QNetworkSettingsService* currentWifiConnection() const {return m_currentWifiConnection;}
+ void setCurrentWiredConnection(QNetworkSettingsService *connection) {m_currentWiredConnection = connection;}
+ QNetworkSettingsService* currentWiredConnection() const {return m_currentWiredConnection;}
public slots:
void getServicesFinished(QDBusPendingCallWatcher *watcher);
@@ -95,6 +97,7 @@ private:
QDBusServiceWatcher *m_serviceWatcher;
QString m_currentSsid;
QNetworkSettingsService *m_currentWifiConnection;
+ QNetworkSettingsService *m_currentWiredConnection;
bool m_initialized;
};
diff --git a/src/networksettings/connman/qnetworksettingsservice_p.cpp b/src/networksettings/connman/qnetworksettingsservice_p.cpp
index 65653aa..ec53956 100644
--- a/src/networksettings/connman/qnetworksettingsservice_p.cpp
+++ b/src/networksettings/connman/qnetworksettingsservice_p.cpp
@@ -400,9 +400,9 @@ void QNetworkSettingsServicePrivate::updateProperty(const QString& key, const QV
oldState.setState(m_state.state());
value >> m_state;
emit q->stateChanged();
- if (m_state.state() == QNetworkSettingsState::Ready && m_type.type() == QNetworkSettingsType::Wifi)
+ if (m_state.state() == QNetworkSettingsState::Ready || m_state.state() == QNetworkSettingsState::Online)
emit q->serviceConnected(q);
- if (m_state.state() == QNetworkSettingsState::Disconnect && m_type.type() == QNetworkSettingsType::Wifi)
+ if (m_state.state() == QNetworkSettingsState::Disconnect)
emit q->serviceDisconnected(q);
}
else if (key == PropertyName) {
@@ -413,9 +413,9 @@ void QNetworkSettingsServicePrivate::updateProperty(const QString& key, const QV
QString value = qdbus_cast<QString>(val);
value >> m_type;
emit q->typeChanged();
- if (m_state.state() == QNetworkSettingsState::Ready && m_type.type() == QNetworkSettingsType::Wifi)
+ if (m_state.state() == QNetworkSettingsState::Ready || m_state.state() == QNetworkSettingsState::Online)
emit q->serviceConnected(q);
- if (m_state.state() == QNetworkSettingsState::Disconnect && m_type.type() == QNetworkSettingsType::Wifi)
+ if (m_state.state() == QNetworkSettingsState::Disconnect)
emit q->serviceDisconnected(q);
}
else if (key == PropertyStrength) {
diff --git a/src/networksettings/qnetworksettingsmanager.cpp b/src/networksettings/qnetworksettingsmanager.cpp
index cda66e7..e3f8e50 100644
--- a/src/networksettings/qnetworksettingsmanager.cpp
+++ b/src/networksettings/qnetworksettingsmanager.cpp
@@ -91,23 +91,38 @@ void QNetworkSettingsManager::tryNextConnection()
d->tryNextConnection();
}
-void QNetworkSettingsManager::clearCurrentWifiConnection(QNetworkSettingsService* service)
+void QNetworkSettingsManager::clearCurrentConnection(QNetworkSettingsService* service)
{
Q_D(QNetworkSettingsManager);
- QNetworkSettingsService *currentService = d->currentWifiConnection();
- if (service == currentService) {
- d->setCurrentWifiConnection(nullptr);
- emit currentWifiConnectionChanged();
+ if (service->type() == QNetworkSettingsType::Wifi) {
+ QNetworkSettingsService *currentService = d->currentWifiConnection();
+ if (service == currentService) {
+ d->setCurrentWifiConnection(nullptr);
+ emit currentWifiConnectionChanged();
+ }
+ } else if (service->type() == QNetworkSettingsType::Wired) {
+ QNetworkSettingsService *currentService = d->currentWiredConnection();
+ if (service == currentService) {
+ d->setCurrentWiredConnection(nullptr);
+ emit currentWiredConnectionChanged();
+ }
}
}
-void QNetworkSettingsManager::setCurrentWifiConnection(QNetworkSettingsService* service)
+void QNetworkSettingsManager::setCurrentConnection(QNetworkSettingsService* service)
{
Q_D(QNetworkSettingsManager);
- QNetworkSettingsService *currentService = d->currentWifiConnection();
- d->setCurrentWifiConnection(service);
- if (service != currentService)
- emit currentWifiConnectionChanged();
+ if (service->type() == QNetworkSettingsType::Wifi) {
+ QNetworkSettingsService *currentService = d->currentWifiConnection();
+ d->setCurrentWifiConnection(service);
+ if (service != currentService)
+ emit currentWifiConnectionChanged();
+ } else if (service->type() == QNetworkSettingsType::Wired) {
+ QNetworkSettingsService *currentService = d->currentWiredConnection();
+ d->setCurrentWiredConnection(service);
+ if (service != currentService)
+ emit currentWiredConnectionChanged();
+ }
}
QNetworkSettingsService* QNetworkSettingsManager::currentWifiConnection()
@@ -116,6 +131,13 @@ QNetworkSettingsService* QNetworkSettingsManager::currentWifiConnection()
return d->currentWifiConnection();
}
+
+QNetworkSettingsService* QNetworkSettingsManager::currentWiredConnection()
+{
+ Q_D(QNetworkSettingsManager);
+ return d->currentWiredConnection();
+}
+
QNetworkSettingsInterface* QNetworkSettingsManager::interface(int type, int instance)
{
Q_D(QNetworkSettingsManager);
diff --git a/src/networksettings/qnetworksettingsmanager.h b/src/networksettings/qnetworksettingsmanager.h
index 103bc77..17a3082 100644
--- a/src/networksettings/qnetworksettingsmanager.h
+++ b/src/networksettings/qnetworksettingsmanager.h
@@ -51,6 +51,7 @@ class Q_DECL_EXPORT QNetworkSettingsManager : public QObject
Q_PROPERTY(QNetworkSettingsInterfaceModel* interfaces READ interfaces NOTIFY interfacesChanged)
Q_PROPERTY(QNetworkSettingsUserAgent* userAgent READ userAgent CONSTANT)
Q_PROPERTY(QNetworkSettingsService* currentWifiConnection READ currentWifiConnection NOTIFY currentWifiConnectionChanged)
+ Q_PROPERTY(QNetworkSettingsService* currentWiredConnection READ currentWiredConnection NOTIFY currentWiredConnectionChanged)
public:
explicit QNetworkSettingsManager(QObject* parent = Q_NULLPTR);
@@ -63,15 +64,17 @@ public:
Q_INVOKABLE void connectBySsid(const QString& name, const QString &passphrase);
void clearConnectionState();
void tryNextConnection();
- void clearCurrentWifiConnection(QNetworkSettingsService* service);
- void setCurrentWifiConnection(QNetworkSettingsService* service);
+ void clearCurrentConnection(QNetworkSettingsService* service);
+ void setCurrentConnection(QNetworkSettingsService* service);
QNetworkSettingsService* currentWifiConnection();
+ QNetworkSettingsService* currentWiredConnection();
Q_INVOKABLE QNetworkSettingsInterface* interface(int type, int instance);
Q_SIGNALS:
void servicesChanged();
void interfacesChanged();
void currentWifiConnectionChanged();
+ void currentWiredConnectionChanged();
protected:
QNetworkSettingsManagerPrivate *d_ptr;
diff --git a/src/settingsui/settingsuiplugin/SettingsHeader.qml b/src/settingsui/settingsuiplugin/SettingsHeader.qml
index 37469e2..24192c9 100644
--- a/src/settingsui/settingsuiplugin/SettingsHeader.qml
+++ b/src/settingsui/settingsuiplugin/SettingsHeader.qml
@@ -39,24 +39,6 @@ Item {
signal clicked()
- function refreshIP() {
- var networkCount = NetworkSettingsManager.services.sourceModel.rowCount();
- var ipAddress = "Not Found";
- for (var i = 0; i < networkCount; ++i) {
- var networkService = NetworkSettingsManager.services.itemFromRow(i);
- var tmp = NetworkSettingsManager.services.itemFromRow(i).ipv4.address;
- if (tmp !== "" && ipAddress === "Not Found")
- ipAddress = tmp;
-
- if (networkService.type === NetworkSettingsType.Wired &&
- (networkService.status === NetworkSettingsState.Ready ||
- networkService.status === NetworkSettingsState.Online)) {
- break;
- }
- }
- ipItem.text = qsTr("Wired IP: ") + ipAddress;
- }
-
Image {
id: backButton
anchors.left: parent.left
@@ -100,12 +82,9 @@ Item {
color: "white"
font.family: appFont
font.styleName: "SemiBold"
- text: qsTr("Wired IP: ")
-
- MouseArea {
- anchors.fill: parent
- onClicked: header.refreshIP()
- }
+ text: NetworkSettingsManager.currentWiredConnection ?
+ qsTr("Wired IP: ") +
+ NetworkSettingsManager.currentWiredConnection.ipv4.address : ""
}
Text {
@@ -121,16 +100,8 @@ Item {
color: "white"
font.family: appFont
font.styleName: "SemiBold"
- text: qsTr((NetworkSettingsManager.currentWifiConnection ?
- "Wireless IP: " +
- NetworkSettingsManager.currentWifiConnection.ipv4.address : ""))
- }
-
- Component.onCompleted: {
- var networkCount = NetworkSettingsManager.services.sourceModel.rowCount();
- for (var i = 0; i < networkCount; ++i) {
- NetworkSettingsManager.services.itemFromRow(i).ipv4Changed.connect(refreshIP);
- }
- header.refreshIP()
+ text: NetworkSettingsManager.currentWifiConnection ?
+ qsTr("Wireless IP: ") +
+ NetworkSettingsManager.currentWifiConnection.ipv4.address : ""
}
}