From 5d9aeed7698ff5f38d12296762aa0c69f11fafa2 Mon Sep 17 00:00:00 2001 From: Andrea Cimitan Date: Fri, 9 May 2014 11:37:13 +0100 Subject: Add UID to lightdm gobject and qt bindings --- liblightdm-gobject/lightdm/user.h | 2 ++ liblightdm-gobject/user.c | 30 ++++++++++++++++++++++++++++-- liblightdm-qt/QLightDM/usersmodel.h | 3 ++- liblightdm-qt/usersmodel.cpp | 11 ++++++++--- 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/liblightdm-gobject/lightdm/user.h b/liblightdm-gobject/lightdm/user.h index b43fc516..f955ab29 100644 --- a/liblightdm-gobject/lightdm/user.h +++ b/liblightdm-gobject/lightdm/user.h @@ -106,6 +106,8 @@ gboolean lightdm_user_get_logged_in (LightDMUser *user); gboolean lightdm_user_get_has_messages (LightDMUser *user); +uid_t lightdm_user_get_uid (LightDMUser *user); + G_END_DECLS #endif /* LIGHTDM_USER_H_ */ diff --git a/liblightdm-gobject/user.c b/liblightdm-gobject/user.c index 4fb5f044..86b462f8 100644 --- a/liblightdm-gobject/user.c +++ b/liblightdm-gobject/user.c @@ -38,7 +38,8 @@ enum USER_PROP_LAYOUTS, USER_PROP_SESSION, USER_PROP_LOGGED_IN, - USER_PROP_HAS_MESSAGES + USER_PROP_HAS_MESSAGES, + USER_PROP_UID, }; enum @@ -526,6 +527,21 @@ lightdm_user_get_has_messages (LightDMUser *user) return common_user_get_has_messages (GET_USER_PRIVATE (user)->common_user); } +/** + * lightdm_user_get_uid: + * @user: A #LightDMUser + * + * Get the uid of a user. + * + * Return value: The uid of the given user + **/ +uid_t +lightdm_user_get_display_name (LightDMUser *user) +{ + g_return_val_if_fail (LIGHTDM_IS_USER (user), NULL); + return common_user_get_uid (GET_USER_PRIVATE (user)->common_user); +} + static void lightdm_user_init (LightDMUser *user) { @@ -599,6 +615,9 @@ lightdm_user_get_property (GObject *object, case USER_PROP_HAS_MESSAGES: g_value_set_boolean (value, lightdm_user_get_has_messages (self)); break; + case USER_PROP_UID: + g_value_set_uint64 (value, lightdm_user_get_uid (self)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -620,7 +639,7 @@ static void lightdm_user_class_init (LightDMUserClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - + g_type_class_add_private (klass, sizeof (LightDMUserPrivate)); object_class->set_property = lightdm_user_set_property; @@ -718,6 +737,13 @@ lightdm_user_class_init (LightDMUserClass *klass) "TRUE if the user is has waiting messages", FALSE, G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + USER_PROP_UID, + g_param_spec_string ("uid", + "uid", + "User UID", + NULL, + G_PARAM_READABLE)); /** * LightDMUser::changed: diff --git a/liblightdm-qt/QLightDM/usersmodel.h b/liblightdm-qt/QLightDM/usersmodel.h index d803c41c..9407e46e 100644 --- a/liblightdm-qt/QLightDM/usersmodel.h +++ b/liblightdm-qt/QLightDM/usersmodel.h @@ -37,7 +37,8 @@ public: SessionRole, HasMessagesRole, ImagePathRole, - BackgroundPathRole + BackgroundPathRole, + UidRole }; int rowCount(const QModelIndex &parent) const; diff --git a/liblightdm-qt/usersmodel.cpp b/liblightdm-qt/usersmodel.cpp index f45a79e2..558cd329 100644 --- a/liblightdm-qt/usersmodel.cpp +++ b/liblightdm-qt/usersmodel.cpp @@ -29,6 +29,7 @@ public: QString session; bool isLoggedIn; bool hasMessages; + quint64 uid; QString displayName() const; }; @@ -66,7 +67,7 @@ UsersModelPrivate::UsersModelPrivate(UsersModel* parent) : { #if !defined(GLIB_VERSION_2_36) g_type_init(); -#endif +#endif } UsersModelPrivate::~UsersModelPrivate() @@ -99,6 +100,7 @@ void UsersModelPrivate::loadUsers() user.session = QString::fromUtf8(lightdm_user_get_session(ldmUser)); user.isLoggedIn = lightdm_user_get_logged_in(ldmUser); user.hasMessages = lightdm_user_get_has_messages(ldmUser); + user.uid = (quint64)lightdm_user_get_uid(ldmUser); users.append(user); } @@ -109,8 +111,6 @@ void UsersModelPrivate::loadUsers() g_signal_connect(lightdm_user_list_get_instance(), "user-removed", G_CALLBACK (cb_userRemoved), this); } - - void UsersModelPrivate::cb_userAdded(LightDMUserList *user_list, LightDMUser *ldmUser, gpointer data) { Q_UNUSED(user_list) @@ -126,6 +126,7 @@ void UsersModelPrivate::cb_userAdded(LightDMUserList *user_list, LightDMUser *ld user.background = QString::fromUtf8(lightdm_user_get_background(ldmUser)); user.isLoggedIn = lightdm_user_get_logged_in(ldmUser); user.hasMessages = lightdm_user_get_has_messages(ldmUser); + user.uid = (quint64)lightdm_user_get_uid(ldmUser); that->users.append(user); that->q_func()->endInsertRows(); @@ -148,6 +149,7 @@ void UsersModelPrivate::cb_userChanged(LightDMUserList *user_list, LightDMUser * that->users[i].background = QString::fromUtf8(lightdm_user_get_background(ldmUser)); that->users[i].isLoggedIn = lightdm_user_get_logged_in(ldmUser); that->users[i].hasMessages = lightdm_user_get_has_messages(ldmUser); + that->users[i].uid = (quint64)lightdm_user_get_uid(ldmUser); QModelIndex index = that->q_ptr->createIndex(i, 0); that->q_ptr->dataChanged(index, index); @@ -189,6 +191,7 @@ UsersModel::UsersModel(QObject *parent) : roles[SessionRole] = "session"; roles[HasMessagesRole] = "hasMessages"; roles[ImagePathRole] = "imagePath"; + roles[UidRole] = "uid"; setRoleNames(roles); d->loadUsers(); @@ -240,6 +243,8 @@ QVariant UsersModel::data(const QModelIndex &index, int role) const return d->users[row].hasMessages; case UsersModel::ImagePathRole: return d->users[row].image; + case UsersModel::UidRole: + return d->users[row].uid; } return QVariant(); -- cgit v1.2.1 From 3efd40f4f4aee4fb36d8e249313e7b9c3ec2bd82 Mon Sep 17 00:00:00 2001 From: Andrea Cimitan Date: Mon, 12 May 2014 09:14:48 +0100 Subject: Rename function --- liblightdm-gobject/user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liblightdm-gobject/user.c b/liblightdm-gobject/user.c index 86b462f8..7d54b6d2 100644 --- a/liblightdm-gobject/user.c +++ b/liblightdm-gobject/user.c @@ -536,7 +536,7 @@ lightdm_user_get_has_messages (LightDMUser *user) * Return value: The uid of the given user **/ uid_t -lightdm_user_get_display_name (LightDMUser *user) +lightdm_user_get_uid (LightDMUser *user) { g_return_val_if_fail (LIGHTDM_IS_USER (user), NULL); return common_user_get_uid (GET_USER_PRIVATE (user)->common_user); -- cgit v1.2.1 From b3c54e5460ed04532ffba6535e7c69ceaeef3d70 Mon Sep 17 00:00:00 2001 From: Andrea Cimitan Date: Mon, 12 May 2014 12:14:57 +0100 Subject: Right version --- debian/liblightdm-gobject-1-0.symbols | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/liblightdm-gobject-1-0.symbols b/debian/liblightdm-gobject-1-0.symbols index acba1113..83321caf 100644 --- a/debian/liblightdm-gobject-1-0.symbols +++ b/debian/liblightdm-gobject-1-0.symbols @@ -78,7 +78,7 @@ liblightdm-gobject-1.so.0 liblightdm-gobject-1-0 #MINVER# lightdm_user_get_real_name@Base 0.9.2 lightdm_user_get_session@Base 0.9.2 lightdm_user_get_type@Base 0.9.2 - lightdm_user_get_uid@Base 1.11.1-0ubuntu1 + lightdm_user_get_uid@Base 1.11.1 lightdm_user_list_get_instance@Base 0.9.2 lightdm_user_list_get_length@Base 0.9.2 lightdm_user_list_get_type@Base 0.9.2 -- cgit v1.2.1 From b7edc8049afdcfbb6dd5bf3bc3d3bdd82606f1fa Mon Sep 17 00:00:00 2001 From: Andrea Cimitan Date: Mon, 12 May 2014 12:32:49 +0100 Subject: Remove unwanted mod --- common/user-list.c | 6 ------ liblightdm-gobject/language.c | 28 ++-------------------------- po/POTFILES.in | 1 - src/seat.c | 2 +- tests/scripts/language-env.conf | 4 ++-- 5 files changed, 5 insertions(+), 36 deletions(-) diff --git a/common/user-list.c b/common/user-list.c index 618c7863..3b8d5a15 100644 --- a/common/user-list.c +++ b/common/user-list.c @@ -1219,12 +1219,6 @@ load_user_values (CommonUser *user) if (!priv->path) load_dmrc (user); - - if (g_strcmp0 (priv->session, "ubuntu-2d") == 0) - { - g_free(priv->session); - priv->session = g_strdup ("ubuntu"); - } } /** diff --git a/liblightdm-gobject/language.c b/liblightdm-gobject/language.c index 9f4c183c..4dce374a 100644 --- a/liblightdm-gobject/language.c +++ b/liblightdm-gobject/language.c @@ -40,7 +40,7 @@ static GList *languages = NULL; static void update_languages (void) { - gchar *command = "/usr/share/language-tools/language-options"; + gchar *command = "locale -a"; gchar *stdout_text = NULL, *stderr_text = NULL; gint exit_status; gboolean result; @@ -161,39 +161,15 @@ lightdm_get_language (void) { const gchar *lang; GList *link; - static const gchar *short_lang = NULL; - - if (short_lang) - goto match; lang = g_getenv ("LANG"); if (!lang) return NULL; - /* Convert to a short form language code */ - gchar *command = g_strconcat ("/usr/share/language-tools/language-validate ", lang, NULL); - gchar *out; - GError *error = NULL; - if (g_spawn_command_line_sync (command, &out, NULL, NULL, &error)) - { - short_lang = g_strdup (g_strchomp (out)); - g_free (out); - g_free (command); - } - else - { - g_warning ("Failed to run '%s': %s", command, error->message); - g_error_free (error); - g_free (command); - return NULL; - } - -match: - for (link = lightdm_get_languages (); link; link = link->next) { LightDMLanguage *language = link->data; - if (lightdm_language_matches (language, short_lang)) + if (lightdm_language_matches (language, lang)) return language; } diff --git a/po/POTFILES.in b/po/POTFILES.in index e9e99699..2668b565 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,6 +1,5 @@ # List of source files containing translatable strings. # Please keep this file sorted alphabetically. [encoding: UTF-8] -debian/guest-session-auto.sh src/lightdm.c src/dm-tool.c diff --git a/src/seat.c b/src/seat.c index eed8a92a..b10bdeb8 100644 --- a/src/seat.c +++ b/src/seat.c @@ -955,7 +955,7 @@ configure_session (Session *session, SessionConfig *config, const gchar *session session_set_env (session, "XDG_CURRENT_DESKTOP", desktop_name); if (language && language[0] != '\0') { - session_set_env (session, "LANGUAGE", language); + session_set_env (session, "LANG", language); session_set_env (session, "GDM_LANG", language); } } diff --git a/tests/scripts/language-env.conf b/tests/scripts/language-env.conf index 7963d565..2f18924f 100644 --- a/tests/scripts/language-env.conf +++ b/tests/scripts/language-env.conf @@ -24,8 +24,8 @@ user-session=default #?SESSION-X-0 CONNECT-XSERVER # Check environment variables -#?*SESSION-X-0 READ-ENV NAME=LANGUAGE -#?SESSION-X-0 READ-ENV NAME=LANGUAGE VALUE=en_AU +#?*SESSION-X-0 READ-ENV NAME=LANG +#?SESSION-X-0 READ-ENV NAME=LANG VALUE=en_AU #?*SESSION-X-0 READ-ENV NAME=GDM_LANG #?SESSION-X-0 READ-ENV NAME=GDM_LANG VALUE=en_AU -- cgit v1.2.1