File indexing completed on 2024-05-05 05:28:20

0001 /*
0002  * SPDX-FileCopyrightText: 2020 Dimitris Kardarakos <dimkard@posteo.net>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #ifndef MOBILECALENDARCONFIG_H
0008 #define MOBILECALENDARCONFIG_H
0009 
0010 #include <QObject>
0011 #include <QVariantMap>
0012 
0013 #include <memory>
0014 
0015 class CalindoriConfig : public QObject
0016 {
0017     Q_OBJECT
0018     Q_PROPERTY(QStringList internalCalendars READ internalCalendars NOTIFY internalCalendarsChanged)
0019     Q_PROPERTY(QStringList externalCalendars READ externalCalendars NOTIFY externalCalendarsChanged)
0020     Q_PROPERTY(QString activeCalendar READ activeCalendar WRITE setActiveCalendar NOTIFY activeCalendarChanged)
0021     Q_PROPERTY(int eventsDuration READ eventsDuration WRITE setEventsDuration NOTIFY eventsDurationChanged)
0022     Q_PROPERTY(int preEventRemindTime READ preEventRemindTime WRITE setPreEventRemindTime NOTIFY preEventRemindTimeChanged)
0023     Q_PROPERTY(bool alwaysRemind READ alwaysRemind WRITE setAlwaysRemind NOTIFY alwaysRemindChanged)
0024 
0025 public:
0026 
0027     static CalindoriConfig &instance();
0028 
0029     QStringList internalCalendars() const;
0030     Q_SIGNAL void internalCalendarsChanged();
0031 
0032     QStringList externalCalendars() const;
0033     Q_SIGNAL void externalCalendarsChanged();
0034 
0035     QString activeCalendar() const;
0036     void setActiveCalendar(const QString &calendar);
0037     Q_SIGNAL void activeCalendarChanged();
0038 
0039     int eventsDuration() const;
0040     void setEventsDuration(int duration);
0041     Q_SIGNAL void eventsDurationChanged();
0042 
0043     int preEventRemindTime() const;
0044     void setPreEventRemindTime(int remindBefore);
0045     Q_SIGNAL void preEventRemindTimeChanged();
0046 
0047     bool alwaysRemind() const;
0048     void setAlwaysRemind(bool remind);
0049     Q_SIGNAL void alwaysRemindChanged();
0050 
0051     QString calendarFile(const QString &calendarName);
0052     void setOwnerName(const QString &calendar, const QString &ownerName);
0053     void setOwnerEmail(const QString &calendar, const QString &ownerEmail);
0054 
0055     Q_INVOKABLE bool isExternal(const QString &calendarName);
0056     Q_INVOKABLE void setOwnerInfo(const QString &calendar, const QString &ownerName, const QString &ownerEmail);
0057     Q_INVOKABLE QString ownerName(const QString &calendarName);
0058     Q_INVOKABLE QString ownerEmail(const QString &calendarName);
0059 
0060 public Q_SLOTS:
0061     QVariantMap canAddCalendar(const QString &calendar);
0062     QVariantMap addInternalCalendar(const QString &calendar, const QString &ownerName = QString(), const QString &ownerEmail = QString());
0063     QVariantMap addExternalCalendar(const QString &calendar, const QString &ownerName, const QString &ownerEmail, const QUrl &calendarPathUrl);
0064     void removeCalendar(const QString &calendar);
0065 
0066 private:
0067     explicit CalindoriConfig(QObject *parent = nullptr);
0068     ~CalindoriConfig() override;
0069     static QString filenameToPath(const QString &calendarName);
0070 
0071     class Private;
0072     std::unique_ptr<Private> d;
0073 };
0074 
0075 #endif