aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-util
diff options
context:
space:
mode:
authorArturo Espinosa <unammx@src.gnome.org>1998-04-25 10:23:26 +0800
committerArturo Espinosa <unammx@src.gnome.org>1998-04-25 10:23:26 +0800
commit07f873d107539a4357c69e1f3ce8cef17cc6277f (patch)
treed45a8c78f766cbf861b8bf7b34d80dc76b75da7c /calendar/cal-util
parentce6e9cd00e965c92debe331b7c762b18674bbc85 (diff)
downloadgsoc2013-evolution-07f873d107539a4357c69e1f3ce8cef17cc6277f.tar.gz
gsoc2013-evolution-07f873d107539a4357c69e1f3ce8cef17cc6277f.tar.zst
gsoc2013-evolution-07f873d107539a4357c69e1f3ce8cef17cc6277f.zip
Fixed alarm saving code. Fixed alarm loading code. New -partial-
Fixed alarm saving code. Fixed alarm loading code. New -partial- implementation of the mail alarm. It is not working, I do not know what is closing stdin to sendmail svn path=/trunk/; revision=194
Diffstat (limited to 'calendar/cal-util')
-rw-r--r--calendar/cal-util/calobj.c64
-rw-r--r--calendar/cal-util/calobj.h4
2 files changed, 46 insertions, 22 deletions
diff --git a/calendar/cal-util/calobj.c b/calendar/cal-util/calobj.c
index f3098047bd..b6f5fc7f20 100644
--- a/calendar/cal-util/calobj.c
+++ b/calendar/cal-util/calobj.c
@@ -412,17 +412,25 @@ load_recurrence (iCalObject *o, char *str)
return 1;
}
+#define is_a_prop_of(obj,prop) isAPropertyOf (obj,prop)
+#define str_val(obj) the_str = fakeCString (vObjectUStringZValue (obj))
+#define has(obj,prop) (vo = isAPropertyOf (obj, prop))
+
/*
* FIXME: This is loosing precission. Enhanec the thresholds
*/
#define HOURS(n) (n*(60*60))
static void
-setup_alarm_at (time_t base, CalendarAlarm *alarm, char *iso_time)
+setup_alarm_at (iCalObject *ico, CalendarAlarm *alarm, char *iso_time, VObject *vo)
{
time_t alarm_time = time_from_isodate (iso_time);
+ time_t base = ico->dtstart;
int d = difftime (base, alarm_time);
-
+ VObject *a;
+ char *the_str;
+
+ alarm->enabled = 1;
if (d > HOURS (2)){
if (d > HOURS (48)){
alarm->count = d / HOURS (24);
@@ -435,11 +443,17 @@ setup_alarm_at (time_t base, CalendarAlarm *alarm, char *iso_time)
alarm->count = d / 60;
alarm->units = ALARM_MINUTES;
}
-}
-#define is_a_prop_of(obj,prop) isAPropertyOf (obj,prop)
-#define str_val(obj) the_str = fakeCString (vObjectUStringZValue (obj))
-#define has(obj,prop) (vo = isAPropertyOf (obj, prop))
+ if ((a = is_a_prop_of (vo, VCSnoozeTimeProp))){
+ alarm->snooze_secs = isodiff_to_secs (str_val (a));
+ free (the_str);
+ }
+
+ if ((a = is_a_prop_of (vo, VCRepeatCountProp))){
+ alarm->snooze_repeat = atoi (str_val (a));
+ free (the_str);
+ }
+}
/* FIXME: we need to load the recurrence properties */
iCalObject *
@@ -597,9 +611,8 @@ ical_object_create_from_vobject (VObject *o, const char *object_name)
ical->dalarm.type = ALARM_DISPLAY;
ical->dalarm.enabled = 0;
if (has (o, VCDAlarmProp)){
- if ((a = is_a_prop_of (o, VCRunTimeProp))){
- ical->dalarm.enabled = 1;
- setup_alarm_at (ical->dtstart, &ical->dalarm, str_val (a));
+ if ((a = is_a_prop_of (vo, VCRunTimeProp))){
+ setup_alarm_at (ical, &ical->dalarm, str_val (a), vo);
free (the_str);
}
}
@@ -608,9 +621,8 @@ ical_object_create_from_vobject (VObject *o, const char *object_name)
ical->aalarm.type = ALARM_AUDIO;
ical->aalarm.enabled = 0;
if (has (o, VCAAlarmProp)){
- if ((a = is_a_prop_of (o, VCRunTimeProp))){
- ical->aalarm.enabled = 1;
- setup_alarm_at (ical->dtstart, &ical->aalarm, str_val (a));
+ if ((a = is_a_prop_of (vo, VCRunTimeProp))){
+ setup_alarm_at (ical, &ical->aalarm, str_val (a), vo);
free (the_str);
}
}
@@ -620,12 +632,11 @@ ical_object_create_from_vobject (VObject *o, const char *object_name)
ical->palarm.enabled = 0;
if (has (o, VCPAlarmProp)){
ical->palarm.type = ALARM_PROGRAM;
- if ((a = is_a_prop_of (o, VCRunTimeProp))){
- ical->palarm.enabled = 1;
- setup_alarm_at (ical->dtstart, &ical->palarm, str_val (a));
+ if ((a = is_a_prop_of (vo, VCRunTimeProp))){
+ setup_alarm_at (ical, &ical->palarm, str_val (a), vo);
free (the_str);
- if ((a = is_a_prop_of (o, VCProcedureNameProp))){
+ if ((a = is_a_prop_of (vo, VCProcedureNameProp))){
ical->palarm.data = g_strdup (str_val (a));
free (the_str);
}
@@ -637,12 +648,11 @@ ical_object_create_from_vobject (VObject *o, const char *object_name)
ical->malarm.enabled = 0;
if (has (o, VCMAlarmProp)){
ical->malarm.type = ALARM_MAIL;
- if ((a = is_a_prop_of (o, VCRunTimeProp))){
- ical->malarm.enabled = 1;
- setup_alarm_at (ical->dtstart, &ical->malarm, str_val (a));
+ if ((a = is_a_prop_of (vo, VCRunTimeProp))){
+ setup_alarm_at (ical, &ical->malarm, str_val (a), vo);
free (the_str);
- if ((a = is_a_prop_of (o, VCEmailAddressProp))){
+ if ((a = is_a_prop_of (vo, VCEmailAddressProp))){
ical->malarm.data = g_strdup (str_val (a));
free (the_str);
}
@@ -754,9 +764,19 @@ save_alarm (VObject *o, CalendarAlarm *alarm, iCalObject *ical)
alarm_time = mktime (tm);
alarm_object = addProp (o, alarm_names [alarm->type]);
addPropValue (alarm_object, VCRunTimeProp, isodate_from_time_t (alarm_time));
- addPropValue (alarm_object, VCRepeatCountProp, "1");
- addPropValue (alarm_object, VCDisplayStringProp, "GNOME appointment alarm");
+ if (alarm->snooze_secs)
+ addPropValue (alarm_object, VCSnoozeTimeProp, isodiff_from_secs (alarm->snooze_secs));
+ else
+ addPropValue (alarm_object, VCSnoozeTimeProp, "");
+
+ if (alarm->snooze_repeat){
+ char buf [20];
+
+ sprintf (buf, "%d", alarm->snooze_repeat);
+ addPropValue (alarm_object, VCRepeatCountProp, buf);
+ } else
+ addPropValue (alarm_object, VCRepeatCountProp, "");
return alarm_object;
}
diff --git a/calendar/cal-util/calobj.h b/calendar/cal-util/calobj.h
index 60483c68ad..12b7578f10 100644
--- a/calendar/cal-util/calobj.h
+++ b/calendar/cal-util/calobj.h
@@ -36,6 +36,9 @@ typedef struct {
/* Does not get saved, internally used */
time_t offset;
time_t trigger;
+
+ int snooze_secs;
+ int snooze_repeat;
/* Widgets */
void *w_count; /* A GtkEntry */
@@ -109,6 +112,7 @@ typedef struct {
time_t _enddate; /* As found on the vCalendar file */
int __count;
} Recurrence;
+
#define IS_INFINITE(r) (r->duration == 0)
/* Flags to indicate what has changed in an object */