shift-shell/components/mobileshell/qml/actiondrawer/quicksettings/QuickSettingsFullDelegate.qml
Devin Lin 3353cfc498 kcm: Add vibration setting for shell, and add vibrations
We can control shell vibrations from here, which can be replaced once there is a mechanism to control system-wide vibrations for QtFeedback.
2022-04-29 16:15:59 -04:00

91 lines
2.8 KiB
QML

/*
* SPDX-FileCopyrightText: 2015 Marco Martin <notmart@gmail.com>
* SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org>
*
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick 2.15
import QtQuick.Layouts 1.1
import org.kde.kirigami 2.12 as Kirigami
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.private.nanoshell 2.0 as NanoShell
import org.kde.plasma.private.mobileshell 1.0 as MobileShell
import org.kde.plasma.components 3.0 as PlasmaComponents
import "../../components" as Components
QuickSettingsDelegate {
id: root
padding: PlasmaCore.Units.smallSpacing * 2
iconItem: icon
// scale animation on press
zoomScale: mouseArea.pressed ? 0.9 : 1
background: Rectangle {
anchors.fill: parent
radius: PlasmaCore.Units.smallSpacing
border.width: 1
border.color: root.enabled ? root.enabledButtonBorderColor : root.disabledButtonBorderColor
color: {
if (root.enabled) {
return mouseArea.pressed ? root.enabledButtonPressedColor : root.enabledButtonColor
} else {
return mouseArea.pressed ? root.disabledButtonPressedColor : root.disabledButtonColor
}
}
}
contentItem: MouseArea {
id: mouseArea
onPressed: MobileShell.Haptics.buttonVibrate()
onClicked: root.delegateClick()
onPressAndHold: {
MobileShell.Haptics.buttonVibrate();
root.delegatePressAndHold();
}
cursorShape: Qt.PointingHandCursor
PlasmaCore.IconItem {
id: icon
anchors.top: parent.top
anchors.left: parent.left
implicitWidth: PlasmaCore.Units.iconSizes.small
implicitHeight: width
source: root.icon
}
ColumnLayout {
id: column
spacing: PlasmaCore.Units.smallSpacing
anchors.right: parent.right
anchors.left: parent.left
anchors.bottom: parent.bottom
PlasmaComponents.Label {
Layout.fillWidth: true
elide: Text.ElideRight
text: root.text
font.pointSize: PlasmaCore.Theme.defaultFont.pointSize * 0.75 // TODO base height off of size of delegate
font.weight: Font.Bold
}
Components.MarqueeLabel {
// if no status is given, just use On/Off
inputText: status ? status : (enabled ? i18n("On") : i18n("Off"))
rightPadding: 0 // root.rightPadding
opacity: 0.6
Layout.fillWidth: true
font.pointSize: PlasmaCore.Theme.defaultFont.pointSize * 0.75
}
}
}
}