Warning, /plasma/kwin/src/kcms/decoration/ui/Themes.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
0003     SPDX-FileCopyrightText: 2019 Valerio Pilo <vpilo@coldshock.net>
0004 
0005     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007 import QtQuick
0008 
0009 import org.kde.kcmutils as KCM
0010 import org.kde.kirigami 2.20 as Kirigami
0011 import org.kde.kwin.private.kdecoration as KDecoration
0012 
0013 KCM.GridView {
0014     function updateDecoration(item, marginTopLeft, marginBottomRight) {
0015         const mainMargin = Kirigami.Units.largeSpacing;
0016         const shd = item.shadow;
0017         item.anchors.leftMargin   = mainMargin + marginTopLeft     - (shd ? shd.paddingLeft   : 0);
0018         item.anchors.rightMargin  = mainMargin + marginBottomRight - (shd ? shd.paddingRight  : 0);
0019         item.anchors.topMargin    = mainMargin + marginTopLeft     - (shd ? shd.paddingTop    : 0);
0020         item.anchors.bottomMargin = mainMargin + marginBottomRight - (shd ? shd.paddingBottom : 0);
0021     }
0022 
0023     view.model: kcm.themesModel
0024     view.currentIndex: kcm.theme
0025     view.onContentHeightChanged: view.positionViewAtIndex(view.currentIndex, GridView.Visible)
0026 
0027     view.implicitCellWidth: Kirigami.Units.gridUnit * 18
0028 
0029     framedView: false
0030 
0031     view.delegate: KCM.GridDelegate {
0032         id: delegate
0033         text: model.display
0034 
0035         thumbnailAvailable: true
0036         thumbnail: Rectangle {
0037             anchors.fill: parent
0038             color: palette.base
0039             clip: true
0040 
0041             KDecoration.Bridge {
0042                 id: bridgeItem
0043                 plugin: model.plugin
0044                 theme: model.theme
0045                 kcmoduleName: model.kcmoduleName
0046             }
0047             KDecoration.Settings {
0048                 id: settingsItem
0049                 bridge: bridgeItem.bridge
0050                 Component.onCompleted: {
0051                     settingsItem.borderSizesIndex = kcm.borderSize;
0052                 }
0053             }
0054             KDecoration.Decoration {
0055                 id: inactivePreview
0056                 bridge: bridgeItem.bridge
0057                 settings: settingsItem
0058                 anchors.fill: parent
0059                 onShadowChanged: updateDecoration(inactivePreview, 0, client.decoration.titleBar.height)
0060                 Component.onCompleted: {
0061                     client.active = false;
0062                     client.caption = model.display;
0063                     updateDecoration(inactivePreview, 0, client.decoration.titleBar.height);
0064                 }
0065             }
0066             KDecoration.Decoration {
0067                 id: activePreview
0068                 bridge: bridgeItem.bridge
0069                 settings: settingsItem
0070                 anchors.fill: parent
0071                 onShadowChanged: updateDecoration(activePreview, client.decoration.titleBar.height, 0)
0072                 Component.onCompleted: {
0073                     client.active = true;
0074                     client.caption = model.display;
0075                     updateDecoration(activePreview, client.decoration.titleBar.height, 0);
0076                 }
0077             }
0078             MouseArea {
0079                 anchors.fill: parent
0080                 onClicked: delegate.clicked()
0081                 onDoubleClicked: delegate.doubleClicked()
0082             }
0083             Connections {
0084                 target: kcm
0085                 function onBorderSizeChanged() {
0086                     settingsItem.borderSizesIndex = kcm.borderSize;
0087                 }
0088             }
0089         }
0090         actions: [
0091             Kirigami.Action {
0092                 icon.name: "edit-entry"
0093                 tooltip: i18n("Edit %1 Theme", model.display)
0094                 enabled: model.configureable
0095                 onTriggered: {
0096                     kcm.theme = index;
0097                     view.currentIndex = index;
0098                     bridgeItem.bridge.configure(delegate);
0099                 }
0100             }
0101         ]
0102 
0103         onClicked: {
0104             kcm.theme = index;
0105             view.currentIndex = index;
0106         }
0107         onDoubleClicked: {
0108             kcm.save();
0109         }
0110     }
0111     Connections {
0112         target: kcm
0113         function onThemeChanged() {
0114             view.currentIndex = kcm.theme;
0115         }
0116     }
0117 }