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 <[email protected]> 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; }
_______________________________________________ Mailing list: https://launchpad.net/~ayatana-commits Post to : [email protected] Unsubscribe : https://launchpad.net/~ayatana-commits More help : https://help.launchpad.net/ListHelp

