Fix problem when descending order on "Today" and "Thursday" for example. Now we also have week independant maths, so we get a Yesterday tag even if yesterday was 31st and today is 1st. Peter, the

order should be correct now, please recheck (I added a '-', so the order now is the inverse that the one shown on the kfm-devel thread).

CCMAIL: kfm-devel@kde.org

svn path=/trunk/KDE/kdebase/apps/; revision=815341
This commit is contained in:
Rafael Fernández López 2008-06-01 14:56:07 +00:00
parent ebae284adb
commit c68112de65

View file

@ -210,12 +210,15 @@ QVariant DolphinModel::displayRoleData(const QModelIndex& index) const
const QDate currentDate = KDateTime::currentLocalDateTime().date();
const QDate modifiedDate = modifiedTime.date();
if ((currentDate.year() == modifiedDate.year()) && (currentDate.month() == modifiedDate.month())) {
const int currentWeek = currentDate.weekNumber();
const int modifiedWeek = modifiedDate.weekNumber();
const int daysDistance = modifiedDate.daysTo(currentDate);
const int currentWeek = currentDate.weekNumber();
const int modifiedWeek = modifiedDate.weekNumber();
if (currentDate.year() == modifiedDate.year() &&
currentDate.month() == modifiedDate.month()) {
switch (currentWeek - modifiedWeek) {
case 0:
switch (modifiedDate.daysTo(currentDate)) {
switch (daysDistance) {
case 0: retString = i18nc("@title:group Date", "Today"); break;
case 1: retString = i18nc("@title:group Date", "Yesterday"); break;
default: retString = modifiedTime.toString(i18nc("@title:group The week day name: %A", "%A"));
@ -237,7 +240,23 @@ QVariant DolphinModel::displayRoleData(const QModelIndex& index) const
Q_ASSERT(false);
}
} else {
retString = modifiedTime.toString(i18nc("@title:group The month and year: %B is full month name in current locale, and %Y is full year number", "%B, %Y"));
if (daysDistance <= (currentDate.day() + modifiedDate.daysInMonth())) {
if (daysDistance == 1) {
retString = i18nc("@title:group Date: %B is full month name in current locale, and %Y is full year number", "Yesterday (%B, %Y)");
} else if (daysDistance <= 7) {
retString = modifiedTime.toString(i18nc("@title:group The week day name: %A, %B is full month name in current locale, and %Y is full year number", "%A (%B, %Y)"));
} else if (daysDistance <= 7 * 2) {
retString = modifiedTime.toString(i18nc("@title:group Date: %B is full month name in current locale, and %Y is full year number", "Last Week (%B, %Y)"));
} else if (daysDistance <= 7 * 3) {
retString = modifiedTime.toString(i18nc("@title:group Date: %B is full month name in current locale, and %Y is full year number", "Two Weeks Ago (%B, %Y)"));
} else if (daysDistance <= 7 * 4) {
retString = modifiedTime.toString(i18nc("@title:group Date: %B is full month name in current locale, and %Y is full year number", "Three Weeks Ago (%B, %Y)"));
} else {
retString = modifiedTime.toString(i18nc("@title:group Date: %B is full month name in current locale, and %Y is full year number", "Earlier on %B, %Y"));
}
} else {
retString = modifiedTime.toString(i18nc("@title:group The month and year: %B is full month name in current locale, and %Y is full year number", "%B, %Y"));
}
}
break;
}
@ -363,19 +382,7 @@ QVariant DolphinModel::sortRoleData(const QModelIndex& index) const
const QDate currentDate = KDateTime::currentLocalDateTime().date();
const QDate modifiedDate = modifiedTime.date();
int weekOfMonth = 0;
int dayOfWeek = 0;
if ((currentDate.year() == modifiedDate.year()) && (currentDate.month() == modifiedDate.month())) {
weekOfMonth = 4 - currentDate.weekNumber() + modifiedDate.weekNumber();
Q_ASSERT(weekOfMonth >= 0);
Q_ASSERT(weekOfMonth <= 4);
if (weekOfMonth == 0) {
dayOfWeek = modifiedDate.dayOfWeek();
}
}
retVariant = modifiedDate.year() * 10000 + modifiedDate.month() * 100 +
weekOfMonth * 10 + dayOfWeek;
retVariant = -modifiedDate.daysTo(currentDate);
break;
}