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 #pragma once 0008 0009 #include <map> 0010 0011 #include <QCalendar> 0012 #include <QMetaType> 0013 0014 #include <KLocalizedString> 0015 0016 class CalendarSystem 0017 { 0018 Q_GADGET 0019 0020 public: 0021 /** 0022 * @note When adding a new calendar system, \s_calendarMap should also be updated. 0023 */ 0024 enum System : int { 0025 Gregorian = static_cast<int>(QCalendar::System::Gregorian), 0026 #ifndef QT_BOOTSTRAPPED 0027 Julian = static_cast<int>(QCalendar::System::Julian), 0028 Milankovic = static_cast<int>(QCalendar::System::Milankovic), 0029 #endif 0030 Chinese = static_cast<int>(QCalendar::System::Last) + 1, // QTBUG-89824: QCalendar doesn't support Chinese calendar system 0031 Indian, // QCalendar doesn't support India calendar system 0032 Hebrew, 0033 Jalali, // Persian 0034 Islamic, // Astronomical 0035 IslamicCivil, 0036 IslamicUmalqura, 0037 }; 0038 Q_ENUM(System) 0039 }; 0040 Q_DECLARE_METATYPE(CalendarSystem) 0041 0042 struct CalendarSystemItem { 0043 const CalendarSystem::System system; 0044 const QString id; 0045 const QString text; 0046 }; 0047 0048 // clang-format off 0049 static const std::map<QString /* id */, CalendarSystemItem> s_calendarMap{ 0050 { 0051 QStringLiteral("Julian"), 0052 {CalendarSystem::Julian, QStringLiteral("Julian"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "Julian")} 0053 }, 0054 { 0055 QStringLiteral("Milankovic"), 0056 {CalendarSystem::Milankovic, QStringLiteral("Milankovic"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "Milankovic")} 0057 }, 0058 { 0059 QStringLiteral("Jalali"), 0060 {CalendarSystem::Jalali, QStringLiteral("Jalali"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "The Solar Hijri Calendar (Persian)")} 0061 }, 0062 { 0063 QStringLiteral("Islamic"), 0064 {CalendarSystem::Islamic, QStringLiteral("Islamic"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist See https://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types for more details", "Islamic Calendar (Astronomical)")} 0065 }, 0066 { 0067 QStringLiteral("IslamicCivil"), 0068 {CalendarSystem::IslamicCivil, QStringLiteral("IslamicCivil"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist See https://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types for more details", "The Islamic Civil Calendar (Tabular)")} 0069 }, 0070 { 0071 QStringLiteral("IslamicUmalqura"), 0072 {CalendarSystem::IslamicUmalqura, QStringLiteral("IslamicUmalqura"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist See https://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types for more details", "Islamic Calendar (Umm al-Qura)")} 0073 }, 0074 { 0075 QStringLiteral("Chinese"), 0076 {CalendarSystem::Chinese, QStringLiteral("Chinese"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "Chinese Lunar Calendar")} 0077 }, 0078 { 0079 QStringLiteral("Indian"), 0080 {CalendarSystem::Indian, QStringLiteral("Indian"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "Indian National Calendar")} 0081 }, 0082 { 0083 QStringLiteral("Hebrew"), 0084 {CalendarSystem::Hebrew, QStringLiteral("Hebrew"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "Hebrew Calendar")} 0085 }, 0086 }; 0087 // clang-format on