1/*
2    SPDX-FileCopyrightText: 2020 Andrey Butirsky <butirsky@gmail.com>
3    SPDX-License-Identifier: GPL-2.0-or-later
4*/
5
6import QtQuick 2.12
7import Qt.labs.platform 1.1
8import org.kde.plasma.plasmoid 2.0
9import org.kde.plasma.core 2.0 as PlasmaCore
10import org.kde.plasma.components 3.0 as PlasmaComponents3
11import org.kde.plasma.workspace.components 2.0
12
13Item {
14    id: root
15
16    function iconURL(name) {
17        if (name === "epo") {
18            return StandardPaths.locate(StandardPaths.GenericDataLocation, "kcmkeyboard/pics/epo.png")
19        }
20        return StandardPaths.locate(StandardPaths.GenericDataLocation,
21                        "kf5/locale/countries/" + name + "/flag.png")
22    }
23
24    signal layoutSelected(int layout)
25
26    function actionTriggered(selectedLayout) {
27        layoutSelected(selectedLayout)
28    }
29
30    Plasmoid.preferredRepresentation: Plasmoid.compactRepresentation
31
32    Plasmoid.compactRepresentation: KeyboardLayoutSwitcher {
33        Plasmoid.toolTipSubText: layoutNames.longName
34        Plasmoid.status: hasMultipleKeyboardLayouts ? PlasmaCore.Types.ActiveStatus : PlasmaCore.Types.HiddenStatus
35
36        Connections {
37            target: keyboardLayout
38
39            function onLayoutsListChanged() {
40                plasmoid.clearActions()
41
42                keyboardLayout.layoutsList.forEach(
43                            function(layout, index) {
44                                plasmoid.setAction(
45                                            index,
46                                            layout.longName,
47                                            iconURL(layout.shortName).toString().substring(7) // remove file:// scheme
48                                            )
49                            }
50                            )
51            }
52
53            function onLayoutChanged() {
54                root.Plasmoid.activated()
55            }
56        }
57
58        Connections {
59            target: root
60
61            function onLayoutSelected(layout) {
62               keyboardLayout.layout = layout
63            }
64        }
65
66        hoverEnabled: true
67
68        PlasmaCore.IconItem {
69            id: icon
70
71            source: iconURL(layoutNames.shortName)
72            visible: plasmoid.configuration.showFlag && source
73            anchors.fill: parent
74            active: containsMouse
75        }
76
77        PlasmaComponents3.Label {
78            text: layoutNames.displayName || layoutNames.shortName
79            visible: !icon.visible
80            anchors.fill: parent
81            horizontalAlignment: Text.AlignHCenter
82            fontSizeMode: Text.Fit
83            font.pointSize: height
84        }
85    }
86}
87