diff options
author | Willem Ferguson <willemferguson@zoology.up.ac.za> | 2019-11-10 13:09:19 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-11-10 13:10:03 -0800 |
commit | 7a4abd7477dc2a4f8e52f7bb00c19890c6ec2ca2 (patch) | |
tree | 6c11b1d41b52307de8c396a4d1e94d7f3b06c410 /desktop-widgets/tab-widgets/TabDiveInformation.cpp | |
parent | dc95b077d96fbbd2dc71213217c24cd1eea5ea51 (diff) | |
download | subsurface-7a4abd7477dc2a4f8e52f7bb00c19890c6ec2ca2.tar.gz |
Reorganise the Information tab of the Info panel
1) Reorganise the existing widgets in the Information tab
2) Move divemode widget and visibility widget from Notes tab to
Information tab
3) Translate water density to a word indicating water type
4) Reorganise the Notes tab to compensate for the moving the
divemode and visibility widgets to the Information tab
5) Remove the problems in showing a QGroupBox in Qt Windows. I do
this by removing the CSS specifying border characteristics
Signed-off-by: willemferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'desktop-widgets/tab-widgets/TabDiveInformation.cpp')
-rw-r--r-- | desktop-widgets/tab-widgets/TabDiveInformation.cpp | 93 |
1 files changed, 80 insertions, 13 deletions
diff --git a/desktop-widgets/tab-widgets/TabDiveInformation.cpp b/desktop-widgets/tab-widgets/TabDiveInformation.cpp index 928627311..641e762f2 100644 --- a/desktop-widgets/tab-widgets/TabDiveInformation.cpp +++ b/desktop-widgets/tab-widgets/TabDiveInformation.cpp @@ -1,6 +1,8 @@ // SPDX-License-Identifier: GPL-2.0 #include "TabDiveInformation.h" #include "ui_TabDiveInformation.h" +#include "desktop-widgets/mainwindow.h" // TODO: Only used temporarilly for edit mode changes +#include "profile-widget/profilewidget2.h" #include "../tagwidget.h" #include "core/units.h" #include "core/dive.h" @@ -12,6 +14,7 @@ #define COMBO_CHANGED 0 #define TEXT_EDITED 1 +#define CSS_SET_HEADING_BLUE "QLabel { color: mediumblue;} " TabDiveInformation::TabDiveInformation(QWidget *parent) : TabBase(parent), ui(new Ui::TabDiveInformation()) { @@ -20,6 +23,28 @@ TabDiveInformation::TabDiveInformation(QWidget *parent) : TabBase(parent), ui(ne QStringList atmPressTypes { "mbar", get_depth_unit() ,"use dc"}; ui->atmPressType->insertItems(0, atmPressTypes); pressTypeIndex = 0; + // This needs to be the same order as enum dive_comp_type in dive.h! + QStringList types; + for (int i = 0; i < NUM_DIVEMODE; i++) + types.append(gettextFromC::tr(divemode_text_ui[i])); + ui->diveType->insertItems(0, types); + connect(ui->diveType, SIGNAL(currentIndexChanged(int)), this, SLOT(diveModeChanged(int))); + QString CSSSetSmallLabel = "QLabel { color: mediumblue; font-size: " + /* // Using label height ... */ + QString::number((int)(0.5 + ui->diveHeadingLabel->geometry().height() * 0.66)) + "px;}"; // .. set CSS font size of star widget subscripts + ui->scrollAreaWidgetContents_3->setStyleSheet("QGroupBox::title { color: mediumblue;} "); + ui->diveModeBox->setStyleSheet("QGroupBox{ padding: 0;} "); + ui->diveHeadingLabel->setStyleSheet(CSS_SET_HEADING_BLUE); + ui->gasHeadingLabel->setStyleSheet(CSS_SET_HEADING_BLUE); + ui->environmentHeadingLabel->setStyleSheet(CSS_SET_HEADING_BLUE); + ui->groupBox_visibility->setStyleSheet(CSSSetSmallLabel); + QAction *action = new QAction(tr("OK"), this); + connect(action, &QAction::triggered, this, &TabDiveInformation::closeWarning); + ui->multiDiveWarningMessage->addAction(action); + action = new QAction(tr("Undo"), this); + connect(action, &QAction::triggered, Command::undoAction(this), &QAction::trigger); + connect(action, &QAction::triggered, this, &TabDiveInformation::closeWarning); + ui->multiDiveWarningMessage->addAction(action); + ui->multiDiveWarningMessage->hide(); } TabDiveInformation::~TabDiveInformation() @@ -34,7 +59,6 @@ void TabDiveInformation::clear() ui->maxcnsText->clear(); ui->oxygenHeliumText->clear(); ui->gasUsedText->clear(); - ui->dateText->clear(); ui->diveTimeText->clear(); ui->surfaceIntervalText->clear(); ui->maximumDepthText->clear(); @@ -43,6 +67,22 @@ void TabDiveInformation::clear() ui->airTemperatureText->clear(); ui->atmPressVal->clear(); ui->salinityText->clear(); + ui->waterTypeText->clear(); +} + +void TabDiveInformation::divesEdited(int i) +{ + // No warning if only one dive was edited + if (i <= 1) + return; + ui->multiDiveWarningMessage->setCloseButtonVisible(false); + ui->multiDiveWarningMessage->setText(tr("Warning: edited %1 dives").arg(i)); + ui->multiDiveWarningMessage->show(); +} + +void TabDiveInformation::closeWarning() +{ + ui->multiDiveWarningMessage->hide(); } // Update fields that depend on the dive profile @@ -87,7 +127,6 @@ void TabDiveInformation::updateProfile() if (current_dive->surface_pressure.mbar == 0) { ui->atmPressVal->clear(); // If no atm pressure for dive then clear text box } else { - ui->atmPressVal->setEnabled(true); QString pressStr; pressStr.sprintf("%d",current_dive->surface_pressure.mbar); @@ -98,7 +137,6 @@ void TabDiveInformation::updateProfile() // Update fields that depend on start of dive void TabDiveInformation::updateWhen() { - ui->dateText->setText(get_short_dive_date_string(current_dive->when)); timestamp_t surface_interval = get_surface_interval(current_dive->when); if (surface_interval >= 0) ui->surfaceIntervalText->setText(get_dive_surfint_string(surface_interval, tr("d"), tr("h"), tr("min"))); @@ -108,10 +146,19 @@ void TabDiveInformation::updateWhen() void TabDiveInformation::updateSalinity() { - if (current_dive->salinity) + if (current_dive->salinity) { // Set up the salinity string: ui->salinityText->setText(QString("%1g/ℓ").arg(current_dive->salinity / 10.0)); - else + if (current_dive->salinity < 10050) // Set water type indicator: + ui->waterTypeText->setText(tr("Fresh")); + else if (current_dive->salinity < 10190) + ui->waterTypeText->setText(tr("Salty")); + else if (current_dive->salinity < 10210) // (EN13319 = 1.019 - 1.021 g/l) + ui->waterTypeText->setText(tr("EN13319")); + else ui->waterTypeText->setText(tr("Salt")); + } else { ui->salinityText->clear(); + ui->waterTypeText->clear(); + } } void TabDiveInformation::updateData() @@ -125,12 +172,11 @@ void TabDiveInformation::updateData() updateWhen(); ui->waterTemperatureText->setText(get_temperature_string(current_dive->watertemp, true)); ui->airTemperatureText->setText(get_temperature_string(current_dive->airtemp, true)); - updateSalinity(); - - ui->atmPressType->setEditable(true); ui->atmPressType->setItemText(1, get_depth_unit()); // Check for changes in depth unit (imperial/metric) - ui->atmPressType->setEditable(false); - ui->atmPressType->setCurrentIndex(0); // Set the atmospheric pressure combo box to mbar + ui->atmPressType->setCurrentIndex(0); // Set the atmospheric pressure combo box to mbar + updateMode(current_dive); + updateSalinity(); + ui->visibility->setCurrentStars(current_dive->visibility); } // This function gets called if a field gets updated by an undo command. @@ -141,6 +187,10 @@ void TabDiveInformation::divesChanged(const QVector<dive *> &dives, DiveField fi if (!current_dive || !dives.contains(current_dive)) return; + if (field.visibility) + ui->visibility->setCurrentStars(current_dive->visibility); + if (field.mode) + updateMode(current_dive); if (field.duration || field.depth || field.mode) updateProfile(); if (field.air_temp) @@ -149,12 +199,29 @@ void TabDiveInformation::divesChanged(const QVector<dive *> &dives, DiveField fi ui->waterTemperatureText->setText(get_temperature_string(current_dive->watertemp, true)); if (field.atm_press) ui->atmPressVal->setText(ui->atmPressVal->text().sprintf("%d",current_dive->surface_pressure.mbar)); - if (field.datetime) - updateWhen(); if (field.salinity) updateSalinity(); } + +void TabDiveInformation::on_visibility_valueChanged(int value) +{ + if (current_dive) + divesEdited(Command::editVisibility(value, false)); +} + +void TabDiveInformation::updateMode(struct dive *d) +{ + ui->diveType->setCurrentIndex(get_dive_dc(d, dc_number)->divemode); + MainWindow::instance()->graphics->replot(); +} + +void TabDiveInformation::diveModeChanged(int index) +{ + if (current_dive) + divesEdited(Command::editMode(dc_number, (enum divemode_t)index, false)); +} + void TabDiveInformation::on_atmPressType_currentIndexChanged(int index) { updateTextBox(COMBO_CHANGED); } void TabDiveInformation::on_atmPressVal_editingFinished() { updateTextBox(TEXT_EDITED); } @@ -193,7 +260,7 @@ void TabDiveInformation::updateTextBox(int event) // Either the text box has bee break; } if (atmpress.mbar) - Command::editAtmPress(atmpress.mbar, false); // and save the pressure for undo + divesEdited(Command::editAtmPress(atmpress.mbar, false)); // and save the pressure for undo } } |