@@ -18,12 +18,14 @@ import QtQuick 2.4
18import QtQuick.Window 2.2
18import QtQuick.Window 2.2
19import Ubuntu.Settings.Menus 0.1 as Menus
19import Ubuntu.Settings.Menus 0.1 as Menus
20import Ubuntu.Settings.Components 0.1
20import Ubuntu.Settings.Components 0.1
21+import AccountsService 0.1
21import QMenuModel 0.1
22import QMenuModel 0.1
22import Utils 0.1 as Utils
23import Utils 0.1 as Utils
23import Ubuntu.Components.ListItems 1.3 as ListItems
24import Ubuntu.Components.ListItems 1.3 as ListItems
24import Ubuntu.Components 1.3
25import Ubuntu.Components 1.3
25import Unity.Session 0.1
26import Unity.Session 0.1
26import Unity.Platform 1.0
27import Unity.Platform 1.0
28+import Unity.Application 0.1
29 id: menuFactory
31 id: menuFactory
@@ -985,6 +987,55 @@ Item {
993+ Menus.CheckableMenu {
995+ objectName: "keymapMenu"
996+ property QtObject menuData: null
997+ property int menuIndex: -1
998+ property bool serverChecked: menuData && menuData.isToggled || false
1000+ text: menuData && menuData.label || ""
1001+ enabled: menuData && menuData.sensitive || false
1002+ checked: serverChecked
1003+ highlightWhenPressed: false
1005+ ServerPropertySynchroniser {
1007+ syncTimeout: Utils.Constants.indicatorValueTimeout
1009+ serverTarget: checkItem
1010+ serverProperty: "serverChecked"
1011+ userTarget: checkItem
1012+ userProperty: "checked"
1015+ menuModel.activate(checkItem.menuIndex);
1017+ print("!!! Keymap", checkItem.menuIndex, "triggered")
1018+ print("!!! Active action state:", actionGroup.activeAction.state)
1019+ if (MirFocusController.focusedSurface) {
1020+ print("!!! Switching keymap to:", AccountsService.keymaps[checkItem.menuIndex])
1021+ MirFocusController.focusedSurface.keymap = AccountsService.keymaps[checkItem.menuIndex];
1028+ busType: DBus.SessionBus
1029+ busName: "com.canonical.indicator.keyboard"
1030+ objectPath: "/com/canonical/indicator/keyboard"
1032+ property variant activeAction: action("active")
1034+ Component.onCompleted: actionGroup.start()
988 function load(modelData, context) {
1039 function load(modelData, context) {
989 // tweak indicator-session items
1040 // tweak indicator-session items
990 if (context === "indicator-session") {
1041 if (context === "indicator-session") {
@@ -995,6 +1046,11 @@ Item {
1049+ // specialize for indicator-keyboard
1050+ if (context === "indicator-keyboard" && modelData.isRadio) {
998 if (modelData.type !== undefined && modelData.type !== "") {
1054 if (modelData.type !== undefined && modelData.type !== "") {
999 var component = undefined;
1055 var component = undefined;