X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/9f87bf8d88318e624e20182aea0c3258fcfcfab5..2359ea2bdedf358e419745c812f2be2bf7d6c2a2:/src/dolphinmodel.cpp diff --git a/src/dolphinmodel.cpp b/src/dolphinmodel.cpp index 14d9af12b..bb1fd36dd 100644 --- a/src/dolphinmodel.cpp +++ b/src/dolphinmodel.cpp @@ -208,11 +208,20 @@ QVariant DolphinModel::displayRoleData(const QModelIndex& index) const const QDate modifiedDate = modifiedTime.date(); 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()) { + int yearForCurrentWeek = 0; + int currentWeek = currentDate.weekNumber(&yearForCurrentWeek); + if (yearForCurrentWeek == currentDate.year() + 1) { + currentWeek = 53; + } + + int yearForModifiedWeek = 0; + int modifiedWeek = modifiedDate.weekNumber(&yearForModifiedWeek); + if (yearForModifiedWeek == modifiedDate.year() + 1) { + modifiedWeek = 53; + } + + if (currentDate.year() == modifiedDate.year() && currentDate.month() == modifiedDate.month()) { switch (currentWeek - modifiedWeek) { case 0: switch (daysDistance) { @@ -231,13 +240,15 @@ QVariant DolphinModel::displayRoleData(const QModelIndex& index) const retString = i18nc("@title:group Date", "Three Weeks Ago"); break; case 4: + case 5: retString = i18nc("@title:group Date", "Earlier this Month"); break; default: Q_ASSERT(false); } } else { - if (daysDistance <= (currentDate.day() + modifiedDate.daysInMonth())) { + const QDate lastMonthDate = currentDate.addMonths(-1); + if (lastMonthDate.year() == modifiedDate.year() && lastMonthDate.month() == modifiedDate.month()) { 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) { @@ -351,6 +362,10 @@ QVariant DolphinModel::sortRoleData(const QModelIndex& index) const switch (index.column()) { case KDirModel::Name: { retVariant = data(index, KCategorizedSortFilterProxyModel::CategoryDisplayRole); + if (retVariant == i18nc("@title:group Name", m_others)) { + // assure that the "Others" group is always the last categorization + retVariant = QString(QChar(QChar::ReplacementCharacter)); + } break; }