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 }