aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/alarm-notify
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@ximian.com>2001-06-25 06:53:14 +0800
committerFederico Mena Quintero <federico@src.gnome.org>2001-06-25 06:53:14 +0800
commit2c1887f5fed391efb16a1f5084a5a9016bd73f32 (patch)
tree9a80f1a619a759667b95ec2f3e642200417e4911 /calendar/gui/alarm-notify
parent1965d493f225953fd8b8b7fbcee599c5fd78b8bf (diff)
downloadgsoc2013-evolution-2c1887f5fed391efb16a1f5084a5a9016bd73f32.tar.gz
gsoc2013-evolution-2c1887f5fed391efb16a1f5084a5a9016bd73f32.tar.zst
gsoc2013-evolution-2c1887f5fed391efb16a1f5084a5a9016bd73f32.zip
Converted to use BonoboXObject.
2001-06-24 Federico Mena Quintero <federico@ximian.com> * gui/alarm-notify/alarm-notify.c: Converted to use BonoboXObject. * gui/gnome-cal.c (gnome_calendar_open): Ask the alarm notification service to add the calendar and tasks URIs. (add_alarms): New function. * gui/alarm-notify/notify-main.c (main): Doh, fixed typo in the OAFIID. (main): Initialize and shut down gnome-vfs. * gui/Makefile.am (IDLS): Added evolution-calendar.idl, sigh. (evolution_calendar_SOURCES): Added the files generated from the IDL. * gui/alarm-notify/alarm-queue.c (alarm_trigger_cb): New function used when an alarm is triggered. * gui/dialogs/Makefile.am: Removed the alarm-notify-dialog files; they are now in gui/alarm-notify. * gui/alarm-notify/Makefile.am: Added the alarm-notify-dialog files. * pcs/cal.c (cal_forget_password): This was incorrectly named cal_client_forget_password(); renamed it. * gui/main.c (main): Initialize and shut down gnome-vfs. svn path=/trunk/; revision=10453
Diffstat (limited to 'calendar/gui/alarm-notify')
-rw-r--r--calendar/gui/alarm-notify/Makefile.am8
-rw-r--r--calendar/gui/alarm-notify/alarm-notify-dialog.h3
-rw-r--r--calendar/gui/alarm-notify/alarm-notify.c161
-rw-r--r--calendar/gui/alarm-notify/alarm-notify.h14
-rw-r--r--calendar/gui/alarm-notify/alarm-queue.c49
-rw-r--r--calendar/gui/alarm-notify/notify-main.c10
6 files changed, 89 insertions, 156 deletions
diff --git a/calendar/gui/alarm-notify/Makefile.am b/calendar/gui/alarm-notify/Makefile.am
index de0f4fb847..4176a71685 100644
--- a/calendar/gui/alarm-notify/Makefile.am
+++ b/calendar/gui/alarm-notify/Makefile.am
@@ -36,10 +36,15 @@ INCLUDES = \
gladedir = $(datadir)/evolution/glade
+glade_DATA = \
+ alarm-notify.glade
+
evolution_alarm_notify_SOURCES = \
$(CORBA_GENERATED) \
alarm-notify.c \
alarm-notify.h \
+ alarm-notify-dialog.c \
+ alarm-notify-dialog.h \
alarm-queue.c \
alarm-queue.h \
notify-main.c
@@ -73,7 +78,8 @@ oaf_DATA = $(oaf_in_files:.oaf.in=.oaf)
EXTRA_DIST = \
$(oaf_DATA) \
- $(oaf_in_files)
+ $(oaf_in_files) \
+ $(glade_DATA)
BUILT_SOURCES = $(CORBA_GENERATED)
CLEANFILES += $(BUILT_SOURCES)
diff --git a/calendar/gui/alarm-notify/alarm-notify-dialog.h b/calendar/gui/alarm-notify/alarm-notify-dialog.h
index a6715a7325..1b37a097aa 100644
--- a/calendar/gui/alarm-notify/alarm-notify-dialog.h
+++ b/calendar/gui/alarm-notify/alarm-notify-dialog.h
@@ -1,7 +1,6 @@
/* Evolution calendar - alarm notification dialog
*
- * Copyright (C) 2000 Ximian, Inc.
- * Copyright (C) 2000 Ximian, Inc.
+ * Copyright (C) 2001 Ximian, Inc.
*
* Author: Federico Mena-Quintero <federico@ximian.com>
*
diff --git a/calendar/gui/alarm-notify/alarm-notify.c b/calendar/gui/alarm-notify/alarm-notify.c
index f0824bd8f4..88d25dafbc 100644
--- a/calendar/gui/alarm-notify/alarm-notify.c
+++ b/calendar/gui/alarm-notify/alarm-notify.c
@@ -1,7 +1,6 @@
/* Evolution calendar - Alarm notification service object
*
- * Copyright (C) 2000 Ximian, Inc.
- * Copyright (C) 2000 Ximian, Inc.
+ * Copyright (C) 2001 Ximian, Inc.
*
* Author: Federico Mena-Quintero <federico@ximian.com>
*
@@ -59,50 +58,24 @@ static void alarm_notify_class_init (AlarmNotifyClass *class);
static void alarm_notify_init (AlarmNotify *an);
static void alarm_notify_destroy (GtkObject *object);
-static POA_GNOME_Evolution_Calendar_AlarmNotify__vepv alarm_notify_vepv;
+static void AlarmNotify_addCalendar (PortableServer_Servant servant,
+ const CORBA_char *str_uri,
+ CORBA_Environment *ev);
+static void AlarmNotify_removeCalendar (PortableServer_Servant servant,
+ const CORBA_char *str_uri,
+ CORBA_Environment *ev);
+static void AlarmNotify_die (PortableServer_Servant servant,
+ CORBA_Environment *ev);
-static BonoboObjectClass *parent_class;
-
+static BonoboXObjectClass *parent_class;
-/**
- * alarm_notify_get_type:
- *
- * Registers the #AlarmNotify class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #AlarmNotify class.
- **/
-GtkType
-alarm_notify_get_type (void)
-{
- static GtkType alarm_notify_type = 0;
-
- if (!alarm_notify_type) {
- static const GtkTypeInfo alarm_notify_info = {
- "AlarmNotify",
- sizeof (AlarmNotify),
- sizeof (AlarmNotifyClass),
- (GtkClassInitFunc) alarm_notify_class_init,
- (GtkObjectInitFunc) alarm_notify_init,
- NULL, /* reserved_1 */
- NULL, /* reserved_2 */
- (GtkClassInitFunc) NULL
- };
-
- alarm_notify_type = gtk_type_unique (BONOBO_OBJECT_TYPE, &alarm_notify_info);
- }
-
- return alarm_notify_type;
-}
+
-/* CORBA class initialization function for the alarm notify service */
-static void
-init_alarm_notify_corba_class (void)
-{
- alarm_notify_vepv.Bonobo_Unknown_epv = bonobo_object_get_epv ();
- alarm_notify_vepv.GNOME_Evolution_Calendar_AlarmNotify_epv = alarm_notify_get_epv ();
-}
+BONOBO_X_TYPE_FUNC_FULL (AlarmNotify,
+ GNOME_Evolution_Calendar_AlarmNotify,
+ BONOBO_X_OBJECT_TYPE,
+ alarm_notify);
/* Class initialization function for the alarm notify service */
static void
@@ -112,11 +85,13 @@ alarm_notify_class_init (AlarmNotifyClass *class)
object_class = (GtkObjectClass *) class;
- parent_class = gtk_type_class (BONOBO_OBJECT_TYPE);
+ parent_class = gtk_type_class (BONOBO_X_OBJECT_TYPE);
- object_class->destroy = alarm_notify_destroy;
+ class->epv.addCalendar = AlarmNotify_addCalendar;
+ class->epv.removeCalendar = AlarmNotify_removeCalendar;
+ class->epv.die = AlarmNotify_die;
- init_alarm_notify_corba_class ();
+ object_class->destroy = alarm_notify_destroy;
}
/* Object initialization function for the alarm notify system */
@@ -290,86 +265,9 @@ AlarmNotify_die (PortableServer_Servant servant,
/* FIXME */
}
-/**
- * alarm_notify_get_epv:
- *
- * Creates an EPV for the AlarmNotify CORBA class.
- *
- * Return value: A newly-allocated EPV.
- **/
-POA_GNOME_Evolution_Calendar_AlarmNotify__epv *
-alarm_notify_get_epv (void)
-{
- POA_GNOME_Evolution_Calendar_AlarmNotify__epv *epv;
-
- epv = g_new0 (POA_GNOME_Evolution_Calendar_AlarmNotify__epv, 1);
- epv->addCalendar = AlarmNotify_addCalendar;
- epv->removeCalendar = AlarmNotify_removeCalendar;
- epv->die = AlarmNotify_die;
- return epv;
-}
-
/**
- * alarm_notify_construct:
- * @an: An alarm notification service object.
- * @corba_an: CORBA object for the alarm notification service.
- *
- * Constructs an alarm notification service object by binding the corresponding
- * CORBA object to it.
- *
- * Return value: the same object as the @an argument.
- **/
-AlarmNotify *
-alarm_notify_construct (AlarmNotify *an,
- GNOME_Evolution_Calendar_AlarmNotify corba_an)
-{
- g_return_val_if_fail (an != NULL, NULL);
- g_return_val_if_fail (IS_ALARM_NOTIFY (an), NULL);
-
- /* FIXME: add_interface the property bag here */
-
- bonobo_object_construct (BONOBO_OBJECT (an), corba_an);
- return an;
-}
-
-/**
- * alarm_notify_corba_object_create:
- * @object: #BonoboObject that will wrap the CORBA object.
- *
- * Creates and activates the CORBA object that is wrapped by the specified alarm
- * notification service @object.
- *
- * Return value: An activated object reference or #CORBA_OBJECT_NIL in case of
- * failure.
- **/
-GNOME_Evolution_Calendar_AlarmNotify
-alarm_notify_corba_object_create (BonoboObject *object)
-{
- POA_GNOME_Evolution_Calendar_AlarmNotify *servant;
- CORBA_Environment ev;
-
- g_return_val_if_fail (object != NULL, CORBA_OBJECT_NIL);
- g_return_val_if_fail (IS_ALARM_NOTIFY (object), CORBA_OBJECT_NIL);
-
- servant = (POA_GNOME_Evolution_Calendar_AlarmNotify *) g_new (BonoboObjectServant, 1);
- servant->vepv = &alarm_notify_vepv;
-
- CORBA_exception_init (&ev);
- POA_GNOME_Evolution_Calendar_AlarmNotify__init ((PortableServer_Servant) servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_free (servant);
- CORBA_exception_free (&ev);
- return CORBA_OBJECT_NIL;
- }
-
- CORBA_exception_free (&ev);
- return (GNOME_Evolution_Calendar_AlarmNotify) bonobo_object_activate_servant (
- object, servant);
-}
-
-/**
* alarm_notify_new:
*
* Creates a new #AlarmNotify object.
@@ -381,24 +279,7 @@ AlarmNotify *
alarm_notify_new (void)
{
AlarmNotify *an;
- GNOME_Evolution_Calendar_AlarmNotify corba_an;
- CORBA_Environment ev;
- gboolean result;
an = gtk_type_new (TYPE_ALARM_NOTIFY);
-
- corba_an = alarm_notify_corba_object_create (BONOBO_OBJECT (an));
-
- CORBA_exception_init (&ev);
- result = CORBA_Object_is_nil (corba_an, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION || result) {
- g_message ("alarm_notify_new(): could not create the CORBA alarm notify service");
- bonobo_object_unref (BONOBO_OBJECT (an));
- CORBA_exception_free (&ev);
- return NULL;
- }
- CORBA_exception_free (&ev);
-
- return alarm_notify_construct (an, corba_an);
+ return an;
}
diff --git a/calendar/gui/alarm-notify/alarm-notify.h b/calendar/gui/alarm-notify/alarm-notify.h
index 0fb73551d7..4122b269fa 100644
--- a/calendar/gui/alarm-notify/alarm-notify.h
+++ b/calendar/gui/alarm-notify/alarm-notify.h
@@ -23,7 +23,7 @@
#ifndef ALARM_NOTIFY_H
#define ALARM_NOTIFY_H
-#include <bonobo/bonobo-object.h>
+#include <bonobo/bonobo-xobject.h>
#include "evolution-calendar.h"
@@ -41,24 +41,20 @@ typedef struct _AlarmNotifyClass AlarmNotifyClass;
typedef struct _AlarmNotifyPrivate AlarmNotifyPrivate;
struct _AlarmNotify {
- BonoboObject object;
+ BonoboXObject xobject;
/* Private data */
AlarmNotifyPrivate *priv;
};
struct _AlarmNotifyClass {
- BonoboObjectClass parent_class;
+ BonoboXObjectClass parent_class;
+
+ POA_GNOME_Evolution_Calendar_AlarmNotify__epv epv;
};
GtkType alarm_notify_get_type (void);
-AlarmNotify *alarm_notify_construct (AlarmNotify *an,
- GNOME_Evolution_Calendar_AlarmNotify corba_an);
-
-GNOME_Evolution_Calendar_AlarmNotify alarm_notify_corba_object_create (BonoboObject *object);
-POA_GNOME_Evolution_Calendar_AlarmNotify__epv *alarm_notify_get_epv (void);
-
AlarmNotify *alarm_notify_new (void);
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 */
diff --git a/calendar/gui/alarm-notify/notify-main.c b/calendar/gui/alarm-notify/notify-main.c
index c26ecd8975..d608579933 100644
--- a/calendar/gui/alarm-notify/notify-main.c
+++ b/calendar/gui/alarm-notify/notify-main.c
@@ -28,6 +28,7 @@
#include <libgnome/gnome-defs.h>
#include <libgnome/gnome-i18n.h>
#include <libgnomeui/gnome-init.h>
+#include <libgnomevfs/gnome-vfs-init.h>
#include <bonobo/bonobo-main.h>
#include <bonobo/bonobo-generic-factory.h>
#include <liboaf/liboaf.h>
@@ -51,7 +52,7 @@ funny_trigger_cb (gpointer alarm_id, time_t trigger, gpointer data)
struct tm *tm;
tm = localtime (&trigger);
- strftime (str, sizeof (str), "%x %X", tm);
+ strftime (str, sizeof (str), "%Y/%m/%d %H:%M:%S", tm);
msg = g_strdup_printf (_("It is %s. The Unix time is %ld right now. We just thought "
"you may like to know."), str, (long) trigger);
@@ -97,12 +98,15 @@ main (int argc, char **argv)
if (bonobo_init (CORBA_OBJECT_NIL, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL) == FALSE)
g_error (_("Could not initialize Bonobo"));
+ if (!gnome_vfs_init ())
+ g_error (_("Could not initialize gnome-vfs"));
+
alarm_init ();
alarm_queue_init ();
funny_times_init ();
- factory = bonobo_generic_factory_new ("OAFID:GNOME_Evolution_Calendar_AlarmNotify_Factory",
+ factory = bonobo_generic_factory_new ("OAFIID:GNOME_Evolution_Calendar_AlarmNotify_Factory",
alarm_notify_factory_fn, NULL);
if (!factory)
g_error (_("Could not create the alarm notify service factory"));
@@ -115,5 +119,7 @@ main (int argc, char **argv)
alarm_queue_done ();
alarm_done ();
+ gnome_vfs_shutdown ();
+
return 0;
}