diff options
Diffstat (limited to 'calendar/gui/e-cal-list-view.c')
-rw-r--r-- | calendar/gui/e-cal-list-view.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/calendar/gui/e-cal-list-view.c b/calendar/gui/e-cal-list-view.c index 94722c0319..275cc0c0dd 100644 --- a/calendar/gui/e-cal-list-view.c +++ b/calendar/gui/e-cal-list-view.c @@ -48,6 +48,11 @@ #include "calendar-config.h" #include "misc.h" +enum { + PROP_0, + PROP_IS_EDITING +}; + static void e_cal_list_view_dispose (GObject *object); static GList *e_cal_list_view_get_selected_events (ECalendarView *cal_view); @@ -68,6 +73,24 @@ static void e_cal_list_view_cursor_change_cb (ETable *etable, gint row, gpointer G_DEFINE_TYPE (ECalListView, e_cal_list_view, E_TYPE_CALENDAR_VIEW) static void +e_cal_list_view_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + ECalListView *eclv = E_CAL_LIST_VIEW (object); + + switch (property_id) { + case PROP_IS_EDITING: + g_value_set_boolean (value, e_cal_list_view_is_editing (eclv)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void e_cal_list_view_class_init (ECalListViewClass *class) { GObjectClass *object_class; @@ -80,12 +103,18 @@ e_cal_list_view_class_init (ECalListViewClass *class) /* Method override */ object_class->dispose = e_cal_list_view_dispose; + object_class->get_property = e_cal_list_view_get_property; widget_class->popup_menu = e_cal_list_view_popup_menu; view_class->get_selected_events = e_cal_list_view_get_selected_events; view_class->get_selected_time_range = e_cal_list_view_get_selected_time_range; view_class->get_visible_time_range = e_cal_list_view_get_visible_time_range; + + g_object_class_override_property ( + object_class, + PROP_IS_EDITING, + "is-editing"); } static void @@ -147,6 +176,16 @@ e_cal_list_view_save_state (ECalListView *cal_list_view, } static void +e_cal_list_view_table_editing_changed_cb (ETable *table, + GParamSpec *param, + ECalListView *eclv) +{ + g_return_if_fail (E_IS_CAL_LIST_VIEW (eclv)); + + g_object_notify (G_OBJECT (eclv), "is-editing"); +} + +static void setup_e_table (ECalListView *cal_list_view) { ECalModel *model; @@ -300,6 +339,10 @@ setup_e_table (ECalListView *cal_list_view) cal_list_view->table, "cursor_change", G_CALLBACK (e_cal_list_view_cursor_change_cb), cal_list_view); + g_signal_connect_after ( + cal_list_view->table, "notify::is-editing", + G_CALLBACK (e_cal_list_view_table_editing_changed_cb), + cal_list_view); } /** @@ -563,3 +606,11 @@ e_cal_list_view_get_range_shown (ECalListView *cal_list_view, *days_shown = g_date_days_between (start_date, &end_date); return TRUE; } + +gboolean +e_cal_list_view_is_editing (ECalListView *eclv) +{ + g_return_val_if_fail (E_IS_CAL_LIST_VIEW (eclv), FALSE); + + return eclv->table && e_table_is_editing (eclv->table); +} |