Warning, /plasma/plasma-desktop/applets/taskmanager/package/contents/ui/ConfigBehavior.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2013 Eike Hein <hein@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 import QtQuick 2.15
0008 import QtQuick.Controls 2.15
0009 import QtQuick.Layouts 1.15
0010 
0011 import org.kde.kirigami 2.19 as Kirigami
0012 import org.kde.plasma.core as PlasmaCore
0013 import org.kde.plasma.plasmoid 2.0
0014 import org.kde.kcmutils as KCM
0015 
0016 import org.kde.plasma.private.taskmanager 0.1 as TaskManagerApplet
0017 
0018 KCM.SimpleKCM {
0019     property alias cfg_groupingStrategy: groupingStrategy.currentIndex
0020     property alias cfg_groupedTaskVisualization: groupedTaskVisualization.currentIndex
0021     property alias cfg_groupPopups: groupPopups.checked
0022     property alias cfg_onlyGroupWhenFull: onlyGroupWhenFull.checked
0023     property alias cfg_sortingStrategy: sortingStrategy.currentIndex
0024     property alias cfg_separateLaunchers: separateLaunchers.checked
0025     property alias cfg_middleClickAction: middleClickAction.currentIndex
0026     property alias cfg_wheelEnabled: wheelEnabled.checked
0027     property alias cfg_wheelSkipMinimized: wheelSkipMinimized.checked
0028     property alias cfg_showOnlyCurrentScreen: showOnlyCurrentScreen.checked
0029     property alias cfg_showOnlyCurrentDesktop: showOnlyCurrentDesktop.checked
0030     property alias cfg_showOnlyCurrentActivity: showOnlyCurrentActivity.checked
0031     property alias cfg_showOnlyMinimized: showOnlyMinimized.checked
0032     property alias cfg_minimizeActiveTaskOnClick: minimizeActive.checked
0033     property alias cfg_unhideOnAttention: unhideOnAttention.checked
0034     property alias cfg_reverseMode: reverseMode.checked
0035 
0036     TaskManagerApplet.Backend {
0037         id: backend
0038     }
0039 
0040     Kirigami.FormLayout {
0041         anchors.left: parent.left
0042         anchors.right: parent.right
0043 
0044         ComboBox {
0045             id: groupingStrategy
0046             Kirigami.FormData.label: i18n("Group:")
0047             Layout.fillWidth: true
0048             Layout.minimumWidth: Kirigami.Units.gridUnit * 14
0049             model: [i18n("Do not group"), i18n("By program name")]
0050         }
0051 
0052         ComboBox {
0053             id: groupedTaskVisualization
0054             Kirigami.FormData.label: i18n("Clicking grouped task:")
0055             Layout.fillWidth: true
0056             Layout.minimumWidth: Kirigami.Units.gridUnit * 14
0057 
0058             enabled: groupingStrategy.currentIndex !== 0
0059 
0060             model: [
0061                 i18nc("Completes the sentence 'Clicking grouped task cycles through tasks' ", "Cycles through tasks"),
0062                 i18nc("Completes the sentence 'Clicking grouped task shows tooltip window thumbnails' ", "Shows small window previews"),
0063                 i18nc("Completes the sentence 'Clicking grouped task shows windows side by side' ", "Shows large window previews"),
0064                 i18nc("Completes the sentence 'Clicking grouped task shows textual list' ", "Shows textual list"),
0065             ]
0066         }
0067         // "You asked for Window View but Window View is not available" message
0068         Kirigami.InlineMessage {
0069             Layout.fillWidth: true
0070             visible: groupedTaskVisualization.currentIndex === 2 && !backend.windowViewAvailable
0071             type: Kirigami.MessageType.Warning
0072             text: i18n("The compositor does not support displaying windows side by side, so a textual list will be displayed instead.")
0073         }
0074 
0075         Item {
0076             Kirigami.FormData.isSection: true
0077         }
0078 
0079         CheckBox {
0080             id: groupPopups
0081             visible: (Plasmoid.pluginName !== "org.kde.plasma.icontasks")
0082             text: i18n("Combine into single button")
0083             enabled: groupingStrategy.currentIndex > 0
0084         }
0085 
0086         CheckBox {
0087             id: onlyGroupWhenFull
0088             visible: (Plasmoid.pluginName !== "org.kde.plasma.icontasks")
0089             text: i18n("Group only when the Task Manager is full")
0090             enabled: groupingStrategy.currentIndex > 0 && groupPopups.checked
0091         }
0092 
0093         Item {
0094             Kirigami.FormData.isSection: true
0095             visible: (Plasmoid.pluginName !== "org.kde.plasma.icontasks")
0096         }
0097 
0098         ComboBox {
0099             id: sortingStrategy
0100             Kirigami.FormData.label: i18n("Sort:")
0101             Layout.fillWidth: true
0102             Layout.minimumWidth: Kirigami.Units.gridUnit * 14
0103             model: [i18n("Do not sort"), i18n("Manually"), i18n("Alphabetically"), i18n("By desktop"), i18n("By activity")]
0104         }
0105 
0106         CheckBox {
0107             id: separateLaunchers
0108             visible: (Plasmoid.pluginName !== "org.kde.plasma.icontasks")
0109             text: i18n("Keep launchers separate")
0110             enabled: sortingStrategy.currentIndex == 1
0111         }
0112 
0113         Item {
0114             Kirigami.FormData.isSection: true
0115             visible: (Plasmoid.pluginName !== "org.kde.plasma.icontasks")
0116         }
0117 
0118         CheckBox {
0119             id: minimizeActive
0120             Kirigami.FormData.label: i18nc("Part of a sentence: 'Clicking active task minimizes the task'", "Clicking active task:")
0121             text: i18nc("Part of a sentence: 'Clicking active task minimizes the task'", "Minimizes the task")
0122         }
0123 
0124         ComboBox {
0125             id: middleClickAction
0126             Kirigami.FormData.label: i18n("Middle-clicking any task:")
0127             Layout.fillWidth: true
0128             Layout.minimumWidth: Kirigami.Units.gridUnit * 14
0129             model: [
0130                 i18nc("Part of a sentence: 'Middle-clicking any task does nothing'", "Does nothing"),
0131                 i18nc("Part of a sentence: 'Middle-clicking any task closes window or group'", "Closes window or group"),
0132                 i18nc("Part of a sentence: 'Middle-clicking any task opens a new window'", "Opens a new window"),
0133                 i18nc("Part of a sentence: 'Middle-clicking any task minimizes/restores window or group'", "Minimizes/Restores window or group"),
0134                 i18nc("Part of a sentence: 'Middle-clicking any task toggles grouping'", "Toggles grouping"),
0135                 i18nc("Part of a sentence: 'Middle-clicking any task brings it to the current virtual desktop'", "Brings it to the current virtual desktop")
0136             ]
0137         }
0138 
0139         Item {
0140             Kirigami.FormData.isSection: true
0141         }
0142 
0143         CheckBox {
0144             id: wheelEnabled
0145             Kirigami.FormData.label: i18nc("Part of a sentence: 'Mouse wheel cycles through tasks'", "Mouse wheel:")
0146             text: i18nc("Part of a sentence: 'Mouse wheel cycles through tasks'", "Cycles through tasks")
0147         }
0148 
0149         RowLayout {
0150             // HACK: Workaround for Kirigami bug 434625
0151             // due to which a simple Layout.leftMargin on CheckBox doesn't work
0152             Item { implicitWidth: Kirigami.Units.gridUnit }
0153             CheckBox {
0154                 id: wheelSkipMinimized
0155                 text: i18n("Skip minimized tasks")
0156                 enabled: wheelEnabled.checked
0157             }
0158         }
0159 
0160         Item {
0161             Kirigami.FormData.isSection: true
0162         }
0163 
0164         CheckBox {
0165             id: showOnlyCurrentScreen
0166             Kirigami.FormData.label: i18n("Show only tasks:")
0167             text: i18n("From current screen")
0168         }
0169 
0170         CheckBox {
0171             id: showOnlyCurrentDesktop
0172             text: i18n("From current desktop")
0173         }
0174 
0175         CheckBox {
0176             id: showOnlyCurrentActivity
0177             text: i18n("From current activity")
0178         }
0179 
0180         CheckBox {
0181             id: showOnlyMinimized
0182             text: i18n("That are minimized")
0183         }
0184 
0185         Item {
0186             Kirigami.FormData.isSection: true
0187         }
0188 
0189         CheckBox {
0190             id: unhideOnAttention
0191             Kirigami.FormData.label: i18n("When panel is hidden:")
0192             text: i18n("Unhide when a window wants attention")
0193         }
0194 
0195         Item {
0196             Kirigami.FormData.isSection: true
0197         }
0198 
0199         ButtonGroup {
0200             id: reverseModeRadioButtonGroup
0201         }
0202 
0203         RadioButton {
0204             Kirigami.FormData.label: i18n("New tasks appear:")
0205             checked: !reverseMode.checked
0206             text: {
0207                 if (Plasmoid.formFactor === PlasmaCore.Types.Vertical) {
0208                     return i18n("On the bottom")
0209                 }
0210                 // horizontal
0211                 if (Qt.application.layoutDirection === Qt.LeftToRight) {
0212                     return i18n("To the right");
0213                 } else {
0214                     return i18n("To the left")
0215                 }
0216             }
0217             ButtonGroup.group: reverseModeRadioButtonGroup
0218             visible: reverseMode.visible
0219         }
0220 
0221         RadioButton {
0222             id: reverseMode
0223             checked: Plasmoid.configuration.reverseMode === true
0224             text: {
0225                 if (Plasmoid.formFactor === PlasmaCore.Types.Vertical) {
0226                     return i18n("On the Top")
0227                 }
0228                 // horizontal
0229                 if (Qt.application.layoutDirection === Qt.LeftToRight) {
0230                     return i18n("To the left");
0231                 } else {
0232                     return i18n("To the right");
0233                 }
0234             }
0235             ButtonGroup.group: reverseModeRadioButtonGroup
0236         }
0237 
0238     }
0239 }