@@ -37,6 +37,7 @@
37#define PROP_ENABLE_INDICATORS_WHILE_LOCKED QStringLiteral("EnableIndicatorsWhileLocked")
37#define PROP_ENABLE_INDICATORS_WHILE_LOCKED QStringLiteral("EnableIndicatorsWhileLocked")
38#define PROP_ENABLE_LAUNCHER_WHILE_LOCKED QStringLiteral("EnableLauncherWhileLocked")
38#define PROP_ENABLE_LAUNCHER_WHILE_LOCKED QStringLiteral("EnableLauncherWhileLocked")
39#define PROP_FAILED_LOGINS QStringLiteral("FailedLogins")
39#define PROP_FAILED_LOGINS QStringLiteral("FailedLogins")
40+#define PROP_INPUT_SOURCES QStringLiteral("InputSources")
40#define PROP_LICENSE_ACCEPTED QStringLiteral("LicenseAccepted")
41#define PROP_LICENSE_ACCEPTED QStringLiteral("LicenseAccepted")
41#define PROP_LICENSE_BASE_PATH QStringLiteral("LicenseBasePath")
42#define PROP_LICENSE_BASE_PATH QStringLiteral("LicenseBasePath")
42#define PROP_MOUSE_CURSOR_SPEED QStringLiteral("MouseCursorSpeed")
43#define PROP_MOUSE_CURSOR_SPEED QStringLiteral("MouseCursorSpeed")
@@ -55,6 +56,10 @@
55#define PROP_TOUCHPAD_TAP_TO_CLICK QStringLiteral("TouchpadTapToClick")
56#define PROP_TOUCHPAD_TAP_TO_CLICK QStringLiteral("TouchpadTapToClick")
56#define PROP_TOUCHPAD_TWO_FINGER_SCROLL QStringLiteral("TouchpadTwoFingerScroll")
57#define PROP_TOUCHPAD_TWO_FINGER_SCROLL QStringLiteral("TouchpadTwoFingerScroll")
59+using StringMap = QMap<QString,QString>;
60+using StringMapList = QList<StringMap>;
61+Q_DECLARE_METATYPE(StringMapList)
59QVariant primaryButtonConverter(const QVariant &value)
64QVariant primaryButtonConverter(const QVariant &value)
@@ -83,6 +88,7 @@ AccountsService::AccountsService(QObject* parent, const QString &user)
83 registerProperty(IFACE_ACCOUNTS_USER, PROP_BACKGROUND_FILE, QStringLiteral("backgroundFileChanged"));
88 registerProperty(IFACE_ACCOUNTS_USER, PROP_BACKGROUND_FILE, QStringLiteral("backgroundFileChanged"));
84 registerProperty(IFACE_ACCOUNTS_USER, PROP_EMAIL, QStringLiteral("emailChanged"));
89 registerProperty(IFACE_ACCOUNTS_USER, PROP_EMAIL, QStringLiteral("emailChanged"));
85 registerProperty(IFACE_ACCOUNTS_USER, PROP_REAL_NAME, QStringLiteral("realNameChanged"));
90 registerProperty(IFACE_ACCOUNTS_USER, PROP_REAL_NAME, QStringLiteral("realNameChanged"));
91+ registerProperty(IFACE_ACCOUNTS_USER, PROP_INPUT_SOURCES, QStringLiteral("keymapsChanged"));
86 registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED, QStringLiteral("hereEnabledChanged"));
92 registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED, QStringLiteral("hereEnabledChanged"));
87 registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH, QStringLiteral("hereLicensePathChanged"));
93 registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH, QStringLiteral("hereLicensePathChanged"));
88 registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED, QStringLiteral("enableLauncherWhileLockedChanged"));
94 registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED, QStringLiteral("enableLauncherWhileLockedChanged"));
@@ -246,6 +252,26 @@ void AccountsService::setEmail(const QString &email)
246 setProperty(IFACE_ACCOUNTS_USER, PROP_EMAIL, email);
252 setProperty(IFACE_ACCOUNTS_USER, PROP_EMAIL, email);
255+QStringList AccountsService::keymaps() const
257+ auto value = getProperty(IFACE_ACCOUNTS_USER, PROP_INPUT_SOURCES);
258+ QDBusArgument arg = value.value<QDBusArgument>();
259+ StringMapList maps = qdbus_cast<StringMapList>(arg);
260+ QStringList simplifiedMaps;
262+ Q_FOREACH(const StringMap &map, maps) {
263+ Q_FOREACH(const QString &entry, map) {
264+ simplifiedMaps.append(entry);
268+ if (!simplifiedMaps.isEmpty()) {
269+ return simplifiedMaps;
272+ return {QStringLiteral("us")};
249uint AccountsService::failedLogins() const
275uint AccountsService::failedLogins() const
251 return getProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS).toUInt();
277 return getProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS).toUInt();