WIP: Rebase on new KCalendarCore plugin infrastructure
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