diff options
author | Yosef Hamza <jo.adam.93@gmail.com> | 2014-04-13 18:19:15 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-04-14 05:16:31 -0700 |
commit | ad9eb73d73b0200150d34807616ebcc8dd2a4b4f (patch) | |
tree | 7359b595479838a8a2c7fec1687a09ec2ff261eb | |
parent | f46e2803ebabb05d5988050660992c2b0b54a8b1 (diff) | |
download | subsurface-ad9eb73d73b0200150d34807616ebcc8dd2a4b4f.tar.gz |
Mark Air/Water temp field red for wrong input.
As a warining for the user mark the field red.
If the user inputs invalid input that will be ignored
while parsing.
But with adding a one character error margin to prevent it from toggling
between Red and Yellow while editing existing values, for example "After
Deleting unit and last number after '.'"
Signed-off-by: Yousef Hamza <jo.adam.93@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qt-ui/maintab.cpp | 29 | ||||
-rw-r--r-- | qt-ui/maintab.h | 1 |
2 files changed, 30 insertions, 0 deletions
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index 227d89b58..594ac562a 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -881,14 +881,43 @@ void MainTab::on_airtemp_textChanged(const QString &text) { EDIT_SELECTED_DIVES(select_dc(mydive)->airtemp.mkelvin = parseTemperatureToMkelvin(text)); markChangedWidget(ui.airtemp); + validate_temp_field(ui.airtemp, text); } void MainTab::on_watertemp_textChanged(const QString &text) { EDIT_SELECTED_DIVES(select_dc(mydive)->watertemp.mkelvin = parseTemperatureToMkelvin(text)); markChangedWidget(ui.watertemp); + validate_temp_field(ui.watertemp, text); } +void MainTab::validate_temp_field(QLineEdit *tempField,const QString &text) +{ + static bool missing_unit = false; + static bool missing_precision = false; + if (!text.contains(QRegExp("^[-+]{0,1}[0-9]+([,.][0-9]+){0,1}(°[CF]){0,1}$")) && + !text.isEmpty() && + !text.contains(QRegExp("^[-+]$"))) { + if (text.contains(QRegExp("^[-+]{0,1}[0-9]+([,.][0-9]+){0,1}(°)$")) && !missing_unit) { + if (!missing_unit) { + missing_unit = true; + return; + } + } + if (text.contains(QRegExp("^[-+]{0,1}[0-9]+([,.]){0,1}(°[CF]){0,1}$")) && !missing_precision) { + if (!missing_precision) { + missing_precision = true; + return; + } + } + QPalette p; + p.setBrush(QPalette::Base, QColor(Qt::red).lighter()); + tempField->setPalette(p); + } else { + missing_unit = false; + missing_precision = false; + } +} void MainTab::on_dateTimeEdit_dateTimeChanged(const QDateTime &datetime) { QDateTime dateTimeUtc(datetime); diff --git a/qt-ui/maintab.h b/qt-ui/maintab.h index eee07a31d..4a0b0b9c5 100644 --- a/qt-ui/maintab.h +++ b/qt-ui/maintab.h @@ -81,6 +81,7 @@ slots: void on_notes_textChanged(); void on_airtemp_textChanged(const QString &text); void on_watertemp_textChanged(const QString &text); + void validate_temp_field(QLineEdit *tempField,const QString &text); void on_dateTimeEdit_dateTimeChanged(const QDateTime &datetime); void on_rating_valueChanged(int value); void on_visibility_valueChanged(int value); |