00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <qdatetime.h>
00025 #include <qstring.h>
00026
00027 #include <klocale.h>
00028 #include <kdebug.h>
00029
00030 #include "kcalendarsystemgregorian.h"
00031
00032 KCalendarSystemGregorian::KCalendarSystemGregorian(const KLocale * locale)
00033 : KCalendarSystem(locale)
00034 {
00035 }
00036
00037 KCalendarSystemGregorian::~KCalendarSystemGregorian()
00038 {
00039 }
00040
00041 int KCalendarSystemGregorian::year(const QDate& date) const
00042 {
00043 return date.year();
00044 }
00045
00046 int KCalendarSystemGregorian::monthsInYear( const QDate & date ) const
00047 {
00048 Q_UNUSED( date )
00049
00050 return 12;
00051 }
00052
00053 int KCalendarSystemGregorian::weeksInYear(int year) const
00054 {
00055 QDate temp;
00056 temp.setYMD(year, 12, 31);
00057
00058
00059
00060 if ( temp.weekNumber() == 1 )
00061 temp = temp.addDays(-7);
00062
00063 return temp.weekNumber();
00064 }
00065
00066 int KCalendarSystemGregorian::weekNumber(const QDate& date,
00067 int * yearNum) const
00068 {
00069 return date.weekNumber(yearNum);
00070 }
00071
00072 QString KCalendarSystemGregorian::monthName(const QDate& date,
00073 bool shortName) const
00074 {
00075 return monthName(month(date), year(date), shortName);
00076 }
00077
00078 QString KCalendarSystemGregorian::monthNamePossessive(const QDate& date, bool shortName) const
00079 {
00080 return monthNamePossessive(month(date), year(date), shortName);
00081 }
00082
00083 QString KCalendarSystemGregorian::monthName(int month, int year, bool shortName) const
00084 {
00085 Q_UNUSED(year);
00086
00087 if ( shortName )
00088 switch ( month )
00089 {
00090 case 1:
00091 return locale()->translate("January", "Jan");
00092 case 2:
00093 return locale()->translate("February", "Feb");
00094 case 3:
00095 return locale()->translate("March", "Mar");
00096 case 4:
00097 return locale()->translate("April", "Apr");
00098 case 5:
00099 return locale()->translate("May short", "May");
00100 case 6:
00101 return locale()->translate("June", "Jun");
00102 case 7:
00103 return locale()->translate("July", "Jul");
00104 case 8:
00105 return locale()->translate("August", "Aug");
00106 case 9:
00107 return locale()->translate("September", "Sep");
00108 case 10:
00109 return locale()->translate("October", "Oct");
00110 case 11:
00111 return locale()->translate("November", "Nov");
00112 case 12:
00113 return locale()->translate("December", "Dec");
00114 }
00115 else
00116 switch ( month )
00117 {
00118 case 1:
00119 return locale()->translate("January");
00120 case 2:
00121 return locale()->translate("February");
00122 case 3:
00123 return locale()->translate("March");
00124 case 4:
00125 return locale()->translate("April");
00126 case 5:
00127 return locale()->translate("May long", "May");
00128 case 6:
00129 return locale()->translate("June");
00130 case 7:
00131 return locale()->translate("July");
00132 case 8:
00133 return locale()->translate("August");
00134 case 9:
00135 return locale()->translate("September");
00136 case 10:
00137 return locale()->translate("October");
00138 case 11:
00139 return locale()->translate("November");
00140 case 12:
00141 return locale()->translate("December");
00142 }
00143
00144 return QString::null;
00145 }
00146
00147 QString KCalendarSystemGregorian::monthNamePossessive(int month, int year,
00148 bool shortName) const
00149 {
00150 Q_UNUSED(year);
00151
00152 if ( shortName )
00153 switch ( month )
00154 {
00155 case 1:
00156 return locale()->translate("of January", "of Jan");
00157 case 2:
00158 return locale()->translate("of February", "of Feb");
00159 case 3:
00160 return locale()->translate("of March", "of Mar");
00161 case 4:
00162 return locale()->translate("of April", "of Apr");
00163 case 5:
00164 return locale()->translate("of May short", "of May");
00165 case 6:
00166 return locale()->translate("of June", "of Jun");
00167 case 7:
00168 return locale()->translate("of July", "of Jul");
00169 case 8:
00170 return locale()->translate("of August", "of Aug");
00171 case 9:
00172 return locale()->translate("of September", "of Sep");
00173 case 10:
00174 return locale()->translate("of October", "of Oct");
00175 case 11:
00176 return locale()->translate("of November", "of Nov");
00177 case 12:
00178 return locale()->translate("of December", "of Dec");
00179 }
00180 else
00181 switch ( month )
00182 {
00183 case 1:
00184 return locale()->translate("of January");
00185 case 2:
00186 return locale()->translate("of February");
00187 case 3:
00188 return locale()->translate("of March");
00189 case 4:
00190 return locale()->translate("of April");
00191 case 5:
00192 return locale()->translate("of May long", "of May");
00193 case 6:
00194 return locale()->translate("of June");
00195 case 7:
00196 return locale()->translate("of July");
00197 case 8:
00198 return locale()->translate("of August");
00199 case 9:
00200 return locale()->translate("of September");
00201 case 10:
00202 return locale()->translate("of October");
00203 case 11:
00204 return locale()->translate("of November");
00205 case 12:
00206 return locale()->translate("of December");
00207 }
00208
00209 return QString::null;
00210 }
00211
00212 bool KCalendarSystemGregorian::setYMD(QDate & date, int y, int m, int d) const
00213 {
00214
00215 if ( y >= 0 && y <= 99 )
00216 return false;
00217
00218
00219 return date.setYMD(y, m, d);
00220 }
00221
00222 QDate KCalendarSystemGregorian::addYears(const QDate & date, int nyears) const
00223 {
00224 return date.addYears(nyears);
00225 }
00226
00227 QDate KCalendarSystemGregorian::addMonths(const QDate & date, int nmonths) const
00228 {
00229 return date.addMonths(nmonths);
00230 }
00231
00232 QDate KCalendarSystemGregorian::addDays(const QDate & date, int ndays) const
00233 {
00234 return date.addDays(ndays);
00235 }
00236
00237 QString KCalendarSystemGregorian::weekDayName(int col, bool shortName) const
00238 {
00239
00240
00241
00242 return KCalendarSystem::weekDayName(col, shortName);
00243 }
00244
00245 QString KCalendarSystemGregorian::weekDayName(const QDate& date, bool shortName) const
00246 {
00247 return weekDayName(dayOfWeek(date), shortName);
00248 }
00249
00250
00251 int KCalendarSystemGregorian::dayOfWeek(const QDate& date) const
00252 {
00253 return date.dayOfWeek();
00254 }
00255
00256 int KCalendarSystemGregorian::dayOfYear(const QDate & date) const
00257 {
00258 return date.dayOfYear();
00259 }
00260
00261 int KCalendarSystemGregorian::daysInMonth(const QDate& date) const
00262 {
00263 return date.daysInMonth();
00264 }
00265
00266 int KCalendarSystemGregorian::minValidYear() const
00267 {
00268 return 1753;
00269 }
00270
00271 int KCalendarSystemGregorian::maxValidYear() const
00272 {
00273 return 8000;
00274 }
00275
00276 int KCalendarSystemGregorian::day(const QDate& date) const
00277 {
00278 return date.day();
00279 }
00280
00281 int KCalendarSystemGregorian::month(const QDate& date) const
00282 {
00283 return date.month();
00284 }
00285
00286 int KCalendarSystemGregorian::daysInYear(const QDate& date) const
00287 {
00288 return date.daysInYear();
00289 }
00290
00291 int KCalendarSystemGregorian::weekDayOfPray() const
00292 {
00293 return 7;
00294 }
00295
00296 QString KCalendarSystemGregorian::calendarName() const
00297 {
00298 return QString::fromLatin1("gregorian");
00299 }
00300
00301 bool KCalendarSystemGregorian::isLunar() const
00302 {
00303 return false;
00304 }
00305
00306 bool KCalendarSystemGregorian::isLunisolar() const
00307 {
00308 return false;
00309 }
00310
00311 bool KCalendarSystemGregorian::isSolar() const
00312 {
00313 return true;
00314 }
00315
00316 int KCalendarSystemGregorian::yearStringToInteger(const QString & sNum, int & iLength) const
00317 {
00318 int iYear;
00319 iYear = KCalendarSystem::yearStringToInteger(sNum, iLength);
00320
00321
00322
00323 if (iYear < 69)
00324 iYear += 2000;
00325 else if (iYear < 100)
00326 iYear += 1900;
00327
00328 return iYear;
00329 }