diff options
author | Dan Winship <danw@src.gnome.org> | 2003-11-01 00:49:30 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2003-11-01 00:49:30 +0800 |
commit | a7ac69cdc61b193cbc62fbe908652cebf1ee8f2d (patch) | |
tree | 306c89e4ab470ba39c961e449f28023d7c766075 /calendar/gui | |
parent | bdf19d320404cc3c0aa6900ea711279f80ceab6a (diff) | |
download | gsoc2013-evolution-a7ac69cdc61b193cbc62fbe908652cebf1ee8f2d.tar.gz gsoc2013-evolution-a7ac69cdc61b193cbc62fbe908652cebf1ee8f2d.tar.zst gsoc2013-evolution-a7ac69cdc61b193cbc62fbe908652cebf1ee8f2d.zip |
Add CAL_STATIC_CAPABILITY_NO_THISANDFUTURE and
* cal-util/cal-util.h: Add CAL_STATIC_CAPABILITY_NO_THISANDFUTURE
and CAL_STATIC_CAPABILITY_NO_THISANDPRIOR
* gui/dialogs/recur-comp.c (recur_component_dialog): Add a
CalClient argument. Use cal_client_get_static_capability to decide
whether or not to offer THISANDFUTURE and THISANDPRIOR options
* gui/dialogs/comp-editor.c (prompt_to_save_changes, save_cmd,
save_close_cmd): Pass a CalClient to recur_component_dialog.
* gui/e-day-view.c (e_day_view_finish_long_event_resize,
e_day_view_finish_resize, e_day_view_on_editing_stopped,
e_day_view_on_top_canvas_drag_data_received,
e_day_view_on_main_canvas_drag_data_received): Likewise
* gui/e-week-view.c (e_week_view_on_editing_stopped): Likewise
* gui/calendar-component.c (impl_createControls): set an exception
if we fail, so evo won't crash.
svn path=/trunk/; revision=23152
Diffstat (limited to 'calendar/gui')
-rw-r--r-- | calendar/gui/dialogs/comp-editor.c | 6 | ||||
-rw-r--r-- | calendar/gui/dialogs/recur-comp.c | 35 | ||||
-rw-r--r-- | calendar/gui/dialogs/recur-comp.h | 4 | ||||
-rw-r--r-- | calendar/gui/e-day-view.c | 24 | ||||
-rw-r--r-- | calendar/gui/e-week-view.c | 16 |
5 files changed, 52 insertions, 33 deletions
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c index 2bbcf92df3..14dad44b2a 100644 --- a/calendar/gui/dialogs/comp-editor.c +++ b/calendar/gui/dialogs/comp-editor.c @@ -403,7 +403,7 @@ prompt_to_save_changes (CompEditor *editor, gboolean send) switch (save_component_dialog (GTK_WINDOW (editor))) { case GTK_RESPONSE_YES: /* Save */ if (cal_component_is_instance (priv->comp)) - if (!recur_component_dialog (priv->comp, &priv->mod, GTK_WINDOW (editor))) + if (!recur_component_dialog (priv->client, priv->comp, &priv->mod, GTK_WINDOW (editor))) return FALSE; if (send && save_comp_with_send (editor)) @@ -1235,7 +1235,7 @@ save_cmd (GtkWidget *widget, gpointer data) commit_all_fields (editor); if (cal_component_is_instance (priv->comp)) - if (!recur_component_dialog (priv->comp, &priv->mod, GTK_WINDOW (editor))) + if (!recur_component_dialog (priv->client, priv->comp, &priv->mod, GTK_WINDOW (editor))) return; save_comp_with_send (editor); @@ -1252,7 +1252,7 @@ save_close_cmd (GtkWidget *widget, gpointer data) commit_all_fields (editor); if (cal_component_is_instance (priv->comp)) - if (!recur_component_dialog (priv->comp, &priv->mod, GTK_WINDOW (editor))) + if (!recur_component_dialog (priv->client, priv->comp, &priv->mod, GTK_WINDOW (editor))) return; if (save_comp_with_send (editor)) diff --git a/calendar/gui/dialogs/recur-comp.c b/calendar/gui/dialogs/recur-comp.c index caf3e59196..eafee32102 100644 --- a/calendar/gui/dialogs/recur-comp.c +++ b/calendar/gui/dialogs/recur-comp.c @@ -32,12 +32,13 @@ gboolean -recur_component_dialog (CalComponent *comp, +recur_component_dialog (CalClient *client, + CalComponent *comp, CalObjModType *mod, GtkWindow *parent) { char *str; - GtkWidget *dialog, *rb1, *rb2, *rb3, *hbox; + GtkWidget *dialog, *rb_this, *rb_prior, *rb_future, *rb_all, *hbox; CalComponentVType vtype; gboolean ret; @@ -69,23 +70,35 @@ recur_component_dialog (CalComponent *comp, hbox = gtk_hbox_new (FALSE, 2); gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox); - rb1 = gtk_radio_button_new_with_label (NULL, _("This Instance Only")); - gtk_container_add (GTK_CONTAINER (hbox), rb1); + rb_this = gtk_radio_button_new_with_label (NULL, _("This Instance Only")); + gtk_container_add (GTK_CONTAINER (hbox), rb_this); - rb2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (rb1), _("This and Future Instances")); - gtk_container_add (GTK_CONTAINER (hbox), rb2); - rb3 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (rb1), _("All Instances")); - gtk_container_add (GTK_CONTAINER (hbox), rb3); + if (!cal_client_get_static_capability (client, CAL_STATIC_CAPABILITY_NO_THISANDPRIOR)) { + rb_prior = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (rb_this), _("This and Prior Instances")); + gtk_container_add (GTK_CONTAINER (hbox), rb_prior); + } else + rb_prior = NULL; + + if (!cal_client_get_static_capability (client, CAL_STATIC_CAPABILITY_NO_THISANDFUTURE)) { + rb_future = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (rb_this), _("This and Future Instances")); + gtk_container_add (GTK_CONTAINER (hbox), rb_future); + } else + rb_future = NULL; + + rb_all = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (rb_this), _("All Instances")); + gtk_container_add (GTK_CONTAINER (hbox), rb_all); gtk_widget_show_all (hbox); ret = gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK; - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rb1))) + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rb_this))) *mod = CALOBJ_MOD_THIS; - else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rb2))) + else if (rb_prior && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rb_prior))) + *mod = CALOBJ_MOD_THISANDPRIOR; + else if (rb_future && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rb_future))) *mod = CALOBJ_MOD_THISANDFUTURE; - else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rb3))) + else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rb_all))) *mod = CALOBJ_MOD_ALL; gtk_widget_destroy (dialog); diff --git a/calendar/gui/dialogs/recur-comp.h b/calendar/gui/dialogs/recur-comp.h index 123e55e779..76b1a63bef 100644 --- a/calendar/gui/dialogs/recur-comp.h +++ b/calendar/gui/dialogs/recur-comp.h @@ -22,10 +22,12 @@ #define RECUR_COMP_H #include <gtk/gtkwindow.h> +#include <cal-client/cal-client.h> #include <cal-util/cal-component.h> #include <cal-util/cal-util.h> -gboolean recur_component_dialog (CalComponent *comp, +gboolean recur_component_dialog (CalClient *client, + CalComponent *comp, CalObjModType *mod, GtkWindow *parent); diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c index 660957647f..d6678487c7 100644 --- a/calendar/gui/e-day-view.c +++ b/calendar/gui/e-day-view.c @@ -3755,7 +3755,7 @@ e_day_view_finish_long_event_resize (EDayView *day_view) } if (cal_component_has_recurrences (comp)) { - if (!recur_component_dialog (comp, &mod, NULL)) { + if (!recur_component_dialog (client, comp, &mod, NULL)) { gtk_widget_queue_draw (day_view->top_canvas); goto out; } @@ -3838,7 +3838,7 @@ e_day_view_finish_resize (EDayView *day_view) day_view->resize_drag_pos = E_CAL_VIEW_POS_NONE; if (cal_component_has_recurrences (comp)) { - if (!recur_component_dialog (comp, &mod, NULL)) { + if (!recur_component_dialog (client, comp, &mod, NULL)) { gtk_widget_queue_draw (day_view->top_canvas); goto out; } @@ -5657,6 +5657,7 @@ e_day_view_on_editing_stopped (EDayView *day_view, gchar *text = NULL; CalComponentText summary; CalComponent *comp; + CalClient *client; gboolean on_server; /* Note: the item we are passed here isn't reliable, so we just stop @@ -5703,7 +5704,8 @@ e_day_view_on_editing_stopped (EDayView *day_view, comp = cal_component_new (); cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp)); - on_server = cal_comp_is_on_server (comp, event->comp_data->client); + client = event->comp_data->client; + on_server = cal_comp_is_on_server (comp, client); if (string_is_empty (text) && !on_server) { const char *uid; @@ -5734,24 +5736,24 @@ e_day_view_on_editing_stopped (EDayView *day_view, cal_component_set_summary (comp, &summary); if (!on_server) { - if (!cal_client_create_object (event->comp_data->client, icalcomp, NULL, NULL)) + if (!cal_client_create_object (client, icalcomp, NULL, NULL)) g_message (G_STRLOC ": Could not create the object!"); } else { CalObjModType mod = CALOBJ_MOD_ALL; GtkWindow *toplevel; if (cal_component_has_recurrences (comp)) { - if (!recur_component_dialog (comp, &mod, NULL)) { + if (!recur_component_dialog (client, comp, &mod, NULL)) { goto out; } } /* FIXME When sending here, what exactly should we send? */ toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (day_view))); - if (cal_client_modify_object (event->comp_data->client, icalcomp, mod, NULL)) { - if (itip_organizer_is_user (comp, event->comp_data->client) - && send_component_dialog (toplevel, event->comp_data->client, comp, FALSE)) + if (cal_client_modify_object (client, icalcomp, mod, NULL)) { + if (itip_organizer_is_user (comp, client) + && send_component_dialog (toplevel, client, comp, FALSE)) itip_send_comp (CAL_COMPONENT_METHOD_REQUEST, comp, - event->comp_data->client, NULL); + client, NULL); } } @@ -6850,7 +6852,7 @@ e_day_view_on_top_canvas_drag_data_received (GtkWidget *widget, gnome_canvas_item_show (event->canvas_item); if (cal_component_has_recurrences (comp)) { - if (!recur_component_dialog (comp, &mod, NULL)) + if (!recur_component_dialog (client, comp, &mod, NULL)) return; } @@ -7044,7 +7046,7 @@ e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget, gnome_canvas_item_show (event->canvas_item); if (cal_component_has_recurrences (comp)) { - if (!recur_component_dialog (comp, &mod, NULL)) { + if (!recur_component_dialog (client, comp, &mod, NULL)) { g_object_unref (comp); return; } diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c index 502a5ca0f5..e4d701a0a6 100644 --- a/calendar/gui/e-week-view.c +++ b/calendar/gui/e-week-view.c @@ -2988,6 +2988,7 @@ e_week_view_on_editing_stopped (EWeekView *week_view, gchar *text = NULL; CalComponent *comp; CalComponentText summary; + CalClient *client; const char *uid; gboolean on_server; @@ -3020,7 +3021,8 @@ e_week_view_on_editing_stopped (EWeekView *week_view, comp = cal_component_new (); cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp)); - on_server = cal_comp_is_on_server (comp, event->comp_data->client); + client = event->comp_data->client; + on_server = cal_comp_is_on_server (comp, client); if (string_is_empty (text) && !on_server) { const char *uid; @@ -3048,25 +3050,25 @@ e_week_view_on_editing_stopped (EWeekView *week_view, cal_component_set_summary (comp, &summary); if (!on_server) { - if (!cal_client_create_object (event->comp_data->client, icalcomp, NULL, NULL)) + if (!cal_client_create_object (client, icalcomp, NULL, NULL)) g_message (G_STRLOC ": Could not create the object!"); } else { CalObjModType mod = CALOBJ_MOD_ALL; GtkWindow *toplevel; if (cal_component_has_recurrences (comp)) { - if (!recur_component_dialog (comp, &mod, NULL)) { + if (!recur_component_dialog (client, comp, &mod, NULL)) { goto out; } } /* FIXME When sending here, what exactly should we send? */ toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (week_view))); - if (cal_client_modify_object (event->comp_data->client, icalcomp, mod, NULL)) { - if (itip_organizer_is_user (comp, event->comp_data->client) - && send_component_dialog (toplevel, event->comp_data->client, comp, FALSE)) + if (cal_client_modify_object (client, icalcomp, mod, NULL)) { + if (itip_organizer_is_user (comp, client) + && send_component_dialog (toplevel, client, comp, FALSE)) itip_send_comp (CAL_COMPONENT_METHOD_REQUEST, comp, - event->comp_data->client, NULL); + client, NULL); } } } |