← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~jjardon/indicator-datetime/fix-836017 into lp:indicator-datetime

 

Javier Jardón has proposed merging lp:~jjardon/indicator-datetime/fix-836017 into lp:indicator-datetime.

Requested reviews:
  Indicator Applet Developers (indicator-applet-developers)
Related bugs:
  Bug #836017 in Indicator Date and Time: ""Add Event" on Time Menu opens Evolution Setup Assistant"
  https://bugs.launchpad.net/indicator-datetime/+bug/836017

For more details, see:
https://code.launchpad.net/~jjardon/indicator-datetime/fix-836017/+merge/77932
-- 
https://code.launchpad.net/~jjardon/indicator-datetime/fix-836017/+merge/77932
Your team ayatana-commits is subscribed to branch lp:indicator-datetime.
=== modified file 'src/datetime-service.c'
--- src/datetime-service.c	2011-09-29 19:57:50 +0000
+++ src/datetime-service.c	2011-10-03 13:12:26 +0000
@@ -484,6 +484,8 @@
 static gboolean
 check_for_calendar (gpointer user_data)
 {
+	GError *error = NULL;
+
 	g_return_val_if_fail (calendar != NULL, FALSE);
 	
 	dbusmenu_menuitem_property_set_bool(date, DBUSMENU_MENUITEM_PROP_ENABLED, TRUE);
@@ -494,16 +496,22 @@
 		
 		g_signal_connect (G_OBJECT(date), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED,
 		                  G_CALLBACK (activate_cb), "evolution -c calendar");
-		
-		events_separator = dbusmenu_menuitem_new();
-		dbusmenu_menuitem_property_set(events_separator, DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_CLIENT_TYPES_SEPARATOR);
-		dbusmenu_menuitem_child_add_position(root, events_separator, 2);
-		add_appointment = dbusmenu_menuitem_new();
-		dbusmenu_menuitem_property_set (add_appointment, DBUSMENU_MENUITEM_PROP_LABEL, _("Add Event…"));
-		dbusmenu_menuitem_property_set_bool(add_appointment, DBUSMENU_MENUITEM_PROP_ENABLED, TRUE);
-		g_signal_connect(G_OBJECT(add_appointment), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(activate_cb), "evolution -c calendar");
-		dbusmenu_menuitem_child_add_position (root, add_appointment, 3);
 
+		GSList *accounts_list = gconf_client_get_list (gconf, "/apps/evolution/mail/accounts", GCONF_VALUE_STRING, &error);
+		if (error != NULL || accounts_list == NULL) {
+			g_debug("%s: No mail accounts, do not show the 'Add Event...' menu item", G_STRFUNC);
+			g_clear_error (&error);
+			accounts_list = NULL;
+		} else {
+			events_separator = dbusmenu_menuitem_new();
+			dbusmenu_menuitem_property_set(events_separator, DBUSMENU_MENUITEM_PROP_TYPE, DBUSMENU_CLIENT_TYPES_SEPARATOR);
+			dbusmenu_menuitem_child_add_position(root, events_separator, 2);
+			add_appointment = dbusmenu_menuitem_new();
+			dbusmenu_menuitem_property_set (add_appointment, DBUSMENU_MENUITEM_PROP_LABEL, _("Add Event…"));
+			dbusmenu_menuitem_property_set_bool(add_appointment, DBUSMENU_MENUITEM_PROP_ENABLED, TRUE);
+			g_signal_connect(G_OBJECT(add_appointment), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(activate_cb), "evolution -c calendar");
+			dbusmenu_menuitem_child_add_position (root, add_appointment, 3);
+		}
 
 		if (g_settings_get_boolean(conf, SETTINGS_SHOW_EVENTS_S)) {
 			dbusmenu_menuitem_property_set_bool(add_appointment, DBUSMENU_MENUITEM_PROP_VISIBLE, TRUE);


Follow ups