Warning, /plasma/plasma-sdk/plasmoidviewer/qmlpackages/shell/contents/configuration/ConfigurationContainmentActions.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2013 Marco Martin <mart@kde.org>
0003 *
0004 * SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.0
0008 import QtQuick.Controls 2.3 as QtControls
0009 import QtQuick.Layouts 1.0
0010
0011 Item {
0012 id: root
0013
0014 signal configurationChanged
0015 implicitWidth: mainColumn.implicitWidth
0016 implicitHeight: mainColumn.implicitHeight
0017
0018 property var prettyStrings: {
0019 "LeftButton": i18nd("plasma_shell_org.kde.plasma.desktop", "Left-Button"),
0020 "RightButton": i18nd("plasma_shell_org.kde.plasma.desktop", "Right-Button"),
0021 "MiddleButton": i18nd("plasma_shell_org.kde.plasma.desktop", "Middle-Button"),
0022 "BackButton": i18nd("plasma_shell_org.kde.plasma.desktop", "Back-Button"),
0023 "ForwardButton": i18nd("plasma_shell_org.kde.plasma.desktop", "Forward-Button"),
0024
0025 "wheel:Vertical": i18nd("plasma_shell_org.kde.plasma.desktop", "Vertical-Scroll"),
0026 "wheel:Horizontal": i18nd("plasma_shell_org.kde.plasma.desktop", "Horizontal-Scroll"),
0027
0028 "ShiftModifier": i18nd("plasma_shell_org.kde.plasma.desktop", "Shift"),
0029 "ControlModifier": i18nd("plasma_shell_org.kde.plasma.desktop", "Ctrl"),
0030 "AltModifier": i18nd("plasma_shell_org.kde.plasma.desktop", "Alt"),
0031 "MetaModifier": i18nd("plasma_shell_org.kde.plasma.desktop", "Meta")
0032 }
0033
0034 function saveConfig() {
0035 configDialog.currentContainmentActionsModel.save();
0036 }
0037
0038 Connections {
0039 target: configDialog.currentContainmentActionsModel
0040 function onConfigurationChanged() {
0041 root.configurationChanged()
0042 }
0043 }
0044
0045 GridLayout {
0046 id: mainColumn
0047 flow: GridLayout.TopToBottom
0048 y: 25
0049 width: parent.width
0050
0051 Repeater {
0052 id: actionsRepeater
0053 model: configDialog.currentContainmentActionsModel
0054
0055 MouseEventInputButton {
0056 Layout.column: 0
0057 Layout.row: index
0058 Layout.fillWidth: true
0059 Layout.minimumWidth: implicitWidth
0060 defaultText: {
0061 var splitAction = model.action.split(';');
0062
0063 var button = splitAction[0];
0064 var modifiers = (splitAction[1] || "").split('|').filter(function (item) {
0065 return item !== "NoModifier";
0066 });
0067
0068 var parts = modifiers;
0069 modifiers.push(button);
0070
0071 return parts.map(function (item) {
0072 return prettyStrings[item] || item;
0073 }).join(i18nc("Concatenation sign for shortcuts, e.g. Ctrl+Shift", "+"));
0074 }
0075 eventString: model.action
0076 onEventStringChanged: {
0077 configDialog.currentContainmentActionsModel.update(index, eventString, model.pluginName);
0078 }
0079 }
0080 }
0081
0082 Repeater {
0083 model: configDialog.currentContainmentActionsModel
0084
0085 QtControls.ComboBox {
0086 id: pluginsCombo
0087 // "index" argument of onActivated shadows the model index
0088 readonly property int pluginIndex: index
0089 Layout.fillWidth: true
0090 Layout.column: 1
0091 Layout.row: index
0092 // both MouseEventInputButton and this ComboBox have fillWidth for a uniform layout
0093 // however, their implicit sizes is taken into account and they compete against
0094 // each other for available space. By setting an insane preferredWidth we give
0095 // ComboBox a greater share of the available space
0096 Layout.preferredWidth: 9000
0097 model: configDialog.containmentActionConfigModel
0098 textRole: "name"
0099 property bool initialized: false
0100 Component.onCompleted: {
0101 for (var i = 0; i < configDialog.containmentActionConfigModel.count; ++i) {
0102 if (configDialog.containmentActionConfigModel.get(i).pluginName === pluginName) {
0103 pluginsCombo.currentIndex = i;
0104 break;
0105 }
0106 }
0107 pluginsCombo.initialized = true;
0108 }
0109 onActivated: {
0110 if (initialized) {
0111 var newPluginName = configDialog.containmentActionConfigModel.get(index).pluginName;
0112 if (newPluginName !== pluginName) {
0113 configDialog.currentContainmentActionsModel.update(pluginIndex, action, newPluginName);
0114 }
0115 }
0116 }
0117 }
0118 }
0119
0120 Repeater {
0121 model: configDialog.currentContainmentActionsModel
0122
0123 RowLayout {
0124 Layout.column: 2
0125 Layout.row: index
0126
0127 QtControls.Button {
0128 icon.name: "configure"
0129 width: height
0130 enabled: model.hasConfigurationInterface
0131 onClicked: {
0132 configDialog.currentContainmentActionsModel.showConfiguration(index, this);
0133 }
0134 }
0135 QtControls.Button {
0136 icon.name: "dialog-information"
0137 width: height
0138 onClicked: {
0139 configDialog.currentContainmentActionsModel.showAbout(index, this);
0140 }
0141 }
0142 QtControls.Button {
0143 icon.name: "list-remove"
0144 width: height
0145 onClicked: {
0146 configDialog.currentContainmentActionsModel.remove(index);
0147 }
0148 }
0149 }
0150 }
0151
0152 MouseEventInputButton {
0153 defaultText: i18nd("plasma_shell_org.kde.plasma.desktop", "Add Action");
0154 onEventStringChanged: {
0155 configDialog.currentContainmentActionsModel.append(eventString, "org.kde.contextmenu");
0156 }
0157 }
0158 }
0159
0160 }