[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdelibs/kdeui
From: Charles Samuels <charles () kde ! org>
Date: 2005-05-02 0:01:34
Message-ID: 20050502000134.C1CB03EF () office ! kde ! org
[Download RAW message or body]
CVS commit by charles:
Use calendar system specific date to calcuate week numbers, so week numbers
work for non-Gregorian systems as well. Tested on Gregorian, Hijri, Hebrew, \
and Jalali calender systems and seems to work fine. At least Gregorian
works as before, but now the other calendar systems do as well.
This patch contributed by liucougar@gmail.com. Thank you.
CCMAIL:liucougar@gmail.com
M +15 -7 kdatepicker.cpp 1.74
--- kdelibs/kdeui/kdatepicker.cpp #1.73:1.74
@@ -75,14 +75,22 @@ void KDatePicker::fillWeeksCombo(const Q
// This of course can be a list like 53,1,2..52
- QDate day(date.year(), 1, 1);
+ QDate day;
+ int year = calendar->year(date);
+ calendar->setYMD(day, year, 1, 1);
int lastMonth = calendar->monthsInYear(day);
- QDate lastDay(date.year(), lastMonth, \
calendar->daysInMonth(QDate(date.year(), lastMonth, 1))); + QDate lastDay, \
firstDayOfLastMonth; + calendar->setYMD(firstDayOfLastMonth, year, \
lastMonth, 1); + calendar->setYMD(lastDay, year, lastMonth, \
calendar->daysInMonth(firstDayOfLastMonth));
- for (; day <= lastDay; day = calendar->addDays(day, 7 \
/*calendar->daysOfWeek()*/) ) + for (; day <= lastDay ; day = \
calendar->addDays(day, 7 /*calendar->daysOfWeek()*/) ) {
- int year = 0;
QString week = i18n("Week %1").arg(calendar->weekNumber(day, &year));
- if ( year != date.year() ) week += "*"; // show that this is a week \
from a different year + if ( year != calendar->year(day) ) week += "*"; \
// show that this is a week from a different year \
d->selectWeek->insertItem(week); +
+ // make sure that the week of the lastDay is always inserted: in \
Chinese calendar + // system, this is not always the case
+ if(day < lastDay && day.daysTo(lastDay) < 7 && \
calendar->weekNumber(day) != calendar->weekNumber(lastDay)) + day = \
lastDay.addDays(-7); }
}
@@ -246,7 +254,7 @@ KDatePicker::dateChangedSlot(QDate date)
// calculate the item num in the week combo box; normalize selected \
day so as if 1.1. is the first day of the week
- QDate firstDay(date.year(), 1, 1);
+ QDate firstDay;
+ calendar->setYMD(firstDay, calendar->year(date), 1, 1);
d->selectWeek->setCurrentItem((calendar->dayOfYear(date) + \
calendar->dayOfWeek(firstDay) - 2) / \
7/*calendar->daysInWeek()*/);
-
selectYear->setText(calendar->yearString(date, false));
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic