From ad9dd9ec9a32d9380c12bce08d939d0f58d56555 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 2 Mar 2010 16:08:23 -0600 Subject: Sort by real name --- src/session-service.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/session-service.c b/src/session-service.c index 289bff8..5746f7d 100644 --- a/src/session-service.c +++ b/src/session-service.c @@ -406,7 +406,7 @@ compare_users_by_username (const gchar *a, UserData *user1 = (UserData *)a; UserData *user2 = (UserData *)b; - return g_strcmp0 (user1->user_name, user2->user_name); + return g_strcmp0 (user1->real_name, user2->real_name); } /* Builds up the menu for us */ -- cgit v1.2.3 From d723e8d4ed1e96c889d139a0f8c4cca117137c4a Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 2 Mar 2010 16:13:22 -0600 Subject: Creating a field for the user that has the real name in it, and a place for that to conflict. --- src/session-service.c | 10 +++++++++- src/users-service-dbus.c | 1 + src/users-service-dbus.h | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/session-service.c b/src/session-service.c index 5746f7d..21c5b8b 100644 --- a/src/session-service.c +++ b/src/session-service.c @@ -406,7 +406,15 @@ compare_users_by_username (const gchar *a, UserData *user1 = (UserData *)a; UserData *user2 = (UserData *)b; - return g_strcmp0 (user1->real_name, user2->real_name); + gint retval = g_strcmp0 (user1->real_name, user2->real_name); + + /* If they're the same, they're both in conflict. */ + if (retval == 0) { + user1->real_name_conflict = TRUE; + user2->real_name_conflict = TRUE; + } + + return retval; } /* Builds up the menu for us */ diff --git a/src/users-service-dbus.c b/src/users-service-dbus.c index 0e5c922..7d2112a 100644 --- a/src/users-service-dbus.c +++ b/src/users-service-dbus.c @@ -662,6 +662,7 @@ sync_users (UsersServiceDbus *self) user->shell = g_strdup (g_value_get_string (g_value_array_get_nth (values, 3))); user->login_count = g_value_get_int (g_value_array_get_nth (values, 4)); user->icon_url = g_strdup (g_value_get_string (g_value_array_get_nth (values, 5))); + user->real_name_conflict = FALSE; g_hash_table_insert (priv->users, g_strdup (user->user_name), diff --git a/src/users-service-dbus.h b/src/users-service-dbus.h index 41052f8..bba88a7 100644 --- a/src/users-service-dbus.h +++ b/src/users-service-dbus.h @@ -47,6 +47,8 @@ struct _UserData GList *sessions; + gboolean real_name_conflict; + UsersServiceDbus *service; }; -- cgit v1.2.3 From 03c045f5890162a53ed613fcf8f627f0dc3badc8 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 2 Mar 2010 16:17:12 -0600 Subject: If we ARE a conflicted name then we need to fallback into displaying the user name. --- src/session-service.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/session-service.c b/src/session-service.c index 21c5b8b..85874b6 100644 --- a/src/session-service.c +++ b/src/session-service.c @@ -506,7 +506,13 @@ rebuild_items (DbusmenuMenuitem *root, mi = dbusmenu_menuitem_new (); dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_TYPE, USER_ITEM_TYPE); + if (user->real_name_conflict) { + gchar * conflictedname = g_strdup_printf("%s (%s)", user->real_name, user->user_name); + dbusmenu_menuitem_property_set (mi, USER_ITEM_PROP_NAME, conflictedname); + g_free(conflictedname); + } else { dbusmenu_menuitem_property_set (mi, USER_ITEM_PROP_NAME, user->real_name); + } dbusmenu_menuitem_property_set_bool (mi, USER_ITEM_PROP_LOGGED_IN, user->sessions != NULL); dbusmenu_menuitem_child_append (root, mi); g_signal_connect (G_OBJECT (mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK (activate_user_session), user); -- cgit v1.2.3