- event_t *dummy = dummy_events(0, year, month, day, days);
- event_t *ical = ical_events(0, year, month, day, days);
- return merge_events(dummy, ical);
-}
+ year_t eyear = year;
+ month_t emonth = month;
+ day_t eday = day;
+ add_days(&eyear, &emonth, &eday, days);
+
+ /* Skip if we already loaded enough info */
+ if (!before(&start, year, month, day, 0, 0) &&
+ before(&end, eyear, emonth, eday, 24, 0))
+ return;
+
+ /* Free uneeded data */
+ // TODO
+
+ /* Push dates out a bit to avoid reloading,
+ * enough to at least cover the current year */
+ add_days(&year, &month, &day, -366);
+ add_days(&eyear, &emonth, &eday, 366);
+ start = (date_t){year, month, day};
+ end = (date_t){eyear, emonth, eday};
+
+ /* Load events */
+ EVENTS = merge_events(
+ dummy_events(start, end),
+ ical_events(start, end));
+
+ /* Load todos */
+ TODOS = merge_todos(
+ dummy_todos(start, end),
+ ical_todos(start, end));