aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/alarm-notify/alarm-queue.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/alarm-notify/alarm-queue.c')
-rw-r--r--calendar/gui/alarm-notify/alarm-queue.c49
1 files changed, 47 insertions, 2 deletions
diff --git a/calendar/gui/alarm-notify/alarm-queue.c b/calendar/gui/alarm-notify/alarm-queue.c
index f56905392a..2072e03c84 100644
--- a/calendar/gui/alarm-notify/alarm-queue.c
+++ b/calendar/gui/alarm-notify/alarm-queue.c
@@ -27,6 +27,7 @@
#include <gtk/gtksignal.h>
#include <cal-util/timeutil.h>
#include "alarm.h"
+#include "alarm-notify-dialog.h"
#include "alarm-queue.h"
@@ -135,17 +136,61 @@ lookup_client (CalClient *client)
return g_hash_table_lookup (client_alarms_hash, client);
}
+/* Callback used from the alarm notify dialog */
+static void
+notify_dialog_cb (AlarmNotifyResult result, int snooze_mins, gpointer data)
+{
+ switch (result) {
+ case ALARM_NOTIFY_SNOOZE:
+ /* FIXME */
+ break;
+
+ case ALARM_NOTIFY_EDIT:
+ /* FIXME */
+ break;
+
+ case ALARM_NOTIFY_CLOSE:
+ default:
+ break;
+ }
+}
+
/* Callback used when an alarm triggers */
static void
alarm_trigger_cb (gpointer alarm_id, time_t trigger, gpointer data)
{
CompQueuedAlarms *cqa;
+ CalComponent *comp;
+ GSList *l;
+ QueuedAlarm *qa;
+ const char *auid;
+ time_t occur;
cqa = data;
+ comp = cqa->alarms->comp;
- /* FIXME */
+ /* Look for the queued alarm so that we can identify its occurrence */
+
+ qa = NULL;
+
+ for (l = cqa->queued_alarms; l; l = l->next) {
+ qa = l->data;
+ if (qa->alarm_id == alarm_id)
+ break;
+ }
+
+ 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;
- g_message ("alarm_trigger_cb(): Triggered!");
+ if (!alarm_notify_dialog (trigger, occur, comp, notify_dialog_cb, comp))
+ g_message ("alarm_trigger_cb(): Could not create the alarm notify dialog");
}
/* Callback used when an alarm must be destroyed */