ayatana-commits team mailing list archive
-
ayatana-commits team
-
Mailing list archive
-
Message #01269
[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;
}