mirror of
https://github.com/Snigdha-OS/snigdhaos-sddm-config.git
synced 2025-09-05 16:06:36 +02:00
🚀 feat: add keyboard button fncs
This commit is contained in:
61
KeyboardButton.qml
Normal file
61
KeyboardButton.qml
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
SPDX-FileCopyrightText: 2016 David Edmundson <davidedmundson@kde.org>
|
||||
SPDX-FileCopyrightText: 2022 Aleix Pol Gonzalez <aleixpol@kde.org>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
import QtQuick 2.15
|
||||
|
||||
import org.kde.plasma.components 3.0 as PlasmaComponents
|
||||
import org.kde.kirigami 2.20 as Kirigami
|
||||
|
||||
PlasmaComponents.ToolButton {
|
||||
id: root
|
||||
|
||||
property int currentIndex: keyboard.currentLayout
|
||||
onCurrentIndexChanged: keyboard.currentLayout = currentIndex
|
||||
|
||||
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Keyboard Layout: %1", keyboard.layouts[currentIndex].longName)
|
||||
visible: keyboard.layouts.length > 1
|
||||
|
||||
checkable: true
|
||||
checked: menu.opened
|
||||
onToggled: {
|
||||
if (checked) {
|
||||
menu.popup(root, 0, 0)
|
||||
} else {
|
||||
menu.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
signal keyboardLayoutChanged()
|
||||
|
||||
PlasmaComponents.Menu {
|
||||
id: menu
|
||||
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
||||
Kirigami.Theme.inherit: false
|
||||
|
||||
onAboutToShow: {
|
||||
if (instantiator.model === null) {
|
||||
let layouts = keyboard.layouts;
|
||||
layouts.sort((a, b) => a.longName.localeCompare(b.longName));
|
||||
instantiator.model = layouts;
|
||||
}
|
||||
}
|
||||
|
||||
Instantiator {
|
||||
id: instantiator
|
||||
model: null
|
||||
onObjectAdded: (index, object) => menu.insertItem(index, object)
|
||||
onObjectRemoved: (index, object) => menu.removeItem(object)
|
||||
delegate: PlasmaComponents.MenuItem {
|
||||
text: modelData.longName
|
||||
onTriggered: {
|
||||
keyboard.currentLayout = keyboard.layouts.indexOf(modelData)
|
||||
root.keyboardLayoutChanged()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user