diff options
Diffstat (limited to 'calendar/gui')
-rw-r--r-- | calendar/gui/dialogs/alarm-page.c | 10 | ||||
-rw-r--r-- | calendar/gui/dialogs/comp-editor-page.c | 1 | ||||
-rw-r--r-- | calendar/gui/dialogs/event-page.c | 30 | ||||
-rw-r--r-- | calendar/gui/dialogs/recurrence-page.c | 48 |
4 files changed, 74 insertions, 15 deletions
diff --git a/calendar/gui/dialogs/alarm-page.c b/calendar/gui/dialogs/alarm-page.c index d7faebf14c..8270332707 100644 --- a/calendar/gui/dialogs/alarm-page.c +++ b/calendar/gui/dialogs/alarm-page.c @@ -345,6 +345,12 @@ sensitize_buttons (AlarmPage *apage) else gtk_widget_set_sensitive (apage->priv->add, sensitivity); gtk_widget_set_sensitive (priv->delete, have_selected && !read_only ? TRUE : FALSE); + gtk_widget_set_sensitive (priv->action, sensitivity); + gtk_widget_set_sensitive (priv->interval_value, sensitivity); + gtk_widget_set_sensitive (priv->value_units, sensitivity); + gtk_widget_set_sensitive (priv->relative, sensitivity); + gtk_widget_set_sensitive (priv->time, sensitivity); + gtk_widget_set_sensitive (priv->button_options, sensitivity); } /* Appends an alarm to the list */ @@ -862,8 +868,8 @@ alarm_page_construct (AlarmPage *apage) init_widgets (apage); - g_signal_connect (G_OBJECT (apage), "client_changed", - G_CALLBACK (client_changed_cb), NULL); + g_signal_connect_after (G_OBJECT (apage), "client_changed", + G_CALLBACK (client_changed_cb), NULL); return apage; } diff --git a/calendar/gui/dialogs/comp-editor-page.c b/calendar/gui/dialogs/comp-editor-page.c index be96f161a0..44e89a3b14 100644 --- a/calendar/gui/dialogs/comp-editor-page.c +++ b/calendar/gui/dialogs/comp-editor-page.c @@ -436,7 +436,6 @@ comp_editor_page_notify_client_changed (CompEditorPage *page, gtk_signal_emit (GTK_OBJECT (page), comp_editor_page_signals[CLIENT_CHANGED], client); - comp_editor_page_set_e_cal (page, client); } /** diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c index cd7bbe12ce..abdc84aa34 100644 --- a/calendar/gui/dialogs/event-page.c +++ b/calendar/gui/dialogs/event-page.c @@ -408,6 +408,33 @@ clear_widgets (EventPage *epage) e_dialog_editable_set (priv->categories, NULL); } +static void +sensitize_widgets (EventPage *epage) +{ + gboolean read_only; + EventPagePrivate *priv; + + priv = epage->priv; + + if (!e_cal_is_read_only (COMP_EDITOR_PAGE (epage)->client, &read_only, NULL)) + read_only = TRUE; + + gtk_widget_set_sensitive (priv->summary, !read_only); + gtk_widget_set_sensitive (priv->location, !read_only); + gtk_widget_set_sensitive (priv->start_time, !read_only); + gtk_widget_set_sensitive (priv->start_timezone, !read_only); + gtk_widget_set_sensitive (priv->end_time, !read_only); + gtk_widget_set_sensitive (priv->end_timezone, !read_only); + gtk_widget_set_sensitive (priv->all_day_event, !read_only); + gtk_widget_set_sensitive (priv->description, !read_only); + gtk_widget_set_sensitive (priv->classification_public, !read_only); + gtk_widget_set_sensitive (priv->classification_private, !read_only); + gtk_widget_set_sensitive (priv->classification_confidential, !read_only); + gtk_widget_set_sensitive (priv->show_time_as_free, !read_only); + gtk_widget_set_sensitive (priv->show_time_as_busy, !read_only); + gtk_widget_set_sensitive (priv->categories_btn, !read_only); + gtk_widget_set_sensitive (priv->categories, !read_only); +} /* fill_widgets handler for the event page */ static gboolean @@ -532,6 +559,8 @@ event_page_fill_widgets (CompEditorPage *page, ECalComponent *comp) priv->updating = FALSE; + sensitize_widgets (epage); + return validated; } @@ -1269,6 +1298,7 @@ source_changed_cb (GtkWidget *widget, ESource *source, gpointer data) gtk_widget_destroy (dialog); } else { comp_editor_page_notify_client_changed (COMP_EDITOR_PAGE (epage), client); + sensitize_widgets (epage); } } } diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c index cec2685a7c..f08107c8e2 100644 --- a/calendar/gui/dialogs/recurrence-page.c +++ b/calendar/gui/dialogs/recurrence-page.c @@ -508,13 +508,9 @@ sensitize_recur_widgets (RecurrencePage *rpage) RecurrencePagePrivate *priv; enum recur_type type; GtkWidget *label; - gboolean read_only; priv = rpage->priv; - if (!e_cal_is_read_only (COMP_EDITOR_PAGE (rpage)->client, &read_only, NULL)) - read_only = TRUE; - type = e_dialog_radio_get (priv->none, type_map); /* We can't preview that well for instances right now */ @@ -556,6 +552,34 @@ sensitize_recur_widgets (RecurrencePage *rpage) } } +static void +sensitize_buttons (RecurrencePage *rpage) +{ + gboolean read_only; + gint selected_rows; + RecurrencePagePrivate *priv; + + priv = rpage->priv; + + selected_rows = gtk_tree_selection_count_selected_rows ( + gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->exception_list))); + + if (!e_cal_is_read_only (COMP_EDITOR_PAGE (rpage)->client, &read_only, NULL)) + read_only = TRUE; + + if (!read_only) + sensitize_recur_widgets (rpage); + else + gtk_widget_set_sensitive (priv->params, FALSE); + + gtk_widget_set_sensitive (priv->none, !read_only); + gtk_widget_set_sensitive (priv->simple, !read_only); + gtk_widget_set_sensitive (priv->exception_add, !read_only && e_cal_component_has_recurrences (priv->comp)); + gtk_widget_set_sensitive (priv->exception_modify, !read_only && selected_rows > 0); + gtk_widget_set_sensitive (priv->exception_delete, !read_only && selected_rows > 0); + gtk_widget_set_sensitive (priv->exception_date, !read_only); +} + #if 0 /* Encondes a position/weekday pair into the proper format for * icalrecurrencetype.by_day. Not needed at present. @@ -1504,7 +1528,7 @@ recurrence_page_fill_widgets (CompEditorPage *page, ECalComponent *comp) RecurrencePage *rpage; RecurrencePagePrivate *priv; ECalComponentText text; - CompEditorPageDates dates; + CompEditorPageDates dates; GSList *rrule_list; int len; struct icalrecurrencetype *r; @@ -1568,7 +1592,7 @@ recurrence_page_fill_widgets (CompEditorPage *page, ECalComponent *comp) gtk_widget_set_sensitive (priv->custom, FALSE); - sensitize_recur_widgets (rpage); + sensitize_buttons (rpage); preview_recur (rpage); priv->updating = FALSE; @@ -1836,7 +1860,7 @@ recurrence_page_fill_widgets (CompEditorPage *page, ECalComponent *comp) gtk_widget_set_sensitive (priv->custom, FALSE); - sensitize_recur_widgets (rpage); + sensitize_buttons (rpage); make_recurrence_special (rpage); adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (priv->interval_value)); @@ -1859,7 +1883,7 @@ recurrence_page_fill_widgets (CompEditorPage *page, ECalComponent *comp) g_signal_handlers_unblock_matched (priv->custom, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, rpage); gtk_widget_set_sensitive (priv->custom, TRUE); - sensitize_recur_widgets (rpage); + sensitize_buttons (rpage); out: @@ -2048,7 +2072,7 @@ type_toggled_cb (GtkToggleButton *toggle, gpointer data) field_changed (rpage); if (toggle->active) { - sensitize_recur_widgets (rpage); + sensitize_buttons (rpage); preview_recur (rpage); } } @@ -2354,7 +2378,7 @@ client_changed_cb (CompEditorPage *page, ECal *client, gpointer user_data) { RecurrencePage *rpage = RECURRENCE_PAGE (page); - sensitize_recur_widgets (rpage); + sensitize_buttons (rpage); } /** @@ -2389,8 +2413,8 @@ recurrence_page_construct (RecurrencePage *rpage) init_widgets (rpage); - g_signal_connect (G_OBJECT (rpage), "client_changed", - G_CALLBACK (client_changed_cb), NULL); + g_signal_connect_after (G_OBJECT (rpage), "client_changed", + G_CALLBACK (client_changed_cb), NULL); return rpage; } |