aboutsummaryrefslogtreecommitdiffstats
path: root/calendar
diff options
context:
space:
mode:
Diffstat (limited to 'calendar')
-rw-r--r--calendar/gui/dialogs/comp-editor.c29
-rw-r--r--calendar/gui/dialogs/event-page.c81
2 files changed, 70 insertions, 40 deletions
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c
index cf8d77668c..440cf35388 100644
--- a/calendar/gui/dialogs/comp-editor.c
+++ b/calendar/gui/dialogs/comp-editor.c
@@ -197,6 +197,14 @@ comp_editor_weak_notify_cb (gpointer unused,
active_editors = g_list_remove (active_editors, where_the_object_was);
}
+static void
+attachment_store_changed_cb (CompEditor *editor)
+{
+ /* Mark the editor as changed so it prompts about unsaved
+ changes on close */
+ comp_editor_set_changed (editor, TRUE);
+}
+
static GSList *
get_attachment_list (CompEditor *editor)
{
@@ -1569,6 +1577,7 @@ comp_editor_init (CompEditor *editor)
{
CompEditorPrivate *priv;
EAttachmentView *view;
+ EAttachmentStore *store;
GdkDragAction drag_actions;
GtkTargetList *target_list;
GtkTargetEntry *targets;
@@ -1710,6 +1719,18 @@ comp_editor_init (CompEditor *editor)
gtk_window_set_type_hint (
GTK_WINDOW (editor), GDK_WINDOW_TYPE_HINT_NORMAL);
+ /* Listen for attachment store changes. */
+
+ store = e_attachment_view_get_store (view);
+
+ g_signal_connect_swapped (
+ store, "row-deleted",
+ G_CALLBACK (attachment_store_changed_cb), editor);
+
+ g_signal_connect_swapped (
+ store, "row-inserted",
+ G_CALLBACK (attachment_store_changed_cb), editor);
+
/* FIXME Shell should be passed in. */
shell = e_shell_get_default ();
e_shell_watch_window (shell, GTK_WINDOW (editor));
@@ -1765,14 +1786,6 @@ prompt_and_save_changes (CompEditor *editor, gboolean send)
}
}
-static void
-attachment_store_changed_cb (CompEditor *editor)
-{
- /* Mark the editor as changed so it prompts about unsaved
- changes on close */
- comp_editor_set_changed (editor, TRUE);
-}
-
/* Menu callbacks */
static void
diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c
index 7c548797ab..c7b6050d3e 100644
--- a/calendar/gui/dialogs/event-page.c
+++ b/calendar/gui/dialogs/event-page.c
@@ -64,6 +64,34 @@
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), TYPE_EVENT_PAGE, EventPagePrivate))
+enum {
+ ALARM_NONE,
+ ALARM_15_MINUTES,
+ ALARM_1_HOUR,
+ ALARM_1_DAY,
+ ALARM_USER_TIME,
+ ALARM_CUSTOM
+};
+
+static const int alarm_map_with_user_time[] = {
+ ALARM_NONE,
+ ALARM_15_MINUTES,
+ ALARM_1_HOUR,
+ ALARM_1_DAY,
+ ALARM_USER_TIME,
+ ALARM_CUSTOM,
+ -1
+};
+
+static const int alarm_map_without_user_time[] = {
+ ALARM_NONE,
+ ALARM_15_MINUTES,
+ ALARM_1_HOUR,
+ ALARM_1_DAY,
+ ALARM_CUSTOM,
+ -1
+};
+
/* Private part of the EventPage structure */
struct _EventPagePrivate {
/* Glade XML data */
@@ -159,6 +187,9 @@ struct _EventPagePrivate {
gboolean is_meeting;
GtkWidget *alarm_list_dlg_widget;
+
+ /* either with-user-time or without it */
+ const int *alarm_map;
};
static GtkWidget *event_page_get_widget (CompEditorPage *page);
@@ -265,27 +296,9 @@ event_page_init (EventPage *epage)
epage->priv = EVENT_PAGE_GET_PRIVATE (epage);
epage->priv->deleted_attendees = g_ptr_array_new ();
epage->priv->alarm_interval = -1;
+ epage->priv->alarm_map = alarm_map_with_user_time;
}
-enum {
- ALARM_NONE,
- ALARM_15_MINUTES,
- ALARM_1_HOUR,
- ALARM_1_DAY,
- ALARM_USER_TIME,
- ALARM_CUSTOM
-};
-
-static const int alarm_map[] = {
- ALARM_NONE,
- ALARM_15_MINUTES,
- ALARM_1_HOUR,
- ALARM_1_DAY,
- ALARM_USER_TIME,
- ALARM_CUSTOM,
- -1
-};
-
static void
set_busy_time_menu (EventPage *epage, gboolean active)
{
@@ -492,7 +505,7 @@ clear_widgets (EventPage *epage)
set_busy_time_menu (epage, TRUE);
/* Alarm */
- e_dialog_combo_box_set (priv->alarm_time_combo, ALARM_NONE, alarm_map);
+ e_dialog_combo_box_set (priv->alarm_time_combo, ALARM_NONE, priv->alarm_map);
/* Categories */
e_dialog_editable_set (priv->categories, NULL);
@@ -732,9 +745,9 @@ sensitize_widgets (EventPage *epage)
sensitize = !read_only && sens;
- alarm = e_dialog_combo_box_get (priv->alarm_time_combo, alarm_map) != ALARM_NONE;
+ alarm = e_dialog_combo_box_get (priv->alarm_time_combo, priv->alarm_map) != ALARM_NONE;
custom = is_custom_alarm_store (priv->alarm_list_store, priv->old_summary, priv->alarm_units, priv->alarm_interval, NULL) ||
- e_dialog_combo_box_get (priv->alarm_time_combo, alarm_map) == ALARM_CUSTOM ? TRUE:FALSE;
+ e_dialog_combo_box_get (priv->alarm_time_combo, priv->alarm_map) == ALARM_CUSTOM ? TRUE:FALSE;
if (alarm && !priv->alarm_icon) {
priv->alarm_icon = create_image_event_box ("stock_bell", _("This event has alarms"));
@@ -837,7 +850,8 @@ event_page_set_meeting (EventPage *page, gboolean set)
g_return_if_fail (IS_EVENT_PAGE (page));
page->priv->is_meeting = set;
- sensitize_widgets (page);
+ if (page->priv->comp)
+ sensitize_widgets (page);
}
void
@@ -1078,9 +1092,9 @@ event_page_fill_widgets (CompEditorPage *page, ECalComponent *comp)
alarms = e_cal_component_get_alarm_uids (comp);
if (!is_custom_alarm_uid_list (comp, alarms, priv->old_summary, priv->alarm_units, priv->alarm_interval, &alarm_type))
- e_dialog_combo_box_set (priv->alarm_time_combo, alarm_type, alarm_map);
+ e_dialog_combo_box_set (priv->alarm_time_combo, alarm_type, priv->alarm_map);
else
- e_dialog_combo_box_set (priv->alarm_time_combo, ALARM_CUSTOM, alarm_map);
+ e_dialog_combo_box_set (priv->alarm_time_combo, ALARM_CUSTOM, priv->alarm_map);
for (list = alarms; list != NULL; list = list->next) {
ECalComponentAlarm *ca;
@@ -1092,7 +1106,7 @@ event_page_fill_widgets (CompEditorPage *page, ECalComponent *comp)
cal_obj_uid_list_free (alarms);
} else {
- e_dialog_combo_box_set (priv->alarm_time_combo, ALARM_NONE, alarm_map);
+ e_dialog_combo_box_set (priv->alarm_time_combo, ALARM_NONE, priv->alarm_map);
}
g_signal_handlers_unblock_matched (priv->alarm_time_combo, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, epage);
g_signal_handlers_unblock_matched (priv->alarm_list_store, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, epage);
@@ -1286,8 +1300,8 @@ event_page_fill_component (CompEditorPage *page, ECalComponent *comp)
/* Alarm */
e_cal_component_remove_all_alarms (comp);
- if (e_dialog_combo_box_get (priv->alarm_time_combo, alarm_map) != ALARM_NONE) {
- if (e_dialog_combo_box_get (priv->alarm_time_combo, alarm_map) == ALARM_CUSTOM) {
+ if (e_dialog_combo_box_get (priv->alarm_time_combo, priv->alarm_map) != ALARM_NONE) {
+ if (e_dialog_combo_box_get (priv->alarm_time_combo, priv->alarm_map) == ALARM_CUSTOM) {
GtkTreeModel *model;
GtkTreeIter iter;
gboolean valid_iter;
@@ -1354,7 +1368,7 @@ event_page_fill_component (CompEditorPage *page, ECalComponent *comp)
trigger.type = E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START;
trigger.u.rel_duration.is_neg = 1;
- alarm_type = e_dialog_combo_box_get (priv->alarm_time_combo, alarm_map);
+ alarm_type = e_dialog_combo_box_get (priv->alarm_time_combo, priv->alarm_map);
switch (alarm_type) {
case ALARM_15_MINUTES:
trigger.u.rel_duration.minutes = 15;
@@ -2651,7 +2665,7 @@ alarm_changed_cb (GtkWidget *widget,
{
EventPagePrivate *priv = epage->priv;
- if (e_dialog_combo_box_get (priv->alarm_time_combo, alarm_map) != ALARM_NONE) {
+ if (e_dialog_combo_box_get (priv->alarm_time_combo, priv->alarm_map) != ALARM_NONE) {
ECalComponentAlarm *ca;
ECalComponentAlarmTrigger trigger;
icalcomponent *icalcomp;
@@ -2666,7 +2680,7 @@ alarm_changed_cb (GtkWidget *widget,
trigger.type = E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START;
trigger.u.rel_duration.is_neg = 1;
- alarm_type = e_dialog_combo_box_get (priv->alarm_time_combo, alarm_map);
+ alarm_type = e_dialog_combo_box_get (priv->alarm_time_combo, priv->alarm_map);
switch (alarm_type) {
case ALARM_15_MINUTES:
e_alarm_list_clear (priv->alarm_list_store);
@@ -2956,10 +2970,13 @@ init_widgets (EventPage *epage)
if (combo_label) {
gtk_combo_box_append_text (GTK_COMBO_BOX (priv->alarm_time_combo), combo_label);
g_free (combo_label);
+ priv->alarm_map = alarm_map_with_user_time;
+ } else {
+ priv->alarm_map = alarm_map_without_user_time;
}
gtk_combo_box_append_text (GTK_COMBO_BOX (priv->alarm_time_combo), _("Customize"));
- gtk_combo_box_append_text (GTK_COMBO_BOX (priv->alarm_time_combo), _("None"));
+ gtk_combo_box_prepend_text (GTK_COMBO_BOX (priv->alarm_time_combo), _("None"));
g_signal_connect_swapped (
priv->alarm_time_combo, "changed",