Summary: | support set display an alternate calendar system under the main calendar | ||
---|---|---|---|
Product: | [Plasma] plasmashell | Reporter: | Gary Wang <wzc782970009> |
Component: | Calendar | Assignee: | Marco Martin <notmart> |
Status: | RESOLVED FIXED | ||
Severity: | wishlist | CC: | 250038786, cuco3001, fundawang, ixnij.wu, lancelot96, llyaomo, monstorix, mukdenia, my, nate, nicolas.fella, plasma-bugs, qydwhotmail, schnej, sentinelworks, seo1214, wondertx |
Priority: | NOR | ||
Version: | master | ||
Target Milestone: | 1.0 | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/kdeplasma-addons/commit/47bcfc37665348b12fa7100e48c41463825b8277 | Version Fixed In: | 5.26 |
Sentry Crash Report: | |||
Attachments: |
Screenshot of a plasmoid witch is able to show a chinese lunar calendar under the main calendar.
Screenshot of a plasmoid witch is able to show a chinese lunar calendar under the main calendar. My thoughts about how to add alternate calendar support. The Calendar System Feature unforgotten back in KDE Version 4 |
Created attachment 133771 [details] Screenshot of a plasmoid witch is able to show a chinese lunar calendar under the main calendar. Seems I uploaded a outdated screenshot which contains some noticeable bug. I'll upload another one. I think at least it should be able to demonstrate what I means :D Also, my code is uploaded here: https://github.com/BLumia/pineapple-calendar Obviously it's far from complete but hopefully it could be useful in some way. It make use of icu4c to display Chinese calendar, since ICU itself support a large amount of calendar system, it could support other calendar system when needed, I think. There was a GSoC project which related to this feature request: https://community.kde.org/KDE_Core/Astronomical_Calendars Hope that helps. I see a few possible options, but I'm not familiar enough with different calendar systems and how they are used to judge what is best. 1. Create a plugin for the existing event plugin system. This could show entries from the alternate calendar as events in the gregorian calendar. Relatively easy to do, but probably not very nice 2. Create a new plugin system that allows to draw overlay labels over the gregorian calendar. That could look like in your screenshot. 3. Create a new applet as alternative to the current one. This could reuse parts of the underlying system, e.g. the events plugin system. That would have the biggest flexibility in terms of presentation > ...but I'm not familiar enough with different calendar systems and how they are used to judge what is best. Me too! So I think it could be good to discuss with more people so we can know more about how alternate calendar system works before we start to code an implementation into KDE. I'll write what I think at the end of this comment :D > 1. Create a plugin for the existing event plugin system. This could show entries from the alternate calendar as events in the gregorian calendar. Relatively easy to do, but probably not very nice Yep that's easy to do but clearly not a good way to address the alternate calendar need. > 2. Create a new plugin system that allows to draw overlay labels over the gregorian calendar. That could look like in your screenshot. That could solve the problem but this solution seems too generic/wide. Alternate calendar is not a vary specialization need in Mainland China (In Google Calendar android app, the alternate calendar option have 9 options to choose alone with a "none" option), so I think maybe a plugin system design to add alternate calendar support could be great, and other project like calindori can also get benefit from the plugin system or API design. > 3. Create a new applet as alternative to the current one. This could reuse parts of the underlying system, e.g. the events plugin system. That would have the biggest flexibility in terms of presentation That's what I'm doing currently (mainly for test the feasibility of the API design of what I am thinking), but I think since "adding a place to display alternate calendar date text" is a pretty minor change from the current Date and Time plugin, writing a new applet will not be a good way to do if we intended to get this feature into KDE. -------------- The alternate calendar means we can display two calendar system at the same time. The basic layout of a month view with alternate calendar enable will be the same as the one if we don't have alternate calendar enabled, but if alternate calendar is enabled, the date text will be able to show up in the day grid (just like the way what my screenshot did). According to https://support.microsoft.com/en-us/office/display-an-alternate-calendar-8cb201d4-c175-4d9e-9d8f-b4df00ca8f82 , the alternate calendar feature are enabled if the language are set to Arabic, English, Hebrew, Hindi, Chinese, Japanese, Korean, or Thai. Also in Google Clander app, there are also 9 options can be used as an alternate calendar. Also, both Google Calendar and the one from Microsoft are not treat alternate calendar as regular calendar event, so I think reuse the existing event plugin system is not a good idea. For what I think, we could make the current Date and Time applet display alternate calendar day text in the same grid together with the main calendar date text if an alternate calendar system is available and enabled, and keep it looks exact the same like the current one if no alternate calendar is enabled. At the current state, we only need to change DayDelegate.qml and add adjust the behavior of last Components.Label{}. What I did is https://github.com/BLumia/pineapple-calendar/blob/7fc57a470fecad57d07a79d02e54a6e2febea4e2/plasmoid/package/contents/ui/calendar/DayDelegate.qml#L103 but I'm not sure if that's a good approach. In my current implementation, only one c++ interface are used https://github.com/BLumia/pineapple-calendar/blob/7fc57a470fecad57d07a79d02e54a6e2febea4e2/plasmoid/calendar.cpp#L24 . The `alternateCalendarDayText(day, month, year)` accepts a date in current main calendar, and returns the string which should be display under the day grid according to what the (currently hard-coded) alternate calendar is used. But I think the biggest challenge here is design a good C++ API for alternate calendar plugins. Since the main goal is letting an existed calendar application know what text to display under the main calendar's date name, so I guess we don't need to design a list of interface to provide full capability of calendar system date and time calculating. Here (https://github.com/BLumia/pineapple-calendar/blob/master/lib/pabstructcalendar.h) are a list of interface I have tried in my current implementation, there are still some other thing not covered in this current implementation, I'll do some more resources and write more about what I think about the API design later. Created attachment 133875 [details] My thoughts about how to add alternate calendar support. I wrote about what I currently found and what I think about how to achieve this, but the content seems too long and may not be suitable to post in the bug tracker. Here ( https://docs.google.com/document/d/1iwEwwK9w34ZKOegb8xcecO4u2Pjgv2e7ifXMFKox62Q/edit?usp=sharing ) is a link to Google Document and please feel free to let me know if you have any suggestions! Also, to avoid link expiration, I uploaded a copy of the state of the document at the time I post this comment :) A possibly relevant merge request was started @ https://invent.kde.org/frameworks/plasma-framework/-/merge_requests/450 A possibly relevant merge request was started @ https://invent.kde.org/plasma/kdeplasma-addons/-/merge_requests/112 *** Bug 74793 has been marked as a duplicate of this bug. *** *** Bug 115573 has been marked as a duplicate of this bug. *** Git commit 72c3f30249eb41d9e74e78380693e85cb08c6b30 by Fushan Wen. Committed on 09/05/2022 at 15:37. Pushed by fusionfuture into branch 'master'. calendareventsplugin: Add support for alternate dates and sub-labels Sub-labels are required to show alternate calendar in the calendar applet. Two new signals are added: 1. `subLabelReady`: Emitted when the plugin has loaded the sub-labels. 2. `alternateDateReady`: Emitted when the plugin has loaded the alternate dates. `SubLabel` struct contains yearLabel, monthLabel and dayLabel, and the plugin can specify the priority among Low, Default, High and Urgent for a SubLabel. M +33 -0 src/calendarevents/calendareventsplugin.h https://invent.kde.org/frameworks/kdeclarative/commit/72c3f30249eb41d9e74e78380693e85cb08c6b30 Git commit 7d68b36befe7f311f6164e3bca2d9b35ba7fe627 by Fushan Wen. Committed on 19/05/2022 at 12:21. Pushed by fusionfuture into branch 'master'. eventpluginsmanager: relay `alternateDateReady` and `subLabelReady` Two new signals are added in CalendarEventsPlugin, so we need to relay them to make DaysModel receive them. M +2 -2 components/calendar/eventpluginsmanager.cpp M +17 -2 components/calendar/eventpluginsmanager.h https://invent.kde.org/plasma/plasma-workspace/commit/7d68b36befe7f311f6164e3bca2d9b35ba7fe627 Git commit 54728d548b35fb2561fda47bc5199cc01972ce64 by Fushan Wen. Committed on 19/05/2022 at 12:21. Pushed by fusionfuture into branch 'master'. daysmodel: Add alternate date and sub-label properties The calendar applet will need those properties to show alternate calendar date. M +90 -10 components/calendar/daysmodel.cpp M +10 -1 components/calendar/daysmodel.h https://invent.kde.org/plasma/plasma-workspace/commit/54728d548b35fb2561fda47bc5199cc01972ce64 Git commit e421073f5ed91d14c83fc51b2a072d4a7bd81cbb by Fushan Wen. Committed on 19/05/2022 at 12:21. Pushed by fusionfuture into branch 'master'. calendar: Add support for sublabel in DayDelegate The sublabel will be displayed under the day number. M +69 -11 components/calendar/qml/DayDelegate.qml M +8 -0 components/calendar/qml/MonthView.qml https://invent.kde.org/plasma/plasma-workspace/commit/e421073f5ed91d14c83fc51b2a072d4a7bd81cbb Git commit c89698e33c186c67b6de26d2184617b6e080cca5 by Fushan Wen. Committed on 19/05/2022 at 12:18. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add optional dependency on ICU M +1 -0 plasmacalendarplugins/CMakeLists.txt A +15 -0 plasmacalendarplugins/alternatecalendar/CMakeLists.txt A +3 -0 plasmacalendarplugins/alternatecalendar/config-ICU.h.cmake https://invent.kde.org/plasma/kdeplasma-addons/commit/c89698e33c186c67b6de26d2184617b6e080cca5 Git commit d447eb95c458eff2ed647ccf5081a7c7d99acd78 by Fushan Wen. Committed on 19/05/2022 at 12:18. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add Messages.sh A +8 -0 plasmacalendarplugins/alternatecalendar/Messages.sh https://invent.kde.org/plasma/kdeplasma-addons/commit/d447eb95c458eff2ed647ccf5081a7c7d99acd78 Git commit 37335d8024cbe2557a61debb2cdae30cc1a35a51 by Fushan Wen. Committed on 19/05/2022 at 12:18. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add QCalendar provider This implements calendar system supports from QCalendar. M +1 -0 plasmacalendarplugins/alternatecalendar/CMakeLists.txt M +2 -0 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.cpp A +74 -0 plasmacalendarplugins/alternatecalendar/provider/qtcalendar.cpp [License: GPL(v2.0+)] A +31 -0 plasmacalendarplugins/alternatecalendar/provider/qtcalendar.h [License: GPL(v2.0+)] https://invent.kde.org/plasma/kdeplasma-addons/commit/37335d8024cbe2557a61debb2cdae30cc1a35a51 Git commit 37ff5f67eb63418c1b720052c59c9bf47805be25 by Fushan Wen. Committed on 19/05/2022 at 12:18. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add calendarProvider in plugin base The plugin will use the calendar provider to convert date and get sub-labels. M +17 -0 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.cpp https://invent.kde.org/plasma/kdeplasma-addons/commit/37ff5f67eb63418c1b720052c59c9bf47805be25 Git commit f2a0de9a24d69e1a2674e3e5e31e4384d9989bfc by Fushan Wen. Committed on 19/05/2022 at 12:18. Pushed by fusionfuture into branch 'master'. alternatecalendar: Maintain a list of calendar systems As QCalendar only provides some calendar systems, we need to maintain our own list of calendar systems. A +32 -0 plasmacalendarplugins/alternatecalendar/calendarsystem.h [License: GPL(v2.0+)] https://invent.kde.org/plasma/kdeplasma-addons/commit/f2a0de9a24d69e1a2674e3e5e31e4384d9989bfc Git commit 3d5b448dab65a13dc8f6a676bc802d7d7010bc30 by Fushan Wen. Committed on 19/05/2022 at 12:18. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add abstract calendar provider class This base class will be used in alternate calendar provider implementations. M +1 -0 plasmacalendarplugins/alternatecalendar/CMakeLists.txt A +34 -0 plasmacalendarplugins/alternatecalendar/provider/abstractcalendarprovider.cpp [License: GPL(v2.0+)] A +43 -0 plasmacalendarplugins/alternatecalendar/provider/abstractcalendarprovider.h [License: GPL(v2.0+)] https://invent.kde.org/plasma/kdeplasma-addons/commit/3d5b448dab65a13dc8f6a676bc802d7d7010bc30 Git commit 740bf91b37aaceb42e583969a3315b2f89f1091a by Fushan Wen. Committed on 19/05/2022 at 12:18. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add support for QCalendar provider in plugin base Supported calendar systems are from QCalendar. M +13 -1 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.cpp https://invent.kde.org/plasma/kdeplasma-addons/commit/740bf91b37aaceb42e583969a3315b2f89f1091a Git commit 839e08b9c93af3e80e5aa8c88f44d52a6d80493c by Fushan Wen. Committed on 19/05/2022 at 12:18. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add plugin base This adds the basic structure of the alternate calendar plugin. M +12 -0 plasmacalendarplugins/alternatecalendar/CMakeLists.txt A +62 -0 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.cpp [License: GPL(v2.0+)] A +32 -0 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.h [License: GPL(v2.0+)] A +7 -0 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.json https://invent.kde.org/plasma/kdeplasma-addons/commit/839e08b9c93af3e80e5aa8c88f44d52a6d80493c Git commit a9f85e2e82e6373358bc3082985d1f69c9fccdee by Fushan Wen. Committed on 19/05/2022 at 12:32. Pushed by fusionfuture into branch 'master'. alternatecalendar: Reload config on config changed M +15 -0 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.cpp M +6 -0 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.h https://invent.kde.org/plasma/kdeplasma-addons/commit/a9f85e2e82e6373358bc3082985d1f69c9fccdee Git commit 145155e0ac2ed90ac389a6ff7d9b723968402a98 by Fushan Wen. Committed on 19/05/2022 at 12:18. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add date offset support for the Islamic Civil calendar in plugin base Date offset is required to make the Islamic Civil calendar usable. Special thanks to: @Zayed M +6 -2 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.cpp https://invent.kde.org/plasma/kdeplasma-addons/commit/145155e0ac2ed90ac389a6ff7d9b723968402a98 Git commit dc7487d2bd2702317da3fdca5df835e30a7ecc7c by Fushan Wen. Committed on 19/05/2022 at 12:32. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add config UI M +2 -1 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.json M +1 -0 plasmacalendarplugins/alternatecalendar/config/CMakeLists.txt A +63 -0 plasmacalendarplugins/alternatecalendar/config/qml/AlternateCalendarConfig.qml [License: GPL(v2.0+)] A +6 -0 plasmacalendarplugins/alternatecalendar/config/qml/CMakeLists.txt https://invent.kde.org/plasma/kdeplasma-addons/commit/dc7487d2bd2702317da3fdca5df835e30a7ecc7c Git commit 73f19554448d9f562a7bab766addeca7c2512590 by Fushan Wen. Committed on 19/05/2022 at 12:32. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add ICU calendar system private class This class will be used in calendar providers that require ICU library. M +9 -0 plasmacalendarplugins/alternatecalendar/CMakeLists.txt A +82 -0 plasmacalendarplugins/alternatecalendar/provider/icucalendar_p.cpp [License: GPL(v2.0+)] A +71 -0 plasmacalendarplugins/alternatecalendar/provider/icucalendar_p.h [License: GPL(v2.0+)] https://invent.kde.org/plasma/kdeplasma-addons/commit/73f19554448d9f562a7bab766addeca7c2512590 Git commit 1123ebec2776a51b6781e3a4ac5e80ee127bfdda by Fushan Wen. Committed on 19/05/2022 at 12:32. Pushed by fusionfuture into branch 'master'. alternatecalendar: Implement config backend This provides a config backend and a model contaning all the available calendar systems that can be used in a combobox. M +2 -0 plasmacalendarplugins/alternatecalendar/CMakeLists.txt M +10 -0 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.cpp M +3 -0 plasmacalendarplugins/alternatecalendar/calendarsystem.h A +5 -0 plasmacalendarplugins/alternatecalendar/config/CMakeLists.txt A +15 -0 plasmacalendarplugins/alternatecalendar/config/plugin/CMakeLists.txt A +21 -0 plasmacalendarplugins/alternatecalendar/config/plugin/configplugin.cpp [License: GPL(v2.0+)] A +22 -0 plasmacalendarplugins/alternatecalendar/config/plugin/configplugin.h [License: GPL(v2.0+)] A +119 -0 plasmacalendarplugins/alternatecalendar/config/plugin/configstorage.cpp [License: GPL(v2.0+)] A +95 -0 plasmacalendarplugins/alternatecalendar/config/plugin/configstorage.h [License: GPL(v2.0+)] A +7 -0 plasmacalendarplugins/alternatecalendar/config/plugin/qmldir https://invent.kde.org/plasma/kdeplasma-addons/commit/1123ebec2776a51b6781e3a4ac5e80ee127bfdda Git commit 47bcfc37665348b12fa7100e48c41463825b8277 by Fushan Wen. Committed on 19/05/2022 at 12:32. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add Chinese lunar calendar system support The traditional Chinese calendar (also known as the Agricultural Calendar is a lunisolar calendar which identifies years, months, and days according to astronomical phenomena. In China, it is defined by the Chinese national standard GB/T 33661–2017, "Calculation and Promulgation of the Chinese Calendar", issued by the Standardization Administration of China on May 12, 2017. The plugin is adapted from https://github.com/BLumia/pineapple-calendar Co-authored-by: Gary Wang <wzc782970009@gmail.com> FIXED-IN: 5.26 M +1 -0 plasmacalendarplugins/alternatecalendar/CMakeLists.txt M +10 -0 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.cpp M +1 -0 plasmacalendarplugins/alternatecalendar/calendarsystem.h M +4 -1 plasmacalendarplugins/alternatecalendar/config/plugin/configstorage.cpp A +100 -0 plasmacalendarplugins/alternatecalendar/provider/chinesecalendar.cpp [License: GPL(v2.0+)] A +30 -0 plasmacalendarplugins/alternatecalendar/provider/chinesecalendar.h [License: GPL(v2.0+)] https://invent.kde.org/plasma/kdeplasma-addons/commit/47bcfc37665348b12fa7100e48c41463825b8277 Git commit 3985df2880e44739c8feb7019bce7e0d3273a15b by Fushan Wen. Committed on 19/05/2022 at 12:32. Pushed by fusionfuture into branch 'master'. alternatecalendar: Add Indian national calendar system support The Indian national calendar, sometimes called the Saka calendar, is used, alongside the Gregorian calendar, by The Gazette of India, in news broadcasts by All India Radio and in calendars and communications issued by the Government of India. M +1 -0 plasmacalendarplugins/alternatecalendar/CMakeLists.txt M +4 -0 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.cpp M +1 -0 plasmacalendarplugins/alternatecalendar/calendarsystem.h M +1 -0 plasmacalendarplugins/alternatecalendar/config/plugin/configstorage.cpp A +71 -0 plasmacalendarplugins/alternatecalendar/provider/indiancalendar.cpp [License: GPL(v2.0+)] A +30 -0 plasmacalendarplugins/alternatecalendar/provider/indiancalendar.h [License: GPL(v2.0+)] https://invent.kde.org/plasma/kdeplasma-addons/commit/3985df2880e44739c8feb7019bce7e0d3273a15b Git commit 6cbadcddb873bb447f921cb4d8b9e697da4332a1 by Fushan Wen. Committed on 23/05/2022 at 09:02. Pushed by fusionfuture into branch 'master'. plasmacalendarplugins/alternatecalendar: cache sublabels The lookup process of sublabels can be time-consuming, so cache it. M +44 -27 plasmacalendarplugins/alternatecalendar/alternatecalendarplugin.cpp https://invent.kde.org/plasma/kdeplasma-addons/commit/6cbadcddb873bb447f921cb4d8b9e697da4332a1 A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1975 Git commit 60cb17b38afb126ced114807c2c961cc6fca3291 by Fushan Wen. Committed on 27/07/2022 at 23:28. Pushed by fusionfuture into branch 'master'. components/calendar: add sublabel to `Accessible.description` M +5 -1 components/calendar/qml/DayDelegate.qml https://invent.kde.org/plasma/plasma-workspace/commit/60cb17b38afb126ced114807c2c961cc6fca3291 In OpenSuse and Knoppix since Plasma5 the Widget »Digital Clock« has changed: With KDE4 and Plasma4 the Calendar System could be easily switched in the settings of the widget, to Hebrew, Mohammedian, Indian, Chinese, Julian, etc. Any Calendar System could be set for each of several clocks, which could be used in the same panel side by side. Why was the old code abandoned? Created attachment 160590 [details]
The Calendar System Feature unforgotten back in KDE Version 4
I filed this on its own: https://bugs.kde.org/show_bug.cgi?id=472750 With »KDE4« and »Plasma4« the Calendar System could be easily switched within the settings of the Clock Combined Calendar Widgets: Gregorian, Hebrew, Mohammedian, Indian, Chinese, Julian, Japanese, etc. For each of several Clock Combined Calendar Widgets, any Calendar System could be set, which could be used in the same Panel or on the same Virtual Desktop side by side. See screenshots. Since »Plasma« Version 5 the Configuration and Integration of the Module »Date and Time« into the »Plasma« Desktop Environment has changed, along with the »Plasma« Clock Combined Calendar Widgets. From »Plasma« Desktop Environment Version 5 on there is no option anymore to use any alternate Calender System at all, if not by Installing a Localized Edition of a Distribution, apparently and probably so in »OpenSuse« and »Knoppix«. Considering the settings with the KDE3 Fork Desktop Environment Trinity, the Calendar System was already switchable with Version 3 of KDE. Why was the old code abandoned? There are recently calls and efforts to rewrite this feature, notably for an integration of Arabic Calendars: https://bugs.kde.org/show_bug.cgi?id=429892 https://community.kde.org/KDE_Core/Astronomical_Calendars Calendar System Feature gone for instance in: Linux/KDE Plasma: OpenSuse 15.4 (available in About System) KDE Plasma Version: 5.24.4 KDE Frameworks Version: 5.90.0 Qt Version: 5.15.2 Calendar System Feature still exists for instance in: Linux/KDE Plasma: Kubuntu 14.04.6 (available in About System) KDElibs Version: 4.13.3 Qt Version: 4.8.6 And even more importantly: why was the old code forgotten? Because it was a custom thing that only applied to KDE apps and did not take effect anywhere else on the system or in any non-KDE apps. That powerful but not-very-compatible system was abandoned in favor of the more limited functionality provided by Qt, which applies systemwide, to all apps. Whether this was the best decision is up for interpretation, and reasonable people can disagree on the matter. |
Created attachment 133768 [details] Screenshot of a plasmoid witch is able to show a chinese lunar calendar under the main calendar. SUMMARY Right now the plasma calendar component (built-in date and time plasmoid) doesn't seems to support setting an alternate calendar system to make it display under the main calendar, it could be helpful if user can set an alternate calendar when needed. By looking at the current implementation, it doesn't support alternate calendar whatever directly or by writing a plugin in the "event plugin" similar way. I suggest adding a plugin interface for alternate calendar and optionally provide some first-party alternate calendar plugin to use. SOFTWARE/OS VERSIONS: Linux/KDE Plasma: Archlinux (available in About System) KDE Plasma Version: 5.20.3 KDE Frameworks Version: 5.76.0 Qt Version: 5.15.2 ADDITIONAL INFORMATION I did wrote a plasmoid based on the existed calendar QML code from plasma-framework repo and made some change to make it able to display Chinese Lunar calendar (a luni-solar calendar system), see the attachment for a screenshot of my current implementation, and the source code can be provided if needed. I'm new to QML and plasmoid development and it may need some time to make a proper patch. The code quality is way to far from get into KDE, but hopefully it can demonstrate what the feature looks like. I'm also would like to help KDE implement this feature (if that's acceptable). Let me know if you need any additional information. Thanks! Gary