mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-12 12:54:29 +00:00
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:
parent
ebae284adb
commit
c68112de65
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue