summaryrefslogtreecommitdiff
path: root/raveos-sddm-theme/sddm-rave-theme/Components/VirtualKeyboardButton.qml
blob: f109dd14fee052b15f5411af1b64f405d8e6f54b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Config created by Keyitdev https://git.rp1.hu/gabeszm/sddm-rave-theme
// Copyright (C) 2022-2025 Keyitdev
// Distributed under the GPLv3+ License https://www.gnu.org/licenses/gpl-3.0.html

import QtQuick 2.15
import QtQuick.Controls 2.15

Item {
    width: parent.width
    height: root.font.pointSize * 1.8

    Button {
        id: virtualKeyboardButton

        anchors.horizontalCenter: parent.horizontalCenter
        anchors.verticalCenter: parent.verticalCenter
        z: 1
        focusPolicy: Qt.TabFocus

        visible: virtualKeyboard.status == Loader.Ready && config.HideVirtualKeyboard == "false"
        checkable: true
        onClicked: virtualKeyboard.switchState()
        
        Keys.onReturnPressed: {
            toggle();
            virtualKeyboard.switchState();
        }
        Keys.onEnterPressed: {
            toggle();
            virtualKeyboard.switchState();
        }

        contentItem: Text {
            id: virtualKeyboardButtonText

            text: config.TranslateVirtualKeyboardButtonOff || "Virtual Keyboard (off)"
            font.pointSize: root.font.pointSize * 0.8
            font.family: root.font.family
            style: Text.Raised
            styleColor: Qt.rgba(0, 0, 0, 0.40)
            color: parent.visualFocus ? config.HoverVirtualKeyboardButtonTextColor : config.VirtualKeyboardButtonTextColor
        }

        background: Item {
            Rectangle {
                anchors.fill: parent
                anchors.topMargin: root.font.pointSize * 0.10
                radius: config.RoundCorners !== "" ? parseInt(config.RoundCorners) : root.font.pointSize * 0.8
                color: Qt.rgba(0, 0, 0, 0.20)
            }

            Rectangle {
                id: virtualKeyboardButtonBackground

                anchors.fill: parent
                radius: config.RoundCorners !== "" ? parseInt(config.RoundCorners) : root.font.pointSize * 0.8
                color: virtualKeyboardButton.down ? Qt.rgba(1, 1, 1, 0.20) : (virtualKeyboardButton.hovered ? Qt.rgba(1, 1, 1, 0.14) : Qt.rgba(1, 1, 1, 0.08))
                border.color: virtualKeyboardButton.visualFocus ? Qt.rgba(1, 1, 1, 0.70) : (virtualKeyboardButton.hovered ? Qt.rgba(1, 1, 1, 0.40) : Qt.rgba(1, 1, 1, 0.22))
                border.width: virtualKeyboardButton.visualFocus ? root.font.pointSize * 0.12 : root.font.pointSize * 0.08

                Behavior on color { ColorAnimation { duration: 150 } }
                Behavior on border.color { ColorAnimation { duration: 150 } }
            }
        }
        states: [
            State {
                name: "HoveredAndChecked"
                when: virtualKeyboardButton.checked && virtualKeyboardButton.hovered
                PropertyChanges {
                    target: virtualKeyboardButtonText
                    text: config.TranslateVirtualKeyboardButtonOn || "Virtual Keyboard (on)"
                    color: config.HoverVirtualKeyboardButtonTextColor
                }
            },
            State {
                name: "checked"
                when: virtualKeyboardButton.checked
                PropertyChanges {
                    target: virtualKeyboardButtonText
                    text: config.TranslateVirtualKeyboardButtonOn || "Virtual Keyboard (on)"
                }
            },
            State {
                name: "hovered"
                when: virtualKeyboardButton.hovered
                PropertyChanges {
                    target: virtualKeyboardButtonText
                    text: config.TranslateVirtualKeyboardButtonOff || "Virtual Keyboard (off)"
                    color: config.HoverVirtualKeyboardButtonTextColor
                }
            }
        ]
    }
}