2
Copyright 2009, 2010 John Layt <john@layt.net>
4
This library is free software; you can redistribute it and/or
5
modify it under the terms of the GNU Library General Public
6
License as published by the Free Software Foundation; either
7
version 2 of the License, or (at your option) any later version.
9
This library is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
Library General Public License for more details.
14
You should have received a copy of the GNU Library General Public License
15
along with this library; see the file COPYING.LIB. If not, write to
16
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17
Boston, MA 02110-1301, USA.
20
#ifndef KCALENDARSYSTEMGREGORIANPROLEPTIC_H
21
#define KCALENDARSYSTEMGREGORIANPROLEPTIC_H
23
#include "kcalendarsystem.h"
25
class KCalendarSystemGregorianProlepticPrivate;
29
* This is the pure Gregorian calendar implementation.
31
* Note: This is a proleptic version of the Gregorian calendar, it does not
32
* copy the QDate method of using the Julian Calendar for dates before 15
33
* October 1582. This is the traditional proleptic Gregorian calendar
34
* that does not have a year 0, unlike the ISO version which does.
36
* @b license GNU-LGPL v.2 or later
38
* @see KLocale,KCalendarSystem
40
* @author John Layt <john@layt.net>
42
class KCalendarSystemGregorianProleptic: public KCalendarSystem
45
explicit KCalendarSystemGregorianProleptic( const KLocale *locale = 0 );
46
explicit KCalendarSystemGregorianProleptic( const KSharedConfig::Ptr config, const KLocale *locale = 0 );
47
virtual ~KCalendarSystemGregorianProleptic();
49
virtual QString calendarType() const;
51
virtual QDate epoch() const;
52
virtual QDate earliestValidDate() const;
53
virtual QDate latestValidDate() const;
54
virtual bool isValid( int year, int month, int day ) const;
55
virtual bool isValid( const QDate &date ) const;
57
virtual bool setDate( QDate &date, int year, int month, int day ) const;
59
virtual bool setYMD( QDate &date, int year, int month, int day ) const;
61
virtual int year( const QDate &date ) const;
62
virtual int month( const QDate &date ) const;
63
virtual int day( const QDate &date ) const;
65
virtual QDate addYears( const QDate &date, int nyears ) const;
66
virtual QDate addMonths( const QDate &date, int nmonths ) const;
67
virtual QDate addDays( const QDate &date, int ndays ) const;
69
virtual int monthsInYear( const QDate &date ) const;
70
virtual int weeksInYear( const QDate &date ) const;
71
virtual int weeksInYear( int year ) const;
72
virtual int daysInYear( const QDate &date ) const;
73
virtual int daysInMonth( const QDate &date ) const;
74
virtual int daysInWeek( const QDate &date ) const;
76
virtual int dayOfYear( const QDate &date ) const;
77
virtual int dayOfWeek( const QDate &date ) const;
79
virtual int weekNumber( const QDate &date, int *yearNum = 0 ) const;
81
virtual bool isLeapYear( int year ) const;
82
virtual bool isLeapYear( const QDate &date ) const;
84
virtual QString monthName( int month, int year, MonthNameFormat format = LongName ) const;
85
virtual QString monthName( const QDate &date, MonthNameFormat format = LongName ) const;
87
virtual QString weekDayName( int weekDay, WeekDayNameFormat format = LongDayName ) const;
88
virtual QString weekDayName( const QDate &date, WeekDayNameFormat format = LongDayName ) const;
90
virtual QString yearString( const QDate & pDate, StringFormat format = LongFormat ) const;
91
virtual QString monthString( const QDate &pDate, StringFormat format = LongFormat ) const;
92
virtual QString dayString( const QDate &pDate, StringFormat format = LongFormat ) const;
94
virtual int yearStringToInteger( const QString &sNum, int &iLength ) const;
95
virtual int monthStringToInteger( const QString &sNum, int &iLength ) const;
96
virtual int dayStringToInteger( const QString &sNum, int &iLength ) const;
98
virtual QString formatDate( const QDate &fromDate, KLocale::DateFormat toFormat = KLocale::LongDate ) const;
100
virtual QDate readDate( const QString &str, bool *ok = 0 ) const;
101
virtual QDate readDate( const QString &dateString, const QString &dateFormat, bool *ok = 0 ) const;
102
virtual QDate readDate( const QString &str, KLocale::ReadDateFlags flags, bool *ok = 0 ) const;
104
virtual int weekStartDay() const;
105
virtual int weekDayOfPray () const;
107
virtual bool isLunar() const;
108
virtual bool isLunisolar() const;
109
virtual bool isSolar() const;
110
virtual bool isProleptic() const;
113
virtual bool julianDayToDate( int jd, int &year, int &month, int &day ) const;
114
virtual bool dateToJulianDay( int year, int month, int day, int &jd ) const;
115
KCalendarSystemGregorianProleptic( KCalendarSystemGregorianProlepticPrivate &dd,
116
const KSharedConfig::Ptr config = KSharedConfig::Ptr(),
117
const KLocale *locale = 0 );
120
friend class KCalendarSystemIndianNational; // To allow access to julianDayToDate() and dateToJulianDay()
121
Q_DECLARE_PRIVATE( KCalendarSystemGregorianProleptic )
122
KCalendarSystemGregorianProlepticPrivate * const dont_use; // KDE5 remove, use shared d
125
#endif // KCALENDARSYSTEMGREGORIANPROLEPTIC_H