File indexing completed on 2024-05-05 05:28:21
0001 /* 0002 * SPDX-FileCopyrightText: 2018 Dimitris Kardarakos <dimkard@posteo.net> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #ifndef LOCALCALENDAR_H 0008 #define LOCALCALENDAR_H 0009 0010 #include <QSharedPointer> 0011 #include <KCalendarCore/Calendar> 0012 #include <KCalendarCore/FileStorage> 0013 #include <KCalendarCore/Event> 0014 #include <QVariantMap> 0015 0016 class AlarmChecker; 0017 0018 class LocalCalendar : public QObject 0019 { 0020 Q_OBJECT 0021 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) 0022 Q_PROPERTY(QString ownerName READ ownerName WRITE setOwnerName NOTIFY ownerNameChanged) 0023 Q_PROPERTY(QString ownerEmail READ ownerEmail WRITE setOwnerEmail NOTIFY ownerEmailChanged) 0024 Q_PROPERTY(bool isExternal READ isExternal NOTIFY isExternalChanged) 0025 Q_PROPERTY(KCalendarCore::Calendar *calendar READ calendarRaw NOTIFY calendarChanged) 0026 0027 public: 0028 explicit LocalCalendar(QObject *parent = nullptr); 0029 ~LocalCalendar() override; 0030 0031 KCalendarCore::Calendar::Ptr calendar(); 0032 KCalendarCore::Calendar *calendarRaw() const; 0033 QString name() const; 0034 QString ownerName() const; 0035 QString ownerEmail() const; 0036 bool isExternal() const; 0037 0038 void setName(const QString &calendarName); 0039 void setOwnerName(const QString &ownerName); 0040 void setOwnerEmail(const QString &ownerEmail); 0041 0042 Q_INVOKABLE int todosCount(const QDate &date) const; 0043 Q_INVOKABLE int eventsCount(const QDate &date) const; 0044 0045 public Q_SLOTS: 0046 void deleteCalendar(); 0047 bool save(); 0048 0049 Q_SIGNALS: 0050 void calendarChanged(); 0051 void nameChanged(); 0052 void todosChanged(); 0053 void eventsChanged(); 0054 void ownerNameChanged(); 0055 void ownerEmailChanged(); 0056 void isExternalChanged(); 0057 0058 private: 0059 static QVariantMap canCreateFile(const QString &calendarName); 0060 void loadCalendar(const QString &calendarName); 0061 bool loadStorage(); 0062 void reloadStorage(); 0063 0064 KCalendarCore::Calendar::Ptr m_calendar; 0065 KCalendarCore::FileStorage::Ptr m_cal_storage; 0066 QString m_name; 0067 QString m_fullpath; 0068 QDateTime m_fs_sync_dt; 0069 AlarmChecker *m_alarm_checker; 0070 }; 0071 0072 #endif // LOCALCALENDAR_H