Warning, /plasma/plasma-bigscreen/kcms/plasma-settings-shell/+mediacenter/ModulesListPage.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 0003 SPDX-FileCopyrightText: 2011-2014 Sebastian Kügler <sebas@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 import QtQuick 2.14 0009 import QtQuick.Layouts 1.14 0010 import QtQuick.Controls 2.14 as Controls 0011 import org.kde.kirigami 2.12 as Kirigami 0012 import org.kde.plasma.core 2.0 as PlasmaCore 0013 import org.kde.plasma.settings 0.1 0014 0015 Kirigami.Page { 0016 id: settingsRoot 0017 0018 property alias currentIndex: listView.currentIndex 0019 0020 Kirigami.Theme.colorSet: Kirigami.Theme.View 0021 background: Rectangle { 0022 color: Kirigami.Theme.backgroundColor 0023 } 0024 0025 Component { 0026 id: settingsModuleDelegate 0027 Controls.ItemDelegate { 0028 id: delegateItem 0029 0030 height: listView.height 0031 width: settingsRoot.width > Kirigami.Units.gridUnit * 20 ? settingsRoot.width/4 : settingsRoot.width 0032 enabled: true 0033 checked: listView.currentIndex == index 0034 leftPadding: Kirigami.Units.largeSpacing 0035 background: null 0036 Keys.onReturnPressed: clicked() 0037 contentItem: Item { 0038 ColumnLayout { 0039 anchors.centerIn: parent 0040 spacing: Kirigami.Units.largeSpacing 0041 Kirigami.Icon { 0042 id: iconItem 0043 Layout.alignment: Qt.AlignCenter 0044 selected: delegateItem.down 0045 Layout.maximumWidth: Layout.preferredWidth 0046 Layout.preferredWidth: listView.currentIndex == index ? PlasmaCore.Units.iconSizes.enormous : PlasmaCore.Units.iconSizes.huge 0047 Layout.preferredHeight: Layout.preferredWidth 0048 Behavior on Layout.preferredWidth { 0049 NumberAnimation { 0050 duration: Kirigami.Units.longDuration 0051 easing.type: Easing.InOutQuad 0052 } 0053 } 0054 source: iconName 0055 } 0056 0057 Controls.Label { 0058 Layout.fillWidth: true 0059 text: name 0060 horizontalAlignment: Text.AlignHCenter 0061 } 0062 Controls.Label { 0063 text: description 0064 Layout.fillWidth: true 0065 horizontalAlignment: Text.AlignHCenter 0066 font.pointSize: Kirigami.Theme.defaultFont.pointSize -1 0067 opacity: 0.6 0068 elide: Text.ElideRight 0069 } 0070 } 0071 } 0072 0073 onClicked: { 0074 print("Clicked index: " + index + " current: " + listView.currentIndex + " " + name + " curr: " + rootItem.currentModule); 0075 // Only the first main page has a kcm property 0076 var container = kcmContainer.createObject(pageStack, {"kcm": model.kcm, "internalPage": model.kcm.mainUi}); 0077 pageStack.push(container); 0078 } 0079 } 0080 } 0081 0082 // This is pretty much a placeholder of what will be the sandboxing mechanism: this element will be a wayland compositor that will contain off-process kcm pages 0083 Component { 0084 id: kcmContainer 0085 0086 KCMContainer {} 0087 } 0088 0089 contentItem: ListView { 0090 id: listView 0091 focus: true 0092 spacing: 0 0093 orientation: ListView.Horizontal 0094 activeFocusOnTab: true 0095 keyNavigationEnabled: true 0096 highlightFollowsCurrentItem: true 0097 highlightMoveDuration: Kirigami.Units.longDuration 0098 snapMode: ListView.SnapToItem 0099 model: ModulesProxyModel{} 0100 delegate: settingsModuleDelegate 0101 } 0102 }