diff options
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/doc/qtdeviceutilities-project.qdocconf | 18 | ||||
-rw-r--r-- | src/imports/networksettings/plugin.cpp | 2 | ||||
-rw-r--r-- | src/networksettings/connman/connman_manager.xml | 6 | ||||
-rw-r--r-- | src/networksettings/connman/qnetworksettingsinterface_p.cpp | 5 | ||||
-rw-r--r-- | src/networksettings/connman/qnetworksettingsinterface_p.h | 7 | ||||
-rw-r--r-- | src/networksettings/connman/qnetworksettingsmanager_p.cpp | 36 | ||||
-rw-r--r-- | src/networksettings/connman/qnetworksettingsmanager_p.h | 2 | ||||
-rw-r--r-- | src/networksettings/qnetworksettingsinterfacemodel.cpp | 55 | ||||
-rw-r--r-- | src/networksettings/qnetworksettingsinterfacemodel.h | 9 | ||||
-rw-r--r-- | src/settingsui/display/Display.qml | 8 | ||||
-rw-r--r-- | src/settingsui/locale/Language.qml | 3 | ||||
-rw-r--r-- | src/settingsui/locale/RegionSelect.qml | 44 | ||||
-rw-r--r-- | src/settingsui/network/NetworkSettings.qml | 6 | ||||
-rw-r--r-- | src/settingsui/settingsuiplugin/pluginMain.qml | 1 | ||||
-rw-r--r-- | src/settingsui/timedate/ManualTime.qml | 20 | ||||
-rw-r--r-- | src/settingsui/timedate/TimeDate.qml | 6 |
17 files changed, 176 insertions, 54 deletions
diff --git a/.qmake.conf b/.qmake.conf index d98780d..243940d 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,3 +1,3 @@ load(qt_build_config) -MODULE_VERSION=5.11.3 +MODULE_VERSION=5.12.0 CMAKE_MODULE_TESTS=- diff --git a/src/doc/qtdeviceutilities-project.qdocconf b/src/doc/qtdeviceutilities-project.qdocconf index e8abc97..71af922 100644 --- a/src/doc/qtdeviceutilities-project.qdocconf +++ b/src/doc/qtdeviceutilities-project.qdocconf @@ -60,15 +60,15 @@ qhp.QtDeviceUtilities.subprojects.classes.indexTitle = Qt Device Utilities C++ C qhp.QtDeviceUtilities.subprojects.classes.selectors = class fake:headerfile qhp.QtDeviceUtilities.subprojects.classes.sortPages = true -qhp.QtDeviceUtilities.subprojects.modules.title = QML Types -qhp.QtDeviceUtilities.subprojects.modules.indexTitle = Qt Device Utilities QML Types -qhp.QtDeviceUtilities.subprojects.modules.selectors = qmlmodule module -qhp.QtDeviceUtilities.subprojects.modules.sortPages = true - -qhp.QtWebEngine.subprojects.examples.title = Examples -qhp.QtWebEngine.subprojects.examples.indexTitle = Qt Device Utilities Examples -qhp.QtWebEngine.subprojects.examples.selectors = doc:example -qhp.QtWebEngine.subprojects.examples.sortPages = true +qhp.QtDeviceUtilities.subprojects.qmltypes.title = QML Types +qhp.QtDeviceUtilities.subprojects.qmltypes.indexTitle = Qt Device Utilities QML Types +qhp.QtDeviceUtilities.subprojects.qmltypes.selectors = qmlclass +qhp.QtDeviceUtilities.subprojects.qmltypes.sortPages = true + +qhp.QtDeviceUtilities.subprojects.examples.title = Examples +qhp.QtDeviceUtilities.subprojects.examples.indexTitle = Qt Device Utilities Examples +qhp.QtDeviceUtilities.subprojects.examples.selectors = doc:example +qhp.QtDeviceUtilities.subprojects.examples.sortPages = true macro.B2Q = "Boot to Qt" macro.SDK = "Qt for Device Creation" diff --git a/src/imports/networksettings/plugin.cpp b/src/imports/networksettings/plugin.cpp index ee49594..6900550 100644 --- a/src/imports/networksettings/plugin.cpp +++ b/src/imports/networksettings/plugin.cpp @@ -47,7 +47,7 @@ \brief Provides singleton QML types for controlling network settings. Provides singleton QML types for controlling network settings in an - embedded device.QAbstractItemModel + embedded device. Import the module as follows: diff --git a/src/networksettings/connman/connman_manager.xml b/src/networksettings/connman/connman_manager.xml index 1c9e552..95bc0cb 100644 --- a/src/networksettings/connman/connman_manager.xml +++ b/src/networksettings/connman/connman_manager.xml @@ -77,13 +77,13 @@ <arg name="path" type="o"/> </method> - <signal name="NetworkTypeAdded" tp:name-for-bindings="NetworkType_Added"> + <signal name="TechnologyAdded" tp:name-for-bindings="Technology_Added"> <arg name="technology" type="o"/> <arg name="properties" type="a{sv}"/> - <annotation name="org.qtproject.QtDBus.QtTypeName.Out1" value="QVariantMap"/> + <annotation name="org.qtproject.QtDBus.QtTypeName.In1" value="QVariantMap"/> </signal> - <signal name="NetworkTypeRemoved" tp:name-for-bindings="NetworkType_Removed"> + <signal name="TechnologyRemoved" tp:name-for-bindings="Technology_Removed"> <arg name="technology" type="o"/> </signal> diff --git a/src/networksettings/connman/qnetworksettingsinterface_p.cpp b/src/networksettings/connman/qnetworksettingsinterface_p.cpp index 5a64c15..5f008ff 100644 --- a/src/networksettings/connman/qnetworksettingsinterface_p.cpp +++ b/src/networksettings/connman/qnetworksettingsinterface_p.cpp @@ -103,4 +103,9 @@ void QNetworkSettingsInterfacePrivate::scan() qDebug() << "Tried to scan while not powered"; } +QString QNetworkSettingsInterfacePrivate::path() const +{ + return m_technology->path(); +} + QT_END_NAMESPACE diff --git a/src/networksettings/connman/qnetworksettingsinterface_p.h b/src/networksettings/connman/qnetworksettingsinterface_p.h index 728e64a..d85712a 100644 --- a/src/networksettings/connman/qnetworksettingsinterface_p.h +++ b/src/networksettings/connman/qnetworksettingsinterface_p.h @@ -63,6 +63,7 @@ public: QNetworkSettingsType::Types type() const {return m_type.type();} QNetworkSettingsState::States state() const {return m_state.state();} bool powered() const {return m_powered;} + QString path() const; public slots: void updateProperty(const QString &name, const QDBusVariant &value); @@ -98,6 +99,12 @@ public: virtual ~ConnmanSettingsInterface() { } + + QString path() const { + if (d_ptr) + return d_ptr->path(); + return QString(); + } }; QT_END_NAMESPACE diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.cpp b/src/networksettings/connman/qnetworksettingsmanager_p.cpp index bd656c6..2f7965d 100644 --- a/src/networksettings/connman/qnetworksettingsmanager_p.cpp +++ b/src/networksettings/connman/qnetworksettingsmanager_p.cpp @@ -94,6 +94,8 @@ bool QNetworkSettingsManagerPrivate::initialize() this, &QNetworkSettingsManagerPrivate::getServicesFinished); connect(m_manager, &NetConnmanManagerInterface::ServicesChanged, this, &QNetworkSettingsManagerPrivate::onServicesChanged); + connect(m_manager, &NetConnmanManagerInterface::TechnologyAdded, this, &QNetworkSettingsManagerPrivate::onTechnologyAdded); + connect(m_manager, &NetConnmanManagerInterface::TechnologyRemoved, this, &QNetworkSettingsManagerPrivate::onTechnologyRemoved); m_manager->RegisterAgent(QDBusObjectPath(AgentPath)); m_initialized = true; @@ -154,6 +156,40 @@ void QNetworkSettingsManagerPrivate::onConnmanServiceRegistered(const QString &s } } +void QNetworkSettingsManagerPrivate::onTechnologyAdded(const QDBusObjectPath &technology, const QVariantMap &properties) +{ + Q_Q(QNetworkSettingsManager); + + foreach (QNetworkSettingsInterface* item, m_interfaceModel.getModel()) { + ConnmanSettingsInterface* tech = qobject_cast<ConnmanSettingsInterface*>(item); + if (tech->path() != technology.path()) { + ConnmanSettingsInterface *interface = new ConnmanSettingsInterface(technology.path(), properties, this); + interface->scanServices(); + + if (interface->type() == QNetworkSettingsType::Wired) { + m_interfaceModel.insert(0, interface); + } + else if (interface->type() == QNetworkSettingsType::Wifi) { + m_interfaceModel.append(interface); + } + emit q->interfacesChanged(); + } + } +} + +void QNetworkSettingsManagerPrivate::onTechnologyRemoved(const QDBusObjectPath &technology) +{ + Q_Q(QNetworkSettingsManager); + + foreach (QNetworkSettingsInterface* item, m_interfaceModel.getModel()) { + ConnmanSettingsInterface* tech = qobject_cast<ConnmanSettingsInterface*>(item); + if (tech->path() == technology.path()) { + m_interfaceModel.removeInterface(technology.path()); + emit q->interfacesChanged(); + } + } +} + void QNetworkSettingsManagerPrivate::getServicesFinished(QDBusPendingCallWatcher *watcher) { Q_Q(QNetworkSettingsManager); diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.h b/src/networksettings/connman/qnetworksettingsmanager_p.h index b9133ab..8b5d1a7 100644 --- a/src/networksettings/connman/qnetworksettingsmanager_p.h +++ b/src/networksettings/connman/qnetworksettingsmanager_p.h @@ -82,6 +82,8 @@ public slots: void onServicesChanged(ConnmanMapStructList changed, const QList<QDBusObjectPath> &removed); void serviceReady(); void onConnmanServiceRegistered(const QString &serviceName); + void onTechnologyAdded(const QDBusObjectPath &technology, const QVariantMap &properties); + void onTechnologyRemoved(const QDBusObjectPath &technology); private: bool initialize(); void handleNewService(const QString& servicePath); diff --git a/src/networksettings/qnetworksettingsinterfacemodel.cpp b/src/networksettings/qnetworksettingsinterfacemodel.cpp index ff234ac..09b96ba 100644 --- a/src/networksettings/qnetworksettingsinterfacemodel.cpp +++ b/src/networksettings/qnetworksettingsinterfacemodel.cpp @@ -123,6 +123,7 @@ QVariant QNetworkSettingsInterfaceModel::data(const QModelIndex & index, int rol void QNetworkSettingsInterfaceModel::append(QNetworkSettingsInterface* item) { item->setParent(this); + connectStateChanges(item); beginInsertRows(QModelIndex(), rowCount(), rowCount()); m_items.append(item); @@ -135,12 +136,19 @@ void QNetworkSettingsInterfaceModel::append(QNetworkSettingsInterface* item) void QNetworkSettingsInterfaceModel::insert(int row, QNetworkSettingsInterface* item) { item->setParent(this); + connectStateChanges(item); beginInsertRows(QModelIndex(), row, row); m_items.insert(row, item); endInsertRows(); } +void QNetworkSettingsInterfaceModel::connectStateChanges(QNetworkSettingsInterface* item) +{ + connect(item, &QNetworkSettingsInterface::stateChanged, this, &QNetworkSettingsInterfaceModel::connectionStatusChanged); + connect(item, &QNetworkSettingsInterface::poweredChanged, this, &QNetworkSettingsInterfaceModel::poweredChanged); +} + /*! Removes the row \a row from the model. */ @@ -151,6 +159,24 @@ void QNetworkSettingsInterfaceModel::remove(int row) endRemoveRows(); } +bool QNetworkSettingsInterfaceModel::removeInterface(const QString &name) +{ + bool ret = false; + for (int i=0; i < m_items.count(); i++) { + if (m_items.at(i)->name() == name) { + remove(i); + ret = true; + break; + } + } + return ret; +} + +void QNetworkSettingsInterfaceModel::updated(int row) +{ + dataChanged(createIndex(row, 0), createIndex(row, 0)); +} + /*! Returns the network interface model. */ @@ -159,4 +185,33 @@ QList<QNetworkSettingsInterface*> QNetworkSettingsInterfaceModel::getModel() return m_items; } +void QNetworkSettingsInterfaceModel::connectionStatusChanged() +{ + QNetworkSettingsInterface *s = qobject_cast<QNetworkSettingsInterface*>(sender()); + + int row = 0; + foreach (QNetworkSettingsInterface* item, m_items) { + if (item == s) { + updated(row); + break; + } + row++; + } + +} + +void QNetworkSettingsInterfaceModel::poweredChanged() +{ + QNetworkSettingsInterface *s = qobject_cast<QNetworkSettingsInterface*>(sender()); + int row = 0; + foreach (QNetworkSettingsInterface* item, m_items) { + if (item == s) { + updated(row); + break; + } + row++; + } +} + + QT_END_NAMESPACE diff --git a/src/networksettings/qnetworksettingsinterfacemodel.h b/src/networksettings/qnetworksettingsinterfacemodel.h index 4ecebc7..6dd1f2a 100644 --- a/src/networksettings/qnetworksettingsinterfacemodel.h +++ b/src/networksettings/qnetworksettingsinterfacemodel.h @@ -59,6 +59,15 @@ public: Powered }; + void updated(int row); + bool removeInterface(const QString &name); +private Q_SLOTS: + void connectionStatusChanged(); + void poweredChanged(); + +private: + void connectStateChanges(QNetworkSettingsInterface* item); + private: QList<QNetworkSettingsInterface*> m_items; QHash<int, QByteArray> m_roleNames; diff --git a/src/settingsui/display/Display.qml b/src/settingsui/display/Display.qml index ecb1e33..a30e9eb 100644 --- a/src/settingsui/display/Display.qml +++ b/src/settingsui/display/Display.qml @@ -119,6 +119,10 @@ Item { } TextField { id: widthField + leftPadding: pluginMain.margin + rightPadding: pluginMain.margin + bottomPadding: 6 + topPadding: 6 height: pluginMain.buttonHeight width: root.width * 0.13 color: "black" @@ -142,6 +146,10 @@ Item { } TextField { id: heightField + leftPadding: pluginMain.margin + rightPadding: pluginMain.margin + bottomPadding: 6 + topPadding: 6 width: widthField.width height: pluginMain.buttonHeight color: "black" diff --git a/src/settingsui/locale/Language.qml b/src/settingsui/locale/Language.qml index 47a4fdf..23d1b64 100644 --- a/src/settingsui/locale/Language.qml +++ b/src/settingsui/locale/Language.qml @@ -35,8 +35,7 @@ import QtDeviceUtilities.QtButtonImageProvider 1.0 Item { id: root - // QTBUG-63598: property var currentRegion: Qt.locale(LocaleManager.locale) - property var currentRegion: Qt.locale("en_EN") + property var currentRegion: Qt.locale(LocaleManager.locale) Column { spacing: pluginMain.spacing diff --git a/src/settingsui/locale/RegionSelect.qml b/src/settingsui/locale/RegionSelect.qml index 148db0e..d27eb2a 100644 --- a/src/settingsui/locale/RegionSelect.qml +++ b/src/settingsui/locale/RegionSelect.qml @@ -35,8 +35,7 @@ import QtGraphicalEffects 1.0 Item { id: root - // QTBUG-63598: property var currentRegion: Qt.locale(LocaleManager.locale) - property var currentRegion: Qt.locale("en_EN") + property var currentRegion: Qt.locale(LocaleManager.locale) Row { id: backRow @@ -106,27 +105,26 @@ Item { anchors.bottom: parent.bottom anchors.right: parent.right anchors.topMargin: parent.height * 0.025 - RowLayout { - spacing: 10 - Layout.fillHeight: false - Layout.preferredHeight: root.height * 0.075 - TextField { - id: country - Layout.fillHeight: true - Layout.preferredWidth: root.width * 0.5 - font.pixelSize: pluginMain.valueFontSize - color: "white" - text: "" - placeholderText: "Search..." - font.family: appFont - font.styleName: "Light" - onTextChanged: LocaleFilter.filter = country.text - Layout.alignment: Qt.AlignVCenter - background: Rectangle { - color: "transparent" - border.color: viewSettings.borderColor - border.width: 2 - } + TextField { + id: country + Layout.preferredWidth: root.width * 0.5 + font.pixelSize: pluginMain.valueFontSize + leftPadding: pluginMain.margin + rightPadding: pluginMain.margin + bottomPadding: 6 + topPadding: 6 + color: "white" + text: "" + placeholderText: "Search..." + placeholderTextColor: "white" + font.family: appFont + font.styleName: "Regular" + onTextChanged: LocaleFilter.filter = country.text + Layout.alignment: Qt.AlignVCenter + background: Rectangle { + color: "transparent" + border.color: viewSettings.borderColor + border.width: 1 } } diff --git a/src/settingsui/network/NetworkSettings.qml b/src/settingsui/network/NetworkSettings.qml index 58d51b7..982a858 100644 --- a/src/settingsui/network/NetworkSettings.qml +++ b/src/settingsui/network/NetworkSettings.qml @@ -88,6 +88,9 @@ Item { QtButton { id: manualConnect visible: true + enabled: wifiSwitch.checked + fillColor: enabled ? viewSettings.buttonGreenColor : viewSettings.buttonGrayColor + borderColor: "transparent" height: pluginMain.buttonHeight text: qsTr("Connect manually") onClicked: { @@ -97,6 +100,9 @@ Item { QtButton { id: manualDisconnect visible: true + enabled: NetworkSettingsManager.currentWifiConnection + fillColor: enabled ? viewSettings.buttonGreenColor : viewSettings.buttonGrayColor + borderColor: "transparent" height: pluginMain.buttonHeight text: qsTr("Disconnect wireless") onClicked: { diff --git a/src/settingsui/settingsuiplugin/pluginMain.qml b/src/settingsui/settingsuiplugin/pluginMain.qml index def4c80..6f19a3b 100644 --- a/src/settingsui/settingsuiplugin/pluginMain.qml +++ b/src/settingsui/settingsuiplugin/pluginMain.qml @@ -59,7 +59,6 @@ Rectangle { { if (!__initialized) { __initialized = true; - settingsHeader.refreshIP() settingsList.currentIndex = 0 if (xmlModel.count >= 1) { settingsLoader.source = xmlModel.get(0).path + '/' + diff --git a/src/settingsui/timedate/ManualTime.qml b/src/settingsui/timedate/ManualTime.qml index 1438565..87e0f7e 100644 --- a/src/settingsui/timedate/ManualTime.qml +++ b/src/settingsui/timedate/ManualTime.qml @@ -69,8 +69,8 @@ Item { delegate: ItemDelegate { id: dayDelegate height: dayBox.height - // QTBUG-49224: contentItem: Item {} - Text { + width: dayBox.width + contentItem: Text { anchors.left: dayDelegate.left anchors.leftMargin: pluginMain.margin text: modelData + 1 @@ -97,8 +97,8 @@ Item { delegate: ItemDelegate { id: monthDelegate height: monthBox.height - // QTBUG-49224: contentItem: Item {} - Text { + width: monthBox.width + contentItem: Text { anchors.left: monthDelegate.left anchors.leftMargin: pluginMain.margin color: monthBox.currentIndex == index ? viewSettings.buttonGreenColor : "white" @@ -128,8 +128,8 @@ Item { delegate: ItemDelegate { id: yearDelegate height: yearBox.height - // QTBUG-49224: contentItem: Item {} - Text { + width: yearBox.width + contentItem: Text { anchors.left: yearDelegate.left anchors.leftMargin: pluginMain.margin text: index + firstYear @@ -170,8 +170,8 @@ Item { delegate: ItemDelegate { id: hourDelegate height: hourBox.height - // QTBUG-49224: contentItem: Item {} - Text { + width: hourBox.width + contentItem: Text { anchors.left: hourDelegate.left anchors.leftMargin: pluginMain.margin text: zeroPadTime(parseInt(modelData)) @@ -198,8 +198,8 @@ Item { delegate: ItemDelegate { id: minuteDelegate height: minuteBox.height - // QTBUG-49224: contentItem: Item {} - Text { + width: minuteBox.width + contentItem: Text { anchors.left: minuteDelegate.left anchors.leftMargin: pluginMain.margin text: zeroPadTime(parseInt(modelData)) diff --git a/src/settingsui/timedate/TimeDate.qml b/src/settingsui/timedate/TimeDate.qml index fccda46..c27f431 100644 --- a/src/settingsui/timedate/TimeDate.qml +++ b/src/settingsui/timedate/TimeDate.qml @@ -63,8 +63,7 @@ Item { triggeredOnStart: true onTriggered: { var date = new Date(); - // QTBUG-63598: dateText.text = date.toLocaleString(Qt.locale(LocaleManager.locale), Locale.LongFormat) - dateText.text = date.toLocaleString(Qt.locale("en_EN"), Locale.LongFormat) + dateText.text = date.toLocaleString(Qt.locale(LocaleManager.locale), Locale.LongFormat) } } } @@ -119,8 +118,7 @@ Item { id: timeZoneDelegate height: timeZoneBox.height width: timeZoneBox.width - // QTBUG-49224: contentItem: Item {} - Text { + contentItem: Text { anchors.left: timeZoneDelegate.left anchors.leftMargin: pluginMain.margin text: modelData["id"] |