← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/indicator-session/real-name-sorting-and-conflicts into lp:indicator-session

 

Ted Gould has proposed merging lp:~ted/indicator-session/real-name-sorting-and-conflicts into lp:indicator-session.

    Requested reviews:
    Indicator Applet Developers (indicator-applet-developers)


Making it so that the entires are sorted by real name.  And if they get
in conflict that the user name is shown to disambiguate them.

-- 
https://code.launchpad.net/~ted/indicator-session/real-name-sorting-and-conflicts/+merge/20496
Your team ayatana-commits is subscribed to branch lp:indicator-session.
=== modified file 'src/session-service.c'
--- src/session-service.c	2010-02-23 22:55:45 +0000
+++ src/session-service.c	2010-03-02 23:05:26 +0000
@@ -406,7 +406,15 @@
   UserData *user1 = (UserData *)a;
   UserData *user2 = (UserData *)b;
 
-  return g_strcmp0 (user1->user_name, user2->user_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 */
@@ -498,7 +506,13 @@
 
               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);

=== modified file 'src/users-service-dbus.c'
--- src/users-service-dbus.c	2010-03-02 03:34:08 +0000
+++ src/users-service-dbus.c	2010-03-02 23:05:26 +0000
@@ -656,6 +656,7 @@
           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),

=== modified file 'src/users-service-dbus.h'
--- src/users-service-dbus.h	2010-02-09 23:24:23 +0000
+++ src/users-service-dbus.h	2010-03-02 23:05:26 +0000
@@ -47,6 +47,8 @@
 
   GList   *sessions;
 
+  gboolean real_name_conflict;
+
   UsersServiceDbus *service;
 };
 


Follow ups