[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [krusader] krusader/Filter: FIXED: [ 374175 ] wrong date format parsing using date filter in search
From: Alexander Bikadorov <null () kde ! org>
Date: 2016-12-31 15:55:37
Message-ID: E1cNM0P-0004f1-Ma () code ! kde ! org
[Download RAW message or body]
Git commit 4d509bb88b6b8bf40050e1d83af9611362bfaa6a by Alexander Bikadorov.
Committed on 31/12/2016 at 15:42.
Pushed by abikadorov into branch 'master'.
FIXED: [ 374175 ] wrong date format parsing using date filter in search dialog
Plus fixed wrong century: number '16' is made to year '1916' by QLocale
BUG: 374175
M +8 -11 krusader/Filter/advancedfilter.cpp
M +7 -0 krusader/Filter/advancedfilter.h
https://commits.kde.org/krusader/4d509bb88b6b8bf40050e1d83af9611362bfaa6a
diff --git a/krusader/Filter/advancedfilter.cpp b/krusader/Filter/advancedfilter.cpp
index d1165262..ce4fdc83 100644
--- a/krusader/Filter/advancedfilter.cpp
+++ b/krusader/Filter/advancedfilter.cpp
@@ -449,14 +449,14 @@ void AdvancedFilter::notModifiedAfterSetDate()
void AdvancedFilter::changeDate(KLineEdit *p)
{
// check if the current date is valid
- QDate d = QLocale().toDate(p->text());
+ QDate d = stringToDate(p->text());
if (!d.isValid()) d = QDate::currentDate();
KRGetDate *gd = new KRGetDate(d, this);
d = gd->getDate();
// if a user pressed ESC or closed the dialog, we'll return an invalid date
if (d.isValid())
- p->setText(QLocale().toString(d, QLocale::ShortFormat));
+ p->setText(dateToString(d));
delete gd;
}
@@ -504,8 +504,8 @@ bool AdvancedFilter::getSettings(FilterSettings &s)
}
s.modifiedBetweenEnabled = modifiedBetweenEnabled->isChecked();
- s.modifiedBetween1 = QLocale().toDate(modifiedBetweenData1->text());
- s.modifiedBetween2 = QLocale().toDate(modifiedBetweenData2->text());
+ s.modifiedBetween1 = stringToDate(modifiedBetweenData1->text());
+ s.modifiedBetween2 = stringToDate(modifiedBetweenData2->text());
if (s.modifiedBetweenEnabled) {
// check if date is valid
@@ -526,7 +526,7 @@ bool AdvancedFilter::getSettings(FilterSettings &s)
}
s.notModifiedAfterEnabled = notModifiedAfterEnabled->isChecked();
- s.notModifiedAfter = QLocale().toDate(notModifiedAfterData->text());
+ s.notModifiedAfter = stringToDate(notModifiedAfterData->text());
if(s.notModifiedAfterEnabled && !s.notModifiedAfter.isValid()) {
invalidDateMessage(notModifiedAfterData);
@@ -586,13 +586,10 @@ void AdvancedFilter::applySettings(const FilterSettings &s)
else
anyDateEnabled->setChecked(true);
- modifiedBetweenData1->setText(
- QLocale().toString(s.modifiedBetween1, QLocale::ShortFormat));
- modifiedBetweenData2->setText(
- QLocale().toString(s.modifiedBetween2, QLocale::ShortFormat));
+ modifiedBetweenData1->setText(dateToString(s.modifiedBetween1));
+ modifiedBetweenData2->setText(dateToString(s.modifiedBetween2));
- notModifiedAfterData->setText(
- QLocale().toString(s.notModifiedAfter, QLocale::ShortFormat));
+ notModifiedAfterData->setText(dateToString(s.notModifiedAfter));
modifiedInTheLastData->setValue(s.modifiedInTheLast.amount);
modifiedInTheLastType->setCurrentIndex(s.modifiedInTheLast.unit);
diff --git a/krusader/Filter/advancedfilter.h b/krusader/Filter/advancedfilter.h
index 57051abb..ac50990b 100644
--- a/krusader/Filter/advancedfilter.h
+++ b/krusader/Filter/advancedfilter.h
@@ -116,6 +116,13 @@ private:
void changeDate(KLineEdit *p);
void fillList(KComboBox *list, QString filename);
void invalidDateMessage(KLineEdit *p);
+ static QDate stringToDate(const QString& text) {
+ // 30.12.16 is interpreted as 1916-12-30
+ return QLocale().toDate(text, QLocale::ShortFormat).addYears(100);
+ }
+ static QString dateToString(const QDate& date) {
+ return QLocale().toString(date, QLocale::ShortFormat);
+ }
};
#endif /* ADVANCEDFILTER_H */
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic