diff options
author | Federico Mena Quintero <federico@ximian.com> | 2001-06-25 06:53:14 +0800 |
---|---|---|
committer | Federico Mena Quintero <federico@src.gnome.org> | 2001-06-25 06:53:14 +0800 |
commit | 2c1887f5fed391efb16a1f5084a5a9016bd73f32 (patch) | |
tree | 9a80f1a619a759667b95ec2f3e642200417e4911 /calendar/gui/alarm-notify | |
parent | 1965d493f225953fd8b8b7fbcee599c5fd78b8bf (diff) | |
download | gsoc2013-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.am | 8 | ||||
-rw-r--r-- | calendar/gui/alarm-notify/alarm-notify-dialog.h | 3 | ||||
-rw-r--r-- | calendar/gui/alarm-notify/alarm-notify.c | 161 | ||||
-rw-r--r-- | calendar/gui/alarm-notify/alarm-notify.h | 14 | ||||
-rw-r--r-- | calendar/gui/alarm-notify/alarm-queue.c | 49 | ||||
-rw-r--r-- | calendar/gui/alarm-notify/notify-main.c | 10 |
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; } |