From kde-pim Tue Feb 26 00:39:49 2002 From: Cornelius Schumacher Date: Tue, 26 Feb 2002 00:39:49 +0000 To: kde-pim Subject: [Kde-pim] About non-gregorian calendar systems X-MARC-Message: https://marc.info/?l=kde-pim&m=101468397216676 First of all let me say that I find it great that some activity seems to emerge to implement non-gregorian calendar systems in KOrganizer. I think this is one of the things that make open-source such a great concept, that even features only useful to a small number of users get realized and make KDE a truly global desktop. Now to the technical problems: I don't think that it helps very much to implement specific Date classes. A Date object should represent a certain day, regardless of the calendar system and QDate is perfect for this purpose. The problem is that each calendar system has its own view of how long a month is, how many months belong to a year, what a week is, how special days like holidays are calculated. In fact, supporting different calendar systems is not a problem of internal represenation of a date, but a problem of how calendars are displayed. Currently many aspects of the gregorian system are hard-coded, e.g. the number of days in a month, the length of a week, the position of the days in the week (at least it's possible to switch between a week starting on sunday and a week starting on monday). In addition to that all the weekday and month names are hardcoded. To make it possible to use different calendar systems, we don't need to subclass QDate, we need a new interface class CalendarSystem, which provides functions to return for a given QDate object, which year it belongs to, how many months that year has, to which month it belongs, how many days the month has, how the month is called, etc. This implicitly also contains the conversion functions from and to gregorian dates, but so we have QDate as reference and only have to implement conversions for this system and not for converting between two non-gregorian systems. The different calendar views then have to use the CalendarSystem class to find out the information they currently have hard-coded. Each different calendar system would have to be implemented as a subclass of CalendarSystems, which provides all the required information through the common abstract interface. Holidays are something different. It is probably a common case that the standard gregorian calendar is used, but some special dates are based on some calculation, which can't be expressed as a fixed date. For these holidays or holiday systems I think currently the best and easiest way is to provide them through a plugin. This will not require any additional changes and provides the information for those who are interested in addition to the normal calendar information. -- Cornelius Schumacher _______________________________________________ kde-pim mailing list kde-pim@mail.kde.org http://mail.kde.org/mailman/listinfo/kde-pim kde-pim home page at http://pim.kde.org/