File indexing completed on 2024-04-21 05:50:57

0001 /*
0002  * SPDX-FileCopyrightText: 2020 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/MemoryCalendar>
0012 
0013 class CalendarController;
0014 class AlarmChecker;
0015 
0016 class LocalCalendar : public QObject
0017 {
0018     Q_OBJECT
0019 
0020     Q_PROPERTY(QString calendarId READ calendarId WRITE setCalendarId NOTIFY calendarIdChanged)
0021     Q_PROPERTY(QString calendarTzId READ calendarTzId WRITE setCalendarTzId NOTIFY calendarTzIdChanged)
0022     Q_PROPERTY(QString calendarUrl READ calendarUrl WRITE setCalendarUrl NOTIFY calendarUrlChanged)
0023     Q_PROPERTY(int calendarType READ calendarType WRITE setCalendarType NOTIFY calendarTypeChanged)
0024     Q_PROPERTY(QSharedPointer<KCalendarCore::MemoryCalendar> memorycalendar READ memorycalendar NOTIFY memorycalendarChanged)
0025     Q_PROPERTY(QStringList categories READ categories NOTIFY categoriesChanged)
0026     Q_PROPERTY(CalendarController *calendarController READ calendarController WRITE setCalendarController NOTIFY calendarControllerChanged)
0027     Q_PROPERTY(bool busyDownlading READ busyDownlading NOTIFY busyDownladingChanged)
0028 
0029 public:
0030     enum CalendarType {
0031         None = 0,
0032         Conference = 1,
0033         Favorites = 2
0034     };
0035 
0036     explicit LocalCalendar(QObject *parent = nullptr);
0037 
0038     QString calendarId() const;
0039     void setCalendarId(const QString &calendarId);
0040 
0041     QString calendarTzId() const;
0042     void setCalendarTzId(const QString &tzId);
0043 
0044     QString calendarUrl() const;
0045     void setCalendarUrl(const QString &url);
0046 
0047     int calendarType() const;
0048     void setCalendarType(const int type);
0049 
0050     KCalendarCore::MemoryCalendar::Ptr memorycalendar() const;
0051     QStringList categories() const;
0052 
0053     bool busyDownlading() const;
0054 
0055     CalendarController *calendarController() const;
0056     void setCalendarController(CalendarController *const controller);
0057 
0058     Q_INVOKABLE void loadOnlineCalendar();
0059 
0060 public Q_SLOTS:
0061     void onlineCalendarReady(const QString &calendarId);
0062     void setBusyStatus(const QString &calendarId, const bool downlading);
0063 
0064 Q_SIGNALS:
0065     void memorycalendarChanged();
0066     void calendarIdChanged();
0067     void calendarTzIdChanged();
0068     void calendarUrlChanged();
0069     void calendarTypeChanged();
0070     void categoriesChanged();
0071     void eventsChanged();
0072     void calendarControllerChanged();
0073     void busyDownladingChanged();
0074 
0075 private Q_SLOTS:
0076     void createCalendar();
0077 
0078 private:
0079     QString m_calendar_id;
0080     QString m_calendar_tz_id;
0081     QString m_calendar_url;
0082     int m_calendar_type;
0083     KCalendarCore::MemoryCalendar::Ptr m_calendar;
0084     CalendarController *m_cal_controller;
0085     AlarmChecker *m_alarm_checker;
0086     bool m_busy_downloading;
0087 };
0088 #endif // LOCALCALENDAR_H