/* SPDX-FileCopyrightText: 2013 Eike Hein SPDX-License-Identifier: GPL-2.0-or-later */ import QtQuick import QtQuick.Controls as QQC2 import QtQuick.Layouts import org.kde.kcmutils as KCMUtils import org.kde.kirigami as Kirigami import org.kde.plasma.core as PlasmaCore import org.kde.plasma.plasmoid KCMUtils.SimpleKCM { readonly property bool plasmaPaAvailable: Qt.createComponent("PulseAudio.qml").status === Component.Ready readonly property bool plasmoidVertical: Plasmoid.formFactor === PlasmaCore.Types.Vertical readonly property bool iconOnly: Plasmoid.pluginName === "org.kde.plasma.icontasks" property alias cfg_showToolTips: showToolTips.checked property alias cfg_highlightWindows: highlightWindows.checked property bool cfg_indicateAudioStreams property alias cfg_fill: fill.checked property alias cfg_maxStripes: maxStripes.value property alias cfg_forceStripes: forceStripes.checked property alias cfg_taskMaxWidth: taskMaxWidth.currentIndex property int cfg_iconSpacing: 0 Component.onCompleted: { /* Don't rely on bindings for checking the radiobuttons When checking forceStripes, the condition for the checked value for the allow stripes button became true and that one got checked instead, stealing the checked state for the just clicked checkbox */ if (maxStripes.value === 1) { forbidStripes.checked = true; } else if (!Plasmoid.configuration.forceStripes && maxStripes.value > 1) { allowStripes.checked = true; } else if (Plasmoid.configuration.forceStripes && maxStripes.value > 1) { forceStripes.checked = true; } } Kirigami.FormLayout { QQC2.CheckBox { id: showToolTips Kirigami.FormData.label: i18nc("@label for several checkboxes", "General:") text: i18nc("@option:check section General", "Show small window previews when hovering over tasks") } QQC2.CheckBox { id: highlightWindows text: i18nc("@option:check section General", "Hide other windows when hovering over previews") } QQC2.CheckBox { id: indicateAudioStreams text: i18nc("@option:check section General", "Mark applications that play audio") checked: cfg_indicateAudioStreams && plasmaPaAvailable onToggled: cfg_indicateAudioStreams = checked enabled: plasmaPaAvailable } QQC2.CheckBox { id: fill text: i18nc("@option:check section General", "Fill free space on panel") } Item { Kirigami.FormData.isSection: true visible: !iconOnly } QQC2.ComboBox { id: taskMaxWidth visible: !iconOnly && !plasmoidVertical Kirigami.FormData.label: i18nc("@label:listbox", "Maximum task width:") model: [ i18nc("@item:inlistbox how wide a task item should be", "Narrow"), i18nc("@item:inlistbox how wide a task item should be", "Medium"), i18nc("@item:inlistbox how wide a task item should be", "Wide") ] } Item { Kirigami.FormData.isSection: true } QQC2.RadioButton { id: forbidStripes Kirigami.FormData.label: plasmoidVertical ? i18nc("@label for radio button group, completes sentence: … when panel is low on space etc.", "Use multi-column view:") : i18nc("@label for radio button group, completes sentence: … when panel is low on space etc.", "Use multi-row view:") onToggled: { if (checked) { maxStripes.value = 1 } } text: i18nc("@option:radio Never use multi-column view for Task Manager", "Never") } QQC2.RadioButton { id: allowStripes onToggled: { if (checked) { maxStripes.value = Math.max(2, maxStripes.value) } } text: i18nc("@option:radio completes sentence: Use multi-column/row view", "When panel is low on space and thick enough") } QQC2.RadioButton { id: forceStripes onToggled: { if (checked) { maxStripes.value = Math.max(2, maxStripes.value) } } text: i18nc("@option:radio completes sentence: Use multi-column/row view", "Always when panel is thick enough") } QQC2.SpinBox { id: maxStripes enabled: maxStripes.value > 1 Kirigami.FormData.label: plasmoidVertical ? i18nc("@label:spinbox maximum number of columns for tasks", "Maximum columns:") : i18nc("@label:spinbox maximum number of rows for tasks", "Maximum rows:") from: 1 } Item { Kirigami.FormData.isSection: true } QQC2.ComboBox { visible: iconOnly Kirigami.FormData.label: i18nc("@label:listbox", "Spacing between icons:") model: [ { "label": i18nc("@item:inlistbox Icon spacing", "Small"), "spacing": 0 }, { "label": i18nc("@item:inlistbox Icon spacing", "Normal"), "spacing": 1 }, { "label": i18nc("@item:inlistbox Icon spacing", "Large"), "spacing": 3 }, ] textRole: "label" enabled: !Kirigami.Settings.tabletMode currentIndex: { if (Kirigami.Settings.tabletMode) { return 2; // Large } switch (cfg_iconSpacing) { case 0: return 0; // Small case 1: return 1; // Normal case 3: return 2; // Large } } onActivated: index => { cfg_iconSpacing = model[currentIndex]["spacing"]; } } QQC2.Label { visible: Kirigami.Settings.tabletMode text: i18nc("@info:usagetip under a set of radio buttons when Touch Mode is on", "Automatically set to Large when in Touch mode") font: Kirigami.Theme.smallFont } } }