mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-06-11 08:57:21 +00:00
Group convergence controls in one place by adding Convergence Mode, Dynamic Tiling, and Auto Hide Panels to the Shell settings page. Move Auto Hide Panels out of General and keep Dynamic Tiling disabled when convergence is off or gaming mode is active.
286 lines
11 KiB
QML
286 lines
11 KiB
QML
/*
|
|
* SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
|
|
* SPDX-License-Identifier: LGPL-2.0-or-later
|
|
*/
|
|
|
|
import QtQuick 2.15
|
|
import QtQuick.Layouts 1.15
|
|
import QtQuick.Controls 2.15 as QQC2
|
|
|
|
import org.kde.kirigami as Kirigami
|
|
import org.kde.kcmutils as KCM
|
|
import org.kde.kirigamiaddons.formcard 1.0 as FormCard
|
|
import org.kde.plasma.private.mobileshell.shellsettingsplugin as ShellSettings
|
|
|
|
KCM.SimpleKCM {
|
|
id: root
|
|
|
|
title: i18n("Shell")
|
|
|
|
topPadding: 0
|
|
bottomPadding: 0
|
|
leftPadding: 0
|
|
rightPadding: 0
|
|
|
|
ColumnLayout {
|
|
FormCard.FormHeader {
|
|
title: i18n("General")
|
|
}
|
|
|
|
FormCard.FormCard {
|
|
FormCard.FormButtonDelegate {
|
|
id: shellVibrationsButton
|
|
text: i18n("Shell Vibrations")
|
|
onClicked: kcm.push("VibrationForm.qml")
|
|
}
|
|
|
|
FormCard.FormDelegateSeparator { above: shellVibrationsButton; below: animationsSwitch }
|
|
|
|
FormCard.FormSwitchDelegate {
|
|
id: animationsSwitch
|
|
text: i18n("Animations")
|
|
description: i18n("If this is off, animations will be reduced as much as possible.")
|
|
checked: ShellSettings.Settings.animationsEnabled
|
|
onCheckedChanged: {
|
|
if (checked != ShellSettings.Settings.animationsEnabled) {
|
|
ShellSettings.Settings.animationsEnabled = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
FormCard.FormDelegateSeparator { above: animationsSwitch; below: doubleTapWakeup }
|
|
|
|
FormCard.FormSwitchDelegate {
|
|
id: doubleTapWakeup
|
|
text: i18n("Double Tap to Wakeup")
|
|
description: i18n("When the screen is off, double tap to wakeup the device.")
|
|
checked: ShellSettings.KWinSettings.doubleTapWakeup
|
|
onCheckedChanged: {
|
|
if (checked != ShellSettings.KWinSettings.doubleTapWakeup) {
|
|
ShellSettings.KWinSettings.doubleTapWakeup = checked;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
FormCard.FormHeader {
|
|
title: i18n("Convergence")
|
|
}
|
|
|
|
FormCard.FormCard {
|
|
FormCard.FormSwitchDelegate {
|
|
id: convergenceModeSwitch
|
|
text: i18n("Convergence Mode")
|
|
description: i18n("Use desktop-style window placement, titlebar controls, Overview, and the dock.")
|
|
checked: ShellSettings.Settings.convergenceModeEnabled
|
|
onCheckedChanged: {
|
|
if (checked != ShellSettings.Settings.convergenceModeEnabled) {
|
|
ShellSettings.Settings.convergenceModeEnabled = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
FormCard.FormDelegateSeparator { above: convergenceModeSwitch; below: dynamicTilingSwitch }
|
|
|
|
FormCard.FormSwitchDelegate {
|
|
id: dynamicTilingSwitch
|
|
text: i18n("Dynamic Tiling")
|
|
description: i18n("Automatically arrange windows in convergence mode. Disabled while convergence mode is off or gaming mode is active.")
|
|
enabled: ShellSettings.Settings.convergenceModeEnabled && !ShellSettings.Settings.gamingModeEnabled
|
|
checked: ShellSettings.Settings.dynamicTilingEnabled
|
|
onCheckedChanged: {
|
|
if (checked != ShellSettings.Settings.dynamicTilingEnabled) {
|
|
ShellSettings.Settings.dynamicTilingEnabled = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
FormCard.FormDelegateSeparator { above: dynamicTilingSwitch; below: autoHidePanels }
|
|
|
|
FormCard.FormSwitchDelegate {
|
|
id: autoHidePanels
|
|
text: i18n("Auto Hide Panels")
|
|
description: i18n("Allow maximized or fullscreen applications to reclaim panel and dock space.")
|
|
checked: ShellSettings.Settings.autoHidePanelsEnabled
|
|
onCheckedChanged: {
|
|
if (checked != ShellSettings.Settings.autoHidePanelsEnabled) {
|
|
ShellSettings.Settings.autoHidePanelsEnabled = checked;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
FormCard.FormHeader {
|
|
title: i18n("Status Bar")
|
|
}
|
|
|
|
FormCard.FormCard {
|
|
FormCard.FormSwitchDelegate {
|
|
id: dateInStatusBar
|
|
text: i18n("Date in status bar")
|
|
description: i18n("If on, date will be shown next to the clock in the status bar.")
|
|
checked: ShellSettings.Settings.dateInStatusBar
|
|
onCheckedChanged: {
|
|
if (checked != ShellSettings.Settings.dateInStatusBar) {
|
|
ShellSettings.Settings.dateInStatusBar = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
FormCard.FormDelegateSeparator { above: quickSettingsButton; below: topLeftActionDrawerModeDelegate }
|
|
|
|
FormCard.FormSwitchDelegate {
|
|
id: showBatteryPercentage
|
|
text: i18n("Battery Percentage")
|
|
description: i18n("Show battery percentage in the status bar.")
|
|
checked: ShellSettings.Settings.showBatteryPercentage
|
|
onCheckedChanged: {
|
|
if (checked != ShellSettings.Settings.showBatteryPercentage) {
|
|
ShellSettings.Settings.showBatteryPercentage = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
FormCard.FormDelegateSeparator { above: quickSettingsButton; below: topLeftActionDrawerModeDelegate }
|
|
|
|
FormCard.FormComboBoxDelegate {
|
|
id: statusBarScaleFactorDelegate
|
|
|
|
text: i18n("Status Bar Size")
|
|
description: i18n("Size of the top panel (needs restart).")
|
|
|
|
model: [
|
|
{"name": i18nc("Status bar height", "Tiny"), "value": 1.0},
|
|
{"name": i18nc("Status bar height", "Small"), "value": 1.15},
|
|
{"name": i18nc("Status bar height", "Normal"), "value": 1.25},
|
|
{"name": i18nc("Status bar height", "Large"), "value": 1.5},
|
|
{"name": i18nc("Status bar height", "Very Large"), "value": 2.0}
|
|
]
|
|
|
|
textRole: "name"
|
|
valueRole: "value"
|
|
|
|
Component.onCompleted: {
|
|
currentIndex = indexOfValue(ShellSettings.Settings.statusBarScaleFactor);
|
|
dialog.parent = root;
|
|
}
|
|
onCurrentValueChanged: ShellSettings.Settings.statusBarScaleFactor = currentValue
|
|
}
|
|
|
|
}
|
|
|
|
FormCard.FormHeader {
|
|
title: i18n("Action Drawer")
|
|
}
|
|
|
|
FormCard.FormCard {
|
|
id: quickSettings
|
|
|
|
property string pinnedString: i18nc("Pinned action drawer mode", "Pinned Mode")
|
|
property string expandedString: i18nc("Expanded action drawer mode", "Expanded Mode")
|
|
|
|
FormCard.FormButtonDelegate {
|
|
id: quickSettingsButton
|
|
text: i18n("Quick Settings")
|
|
onClicked: kcm.push("QuickSettingsForm.qml")
|
|
}
|
|
|
|
FormCard.FormDelegateSeparator { above: quickSettingsButton; below: topLeftActionDrawerModeDelegate }
|
|
|
|
FormCard.FormComboBoxDelegate {
|
|
id: topLeftActionDrawerModeDelegate
|
|
text: i18n("Top Left Drawer Mode")
|
|
description: i18n("Mode when opening from the top left.")
|
|
|
|
model: [
|
|
{"name": quickSettings.pinnedString, "value": ShellSettings.Settings.Pinned},
|
|
{"name": quickSettings.expandedString, "value": ShellSettings.Settings.Expanded}
|
|
]
|
|
|
|
textRole: "name"
|
|
valueRole: "value"
|
|
|
|
Component.onCompleted: {
|
|
currentIndex = indexOfValue(ShellSettings.Settings.actionDrawerTopLeftMode);
|
|
dialog.parent = root;
|
|
}
|
|
onCurrentValueChanged: ShellSettings.Settings.actionDrawerTopLeftMode = currentValue
|
|
}
|
|
|
|
FormCard.FormDelegateSeparator { above: topLeftActionDrawerModeDelegate; below: topRightActionDrawerModeDelegate }
|
|
|
|
FormCard.FormComboBoxDelegate {
|
|
id: topRightActionDrawerModeDelegate
|
|
text: i18n("Top Right Drawer Mode")
|
|
description: i18n("Mode when opening from the top right.")
|
|
|
|
model: [
|
|
{"name": quickSettings.pinnedString, "value": ShellSettings.Settings.Pinned},
|
|
{"name": quickSettings.expandedString, "value": ShellSettings.Settings.Expanded}
|
|
]
|
|
|
|
textRole: "name"
|
|
valueRole: "value"
|
|
|
|
Component.onCompleted: {
|
|
currentIndex = indexOfValue(ShellSettings.Settings.actionDrawerTopRightMode);
|
|
dialog.parent = root
|
|
}
|
|
onCurrentValueChanged: ShellSettings.Settings.actionDrawerTopRightMode = currentValue
|
|
}
|
|
}
|
|
|
|
FormCard.FormHeader {
|
|
title: i18nc("@title:group, shortcuts available from lock screen", "Lock Screen Shortcuts")
|
|
}
|
|
|
|
FormCard.FormCard {
|
|
id: quickActionButtons
|
|
property string noneString: i18nc("@item:inlistbox", "None")
|
|
property string flashlightString: i18nc("@item:inlistbox", "Flashlight")
|
|
property string cameraString: i18nc("@item:inlistbox", "Camera")
|
|
|
|
FormCard.FormComboBoxDelegate {
|
|
id: lockscreenLeftButtonDelegate
|
|
text: i18nc("@label:listbox", "Left button")
|
|
|
|
model: [
|
|
{"name": quickActionButtons.noneString, "value": ShellSettings.Settings.None},
|
|
{"name": quickActionButtons.flashlightString, "value": ShellSettings.Settings.Flashlight}
|
|
// {"name": quickActionButtons.cameraString, "value": ShellSettings.Settings.Camera}
|
|
]
|
|
|
|
textRole: "name"
|
|
valueRole: "value"
|
|
|
|
Component.onCompleted: {
|
|
currentIndex = indexOfValue(ShellSettings.Settings.lockscreenLeftButtonAction);
|
|
dialog.parent = root;
|
|
}
|
|
onCurrentValueChanged: ShellSettings.Settings.lockscreenLeftButtonAction = currentValue
|
|
}
|
|
|
|
FormCard.FormDelegateSeparator { above: lockscreenRightButtonDelegate; below: lockscreenLeftButtonDelegate }
|
|
|
|
FormCard.FormComboBoxDelegate {
|
|
id: lockscreenRightButtonDelegate
|
|
text: i18nc("@label:listbox", "Right button")
|
|
|
|
model: [
|
|
{"name": quickActionButtons.noneString, "value": ShellSettings.Settings.None},
|
|
{"name": quickActionButtons.flashlightString, "value": ShellSettings.Settings.Flashlight}
|
|
// {"name": quickActionButtons.cameraString, "value": ShellSettings.Settings.Camera}
|
|
]
|
|
|
|
textRole: "name"
|
|
valueRole: "value"
|
|
|
|
Component.onCompleted: {
|
|
currentIndex = indexOfValue(ShellSettings.Settings.lockscreenRightButtonAction);
|
|
dialog.parent = root;
|
|
}
|
|
onCurrentValueChanged: ShellSettings.Settings.lockscreenRightButtonAction = currentValue
|
|
}
|
|
}
|
|
}
|
|
}
|