← Back to team overview

ayatana-commits team mailing list archive

[Branch ~indicator-applet-developers/indicator-me/trunk] Rev 91: merging in a branch full of little fixes and typos

 

Merge authors:
  David Barth (dbarth)
Related merge proposals:
  https://code.launchpad.net/~dbarth/indicator-me/display-mode-gconf-key/+merge/21968
  proposed by: David Barth (dbarth)
  review: Needs Information - Ted Gould (ted)
  https://code.launchpad.net/~dbarth/indicator-me/misc-fixes/+merge/21967
  proposed by: David Barth (dbarth)
  review: Approve - Ted Gould (ted)
------------------------------------------------------------
revno: 91 [merge]
committer: David Barth <david.barth@xxxxxxxxxxxxx>
branch nick: indicator-me
timestamp: Wed 2010-03-24 10:40:08 +0100
message:
  merging in a branch full of little fixes and typos
added:
  data/icons/16x16/status/user-indeterminate.png
  data/icons/22x22/status/user-indeterminate.png
  data/icons/24x24/status/user-indeterminate.png
  data/icons/32x32/status/user-indeterminate.png
  data/icons/48x48/status/user-indeterminate.png
  data/icons/scalable/status/user-indeterminate.svg
modified:
  data/icons/16x16/status/Makefile.am
  data/icons/22x22/status/Makefile.am
  data/icons/24x24/status/Makefile.am
  data/icons/32x32/status/Makefile.am
  data/icons/48x48/status/Makefile.am
  data/icons/scalable/status/Makefile.am
  src/indicator-me.c
  src/me-service-gwibber.c
  src/me-service.c


--
lp:indicator-me
https://code.launchpad.net/~indicator-applet-developers/indicator-me/trunk

Your team ayatana-commits is subscribed to branch lp:indicator-me.
To unsubscribe from this branch go to https://code.launchpad.net/~indicator-applet-developers/indicator-me/trunk/+edit-subscription.
=== modified file 'data/icons/16x16/status/Makefile.am'
--- data/icons/16x16/status/Makefile.am	2009-09-16 20:59:37 +0000
+++ data/icons/16x16/status/Makefile.am	2010-03-23 18:36:30 +0000
@@ -2,6 +2,7 @@
 iconsdir = $(INDICATORICONSDIR)/hicolor/16x16/status
 
 icons_DATA =  \
+	user-indeterminate.png			\
 	user-available.png			\
 	user-offline.png		\
 	user-away.png			\

=== added file 'data/icons/16x16/status/user-indeterminate.png'
Binary files data/icons/16x16/status/user-indeterminate.png	1970-01-01 00:00:00 +0000 and data/icons/16x16/status/user-indeterminate.png	2010-03-23 18:36:30 +0000 differ
=== modified file 'data/icons/22x22/status/Makefile.am'
--- data/icons/22x22/status/Makefile.am	2009-09-16 20:59:37 +0000
+++ data/icons/22x22/status/Makefile.am	2010-03-23 18:36:30 +0000
@@ -2,6 +2,7 @@
 iconsdir = $(INDICATORICONSDIR)/hicolor/22x22/status
 
 icons_DATA =  \
+	user-indeterminate.png			\
 	user-available.png			\
 	user-offline.png		\
 	user-away.png			\

=== added file 'data/icons/22x22/status/user-indeterminate.png'
Binary files data/icons/22x22/status/user-indeterminate.png	1970-01-01 00:00:00 +0000 and data/icons/22x22/status/user-indeterminate.png	2010-03-23 18:36:30 +0000 differ
=== modified file 'data/icons/24x24/status/Makefile.am'
--- data/icons/24x24/status/Makefile.am	2009-09-16 20:59:37 +0000
+++ data/icons/24x24/status/Makefile.am	2010-03-23 18:36:30 +0000
@@ -2,6 +2,7 @@
 iconsdir = $(INDICATORICONSDIR)/hicolor/24x24/status
 
 icons_DATA =  \
+	user-indeterminate.png			\
 	user-available.png			\
 	user-offline.png		\
 	user-away.png			\

