aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--desktop-widgets/filterwidget2.cpp18
-rw-r--r--desktop-widgets/filterwidget2.h2
-rw-r--r--qt-models/filtermodels.cpp7
3 files changed, 23 insertions, 4 deletions
diff --git a/desktop-widgets/filterwidget2.cpp b/desktop-widgets/filterwidget2.cpp
index d6a8acad5..f1898ca38 100644
--- a/desktop-widgets/filterwidget2.cpp
+++ b/desktop-widgets/filterwidget2.cpp
@@ -1,5 +1,7 @@
#include "desktop-widgets/filterwidget2.h"
#include "desktop-widgets/simplewidgets.h"
+#include "core/qthelper.h"
+#include "core/settings/qPrefUnit.h"
#include <QDoubleSpinBox>
@@ -32,6 +34,9 @@ FilterWidget2::FilterWidget2(QWidget* parent) : QWidget(parent)
ui.toDate->setDate(data.toDate.date());
ui.toTime->setTime(data.toTime);
+ // Initialize temperature fields to display correct unit.
+ temperatureChanged();
+
connect(ui.maxRating, &StarWidget::valueChanged,
this, &FilterWidget2::updateFilter);
@@ -80,6 +85,19 @@ FilterWidget2::FilterWidget2(QWidget* parent) : QWidget(parent)
connect(ui.logged, SIGNAL(stateChanged(int)), this, SLOT(updateLogged(int)));
connect(ui.planned, SIGNAL(stateChanged(int)), this, SLOT(updatePlanned(int)));
+
+ // Update temperature fields if user changes temperature-units in preferences.
+ connect(qPrefUnits::instance(), &qPrefUnits::temperatureChanged, this, &FilterWidget2::temperatureChanged);
+ connect(qPrefUnits::instance(), &qPrefUnits::unit_systemChanged, this, &FilterWidget2::temperatureChanged);
+}
+
+void FilterWidget2::temperatureChanged()
+{
+ QString temp = get_temp_unit();
+ ui.minAirTemp->setSuffix(temp);
+ ui.maxAirTemp->setSuffix(temp);
+ ui.minWaterTemp->setSuffix(temp);
+ ui.maxWaterTemp->setSuffix(temp);
}
void FilterWidget2::updateFilter()
diff --git a/desktop-widgets/filterwidget2.h b/desktop-widgets/filterwidget2.h
index f8bdf4274..ab388ba6a 100644
--- a/desktop-widgets/filterwidget2.h
+++ b/desktop-widgets/filterwidget2.h
@@ -27,6 +27,8 @@ protected:
public slots:
void updatePlanned(int value);
void updateLogged(int value);
+private slots:
+ void temperatureChanged();
private:
Ui::FilterWidget2 ui;
diff --git a/qt-models/filtermodels.cpp b/qt-models/filtermodels.cpp
index 6efac8348..53149eba2 100644
--- a/qt-models/filtermodels.cpp
+++ b/qt-models/filtermodels.cpp
@@ -104,14 +104,13 @@ bool MultiFilterSortModel::showDive(const struct dive *d) const
if (d->rating < filterData.minRating || d->rating > filterData.maxRating)
return false;
- // TODO: get the preferences for the imperial vs metric data.
- // ignore the check if it doesn't makes sense.
+ auto temp_comp = prefs.units.temperature == units::CELSIUS ? C_to_mkelvin : F_to_mkelvin;
if (d->watertemp.mkelvin &&
- (d->watertemp.mkelvin < C_to_mkelvin(filterData.minWaterTemp) || d->watertemp.mkelvin > C_to_mkelvin((filterData.maxWaterTemp))))
+ (d->watertemp.mkelvin < (*temp_comp)(filterData.minWaterTemp) || d->watertemp.mkelvin > (*temp_comp)(filterData.maxWaterTemp)))
return false;
if (d->airtemp.mkelvin &&
- (d->airtemp.mkelvin < C_to_mkelvin(filterData.minAirTemp) || d->airtemp.mkelvin > C_to_mkelvin(filterData.maxAirTemp)))
+ (d->airtemp.mkelvin < (*temp_comp)(filterData.minAirTemp) || d->airtemp.mkelvin > (*temp_comp)(filterData.maxAirTemp)))
return false;
QDateTime t = filterData.fromDate;