From b7b25010aa58c6366c8182c886d5daae496bab42 Mon Sep 17 00:00:00 2001 From: Guo Yunhe Date: Sun, 20 Oct 2019 13:38:27 +0300 Subject: [PATCH] Migrate QQC1 to QQC2 Summary: The TableView in digital clock widget time zone configuration is replaced with ListView. Other UI didn't change. {F7635385} Reviewers: #plasma, #plasma_workspaces, ngraham Reviewed By: ngraham Subscribers: GB_2, ahiemstra, broulik, kmaterka, ngraham, plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D24798 --- applets/appmenu/package/contents/ui/main.qml | 2 +- .../package/contents/ui/configTimeZones.qml | 89 +++++++------------ .../common/contents/ui/ConfigGeneral.qml | 32 ++++--- sddm-theme/KeyboardButton.qml | 8 +- sddm-theme/Main.qml | 5 +- sddm-theme/SessionButton.qml | 4 +- .../platformcontents/phone/ui/config.qml | 6 +- .../phone/ui/customwallpaper.qml | 6 +- 8 files changed, 64 insertions(+), 88 deletions(-) diff --git a/applets/appmenu/package/contents/ui/main.qml b/applets/appmenu/package/contents/ui/main.qml index 4ddbdbf19..8780afd6f 100644 --- a/applets/appmenu/package/contents/ui/main.qml +++ b/applets/appmenu/package/contents/ui/main.qml @@ -18,7 +18,7 @@ */ import QtQuick 2.0 import QtQuick.Layouts 1.1 -import QtQuick.Controls 1.4 +import QtQuick.Controls 2.8 import org.kde.plasma.plasmoid 2.0 import org.kde.kquickcontrolsaddons 2.0 diff --git a/applets/digital-clock/package/contents/ui/configTimeZones.qml b/applets/digital-clock/package/contents/ui/configTimeZones.qml index aacd5f00b..1170e13b0 100644 --- a/applets/digital-clock/package/contents/ui/configTimeZones.qml +++ b/applets/digital-clock/package/contents/ui/configTimeZones.qml @@ -18,8 +18,8 @@ * along with this program. If not, see */ -import QtQuick 2.0 -import QtQuick.Controls 1.2 as QtControls +import QtQuick 2.13 +import QtQuick.Controls 2.13 as QQC2 import QtQuick.Layouts 1.0 import QtQuick.Dialogs 1.1 @@ -45,90 +45,63 @@ ColumnLayout { } } - // This is just for getting the column width - QtControls.CheckBox { - id: checkbox - visible: false - } - Kirigami.InlineMessage { id: messageWidget - Layout.fillWidth: true - + Layout.margins: Kirigami.Units.smallSpacing type: Kirigami.MessageType.Warning text: i18n("At least one time zone needs to be enabled. 'Local' was enabled automatically.") - showCloseButton: true } - QtControls.TextField { + QQC2.TextField { id: filter Layout.fillWidth: true placeholderText: i18n("Search Time Zones") } - QtControls.TableView { - id: timeZoneView - - signal toggleCurrent - + Item { Layout.fillWidth: true Layout.fillHeight: true - Keys.onSpacePressed: toggleCurrent() + QQC2.ScrollView { + anchors.fill: parent + clip: true + Component.onCompleted: background.visible = true // enable border - model: TimeZoneFilterProxy { - sourceModel: timeZones - filterString: filter.text - } + ListView { + id: listView + focus: true // keyboard navigation + activeFocusOnTab: true // keyboard navigation - QtControls.TableViewColumn { - role: "checked" - width: checkbox.width - delegate: - QtControls.CheckBox { - id: checkBox - anchors.centerIn: parent - checked: styleData.value - activeFocusOnTab: false // only let the TableView as a whole get focus - onClicked: { - //needed for model's setData to be called - model.checked = checked; - } + model: TimeZoneFilterProxy { + sourceModel: timeZones + filterString: filter.text + } - Connections { - target: timeZoneView - onToggleCurrent: { - if (styleData.row === timeZoneView.currentRow) { - model.checked = !checkBox.checked - } - } + delegate: QQC2.CheckDelegate { + id: checkbox + focus: true // keyboard navigation + width: parent.width + text: !city || city.indexOf("UTC") === 0 ? comment : comment ? i18n("%1, %2 (%3)", city, region, comment) : i18n("%1, %2", city, region) + checked: model.checked + onToggled: { + model.checked = checkbox.checked + listView.currentIndex = index // highlight + listView.forceActiveFocus() // keyboard navigation } + highlighted: ListView.isCurrentItem } - - resizable: false - movable: false - } - QtControls.TableViewColumn { - role: "city" - title: i18n("City") - } - QtControls.TableViewColumn { - role: "region" - title: i18n("Region") - } - QtControls.TableViewColumn { - role: "comment" - title: i18n("Comment") + } } } RowLayout { Layout.fillWidth: true - QtControls.CheckBox { + QQC2.CheckBox { id: enableWheelCheckBox text: i18n("Switch time zone with mouse wheel") } } + } diff --git a/applets/systemmonitor/common/contents/ui/ConfigGeneral.qml b/applets/systemmonitor/common/contents/ui/ConfigGeneral.qml index 3f025ffaf..3570c30d6 100644 --- a/applets/systemmonitor/common/contents/ui/ConfigGeneral.qml +++ b/applets/systemmonitor/common/contents/ui/ConfigGeneral.qml @@ -17,7 +17,6 @@ */ import QtQuick 2.5 -import QtQuick.Controls 1.4 as QQC1 import QtQuick.Controls 2.5 as QQC2 import QtQuick.Layouts 1.3 @@ -119,23 +118,28 @@ Item { anchors.left: parent.left anchors.right: parent.right - // QQC2 SpinBox doesn't cleanly support non-integer values, which can be - // worked around, but the code is messy and the user experience is - // somewhat poor. So for now, we stick with the QQC1 SpinBox - QQC1.SpinBox { + QQC2.SpinBox { id: updateIntervalSpinBox - Kirigami.FormData.label: i18n("Update interval:") - decimals: 1 - suffix: i18ncp("Suffix for spinbox (seconds)", " second", - " seconds") - maximumValue: 1000 - stepSize: 0.1 - onValueChanged: cfg_updateInterval = value * 1000 - Component.onCompleted: value = cfg_updateInterval / 1000 + from: 100 + stepSize: 100 + to: 1000000 + editable: true + validator: DoubleValidator { + bottom: spinbox.from + top: spinbox.to + } + textFromValue: function(value) { + var seconds = value / 1000 + return i18n("%1 seconds", seconds.toFixed(1)) + } + valueFromText: function(text) { + return parseFloat(text) * 1000 + } + value: cfg_updateInterval + onValueModified: cfg_updateInterval = value } - Item { Kirigami.FormData.isSection: true } diff --git a/sddm-theme/KeyboardButton.qml b/sddm-theme/KeyboardButton.qml index 7d8f60a00..611758cec 100644 --- a/sddm-theme/KeyboardButton.qml +++ b/sddm-theme/KeyboardButton.qml @@ -25,9 +25,9 @@ PlasmaComponents.ToolButton { QQC2.Menu { id: keyboardMenu - + property int largestWidth: 9999 - + Component.onCompleted: { var trueWidth = 0; for (var i = 0; i < keyboardMenu.count; i++) { @@ -63,11 +63,11 @@ PlasmaComponents.ToolButton { id: menuItem property string name: modelData.longName property string shortName: modelData.shortName - + property real textWidth: text.contentWidth + 20 implicitWidth: text.contentWidth + 20 implicitHeight: Math.round(text.contentHeight * 1.6) - + contentItem: QQC2.Label { id: text font.pointSize: config.fontSize diff --git a/sddm-theme/Main.qml b/sddm-theme/Main.qml index ebf030903..0ddc31081 100644 --- a/sddm-theme/Main.qml +++ b/sddm-theme/Main.qml @@ -20,7 +20,7 @@ import QtQuick 2.8 import QtQuick.Layouts 1.1 -import QtQuick.Controls 2.0 +import QtQuick.Controls 2.0 as QQC2 import QtGraphicalEffects 1.0 import org.kde.plasma.core 2.0 as PlasmaCore @@ -148,7 +148,6 @@ PlasmaCore.ColorScope { anchors.horizontalCenter: parent.horizontalCenter } - StackView { id: mainStack anchors { @@ -435,7 +434,7 @@ PlasmaCore.ColorScope { DropShadow { id: logoShadow anchors.fill: logo - source: logo + source: logo visible: !softwareRendering && config.showlogo == "shown" horizontalOffset: 1 verticalOffset: 1 diff --git a/sddm-theme/SessionButton.qml b/sddm-theme/SessionButton.qml index 24d052f29..be84d3a5f 100644 --- a/sddm-theme/SessionButton.qml +++ b/sddm-theme/SessionButton.qml @@ -45,7 +45,7 @@ PlasmaComponents.ToolButton { QQC2.Menu { id: sessionMenu - + property int largestWidth: 9999 Component.onCompleted: { @@ -55,7 +55,7 @@ PlasmaComponents.ToolButton { } sessionMenu.largestWidth = trueWidth } - + background: Rectangle { implicitHeight: 40 implicitWidth: sessionMenu.largestWidth > sessionButton.implicitWidth ? sessionMenu.largestWidth : sessionButton.implicitWidth diff --git a/wallpapers/image/imagepackage/platformcontents/phone/ui/config.qml b/wallpapers/image/imagepackage/platformcontents/phone/ui/config.qml index 24e8112ab..9bcf33d95 100644 --- a/wallpapers/image/imagepackage/platformcontents/phone/ui/config.qml +++ b/wallpapers/image/imagepackage/platformcontents/phone/ui/config.qml @@ -22,7 +22,7 @@ import QtQuick 2.0 import org.kde.plasma.core 2.0 as Plasmacore import org.kde.plasma.wallpapers.image 2.0 as Wallpaper import org.kde.kquickcontrolsaddons 2.0 -import QtQuick.Controls 1.0 as QtControls +import QtQuick.Controls 2.8 as QQC2 Item { id: root @@ -41,7 +41,7 @@ Item { //Rectangle { color: "orange"; x: formAlignment; width: formAlignment; height: 20 } - QtControls.ScrollView { + QQC2.ScrollView { anchors.fill: parent frameVisible: true @@ -71,7 +71,7 @@ Item { } } - QtControls.Button { + QQC2.Button { anchors { bottom: parent.bottom horizontalCenter: parent.horizontalCenter diff --git a/wallpapers/image/imagepackage/platformcontents/phone/ui/customwallpaper.qml b/wallpapers/image/imagepackage/platformcontents/phone/ui/customwallpaper.qml index 53e5ed284..8943d1d69 100644 --- a/wallpapers/image/imagepackage/platformcontents/phone/ui/customwallpaper.qml +++ b/wallpapers/image/imagepackage/platformcontents/phone/ui/customwallpaper.qml @@ -22,7 +22,7 @@ import Qt.labs.folderlistmodel 2.1 import org.kde.plasma.core 2.0 as Plasmacore import org.kde.plasma.wallpapers.image 2.0 as Wallpaper import org.kde.kquickcontrolsaddons 2.0 -import QtQuick.Controls 1.0 as QtControls +import QtQuick.Controls 2.8 as QQC2 Rectangle { id: root @@ -31,7 +31,7 @@ Rectangle { SystemPalette {id: syspal} - QtControls.ScrollView { + QQC2.ScrollView { anchors.fill: parent frameVisible: true @@ -76,7 +76,7 @@ Rectangle { } } } - QtControls.Button { + QQC2.Button { anchors { bottom: parent.bottom horizontalCenter: parent.horizontalCenter