=== added file 'data/icons/24x24/status/user-indeterminate.png'
Binary files data/icons/24x24/status/user-indeterminate.png	1970-01-01 00:00:00 +0000 and data/icons/24x24/status/user-indeterminate.png	2010-03-23 18:36:30 +0000 differ
=== modified file 'data/icons/32x32/status/Makefile.am'
--- data/icons/32x32/status/Makefile.am	2009-09-16 20:59:37 +0000
+++ data/icons/32x32/status/Makefile.am	2010-03-23 18:36:30 +0000
@@ -2,6 +2,7 @@
 iconsdir = $(INDICATORICONSDIR)/hicolor/32x32/status
 
 icons_DATA =  \
+	user-indeterminate.png			\
 	user-available.png			\
 	user-offline.png		\
 	user-away.png			\

=== added file 'data/icons/32x32/status/user-indeterminate.png'
Binary files data/icons/32x32/status/user-indeterminate.png	1970-01-01 00:00:00 +0000 and data/icons/32x32/status/user-indeterminate.png	2010-03-23 18:36:30 +0000 differ
=== modified file 'data/icons/48x48/status/Makefile.am'
--- data/icons/48x48/status/Makefile.am	2009-09-16 20:59:37 +0000
+++ data/icons/48x48/status/Makefile.am	2010-03-23 18:36:30 +0000
@@ -2,6 +2,7 @@
 iconsdir = $(INDICATORICONSDIR)/hicolor/48x48/status
 
 icons_DATA =  \
+	user-indeterminate.png			\
 	user-available.png			\
 	user-offline.png		\
 	user-away.png			\

=== added file 'data/icons/48x48/status/user-indeterminate.png'
Binary files data/icons/48x48/status/user-indeterminate.png	1970-01-01 00:00:00 +0000 and data/icons/48x48/status/user-indeterminate.png	2010-03-23 18:36:30 +0000 differ
=== modified file 'data/icons/scalable/status/Makefile.am'
--- data/icons/scalable/status/Makefile.am	2009-09-16 20:59:37 +0000
+++ data/icons/scalable/status/Makefile.am	2010-03-23 18:36:30 +0000
@@ -2,6 +2,7 @@
 iconsdir = $(INDICATORICONSDIR)/hicolor/scalable/status
 
 icons_DATA =  \
+	user-indeterminate.svg			\
 	user-available.svg			\
 	user-offline.svg		\
 	user-away.svg			\

=== added file 'data/icons/scalable/status/user-indeterminate.svg'
--- data/icons/scalable/status/user-indeterminate.svg	1970-01-01 00:00:00 +0000
+++ data/icons/scalable/status/user-indeterminate.svg	2010-03-23 18:36:30 +0000
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="16px"
+   height="16px"
+   id="svg4908"
+   sodipodi:version="0.32"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="user-available.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/andreas/project/gossip/16x16/status-avaible.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90"
+   sodipodi:modified="true"
+   version="1.1">
+  <defs
+     id="defs4910">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 8 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="16 : 8 : 1"
+       inkscape:persp3d-origin="8 : 5.3333333 : 1"
+       id="perspective13" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5899">
+      <stop
+         style="stop-color:#7fe719;stop-opacity:1"
+         offset="0"
+         id="stop5901" />
+      <stop
+         style="stop-color:#67bc13;stop-opacity:1"
+         offset="1"
+         id="stop5903" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5899"
+       id="radialGradient5905"
+       cx="9.466115"
+       cy="8.9839392"
+       fx="9.466115"
+       fy="8.9839392"
+       r="6.7474474"
+       gradientTransform="matrix(1.1671849,-3.2679277e-3,2.7524467e-3,1.0150183,-1.6222549,-0.2024225)"
+       gradientUnits="userSpaceOnUse" />
+    <filter
+       id="filter2819"
+       inkscape:label="Desaturate"
+       x="0"
+       y="0"
+       width="1"
+       height="1"
+       inkscape:menu="Color"
+       inkscape:menu-tooltip="Render in shades of gray by reducing saturation to zero"
+       color-interpolation-filters="sRGB">
+      <feColorMatrix
+         id="feColorMatrix2821"
+         type="saturate"
+         values="0" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.197802"
+     inkscape:cx="14.452639"
+     inkscape:cy="6.4458104"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="1398"
+     inkscape:window-height="969"
+     inkscape:window-x="0"
+     inkscape:window-y="26"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata4913">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#radialGradient5905);fill-opacity:1;stroke:#376e01;stroke-width:0.97113216000000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter2819)"
+       id="path4926"
+       sodipodi:cx="7.9737625"
+       sodipodi:cy="7.7221532"
+       sodipodi:rx="6.2618814"
+       sodipodi:ry="6.3632426"
+       d="M 14.235644 7.7221532 A 6.2618814 6.3632426 0 1 1  1.7118812,7.7221532 A 6.2618814 6.3632426 0 1 1  14.235644 7.7221532 z"
+       transform="matrix(1.0380267,0,0,1.0214918,-0.2769783,0.1118841)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.4;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.14770162;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path5897"
+       sodipodi:cx="7.9737625"
+       sodipodi:cy="7.7221532"
+       sodipodi:rx="6.2618814"
+       sodipodi:ry="6.3632426"
+       d="M 14.235644 7.7221532 A 6.2618814 6.3632426 0 1 1  1.7118812,7.7221532 A 6.2618814 6.3632426 0 1 1  14.235644 7.7221532 z"
+       transform="matrix(0.8783303,0,0,0.8643392,0.996403,1.3254404)" />
+  </g>
+</svg>

