aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-util
diff options
context:
space:
mode:
authorDamon Chaplin <damon@helixcode.com>2000-10-20 08:42:20 +0800
committerDamon Chaplin <damon@src.gnome.org>2000-10-20 08:42:20 +0800
commitb274ab5c91aab08729c6b504ee7cd10631e3a42d (patch)
tree4d1617f7047c000f1cf8020100bb2361fb793ef7 /calendar/cal-util
parent9dd3248b61831d6530fb61dfde4b277d3820e7ed (diff)
downloadgsoc2013-evolution-b274ab5c91aab08729c6b504ee7cd10631e3a42d.tar
gsoc2013-evolution-b274ab5c91aab08729c6b504ee7cd10631e3a42d.tar.gz
gsoc2013-evolution-b274ab5c91aab08729c6b504ee7cd10631e3a42d.tar.bz2
gsoc2013-evolution-b274ab5c91aab08729c6b504ee7cd10631e3a42d.tar.lz
gsoc2013-evolution-b274ab5c91aab08729c6b504ee7cd10631e3a42d.tar.xz
gsoc2013-evolution-b274ab5c91aab08729c6b504ee7cd10631e3a42d.tar.zst
gsoc2013-evolution-b274ab5c91aab08729c6b504ee7cd10631e3a42d.zip
added _click-to-add-message, though I'm not sure if i18n will work.
2000-10-20 Damon Chaplin <damon@helixcode.com> * gui/e-calendar-table.c (E_CALENDAR_TABLE_SPEC): added _click-to-add-message, though I'm not sure if i18n will work. * cal-util/cal-recur.c (cal_obj_time_add_hours): (cal_obj_time_add_minutes): (cal_obj_time_add_seconds): updated to handle -ve args. * cal-util/timeutil.c (time_add_day): set tm_isdst to -1 before calling mktime(). * cal-util/cal-recur.c (generate_instances_for_chunk): don't call the callback if the event ends exactly on the interval start time. * gui/e-week-view.c (e_week_view_reshape_event_span): * gui/e-week-view-event-item.c (e_week_view_event_item_draw_icons): * gui/e-day-view-top-item.c (e_day_view_top_item_draw_long_event): * gui/e-day-view-main-item.c (e_day_view_main_item_draw_day_event): * gui/e-day-view.c (e_day_view_reshape_long_event): (e_day_view_reshape_day_event): use cal_component_has_alarms(). * cal-util/cal-component.[hc]: added cal_component_has_alarms(). 2000-10-16 Damon Chaplin <damon@helixcode.com> * gui/calendar-config.c (config_read): set default MonthVPanePosition to 1 rather than 0, so if you move the hpane you'll see the date navigator. svn path=/trunk/; revision=6063
Diffstat (limited to 'calendar/cal-util')
-rw-r--r--calendar/cal-util/cal-component.c25
-rw-r--r--calendar/cal-util/cal-component.h1
-rw-r--r--calendar/cal-util/cal-recur.c58
-rw-r--r--calendar/cal-util/test-recur.c1
-rw-r--r--calendar/cal-util/timeutil.c1
5 files changed, 73 insertions, 13 deletions
diff --git a/calendar/cal-util/cal-component.c b/calendar/cal-util/cal-component.c
index 4efb29a610..42185fec4f 100644
--- a/calendar/cal-util/cal-component.c
+++ b/calendar/cal-util/cal-component.c
@@ -3228,6 +3228,31 @@ cal_component_free_text_list (GSList *text_list)
+/**
+ * cal_component_has_alarms:
+ * @comp: A calendar component object.
+ *
+ * Checks whether the component has any alarms.
+ *
+ * Return value: TRUE if the component has any alarms.
+ **/
+gboolean
+cal_component_has_alarms (CalComponent *comp)
+{
+ CalComponentPrivate *priv;
+ icalcomponent *subcomp;
+
+ g_return_val_if_fail (comp != NULL, FALSE);
+ g_return_val_if_fail (IS_CAL_COMPONENT (comp), FALSE);
+
+ priv = comp->priv;
+ g_return_val_if_fail (priv->icalcomp != NULL, FALSE);
+
+ subcomp = icalcomponent_get_first_component (priv->icalcomp, ICAL_VALARM_COMPONENT);
+
+ return subcomp != NULL ? TRUE : FALSE;
+}
+
/* Scans an icalproperty from a calendar component and adds its mapping to our
* own alarm structure.
*/
diff --git a/calendar/cal-util/cal-component.h b/calendar/cal-util/cal-component.h
index 91d62ae548..32c3449b55 100644
--- a/calendar/cal-util/cal-component.h
+++ b/calendar/cal-util/cal-component.h
@@ -294,6 +294,7 @@ typedef struct {
} u;
} CalComponentAlarmTrigger;
+gboolean cal_component_has_alarms (CalComponent *comp);
CalComponentAlarm *cal_component_get_first_alarm (CalComponent *comp);
CalComponentAlarm *cal_component_get_next_alarm (CalComponent *comp);
diff --git a/calendar/cal-util/cal-recur.c b/calendar/cal-util/cal-recur.c
index 74a0dbf6f7..057bde1368 100644
--- a/calendar/cal-util/cal-recur.c
+++ b/calendar/cal-util/cal-recur.c
@@ -578,6 +578,11 @@ cal_recur_generate_instances (CalComponent *comp,
CalRecurInstanceFn cb,
gpointer cb_data)
{
+#if 0
+ g_print ("In cal_recur_generate_instances comp: %p\n", comp);
+ g_print (" start: %li - %s", start, ctime (&start));
+ g_print (" end : %li - %s", end, ctime (&end));
+#endif
cal_recur_generate_instances_of_rule (comp, NULL, start, end,
cb, cb_data);
}
@@ -1119,7 +1124,7 @@ generate_instances_for_chunk (CalComponent *comp,
break;
}
- if (end_time < interval_start_time)
+ if (end_time <= interval_start_time)
continue;
cb_status = (*cb) (comp, start_time, end_time, cb_data);
@@ -3171,13 +3176,22 @@ static void
cal_obj_time_add_hours (CalObjTime *cotime,
gint hours)
{
- guint hour;
+ gint hour, days;
- /* We use a guint to avoid overflow on the guint8. */
+ /* We use a gint to avoid overflow on the guint8. */
hour = cotime->hour + hours;
cotime->hour = hour % 24;
- if (hour >= 24)
- cal_obj_time_add_days (cotime, hour / 24);
+ if (hour >= 0) {
+ if (hour >= 24)
+ cal_obj_time_add_days (cotime, hour / 24);
+ } else {
+ days = hour / 24;
+ if (cotime->hour != 0) {
+ cotime->hour += 24;
+ days -= 1;
+ }
+ cal_obj_time_add_days (cotime, days);
+ }
}
@@ -3187,13 +3201,22 @@ static void
cal_obj_time_add_minutes (CalObjTime *cotime,
gint minutes)
{
- guint minute;
+ gint minute, hours;
- /* We use a guint to avoid overflow on the guint8. */
+ /* We use a gint to avoid overflow on the guint8. */
minute = cotime->minute + minutes;
cotime->minute = minute % 60;
- if (minute >= 60)
- cal_obj_time_add_hours (cotime, minute / 60);
+ if (minute >= 0) {
+ if (minute >= 60)
+ cal_obj_time_add_hours (cotime, minute / 60);
+ } else {
+ hours = minute / 60;
+ if (cotime->minute != 0) {
+ cotime->minute += 60;
+ hours -= 1;
+ }
+ cal_obj_time_add_hours (cotime, hours);
+ }
}
@@ -3203,13 +3226,22 @@ static void
cal_obj_time_add_seconds (CalObjTime *cotime,
gint seconds)
{
- guint second;
+ gint second, minutes;
- /* We use a guint to avoid overflow on the guint8. */
+ /* We use a gint to avoid overflow on the guint8. */
second = cotime->second + seconds;
cotime->second = second % 60;
- if (second >= 60)
- cal_obj_time_add_minutes (cotime, second / 60);
+ if (second >= 0) {
+ if (second >= 60)
+ cal_obj_time_add_minutes (cotime, second / 60);
+ } else {
+ minutes = second / 60;
+ if (cotime->second != 0) {
+ cotime->second += 60;
+ minutes -= 1;
+ }
+ cal_obj_time_add_minutes (cotime, minutes);
+ }
}
diff --git a/calendar/cal-util/test-recur.c b/calendar/cal-util/test-recur.c
index 620e65c185..6ec214b18b 100644
--- a/calendar/cal-util/test-recur.c
+++ b/calendar/cal-util/test-recur.c
@@ -141,6 +141,7 @@ generate_occurrences (icalcomponent *icalcomp)
g_print ("#############################################################################\n");
g_print ("%s\n\n", icalcomponent_as_ical_string (tmp_icalcomp));
+ occurrences = 0;
cal_recur_generate_instances (comp, -1, -1,
occurrence_cb, &occurrences);
diff --git a/calendar/cal-util/timeutil.c b/calendar/cal-util/timeutil.c
index 1281e6fe92..a509bd3cba 100644
--- a/calendar/cal-util/timeutil.c
+++ b/calendar/cal-util/timeutil.c
@@ -136,6 +136,7 @@ time_add_day (time_t time, int days)
#endif
tm->tm_mday += days;
+ tm->tm_isdst = -1;
if ((new_time = mktime (tm)) == -1){
g_message ("time_add_day(): mktime() could not handling adding %d days with\n",