Warning, file /plasma/kdeplasma-addons/plasmacalendarplugins/alternatecalendar/calendarsystem.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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 {
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 #if QT_CONFIG(jalalicalendar)
0031         Jalali = static_cast<int>(QCalendar::System::Jalali),
0032 #endif
0033 #if QT_CONFIG(islamiccivilcalendar)
0034         IslamicCivil = static_cast<int>(QCalendar::System::IslamicCivil),
0035 #endif
0036         Chinese = static_cast<int>(QCalendar::System::Last) + 1, // QTBUG-89824: QCalendar doesn't support Chinese calendar system
0037         Indian, // QCalendar doesn't support India calendar system
0038         Hebrew,
0039     };
0040     Q_ENUM(System)
0041 };
0042 Q_DECLARE_METATYPE(CalendarSystem)
0043 
0044 struct CalendarSystemItem {
0045     CalendarSystem::System system;
0046     QString id;
0047     QString text;
0048 };
0049 
0050 // clang-format off
0051 static const std::map<QString /* id */, CalendarSystemItem> s_calendarMap{
0052     {
0053         QStringLiteral("Julian"),
0054         {CalendarSystem::Julian, QStringLiteral("Julian"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "Julian")}
0055     },
0056     {
0057         QStringLiteral("Milankovic"),
0058         {CalendarSystem::Milankovic, QStringLiteral("Milankovic"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "Milankovic")}
0059     },
0060     {
0061         QStringLiteral("Jalali"),
0062         {CalendarSystem::Jalali, QStringLiteral("Jalali"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "The Solar Hijri Calendar (Persian)")}
0063     },
0064     {
0065         QStringLiteral("IslamicCivil"),
0066         {CalendarSystem::IslamicCivil, QStringLiteral("IslamicCivil"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "The Islamic Civil Calendar")}
0067     },
0068     {
0069         QStringLiteral("Chinese"),
0070         {CalendarSystem::Chinese, QStringLiteral("Chinese"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "Chinese Lunar Calendar")}
0071     },
0072     {
0073         QStringLiteral("Indian"),
0074         {CalendarSystem::Indian, QStringLiteral("Indian"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "Indian National Calendar")}
0075     },
0076     {
0077         QStringLiteral("Hebrew"),
0078         {CalendarSystem::Hebrew, QStringLiteral("Hebrew"), i18ndc("plasma_calendar_alternatecalendar", "@item:inlist", "Hebrew Calendar")}
0079     },
0080 };
0081 // clang-format on