File indexing completed on 2024-05-12 16:59:37

0001 /*
0002     SPDX-FileCopyrightText: 2022 Fushan Wen <qydwhotmail@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "../alternatecalendarplugin.h"
0010 
0011 /**
0012  * @short An abstract base class for alternate calendar providers.
0013  *
0014  * This class serves as abstract base class for alternate calendar
0015  * provider implementations.
0016  */
0017 class AbstractCalendarProvider : public QObject
0018 {
0019     Q_OBJECT
0020 
0021 public:
0022     explicit AbstractCalendarProvider(QObject *parent, CalendarSystem::System calendarSystem);
0023     ~AbstractCalendarProvider() override;
0024 
0025     /**
0026      * Converts Gregorian date to alternate calendar date
0027      *
0028      * @param date Gregorian date
0029      * @return Alternate calendar date
0030      */
0031     virtual QCalendar::YearMonthDay fromGregorian(const QDate &date) const;
0032 
0033     /**
0034      * Gets the sub-labels for the specific Gregorian date
0035      *
0036      * @param date Gregorian date
0037      * @return Sub-labels for the specific Gregorian date
0038      */
0039     virtual CalendarEvents::CalendarEventsPlugin::SubLabel subLabels(const QDate &date) const;
0040 
0041 protected:
0042     const CalendarSystem::System m_calendarSystem;
0043 };