diff --git a/desktop-widgets/filterwidget2.cpp b/desktop-widgets/filterwidget2.cpp index 4a1d2e807..d6a8acad5 100644 --- a/desktop-widgets/filterwidget2.cpp +++ b/desktop-widgets/filterwidget2.cpp @@ -24,7 +24,13 @@ FilterWidget2::FilterWidget2(QWidget* parent) : QWidget(parent) ui.labelEquipment->hide(); ui.invertFilter->hide(); - ui.to->setDate(data.to.date()); + ui.fromDate->setDisplayFormat(prefs.date_format); + ui.fromTime->setDisplayFormat(prefs.time_format); + + ui.toDate->setDisplayFormat(prefs.date_format); + ui.toTime->setDisplayFormat(prefs.time_format); + ui.toDate->setDate(data.toDate.date()); + ui.toTime->setTime(data.toTime); connect(ui.maxRating, &StarWidget::valueChanged, this, &FilterWidget2::updateFilter); @@ -50,10 +56,16 @@ FilterWidget2::FilterWidget2(QWidget* parent) : QWidget(parent) connect(ui.minWaterTemp, static_cast(&QDoubleSpinBox::valueChanged), this, &FilterWidget2::updateFilter); - connect(ui.from, &QDateTimeEdit::dateTimeChanged, + connect(ui.fromDate, &QDateTimeEdit::dateChanged, this, &FilterWidget2::updateFilter); - connect(ui.to, &QDateTimeEdit::dateTimeChanged, + connect(ui.fromTime, &QDateTimeEdit::timeChanged, + this, &FilterWidget2::updateFilter); + + connect(ui.toDate, &QDateTimeEdit::dateChanged, + this, &FilterWidget2::updateFilter); + + connect(ui.toTime, &QDateTimeEdit::timeChanged, this, &FilterWidget2::updateFilter); connect(ui.tags, &QLineEdit::textChanged, @@ -81,8 +93,10 @@ void FilterWidget2::updateFilter() filterData.maxWaterTemp = ui.maxWaterTemp->value(); filterData.minAirTemp = ui.minAirTemp->value(); filterData.maxWaterTemp = ui.maxWaterTemp->value(); - filterData.from = ui.from->dateTime(); - filterData.to = ui.to->dateTime(); + filterData.fromDate = ui.fromDate->dateTime(); + filterData.fromTime = ui.fromTime->time(); + filterData.toDate = ui.toDate->dateTime(); + filterData.toTime = ui.toTime->time(); filterData.tags = ui.tags->text().split(",", QString::SkipEmptyParts); filterData.people = ui.people->text().split(",", QString::SkipEmptyParts); filterData.location = ui.location->text().split(",", QString::SkipEmptyParts); diff --git a/desktop-widgets/filterwidget2.ui b/desktop-widgets/filterwidget2.ui index 8cee672e8..7ed52ef4e 100644 --- a/desktop-widgets/filterwidget2.ui +++ b/desktop-widgets/filterwidget2.ui @@ -160,9 +160,6 @@ - - - @@ -170,9 +167,6 @@ - - - @@ -252,6 +246,26 @@ + + + + + + + true + + + + + + + true + + + + + + @@ -267,8 +281,12 @@ maxRating minVisibility maxVisibility - from - to + fromDate + fromTime + toDate + toTime + logged + planned tags people location diff --git a/qt-models/filtermodels.cpp b/qt-models/filtermodels.cpp index 2f3ce99a8..6efac8348 100644 --- a/qt-models/filtermodels.cpp +++ b/qt-models/filtermodels.cpp @@ -114,10 +114,16 @@ bool MultiFilterSortModel::showDive(const struct dive *d) const (d->airtemp.mkelvin < C_to_mkelvin(filterData.minAirTemp) || d->airtemp.mkelvin > C_to_mkelvin(filterData.maxAirTemp))) return false; - if (filterData.from.isValid() && d->when < filterData.from.toTime_t()) + QDateTime t = filterData.fromDate; + t.setTime(filterData.fromTime); + if (filterData.fromDate.isValid() && filterData.fromTime.isValid() && + d->when < t.toMSecsSinceEpoch()/1000 + t.offsetFromUtc()) return false; - if (filterData.to.isValid() && d->when > filterData.to.toTime_t()) + t = filterData.toDate; + t.setTime(filterData.toTime); + if (filterData.toDate.isValid() && filterData.toTime.isValid() && + d->when > t.toMSecsSinceEpoch()/1000 + t.offsetFromUtc()) return false; // tags. diff --git a/qt-models/filtermodels.h b/qt-models/filtermodels.h index 5cb130522..f9be3a2ad 100644 --- a/qt-models/filtermodels.h +++ b/qt-models/filtermodels.h @@ -24,8 +24,10 @@ struct FilterData { double maxWaterTemp = 100; double minAirTemp = 0; double maxAirTemp = 100; - QDateTime from; - QDateTime to = QDateTime::currentDateTime(); + QDateTime fromDate; + QTime fromTime; + QDateTime toDate = QDateTime::currentDateTime(); + QTime toTime = QTime::currentTime(); QStringList tags; QStringList people; QStringList location;