aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-util/cal-component.c
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@ximian.com>2001-10-30 17:25:24 +0800
committerFederico Mena Quintero <federico@src.gnome.org>2001-10-30 17:25:24 +0800
commitf3c4424cca6a4072d59c6de24524b0ca7f2a6ec5 (patch)
tree7ab4397aab4f3e85da00c269112ddc3b1a75b49c /calendar/cal-util/cal-component.c
parent6bf38a0ba9bc70423c228445de61d6cbf4f7bd60 (diff)
downloadgsoc2013-evolution-f3c4424cca6a4072d59c6de24524b0ca7f2a6ec5.tar
gsoc2013-evolution-f3c4424cca6a4072d59c6de24524b0ca7f2a6ec5.tar.gz
gsoc2013-evolution-f3c4424cca6a4072d59c6de24524b0ca7f2a6ec5.tar.bz2
gsoc2013-evolution-f3c4424cca6a4072d59c6de24524b0ca7f2a6ec5.tar.lz
gsoc2013-evolution-f3c4424cca6a4072d59c6de24524b0ca7f2a6ec5.tar.xz
gsoc2013-evolution-f3c4424cca6a4072d59c6de24524b0ca7f2a6ec5.tar.zst
gsoc2013-evolution-f3c4424cca6a4072d59c6de24524b0ca7f2a6ec5.zip
Use an EMessageBox instead of a gnome_dialog_question so that the label
2001-10-30 Federico Mena Quintero <federico@ximian.com> * gui/dialogs/delete-comp.c (delete_component_dialog): Use an EMessageBox instead of a gnome_dialog_question so that the label gets line breaking. Fixes bug #11260. 2001-10-29 Federico Mena Quintero <federico@ximian.com> Fix bug #13649. * gui/calendar-config.c (calendar_config_get_use_default_reminder): New function. (calendar_config_set_use_default_reminder): New function. (calendar_config_get_default_reminder_interval): New function. (calendar_config_set_default_reminder_interval): New function. (calendar_config_get_default_reminder_units): New function. (calendar_config_set_default_reminder_units): New function. (config_read): Get the options for default reminders. (calendar_config_write): Set the options for default reminders. * gui/dialogs/cal-prefs-dialog.c (cal_prefs_dialog_show_config): Set the default reminder widgets from the config values. (cal_prefs_dialog_update_config): Set the config values from the widgets. * gui/comp-util.c (cal_comp_event_new_with_defaults): New function; creates a VEVENT component with the default alarm. * gui/e-day-view.c (e_day_view_key_press): Use cal_comp_event_new_with_defaults (); * gui/e-week-view.c (e_week_view_key_press): Likewise. * gui/calendar-model.c (calendar_model_append_row): Likewise. * gui/comp-editor-factory.c (get_default_component): Likewise. * gui/gnome-cal.c (gnome_calendar_new_appointment_for): Likewise. * cal-util/cal-component.c (ensure_alarm_properties_cb): Ensure we have a DESCRIPTION property. (cal_component_commit_sequence): Ensure we have the mandatory alarm properties. svn path=/trunk/; revision=14446
Diffstat (limited to 'calendar/cal-util/cal-component.c')
-rw-r--r--calendar/cal-util/cal-component.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/calendar/cal-util/cal-component.c b/calendar/cal-util/cal-component.c
index a2074525a6..6e652b4851 100644
--- a/calendar/cal-util/cal-component.c
+++ b/calendar/cal-util/cal-component.c
@@ -23,6 +23,9 @@
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
+#include <glib.h>
+#include <libgnome/gnome-defs.h>
+#include <libgnome/gnome-i18n.h>
#include "cal-component.h"
#include "timeutil.h"
@@ -1164,6 +1167,66 @@ cal_component_get_as_string (CalComponent *comp)
return buf;
}
+/* Used from g_hash_table_foreach(); ensures that an alarm subcomponent
+ * has the mandatory properties it needs.
+ */
+static void
+ensure_alarm_properties_cb (gpointer key, gpointer value, gpointer data)
+{
+ CalComponent *comp;
+ CalComponentPrivate *priv;
+ icalcomponent *alarm;
+ icalproperty *prop;
+ enum icalproperty_action action;
+ const char *str;
+
+ alarm = value;
+
+ comp = CAL_COMPONENT (data);
+ priv = comp->priv;
+
+ prop = icalcomponent_get_first_property (alarm, ICAL_ACTION_PROPERTY);
+ if (!prop)
+ return;
+
+ action = icalproperty_get_action (prop);
+
+ switch (action) {
+ case ICAL_ACTION_DISPLAY:
+ /* Ensure we have a DESCRIPTION property */
+ prop = icalcomponent_get_first_property (alarm, ICAL_DESCRIPTION_PROPERTY);
+ if (prop)
+ break;
+
+ if (!priv->summary.prop)
+ str = _("Untitled appointment");
+ else
+ str = icalproperty_get_summary (priv->summary.prop);
+
+ prop = icalproperty_new_description (str);
+ icalcomponent_add_property (alarm, prop);
+
+ break;
+
+ default:
+ break;
+ /* FIXME: add other action types here */
+ }
+}
+
+/* Ensures that alarm subcomponents have the mandatory properties they need,
+ * even when clients may not have set them properly.
+ */
+static void
+ensure_alarm_properties (CalComponent *comp)
+{
+ CalComponentPrivate *priv;
+
+ priv = comp->priv;
+
+ g_hash_table_foreach (priv->alarm_uid_hash, ensure_alarm_properties_cb, comp);
+}
+
/**
* cal_component_commit_sequence:
* @comp:
@@ -1186,6 +1249,8 @@ cal_component_commit_sequence (CalComponent *comp)
priv = comp->priv;
g_return_if_fail (priv->icalcomp != NULL);
+ ensure_alarm_properties (comp);
+
if (!priv->need_sequence_inc)
return;