=== modified file 'src/indicator-me.c'
--- src/indicator-me.c	2010-03-16 11:26:04 +0000
+++ src/indicator-me.c	2010-03-24 09:38:22 +0000
@@ -137,14 +137,19 @@
 static void
 username_cb (DBusGProxy * proxy, char * username, GError *error, gpointer userdata)
 {
-  if (label == NULL)
+  if (label == NULL) {
     label = GTK_LABEL(gtk_label_new(NULL));
+    if (label == NULL) return;
+  }
 
   if (username != NULL && username[0] != '\0') {
     g_debug ("Updating username label");
     gtk_label_set_text (label, username);
     gtk_widget_show(GTK_WIDGET(label));
+  } else {
+    gtk_widget_hide(GTK_WIDGET(label));
   }
+
 }
 
 static GtkLabel *
@@ -214,8 +219,13 @@
 				g_error_free(error);
 			}
 
+      if (status_proxy == NULL) return;
+
 			dbus_g_proxy_add_signal(status_proxy, "StatusIconsChanged", G_TYPE_STRING, G_TYPE_INVALID);
 			dbus_g_proxy_connect_signal(status_proxy, "StatusIconsChanged", G_CALLBACK(status_icon_changed), NULL, NULL);
+
+			dbus_g_proxy_add_signal(status_proxy, "UserChanged", G_TYPE_STRING, G_TYPE_INVALID);
+			dbus_g_proxy_connect_signal(status_proxy, "UserChanged", G_CALLBACK(username_cb), NULL, NULL);
 		}
 
 		org_ayatana_indicator_me_service_status_icons_async(status_proxy, status_icon_cb, NULL);
@@ -240,22 +250,27 @@
 }
 
 static void
-entry_activate_cb (GtkEntry *entry, DbusmenuMenuitem *gmi)
+entry_activate_cb (GtkEntry *entry, DbusmenuMenuitem *mi)
 {
+  g_return_if_fail (GTK_IS_ENTRY (entry));
+  g_return_if_fail (DBUSMENU_IS_MENUITEM (mi));
+
 	GValue value = { 0 };
 	g_value_init (&value, G_TYPE_STRING);
 	g_value_set_static_string (&value, gtk_entry_get_text (entry));
 
 	g_debug ("user typed: %s", g_value_get_string (&value));
 
-	dbusmenu_menuitem_handle_event (gmi, "send", &value, gtk_get_current_event_time());
+	dbusmenu_menuitem_handle_event (mi, "send", &value, gtk_get_current_event_time());
 }
 
 static gboolean
 menu_visibility_changed (GtkWidget          *widget,
                          IdoEntryMenuItem   *menuitem)
 {
-  gtk_menu_shell_select_item (GTK_MENU_SHELL (widget), GTK_WIDGET (menuitem));
+  if (GTK_IS_WIDGET (widget)
+      && IDO_IS_ENTRY_MENU_ITEM (menuitem))
+    gtk_menu_shell_select_item (GTK_MENU_SHELL (widget), GTK_WIDGET (menuitem));
 
   return FALSE;
 }
