Fix dnd email
[kdepim.git] / kalarm / calendarmigrator.h
blob976d32e7d8128eebccd9e1d3ebaa0f400c52eb92
1 /*
2 * calendarmigrator.h - migrates or creates KAlarm Akonadi resources
3 * Program: kalarm
4 * Copyright © 2011-2014 by David Jarvie <djarvie@kde.org>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 #ifndef CALENDARMIGRATOR_H
22 #define CALENDARMIGRATOR_H
24 #include <kalarmcal/kacalendar.h>
26 #include <AkonadiCore/agentinstance.h>
27 #include <AkonadiCore/collection.h>
29 class KJob;
30 namespace KRES { class Resource; }
31 namespace Akonadi { class CollectionFetchJob; }
33 class CalendarCreator;
34 class CalendarUpdater;
36 using namespace KAlarmCal;
38 /**
39 * Class to migrate KResources alarm calendars from pre-Akonadi versions of
40 * KAlarm, and to create default calendar resources if none exist.
42 class CalendarMigrator : public QObject
44 Q_OBJECT
45 public:
46 ~CalendarMigrator();
47 static CalendarMigrator* instance();
48 static void reset();
49 static void execute();
50 static void updateToCurrentFormat(const Akonadi::Collection&, bool ignoreKeepFormat, QWidget* parent);
51 static bool completed() { return mCompleted; }
52 template <class Interface> static Interface* getAgentInterface(const Akonadi::AgentInstance&, QString& errorMessage, QObject* parent);
54 Q_SIGNALS:
55 /** Signal emitted when a resource is about to be created, and when creation has
56 * completed (successfully or not).
57 * @param id collection ID if @p finished is true, else invalid
59 void creating(const QString& path, Akonadi::Collection::Id id, bool finished);
61 private Q_SLOTS:
62 void collectionFetchResult(KJob*);
63 void creatingCalendar(const QString& path);
64 void calendarCreated(CalendarCreator*);
66 private:
67 CalendarMigrator(QObject* parent = Q_NULLPTR);
68 void migrateOrCreate();
69 void createDefaultResources();
70 template <class Interface> static bool updateStorageFormat(const Akonadi::AgentInstance&, QString& errorMessage, QObject* parent);
72 static CalendarMigrator* mInstance;
73 QList<CalendarCreator*> mCalendarsPending; // pending calendar migration or creation jobs
74 QList<Akonadi::CollectionFetchJob*> mFetchesPending; // pending collection fetch jobs for existing resources
75 CalEvent::Types mExistingAlarmTypes; // alarm types provided by existing Akonadi resources
76 static bool mCompleted; // execute() has completed
78 friend class CalendarUpdater;
81 #endif // CALENDARMIGRATOR_H
83 // vim: et sw=4: