diff --git a/src/kcms/effects/package/contents/ui/Effect.qml b/src/kcms/effects/package/contents/ui/Effect.qml index 8097fa729a..81e52642df 100644 --- a/src/kcms/effects/package/contents/ui/Effect.qml +++ b/src/kcms/effects/package/contents/ui/Effect.qml @@ -15,20 +15,22 @@ import org.kde.kcm as KCM Kirigami.SwipeListItem { id: listItem + hoverEnabled: true + onClicked: { - if (view.currentIndex == index) { + if (ListView.isCurrentItem) { // Collapse list item - view.currentIndex = -1; + ListView.view.currentIndex = -1; } else { // Expand list item - view.currentIndex = index; + ListView.view.currentIndex = index; } } + contentItem: RowLayout { - id: row QQC2.RadioButton { - property bool _exclusive: model.ExclusiveRole != "" + readonly property bool _exclusive: model.ExclusiveRole != "" property bool _toggled: false checked: model.StatusRole @@ -39,6 +41,7 @@ Kirigami.SwipeListItem { model.StatusRole = checked ? Qt.Checked : Qt.Unchecked; _toggled = true; } + onClicked: { // Uncheck the radio button if it's clicked. if (checked && !_toggled) { @@ -91,7 +94,7 @@ Kirigami.SwipeListItem { text: i18n("Author: %1\nLicense: %2", model.AuthorNameRole, model.LicenseRole) opacity: listItem.hovered ? 0.8 : 0.6 - visible: view.currentIndex === index + visible: listItem.ListView.isCurrentItem wrapMode: Text.Wrap } @@ -114,6 +117,7 @@ Kirigami.SwipeListItem { } } } + actions: [ Kirigami.Action { visible: model.VideoRole.toString() !== "" diff --git a/src/kcms/effects/package/contents/ui/Video.qml b/src/kcms/effects/package/contents/ui/Video.qml index 11c0ae30c7..5cdd57c06d 100644 --- a/src/kcms/effects/package/contents/ui/Video.qml +++ b/src/kcms/effects/package/contents/ui/Video.qml @@ -15,29 +15,32 @@ import QtMultimedia as Multimedia Multimedia.Video { id: videoItem + autoPlay: true source: model.VideoRole width: 400 height: 400 + QQC2.BusyIndicator { anchors.centerIn: parent - visible: videoItem.status == Multimedia.MediaPlayer.Loading + visible: videoItem.status === Multimedia.MediaPlayer.Loading running: true } + QQC2.Button { id: replayButton + visible: false anchors.centerIn: parent icon.name: "media-playback-start" + onClicked: { replayButton.visible = false; videoItem.play(); } - Connections { - target: videoItem - function onStopped() { - replayButton.visible = true - } - } + } + + onStopped: { + replayButton.visible = true } } diff --git a/src/kcms/effects/package/contents/ui/main.qml b/src/kcms/effects/package/contents/ui/main.qml index c50969290a..c7a3af3179 100644 --- a/src/kcms/effects/package/contents/ui/main.qml +++ b/src/kcms/effects/package/contents/ui/main.qml @@ -73,7 +73,8 @@ ScrollViewKCM { view: ListView { id: effectsList - property var _buttonGroups: [] + // { string name: QQC2.ButtonGroup group } + property var _buttonGroups: new Map() clip: true @@ -94,23 +95,18 @@ ScrollViewKCM { text: section } - function findButtonGroup(name) { - for (let item of effectsList._buttonGroups) { - if (item.name == name) { - return item.group; - } - } - - let group = Qt.createQmlObject( - 'import QtQuick 2.5;' + - 'import QtQuick.Controls 2.5;' + - 'ButtonGroup {}', - effectsList, - "dynamicButtonGroup" + effectsList._buttonGroups.length - ); + Component { + id: buttonGroupComponent - effectsList._buttonGroups.push({ name, group }); + QQC2.ButtonGroup {} + } + function findButtonGroup(name: string): QQC2.ButtonGroup { + let group = _buttonGroups.get(name); + if (group === undefined) { + group = buttonGroupComponent.createObject(this); + _buttonGroups.set(name, group); + } return group; } } @@ -123,7 +119,7 @@ ScrollViewKCM { text: i18n("Get New Desktop Effects…") visible: KAuthorized.authorize(KAuthorized.GHNS) configFile: "kwineffect.knsrc" - onEntryEvent: function (entry, event) { + onEntryEvent: (entry, event) => { if (event === NewStuff.Engine.StatusChangedEvent) { kcm.onGHNSEntriesChanged() }