@@ -298,7 +313,8 @@
 	/* disconnect the activate signal that newitem_base connected with the wrong
 	   widget, ie menuitem, and re-connect it with the /entry/ instead */
 	gulong signal_id = g_signal_handler_find (GTK_MENU_ITEM (ido), G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, parent);
-	g_signal_handler_disconnect(GTK_MENU_ITEM (ido), signal_id);
+  if (signal_id > 0)
+    g_signal_handler_disconnect(GTK_MENU_ITEM (ido), signal_id);
 
 	g_signal_connect (DBUSMENU_MENUITEM (newitem), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK (entry_prop_change_cb), entry);
 	g_signal_connect (GTK_ENTRY (entry), "activate", G_CALLBACK (entry_activate_cb), newitem);
@@ -316,6 +332,8 @@
 	if (!g_strcmp0(prop, DBUSMENU_ABOUT_ME_MENUITEM_PROP_ICON)) {
     /* reload the avatar icon */
     about_me_menu_item_load_avatar (item, g_value_get_string(value));
+  } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_VISIBLE)) {
+    /* normal, ignore */
 	} else {
 		g_warning("Indicator Item property '%s' unknown", prop);
 	}

=== modified file 'src/me-service-gwibber.c'
--- src/me-service-gwibber.c	2010-03-17 16:19:44 +0000
+++ src/me-service-gwibber.c	2010-03-24 09:38:22 +0000
@@ -297,8 +297,8 @@
 									  DBUS_SERVICE_ADDRESS,
 									  DBUS_SERVICE_ACCOUNTS_OBJECT,
 									  DBUS_SERVICE_ACCOUNTS_INTERFACE);
-		if (priv->service_proxy == NULL) {
-			g_warning ("can't setup service_proxy");
+		if (priv->accounts_proxy == NULL) {
+			g_warning ("can't setup accounts_proxy");
 			return;
 		}
 	}

=== modified file 'src/me-service.c'
--- src/me-service.c	2010-03-16 20:42:59 +0000
+++ src/me-service.c	2010-03-23 18:40:12 +0000
@@ -90,6 +90,7 @@
 static StatusProviderStatus global_status = STATUS_PROVIDER_STATUS_DISCONNECTED;
 static GFileMonitor *avatar_monitor = NULL;
 static DbusmenuMenuitem *broadcast_field = NULL;
+static DbusmenuMenuitem * useritem = NULL;
 
 static void
 status_update (void) {
@@ -188,6 +189,7 @@
   if (! dbusmenu_menuitem_property_get_bool (broadcast_field, DBUSMENU_MENUITEM_PROP_VISIBLE))
     dbusmenu_menuitem_property_set_bool (broadcast_field, DBUSMENU_MENUITEM_PROP_VISIBLE, TRUE);
 
+#if 0
   if (status == GWIBBER_SERVICE_STATUS_RUNNING) {
     g_debug ("enabling the broadcast field");
     dbusmenu_menuitem_property_set_bool (broadcast_field, DBUSMENU_MENUITEM_PROP_ENABLED, TRUE);
@@ -195,6 +197,7 @@
     g_debug ("disabling the broadcast field");
     dbusmenu_menuitem_property_set_bool (broadcast_field, DBUSMENU_MENUITEM_PROP_ENABLED, FALSE);
   }
+#endif
 
   return;
 }
@@ -292,31 +295,47 @@
   return FALSE;
 }
 
-#define GCONF_ANONYMOUS "/system/indicator/me/anonymous"
+#define GCONF_NAMESPACE "/system/indicator/me"
+#define GCONF_DISPLAY   "/system/indicator/me/display"
 
