File indexing completed on 2024-03-24 05:53:48
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Dimitris Kardarakos <dimkard@posteo.net> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #ifndef EVENTCONTROLLER_H 0008 #define EVENTCONTROLLER_H 0009 0010 #include <QObject> 0011 #include <QVariantMap> 0012 #include <QQmlEngine> 0013 0014 class CalendarController; 0015 class LocalCalendar; 0016 class SettingsController; 0017 0018 class EventController : public QObject 0019 { 0020 Q_OBJECT 0021 0022 Q_PROPERTY(CalendarController *calendarController READ calendarController WRITE setCalendarController NOTIFY calendarControllerChanged) 0023 0024 public: 0025 enum EventCheck { 0026 NotExistsNotOverlapping = -1, 0027 Exists, 0028 NotExistsButOverlaps, 0029 NoCalendarExists 0030 }; 0031 0032 explicit EventController(QObject *parent = nullptr); 0033 0034 static QObject *qmlInstance(QQmlEngine *engine, QJSEngine *scriptEngine); 0035 0036 CalendarController *calendarController(); 0037 void setCalendarController(CalendarController *const controller); 0038 0039 Q_INVOKABLE void remove(LocalCalendar *calendar, const QVariantMap &event); 0040 Q_INVOKABLE QVariantMap addEdit(LocalCalendar *calendar, const QVariantMap &event); 0041 Q_SIGNALS: 0042 void calendarControllerChanged(); 0043 0044 private: 0045 /** 0046 * @brief Check if an event is already registered or overlapping events exist 0047 * 0048 * @param calendar p_calendar: The calendar of the favorites 0049 * @param event p_event: The to-be-registered event 0050 * @return A QVariantMap with two members 0051 * int result: 0052 * Set to NotExistsNotOverlapping if the event is not registered and no overlapping events exist 0053 * Set to Exists if the event is already registered 0054 * Set to NotExistsButOverlaps if the event is not registered but overlapping events exist 0055 * Set to NoCalendarExists if calendar argument does not point at a calendar 0056 * QString events: 0057 * If NotExistsNotOverlapping, a success message 0058 * If Exists, an information message that the event already exists 0059 * If NotExistsButOverlaps, a comma separated list of their subjects 0060 * If NoCalendarExists, let the user know that an error has occured 0061 */ 0062 QVariantMap eventCheck(LocalCalendar *calendar, const QVariantMap &event); 0063 0064 CalendarController *m_cal_controller; 0065 SettingsController *m_settings_controller; 0066 0067 }; 0068 #endif