File indexing completed on 2024-06-16 05:03:55

0001 /*
0002     SPDX-FileCopyrightText: 2022 Fushan Wen <qydwhotmail@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "qtcalendar.h"
0008 
0009 namespace
0010 {
0011 constexpr QCalendar::System toQCalendarSystem(CalendarSystem::System calendarSystem)
0012 {
0013     switch (calendarSystem) {
0014     case CalendarSystem::System::Jalali:
0015         return QCalendar::System::Jalali;
0016     case CalendarSystem::System::IslamicCivil:
0017         return QCalendar::System::IslamicCivil;
0018     default:
0019         return static_cast<QCalendar::System>(calendarSystem);
0020     }
0021 }
0022 }
0023 
0024 QtCalendarProvider::QtCalendarProvider(QObject *parent, CalendarSystem::System calendarSystem, const QDate &startDate, const QDate &endDate, int dateOffset)
0025     : AbstractCalendarProvider(parent, calendarSystem, startDate, endDate, dateOffset)
0026     , m_calendar(QCalendar(toQCalendarSystem(calendarSystem)))
0027 {
0028     Q_ASSERT(toQCalendarSystem(calendarSystem) <= QCalendar::System::Last);
0029 }
0030 
0031 QtCalendarProvider::~QtCalendarProvider()
0032 {
0033 }
0034 
0035 QCalendar::YearMonthDay QtCalendarProvider::fromGregorian(const QDate &date) const
0036 {
0037     if (!date.isValid()) {
0038         return {};
0039     }
0040 
0041     return m_calendar.partsFromDate(date);
0042 }
0043 
0044 CalendarEvents::CalendarEventsPlugin::SubLabel QtCalendarProvider::subLabel(const QDate &date) const
0045 {
0046     auto sublabel = CalendarEvents::CalendarEventsPlugin::SubLabel{};
0047 
0048     if (!date.isValid()) {
0049         return sublabel;
0050     }
0051 
0052     const QCalendar::YearMonthDay altDate = fromGregorian(date);
0053     sublabel.label = i18ndc("plasma_calendar_alternatecalendar",
0054                             "@label %1 day %2 month name %3 year",
0055                             "%1 %2, %3",
0056                             QString::number(altDate.day),
0057                             m_calendar.standaloneMonthName(QLocale::system(), altDate.month, altDate.year),
0058                             QString::number(altDate.year));
0059 
0060     return sublabel;
0061 }