-static gboolean
-anonymous_mode (void)
+static void
+display_mode_changed ()
 {
-  GConfClient *context = NULL;
-  GConfValue *option = NULL;
-  gboolean value = FALSE; /* not anonymous, by default */
-
-  context = gconf_client_get_default ();
-  if (! context) {
-		g_warning ("Couldn't get a gconf context");
-		return FALSE;
-	}
-
-  option = gconf_client_get (context, GCONF_ANONYMOUS, NULL);
+  GConfClient *context = gconf_client_get_default ();
+  g_return_if_fail (context != NULL);
+
+  GConfValue *option = gconf_client_get (context, GCONF_DISPLAY, NULL);
+  gint value = 1; /* username, by default */
+
+  g_debug ("display_mode_changed");
+
   if (option != NULL &&
-      option->type == GCONF_VALUE_BOOL)
-    value = gconf_value_get_bool (option);
+      option->type == GCONF_VALUE_INT)
+    value = gconf_value_get_int (option);
+
+  switch (value) {
+  case 0: /* anonymous */
+    status_service_dbus_set_username (dbus_interface, "");
+    break;
+  default:
+  case 1:
+    status_service_dbus_set_username (dbus_interface, g_get_user_name ());
+    break;
+  case 2:
+    status_service_dbus_set_username (dbus_interface, g_get_real_name ());
+    break;
+  }
+
+  dbusmenu_menuitem_property_set_bool (useritem,
+                                       DBUSMENU_MENUITEM_PROP_VISIBLE,
+                                       (value == 0) ? FALSE : TRUE);
 
   g_object_unref (context);
 
-  return value;
+  return;
 }
 
+
 static void
 avatar_changed_cb (GFileMonitor * monitor, GFile * file, GFile * other_file, GFileMonitorEvent event_type, gpointer user_data)
 {
@@ -335,24 +354,10 @@
 static void
 build_user_item (DbusmenuMenuitem * root)
 {
-	struct passwd * pwd = NULL;
-
-  if (anonymous_mode ())
-    return;
-
-	pwd = getpwuid(getuid());
-
-  if (pwd != NULL && pwd->pw_name != NULL && pwd->pw_name[0] != '\0') {
-    status_service_dbus_set_username(dbus_interface, pwd->pw_name);
-  } else {
-    g_warning ("PWD: %s", (pwd == NULL ? "(pwd null)" : (pwd->pw_name == NULL ? "(pw_name null)" : pwd->pw_name)));
-
-    /* that's kind of an anonymous mode too if ever that can happen */
-    return;
-  }
-
-  DbusmenuMenuitem * useritem = dbusmenu_menuitem_new();
+  useritem = dbusmenu_menuitem_new();
+  dbusmenu_menuitem_property_set(useritem, DBUSMENU_ABOUT_ME_MENUITEM_PROP_NAME, g_get_real_name ());
   dbusmenu_menuitem_property_set_bool(useritem, DBUSMENU_MENUITEM_PROP_ENABLED, FALSE);
+  dbusmenu_menuitem_property_set_bool(useritem, DBUSMENU_MENUITEM_PROP_VISIBLE, FALSE);
   dbusmenu_menuitem_property_set(useritem, DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_ABOUT_ME_MENUITEM_TYPE);
   dbusmenu_menuitem_child_append(root, useritem);
 
@@ -375,21 +380,18 @@
     g_free(gam);
   }
 
-	if (pwd != NULL && pwd->pw_gecos != NULL) {
-		gchar * name = g_strdup(pwd->pw_gecos);
-		gchar * walker = name;
-		while (*walker != '\0' && *walker != ',') { walker++; }
-		*walker = '\0';
-
-		if (name[0] != '\0') {
-      dbusmenu_menuitem_property_set(useritem, DBUSMENU_ABOUT_ME_MENUITEM_PROP_NAME, name);
-		} else {
-      /* fallback on the username, at least we know it's not null from above */
-      dbusmenu_menuitem_property_set(useritem, DBUSMENU_ABOUT_ME_MENUITEM_PROP_NAME, pwd->pw_name);
-    }
-
-		g_free(name);
-	}
+  /* set the menu name */
+  display_mode_changed ();
+
+  /* and receive display mode notifications to update it later */
+  GConfClient *context = gconf_client_get_default ();
+  if (context != NULL) {
+    gconf_client_add_dir (context, GCONF_NAMESPACE,
+                          GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+    gconf_client_notify_add (context, GCONF_DISPLAY,
+                             display_mode_changed, NULL, NULL, NULL);
+    g_object_unref (context);
+  }
 
 	return;
 }