Skip to content

WIP: Rebase on new KCalendarCore plugin infrastructure

Nicolas Fella requested to merge nicolasfella/calindori:rework into master

https://phabricator.kde.org/D24443 introduces a plugin infrastructure to KCalendarCore. Goal is to enable Calindori to transparently support various backends such as local file, Akonadi, Sink or Android calendar.

I apologize for the huge patch and will try to outline the important changes.

  • Calindori loads suitable calendar plugins and adds a calendar for each entry.
  • Calindori itself installs a plugin that exposes the local calendars we currently have so they continue to function
  • CalindoriConfig needs to be used by both the calindori executable and the plugin so put it into a library so it can be shared
  • A CalendarModel is added that loads and exposes the available calendars and exposes the currently active calendar
  • The CalindoriPlugin exposes the calendars defined in CalindoriConfig
  • The creation of the CalendarActions is ported from imperative JS to a more declarative instantiator
  • CalindoriConfig is a singleton and exposed to QML via context property
  • QML passes around Calendar::Ptr instead of LocalCalendar, which is more abstract
  • CalindoriConfig becomes the central point for creating, deleting, activating and importing calendars
  • Localcalendar is not needed anymore
  • CalindoriConfig now saves the active calendar as pluginId_calendarId, so local calendars need to be saved as calindori_$name. This breaks existing configurations but I can provide a kconfupdate script to migrate old configurations
Edited by Nicolas Fella

Merge request reports