File indexing completed on 2024-05-12 16:59:38
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 class QtCalendarProviderPrivate 0010 { 0011 public: 0012 explicit QtCalendarProviderPrivate(QCalendar::System system); 0013 ~QtCalendarProviderPrivate(); 0014 0015 QCalendar::YearMonthDay fromGregorian(const QDate &date) const; 0016 CalendarEvents::CalendarEventsPlugin::SubLabel subLabels(const QDate &date) const; 0017 0018 private: 0019 const QCalendar m_calendar; 0020 }; 0021 0022 QtCalendarProviderPrivate::QtCalendarProviderPrivate(QCalendar::System system) 0023 : m_calendar(QCalendar(system)) 0024 { 0025 } 0026 0027 QtCalendarProviderPrivate::~QtCalendarProviderPrivate() 0028 { 0029 } 0030 0031 QCalendar::YearMonthDay QtCalendarProviderPrivate::fromGregorian(const QDate &date) const 0032 { 0033 if (!date.isValid()) { 0034 return {}; 0035 } 0036 0037 return m_calendar.partsFromDate(date); 0038 } 0039 0040 CalendarEvents::CalendarEventsPlugin::SubLabel QtCalendarProviderPrivate::subLabels(const QDate &date) const 0041 { 0042 auto sublabel = CalendarEvents::CalendarEventsPlugin::SubLabel{}; 0043 0044 if (!date.isValid()) { 0045 return sublabel; 0046 } 0047 0048 const QCalendar::YearMonthDay altDate = fromGregorian(date); 0049 const QString dayString = QString::number(altDate.day); 0050 sublabel.label = i18ndc("plasma_calendar_alternatecalendar", 0051 "@label %1 day %2 month name %3 year", 0052 "%1 %2, %3", 0053 dayString, 0054 m_calendar.standaloneMonthName(QLocale::system(), altDate.month, altDate.year), 0055 QString::number(altDate.year)); 0056 sublabel.dayLabel = dayString; 0057 0058 return sublabel; 0059 } 0060 0061 QtCalendarProvider::QtCalendarProvider(QObject *parent, CalendarSystem::System calendarSystem) 0062 : AbstractCalendarProvider(parent, calendarSystem) 0063 , d(new QtCalendarProviderPrivate(static_cast<QCalendar::System>(calendarSystem))) 0064 { 0065 Q_ASSERT(m_calendarSystem <= static_cast<CalendarSystem::System>(QCalendar::System::Last)); 0066 } 0067 0068 QtCalendarProvider::~QtCalendarProvider() 0069 { 0070 } 0071 0072 QCalendar::YearMonthDay QtCalendarProvider::fromGregorian(const QDate &date) const 0073 { 0074 return d->fromGregorian(date); 0075 } 0076 0077 CalendarEvents::CalendarEventsPlugin::SubLabel QtCalendarProvider::subLabels(const QDate &date) const 0078 { 0079 return d->subLabels(date); 0080 }