diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/networksettings/connman/connmancommon.h | 1 | ||||
-rw-r--r-- | src/networksettings/connman/qnetworksettingsservice_p.cpp | 17 | ||||
-rw-r--r-- | src/networksettings/connman/qnetworksettingsservice_p.h | 6 | ||||
-rw-r--r-- | src/networksettings/qnetworksettingsmanager.cpp | 42 | ||||
-rw-r--r-- | src/networksettings/qnetworksettingsservice.cpp | 23 | ||||
-rw-r--r-- | src/networksettings/qnetworksettingsservice.h | 5 | ||||
-rw-r--r-- | src/settingsui/display/Display.qml | 2 |
8 files changed, 87 insertions, 11 deletions
diff --git a/.qmake.conf b/.qmake.conf index fe90daf..c672f20 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,3 +1,3 @@ load(qt_build_config) -MODULE_VERSION=5.12.5 +MODULE_VERSION=5.13.1 CMAKE_MODULE_TESTS=- diff --git a/src/networksettings/connman/connmancommon.h b/src/networksettings/connman/connmancommon.h index 442730f..3c8aa67 100644 --- a/src/networksettings/connman/connmancommon.h +++ b/src/networksettings/connman/connmancommon.h @@ -39,6 +39,7 @@ #define PropertyType QStringLiteral("Type") #define PropertyConnected QStringLiteral("Connected") #define PropertyPowered QStringLiteral("Powered") +#define PropertyAutoConnect QStringLiteral("AutoConnect") #define AttributeWifi QStringLiteral("wifi") #define AttributeEthernet QStringLiteral("ethernet") diff --git a/src/networksettings/connman/qnetworksettingsservice_p.cpp b/src/networksettings/connman/qnetworksettingsservice_p.cpp index b56c1e6..2523e81 100644 --- a/src/networksettings/connman/qnetworksettingsservice_p.cpp +++ b/src/networksettings/connman/qnetworksettingsservice_p.cpp @@ -260,6 +260,19 @@ QNetworkSettingsServicePrivate::QNetworkSettingsServicePrivate(const QString& id this, SLOT(propertiesUpdated(QDBusPendingCallWatcher*))); } +void QNetworkSettingsServicePrivate::setAutoConnect(bool autoconnect) +{ + if (m_service) { + m_service->SetProperty(PropertyAutoConnect, QDBusVariant(QVariant(autoconnect))); + m_autoConnect = autoconnect; + } +} + +bool QNetworkSettingsServicePrivate::autoConnect() const +{ + return m_autoConnect; +} + void QNetworkSettingsServicePrivate::setupIpv6Config() { QVariantMap param; @@ -440,6 +453,10 @@ void QNetworkSettingsServicePrivate::updateProperty(const QString& key, const QV } } } + else if (key == PropertyAutoConnect) { + m_autoConnect = qdbus_cast<bool>(val); + emit q->autoConnectChanged(); + } } void QNetworkSettingsServicePrivate::setupConfiguration(const QVariantMap &properties) diff --git a/src/networksettings/connman/qnetworksettingsservice_p.h b/src/networksettings/connman/qnetworksettingsservice_p.h index 362aea4..9190e2d 100644 --- a/src/networksettings/connman/qnetworksettingsservice_p.h +++ b/src/networksettings/connman/qnetworksettingsservice_p.h @@ -68,7 +68,8 @@ private: void updateProperty(const QString& key, const QVariant& value); protected: - void setAutoConnect(const bool autoconnect); + void setAutoConnect(bool autoconnect); + bool autoConnect() const; void setupIpv4Config(); void setupIpv6Config(); void setupNameserversConfig(); @@ -91,7 +92,8 @@ protected: QNetworkSettingsWireless m_wifiConfig; QNetworkSettingsType m_type; NetConnmanServiceInterface *m_service; - bool m_placeholderState; + bool m_placeholderState = false; + bool m_autoConnect = false; }; QT_END_NAMESPACE diff --git a/src/networksettings/qnetworksettingsmanager.cpp b/src/networksettings/qnetworksettingsmanager.cpp index c7c2230..667004f 100644 --- a/src/networksettings/qnetworksettingsmanager.cpp +++ b/src/networksettings/qnetworksettingsmanager.cpp @@ -41,7 +41,8 @@ QT_BEGIN_NAMESPACE \class QNetworkSettingsManager \inmodule QtNetworkSettings - \brief The QNetworkSettingsManager class manages network settings. + \brief The QNetworkSettingsManager class provides an asynchronous API to + network settings. The network manager is designed to be used as a model that contains lists of available network interfaces and services. @@ -53,6 +54,45 @@ QT_BEGIN_NAMESPACE \l QNetworkSettingsType::type property, and network service items can be retrieved with the \l QNetworkSettingsServiceFilter::itemFromRow() method. + The following code demonstrates how you initialize the network manager: + + \code + manager = new QNetworkSettingsManager(this); + QObject::connect(manager, &QNetworkSettingsManager::interfacesChanged, + this, &MainWindow::interfacesChanged); + + QObject::connect(manager, &QNetworkSettingsManager::servicesChanged, + this, &MainWindow::servicesChanged); + \endcode + + After initializing the network manager, you can iterate WiFi SSIDs as follows: + + \code + void WifiHandler::servicesChanged() + { + QList<QNetworkSettingsService*> services = qobject_cast<QNetworkSettingsServiceModel*>(manager->services()->sourceModel())->getModel(); + + for (const auto &service : services) { + qDebug() << service->name(); + } + } + + + void WifiHandler::interfacesChanged() + { + QList<QNetworkSettingsInterface*> interfaces = manager->interfaces()->getModel(); + for (const auto &interface : interfaces) { + if (interface->type() == QNetworkSettingsType::Types::Wifi) { + if (interface->powered()) { + interface->scanServices(); + } else { + interface->setPowered(true); + } + } + } + } + \endcode + \sa QNetworkSettingsService */ diff --git a/src/networksettings/qnetworksettingsservice.cpp b/src/networksettings/qnetworksettingsservice.cpp index 150b54d..0983c0d 100644 --- a/src/networksettings/qnetworksettingsservice.cpp +++ b/src/networksettings/qnetworksettingsservice.cpp @@ -113,6 +113,14 @@ QT_BEGIN_NAMESPACE */ /*! + \property QNetworkSettingsService::autoConnect + \brief Holds autoconnect property for this service. + + Autoconnect property determines whether the service connects automatically + when it is available. +*/ + +/*! \fn QNetworkSettingsService::connectionStateCleared() This signal is emitted when the connection state is cleared. @@ -187,16 +195,21 @@ QString QNetworkSettingsService::name() const } /*! - \qmlmethod void NetworkService::setAutoConnect(bool auto) + Sets automatic connections to the network service to \a autoconnect. */ +void QNetworkSettingsService::setAutoConnect(const bool autoconnect) +{ + Q_D(QNetworkSettingsService); + d->setAutoConnect(autoconnect); +} /*! - Sets automatic connections to the network service to - \a autoconnect. + Returns the automatic connection status of the network service. */ -void QNetworkSettingsService::setAutoConnect(const bool autoconnect) +bool QNetworkSettingsService::autoConnect() const { - Q_UNUSED(autoconnect); + Q_D(const QNetworkSettingsService); + return d->autoConnect(); } /*! diff --git a/src/networksettings/qnetworksettingsservice.h b/src/networksettings/qnetworksettingsservice.h index 6f5a87e..dd9d52a 100644 --- a/src/networksettings/qnetworksettingsservice.h +++ b/src/networksettings/qnetworksettingsservice.h @@ -50,6 +50,7 @@ class Q_DECL_EXPORT QNetworkSettingsService : public QObject Q_PROPERTY(QNetworkSettingsWireless* wirelessConfig READ wirelessConfig NOTIFY wirelessChanged) Q_PROPERTY(QAbstractItemModel* domains READ domains NOTIFY domainsChanged) Q_PROPERTY(QAbstractItemModel* nameservers READ nameservers NOTIFY nameserversChanged) + Q_PROPERTY(bool autoConnect READ autoConnect WRITE setAutoConnect NOTIFY autoConnectChanged) public: explicit QNetworkSettingsService(const QString& aServiceId, QObject* parent = Q_NULLPTR); @@ -66,7 +67,8 @@ public: void setPlaceholderState(bool placeholderState); bool placeholderState() const; - Q_INVOKABLE void setAutoConnect(const bool autoconnect); + Q_INVOKABLE void setAutoConnect(bool autoconnect); + Q_INVOKABLE bool autoConnect() const; Q_INVOKABLE void setupIpv4Config(); Q_INVOKABLE void setupIpv6Config(); Q_INVOKABLE void setupNameserversConfig(); @@ -78,6 +80,7 @@ public: Q_INVOKABLE void disconnectService(); Q_INVOKABLE void removeService(); Q_SIGNALS: + void autoConnectChanged(); void nameChanged(); void stateChanged(); void typeChanged(); diff --git a/src/settingsui/display/Display.qml b/src/settingsui/display/Display.qml index a30e9eb..97d05a2 100644 --- a/src/settingsui/display/Display.qml +++ b/src/settingsui/display/Display.qml @@ -94,7 +94,7 @@ Item { height: pluginMain.fieldTextHeight font.pixelSize: pluginMain.subTitleFontSize font.family: appFont - text: qsTr("Physical screen size") + text: qsTr("Physical screen size in millimeters") Layout.preferredWidth: root.width * 0.3 Layout.alignment: Qt.AlignVCenter wrapMode: Label.WordWrap |