File indexing completed on 2024-05-12 09:31:46
0001 /* 0002 SPDX-FileCopyrightText: 2022 Fushan Wen <qydwhotmail@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef ALTERNATECALENDARPLUGIN_H 0008 #define ALTERNATECALENDARPLUGIN_H 0009 0010 #include <QDate> 0011 0012 #include <KConfigGroup> 0013 #include <KConfigWatcher> 0014 0015 #include <CalendarEvents/CalendarEventsPlugin> 0016 0017 #include "calendarsystem.h" 0018 0019 class AbstractCalendarProvider; 0020 0021 class AlternateCalendarPlugin : public CalendarEvents::CalendarEventsPlugin 0022 { 0023 Q_OBJECT 0024 Q_PLUGIN_METADATA(IID "org.kde.CalendarEventsPlugin" FILE "alternatecalendarplugin.json") 0025 Q_INTERFACES(CalendarEvents::CalendarEventsPlugin) 0026 0027 public: 0028 AlternateCalendarPlugin(QObject *parent = nullptr); 0029 ~AlternateCalendarPlugin() override; 0030 0031 void loadEventsForDateRange(const QDate &startDate, const QDate &endDate) override; 0032 0033 public Q_SLOTS: 0034 void updateSettings(const KConfigGroup &configGroup); 0035 0036 private: 0037 void init(); 0038 void emitDataChangedSignal(); 0039 0040 QDate m_lastStartDate; 0041 QDate m_lastEndDate; 0042 AbstractCalendarProvider *m_provider = nullptr; 0043 0044 // Cache lookup data 0045 QHash<QDate, QCalendar::YearMonthDay> m_alternateDateCache; 0046 QHash<QDate, SubLabel> m_sublabelCache; 0047 0048 // For updating config 0049 KConfigGroup m_generalConfigGroup; 0050 KConfigWatcher::Ptr m_configWatcher; 0051 0052 CalendarSystem::System m_calendarSystem = CalendarSystem::Gregorian; 0053 int m_dateOffset = 0; // For the (tabular) Islamic Civil calendar 0054 }; 0055 0056 #endif