aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/alarm-notify
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@ximian.com>2001-06-27 08:12:28 +0800
committerFederico Mena Quintero <federico@src.gnome.org>2001-06-27 08:12:28 +0800
commit03b231a20b0e2e1bdfc422ff713127b34e4cce19 (patch)
tree82b31bbaacdb1840116f7b15948113e99b7657c4 /calendar/gui/alarm-notify
parent0bea524b92d9909b61c572f42fadebcd2213d048 (diff)
downloadgsoc2013-evolution-03b231a20b0e2e1bdfc422ff713127b34e4cce19.tar
gsoc2013-evolution-03b231a20b0e2e1bdfc422ff713127b34e4cce19.tar.gz
gsoc2013-evolution-03b231a20b0e2e1bdfc422ff713127b34e4cce19.tar.bz2
gsoc2013-evolution-03b231a20b0e2e1bdfc422ff713127b34e4cce19.tar.lz
gsoc2013-evolution-03b231a20b0e2e1bdfc422ff713127b34e4cce19.tar.xz
gsoc2013-evolution-03b231a20b0e2e1bdfc422ff713127b34e4cce19.tar.zst
gsoc2013-evolution-03b231a20b0e2e1bdfc422ff713127b34e4cce19.zip
Renamed the occur field to occur_start; added an occur_end field. This way
2001-06-26 Federico Mena Quintero <federico@ximian.com> * idl/evolution-calendar.idl (CalAlarmInstance): Renamed the occur field to occur_start; added an occur_end field. This way we can present the complete times for the occurrence from the server. * cal-util/cal-component.h (CalAlarmInstance): Likewise. * pcs/cal-backend-file.c (add_alarm_occurrences_cb): Fill the new fields appropriately. (generate_absolute_triggers): Likewise; we use -1 in case the component has no DTSTART or DTEND because there are no meaningful occurrence dates here. (fill_alarm_instances_seq): Fill in the new fields. * cal-client/cal-client.c (build_alarm_instance_list): Likewise. * gui/alarm-notify/alarm-notify-dialog.c (alarm_notify_dialog): Take in both the occur_start and occur_end times. * gui/goto.c (goto_dialog): Free the dlg structure on the bail-out cases. * gui/dialogs/event-page.c (get_widgets): Do not assert if we cannot find the main widget; just return FALSE. * gui/dialogs/alarm-page.c (get_widgets): Likewise. * gui/dialogs/task-page.c (get_widgets): Likewise. * gui/dialogs/task-details-page.c (get_widgets): Likewise. * gui/dialogs/meeting-page.c (get_widgets): Likewise. svn path=/trunk/; revision=10517
Diffstat (limited to 'calendar/gui/alarm-notify')
-rw-r--r--calendar/gui/alarm-notify/alarm-notify-dialog.c112
-rw-r--r--calendar/gui/alarm-notify/alarm-notify-dialog.h3
-rw-r--r--calendar/gui/alarm-notify/alarm-queue.c14
3 files changed, 108 insertions, 21 deletions
diff --git a/calendar/gui/alarm-notify/alarm-notify-dialog.c b/calendar/gui/alarm-notify/alarm-notify-dialog.c
index 99b244613a..219bf7b102 100644
--- a/calendar/gui/alarm-notify/alarm-notify-dialog.c
+++ b/calendar/gui/alarm-notify/alarm-notify-dialog.c
@@ -120,10 +120,106 @@ edit_clicked_cb (GtkWidget *widget, gpointer data)
gtk_widget_destroy (an->dialog);
}
+/* Creates a heading for the alarm notification dialog */
+static char *
+make_heading (CalComponent *comp, time_t occur_start, time_t occur_end)
+{
+ CalComponentVType vtype;
+ char *buf;
+ char s[128], e[128];
+
+ vtype = cal_component_get_vtype (comp);
+
+ if (occur_start != -1) {
+ struct tm tm;
+
+ tm = *localtime (&occur_start);
+ strftime (s, sizeof (s), "%A %b %d %Y %H:%M", &tm);
+ }
+
+ if (occur_end != -1) {
+ struct tm tm;
+
+ tm = *localtime (&occur_end);
+ strftime (e, sizeof (e), "%A %b %d %Y %H:%M", &tm);
+ }
+
+ /* I love combinatorial explosion */
+
+ switch (vtype) {
+ case CAL_COMPONENT_EVENT:
+ if (occur_start != -1) {
+ if (occur_end != -1)
+ buf = g_strdup_printf (_("Notification about your appointment "
+ "starting on %s and ending on %s"),
+ s, e);
+ else
+ buf = g_strdup_printf (_("Notification about your appointment "
+ "starting on %s"),
+ s);
+ } else {
+ if (occur_end != -1)
+ buf = g_strdup_printf (_("Notification about your appointment "
+ "ending on %s"),
+ e);
+ else
+ buf = g_strdup_printf (_("Notification about your appointment"));
+ }
+ break;
+
+ case CAL_COMPONENT_TODO:
+ if (occur_start != -1) {
+ if (occur_end != -1)
+ buf = g_strdup_printf (_("Notification about your task "
+ "starting on %s and ending on %s"),
+ s, e);
+ else
+ buf = g_strdup_printf (_("Notification about your task "
+ "starting on %s"),
+ s);
+ } else {
+ if (occur_end != -1)
+ buf = g_strdup_printf (_("Notification about your task "
+ "ending on %s"),
+ e);
+ else
+ buf = g_strdup_printf (_("Notification about your task"));
+ }
+ break;
+
+ case CAL_COMPONENT_JOURNAL:
+ if (occur_start != -1) {
+ if (occur_end != -1)
+ buf = g_strdup_printf (_("Notification about your journal entry "
+ "starting on %s and ending on %s"),
+ s, e);
+ else
+ buf = g_strdup_printf (_("Notification about your journal entry "
+ "starting on %s"),
+ s);
+ } else {
+ if (occur_end != -1)
+ buf = g_strdup_printf (_("Notification about your journal entry "
+ "ending on %s"),
+ e);
+ else
+ buf = g_strdup_printf (_("Notification about your journal entry"));
+ }
+ break;
+
+ default:
+ g_assert_not_reached();
+ return NULL;
+ }
+
+ return buf;
+}
+
/**
* alarm_notify_dialog:
* @trigger: Trigger time for the alarm.
- * @occur: Occurrence time for the event.
+ * @occur_start: Start of occurrence time for the event.
+ * @occur_end: End of occurrence time for the event.
* @comp: Calendar component object which corresponds to the alarm.
* @func: Function to be called when a dialog action is invoked.
* @func_data: Closure data for @func.
@@ -134,17 +230,17 @@ edit_clicked_cb (GtkWidget *widget, gpointer data)
* Return value: TRUE on success, FALSE if the dialog could not be created.
**/
gboolean
-alarm_notify_dialog (time_t trigger, time_t occur, CalComponent *comp,
+alarm_notify_dialog (time_t trigger, time_t occur_start, time_t occur_end,
+ CalComponent *comp,
AlarmNotifyFunc func, gpointer func_data)
{
AlarmNotify *an;
char buf[256];
+ char *heading;
struct tm tm_trigger;
- struct tm tm_occur;
CalComponentText summary;
g_return_val_if_fail (trigger != -1, FALSE);
- g_return_val_if_fail (occur != -1, FALSE);
g_return_val_if_fail (comp != NULL, FALSE);
g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
g_return_val_if_fail (func != NULL, FALSE);
@@ -191,11 +287,9 @@ alarm_notify_dialog (time_t trigger, time_t occur, CalComponent *comp,
/* Heading */
- tm_occur = *localtime (&occur);
- strftime (buf, sizeof (buf),
- _("Notification about your appointment on %A %b %d %Y %H:%M"),
- &tm_occur);
- gtk_label_set_text (GTK_LABEL (an->heading), buf);
+ heading = make_heading (comp, occur_start, occur_end);
+ gtk_label_set_text (GTK_LABEL (an->heading), heading);
+ g_free (heading);
/* Summary */
diff --git a/calendar/gui/alarm-notify/alarm-notify-dialog.h b/calendar/gui/alarm-notify/alarm-notify-dialog.h
index 1b37a097aa..6399261819 100644
--- a/calendar/gui/alarm-notify/alarm-notify-dialog.h
+++ b/calendar/gui/alarm-notify/alarm-notify-dialog.h
@@ -36,7 +36,8 @@ typedef enum {
typedef void (* AlarmNotifyFunc) (AlarmNotifyResult result, int snooze_mins, gpointer data);
-gboolean alarm_notify_dialog (time_t trigger, time_t occur, CalComponent *comp,
+gboolean alarm_notify_dialog (time_t trigger, time_t occur_start, time_t occur_end,
+ CalComponent *comp,
AlarmNotifyFunc func, gpointer func_data);
diff --git a/calendar/gui/alarm-notify/alarm-queue.c b/calendar/gui/alarm-notify/alarm-queue.c
index 2072e03c84..c0e66ff484 100644
--- a/calendar/gui/alarm-notify/alarm-queue.c
+++ b/calendar/gui/alarm-notify/alarm-queue.c
@@ -163,8 +163,6 @@ alarm_trigger_cb (gpointer alarm_id, time_t trigger, gpointer data)
CalComponent *comp;
GSList *l;
QueuedAlarm *qa;
- const char *auid;
- time_t occur;
cqa = data;
comp = cqa->alarms->comp;
@@ -181,15 +179,9 @@ alarm_trigger_cb (gpointer alarm_id, time_t trigger, gpointer data)
g_assert (qa != NULL);
- /* Fetch the alarm information. We use the trigger time passed to us
- * instead of the one in the instance structure because this may not be
- * the actual computed trigger but a snoozed one instead.
- */
-
- auid = qa->instance->auid;
- occur = qa->instance->occur;
-
- if (!alarm_notify_dialog (trigger, occur, comp, notify_dialog_cb, comp))
+ if (!alarm_notify_dialog (trigger,
+ qa->instance->occur_start, qa->instance->occur_end,
+ comp, notify_dialog_cb, comp))
g_message ("alarm_trigger_cb(): Could not create the alarm notify dialog");
}