aboutsummaryrefslogtreecommitdiffstats
path: root/modules/calendar/e-cal-shell-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'modules/calendar/e-cal-shell-view.c')
-rw-r--r--modules/calendar/e-cal-shell-view.c39
1 files changed, 27 insertions, 12 deletions
diff --git a/modules/calendar/e-cal-shell-view.c b/modules/calendar/e-cal-shell-view.c
index f6b83104fd..d349882a82 100644
--- a/modules/calendar/e-cal-shell-view.c
+++ b/modules/calendar/e-cal-shell-view.c
@@ -377,6 +377,8 @@ cal_shell_view_update_actions (EShellView *shell_view)
EShellSidebar *shell_sidebar;
EShellWindow *shell_window;
EShell *shell;
+ ESource *source;
+ ESourceRegistry *registry;
GnomeCalendarViewType view_type;
GnomeCalendar *calendar;
ECalModel *model;
@@ -386,14 +388,15 @@ cal_shell_view_update_actions (EShellView *shell_view)
const gchar *model_sexp;
gboolean is_searching;
gboolean sensitive;
- gboolean visible;
guint32 state;
gint n_selected;
/* Be descriptive. */
- gboolean can_delete_primary_source;
gboolean editable = TRUE;
+ gboolean has_mail_identity;
gboolean has_primary_source;
+ gboolean primary_source_is_removable;
+ gboolean primary_source_is_writable;
gboolean recurring = FALSE;
gboolean is_instance = FALSE;
gboolean is_meeting = FALSE;
@@ -424,6 +427,15 @@ cal_shell_view_update_actions (EShellView *shell_view)
gtk_widget_hide (widget);
}
+ registry = e_shell_get_registry (shell);
+ source = e_source_registry_ref_default_mail_identity (registry);
+ if (source != NULL) {
+ has_mail_identity = TRUE;
+ g_object_unref (source);
+ } else {
+ has_mail_identity = FALSE;
+ }
+
cal_shell_content = priv->cal_shell_content;
calendar = e_cal_shell_content_get_calendar (cal_shell_content);
view_type = gnome_calendar_get_view (calendar);
@@ -468,13 +480,14 @@ cal_shell_view_update_actions (EShellView *shell_view)
comp = e_cal_component_new ();
e_cal_component_set_icalcomponent (
comp, icalcomponent_new_clone (icalcomp));
- user_email = itip_get_comp_attendee (comp, client);
+ user_email = itip_get_comp_attendee (
+ registry, comp, client);
is_meeting = e_cal_util_component_has_attendee (icalcomp);
user_org =
e_cal_util_component_has_organizer (icalcomp) &&
- itip_organizer_is_user (comp, client);
+ itip_organizer_is_user (registry, comp, client);
is_delegatable =
e_client_check_capability (
@@ -496,8 +509,10 @@ cal_shell_view_update_actions (EShellView *shell_view)
has_primary_source =
(state & E_CAL_SHELL_SIDEBAR_HAS_PRIMARY_SOURCE);
- can_delete_primary_source =
- (state & E_CAL_SHELL_SIDEBAR_CAN_DELETE_PRIMARY_SOURCE);
+ primary_source_is_removable =
+ (state & E_CAL_SHELL_SIDEBAR_PRIMARY_SOURCE_IS_REMOVABLE);
+ primary_source_is_writable =
+ (state & E_CAL_SHELL_SIDEBAR_PRIMARY_SOURCE_IS_WRITABLE);
refresh_supported =
(state & E_CAL_SHELL_SIDEBAR_SOURCE_SUPPORTS_REFRESH);
@@ -506,11 +521,11 @@ cal_shell_view_update_actions (EShellView *shell_view)
gtk_action_set_sensitive (action, sensitive);
action = ACTION (CALENDAR_DELETE);
- sensitive = can_delete_primary_source;
+ sensitive = primary_source_is_removable;
gtk_action_set_sensitive (action, sensitive);
action = ACTION (CALENDAR_PROPERTIES);
- sensitive = has_primary_source;
+ sensitive = primary_source_is_writable;
gtk_action_set_sensitive (action, sensitive);
action = ACTION (CALENDAR_REFRESH);
@@ -518,7 +533,7 @@ cal_shell_view_update_actions (EShellView *shell_view)
gtk_action_set_sensitive (action, sensitive);
action = ACTION (CALENDAR_RENAME);
- sensitive = can_delete_primary_source;
+ sensitive = primary_source_is_writable;
gtk_action_set_sensitive (action, sensitive);
action = ACTION (CALENDAR_SEARCH_PREV);
@@ -528,7 +543,8 @@ cal_shell_view_update_actions (EShellView *shell_view)
gtk_action_set_sensitive (action, is_searching);
action = ACTION (CALENDAR_SEARCH_STOP);
- gtk_action_set_sensitive (action, is_searching && priv->searching_activity != NULL);
+ sensitive = is_searching && priv->searching_activity != NULL;
+ gtk_action_set_sensitive (action, sensitive);
action = ACTION (EVENT_DELEGATE);
sensitive =
@@ -583,8 +599,7 @@ cal_shell_view_update_actions (EShellView *shell_view)
gtk_action_set_sensitive (action, sensitive);
action = ACTION (EVENT_MEETING_NEW);
- visible = e_get_default_account () != NULL;
- gtk_action_set_visible (action, visible);
+ gtk_action_set_visible (action, has_mail_identity);
}
static void