mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Display units in dive list table based on prefs option
Add a preferences option which enables or disables display of units in the main dive liste table. Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
This commit is contained in:
parent
2cb5d45231
commit
78cda85444
8 changed files with 94 additions and 16 deletions
|
@ -18,6 +18,13 @@
|
||||||
else \
|
else \
|
||||||
prefs.units.field = default_prefs.units.field
|
prefs.units.field = default_prefs.units.field
|
||||||
|
|
||||||
|
#define GET_UNIT_INT(name, field) \
|
||||||
|
v = s.value(QString(name)); \
|
||||||
|
if (v.isValid()) \
|
||||||
|
prefs.units.field = v.toInt(); \
|
||||||
|
else \
|
||||||
|
prefs.units.field = default_prefs.units.field
|
||||||
|
|
||||||
#define GET_BOOL(name, field) \
|
#define GET_BOOL(name, field) \
|
||||||
v = s.value(QString(name)); \
|
v = s.value(QString(name)); \
|
||||||
if (v.isValid()) \
|
if (v.isValid()) \
|
||||||
|
|
|
@ -1631,6 +1631,11 @@ int UnitsSettings::durationUnits() const
|
||||||
return prefs.units.duration_units;
|
return prefs.units.duration_units;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int UnitsSettings::showUnitsTable() const
|
||||||
|
{
|
||||||
|
return prefs.units.show_units_table;
|
||||||
|
}
|
||||||
|
|
||||||
QString UnitsSettings::unitSystem() const
|
QString UnitsSettings::unitSystem() const
|
||||||
{
|
{
|
||||||
return prefs.unit_system == METRIC ? QStringLiteral("metric")
|
return prefs.unit_system == METRIC ? QStringLiteral("metric")
|
||||||
|
@ -1721,6 +1726,17 @@ void UnitsSettings::setDurationUnits(int value)
|
||||||
emit durationUnitChanged(value);
|
emit durationUnitChanged(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UnitsSettings::setShowUnitsTable(int value)
|
||||||
|
{
|
||||||
|
if (value == prefs.units.show_units_table)
|
||||||
|
return;
|
||||||
|
QSettings s;
|
||||||
|
s.beginGroup(group);
|
||||||
|
s.setValue("show_units_table", value);
|
||||||
|
prefs.units.show_units_table = value;
|
||||||
|
emit showUnitsTableChanged(value);
|
||||||
|
}
|
||||||
|
|
||||||
void UnitsSettings::setCoordinatesTraditional(bool value)
|
void UnitsSettings::setCoordinatesTraditional(bool value)
|
||||||
{
|
{
|
||||||
if (value == prefs.coordinates_traditional)
|
if (value == prefs.coordinates_traditional)
|
||||||
|
@ -2197,6 +2213,7 @@ void SettingsObjectWrapper::load()
|
||||||
}
|
}
|
||||||
GET_UNIT("vertical_speed_time", vertical_speed_time, units::MINUTES, units::SECONDS);
|
GET_UNIT("vertical_speed_time", vertical_speed_time, units::MINUTES, units::SECONDS);
|
||||||
GET_UNIT3("duration_units", duration_units, units::MIXED, units::ALWAYS_HOURS, units::DURATION);
|
GET_UNIT3("duration_units", duration_units, units::MIXED, units::ALWAYS_HOURS, units::DURATION);
|
||||||
|
GET_UNIT_INT("show_units_table", show_units_table);
|
||||||
GET_BOOL("coordinates", coordinates_traditional);
|
GET_BOOL("coordinates", coordinates_traditional);
|
||||||
s.endGroup();
|
s.endGroup();
|
||||||
s.beginGroup("TecDetails");
|
s.beginGroup("TecDetails");
|
||||||
|
|
|
@ -513,6 +513,7 @@ class UnitsSettings : public QObject {
|
||||||
Q_PROPERTY(bool coordinates_traditional READ coordinatesTraditional WRITE setCoordinatesTraditional NOTIFY coordinatesTraditionalChanged)
|
Q_PROPERTY(bool coordinates_traditional READ coordinatesTraditional WRITE setCoordinatesTraditional NOTIFY coordinatesTraditionalChanged)
|
||||||
Q_PROPERTY(int vertical_speed_time READ verticalSpeedTime WRITE setVerticalSpeedTime NOTIFY verticalSpeedTimeChanged)
|
Q_PROPERTY(int vertical_speed_time READ verticalSpeedTime WRITE setVerticalSpeedTime NOTIFY verticalSpeedTimeChanged)
|
||||||
Q_PROPERTY(int duration_units READ durationUnits WRITE setDurationUnits NOTIFY durationUnitChanged)
|
Q_PROPERTY(int duration_units READ durationUnits WRITE setDurationUnits NOTIFY durationUnitChanged)
|
||||||
|
Q_PROPERTY(int show_units_table READ showUnitsTable WRITE setShowUnitsTable NOTIFY showUnitsTableChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
UnitsSettings(QObject *parent = 0);
|
UnitsSettings(QObject *parent = 0);
|
||||||
|
@ -523,6 +524,7 @@ public:
|
||||||
int weight() const;
|
int weight() const;
|
||||||
int verticalSpeedTime() const;
|
int verticalSpeedTime() const;
|
||||||
int durationUnits() const;
|
int durationUnits() const;
|
||||||
|
int showUnitsTable() const;
|
||||||
QString unitSystem() const;
|
QString unitSystem() const;
|
||||||
bool coordinatesTraditional() const;
|
bool coordinatesTraditional() const;
|
||||||
|
|
||||||
|
@ -534,6 +536,7 @@ public slots:
|
||||||
void setWeight(int value);
|
void setWeight(int value);
|
||||||
void setVerticalSpeedTime(int value);
|
void setVerticalSpeedTime(int value);
|
||||||
void setDurationUnits(int value);
|
void setDurationUnits(int value);
|
||||||
|
void setShowUnitsTable(int value);
|
||||||
void setUnitSystem(const QString& value);
|
void setUnitSystem(const QString& value);
|
||||||
void setCoordinatesTraditional(bool value);
|
void setCoordinatesTraditional(bool value);
|
||||||
|
|
||||||
|
@ -547,6 +550,7 @@ signals:
|
||||||
void unitSystemChanged(const QString& value);
|
void unitSystemChanged(const QString& value);
|
||||||
void coordinatesTraditionalChanged(bool value);
|
void coordinatesTraditionalChanged(bool value);
|
||||||
void durationUnitChanged(int value);
|
void durationUnitChanged(int value);
|
||||||
|
void showUnitsTableChanged(int value);
|
||||||
private:
|
private:
|
||||||
const QString group = QStringLiteral("Units");
|
const QString group = QStringLiteral("Units");
|
||||||
};
|
};
|
||||||
|
|
|
@ -260,6 +260,7 @@ struct units {
|
||||||
MINUTES_ONLY,
|
MINUTES_ONLY,
|
||||||
ALWAYS_HOURS
|
ALWAYS_HOURS
|
||||||
} duration_units;
|
} duration_units;
|
||||||
|
int show_units_table;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -272,13 +273,13 @@ struct units {
|
||||||
#define SI_UNITS \
|
#define SI_UNITS \
|
||||||
{ \
|
{ \
|
||||||
.length = METERS, .volume = LITER, .pressure = BAR, .temperature = CELSIUS, .weight = KG, \
|
.length = METERS, .volume = LITER, .pressure = BAR, .temperature = CELSIUS, .weight = KG, \
|
||||||
.vertical_speed_time = MINUTES, .duration_units = MIXED \
|
.vertical_speed_time = MINUTES, .duration_units = MIXED, .show_units_table = false \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IMPERIAL_UNITS \
|
#define IMPERIAL_UNITS \
|
||||||
{ \
|
{ \
|
||||||
.length = FEET, .volume = CUFT, .pressure = PSI, .temperature = FAHRENHEIT, .weight = LBS, \
|
.length = FEET, .volume = CUFT, .pressure = PSI, .temperature = FAHRENHEIT, .weight = LBS, \
|
||||||
.vertical_speed_time = MINUTES, .duration_units = MIXED \
|
.vertical_speed_time = MINUTES, .duration_units = MIXED, .show_units_table = false \
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -43,6 +43,7 @@ void PreferencesUnits::refreshSettings()
|
||||||
ui->duration_mixed->setChecked(prefs.units.duration_units == units::MIXED);
|
ui->duration_mixed->setChecked(prefs.units.duration_units == units::MIXED);
|
||||||
ui->duration_no_hours->setChecked(prefs.units.duration_units == units::MINUTES_ONLY);
|
ui->duration_no_hours->setChecked(prefs.units.duration_units == units::MINUTES_ONLY);
|
||||||
ui->duration_show_hours->setChecked(prefs.units.duration_units == units::ALWAYS_HOURS);
|
ui->duration_show_hours->setChecked(prefs.units.duration_units == units::ALWAYS_HOURS);
|
||||||
|
ui->show_units_table->setChecked(prefs.units.show_units_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PreferencesUnits::syncSettings()
|
void PreferencesUnits::syncSettings()
|
||||||
|
@ -60,4 +61,5 @@ void PreferencesUnits::syncSettings()
|
||||||
units->setVerticalSpeedTime(ui->vertical_speed_minutes->isChecked() ? units::MINUTES : units::SECONDS);
|
units->setVerticalSpeedTime(ui->vertical_speed_minutes->isChecked() ? units::MINUTES : units::SECONDS);
|
||||||
units->setCoordinatesTraditional(ui->gpsTraditional->isChecked());
|
units->setCoordinatesTraditional(ui->gpsTraditional->isChecked());
|
||||||
units->setDurationUnits(ui->duration_mixed->isChecked() ? units::MIXED : (ui->duration_no_hours->isChecked() ? units::MINUTES_ONLY : units::ALWAYS_HOURS));
|
units->setDurationUnits(ui->duration_mixed->isChecked() ? units::MIXED : (ui->duration_no_hours->isChecked() ? units::MINUTES_ONLY : units::ALWAYS_HOURS));
|
||||||
|
units->setShowUnitsTable(ui->show_units_table->isChecked());
|
||||||
}
|
}
|
||||||
|
|
|
@ -269,7 +269,23 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox_11">
|
<widget class="QGroupBox" name="groupBox_divelist">
|
||||||
|
<property name="title">
|
||||||
|
<string>Dive list table</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="show_units_table">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show units in dive list table</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_gps">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>GPS coordinates</string>
|
<string>GPS coordinates</string>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -157,16 +157,16 @@ QVariant DiveItem::data(int column, int role) const
|
||||||
retVal = displayDate();
|
retVal = displayDate();
|
||||||
break;
|
break;
|
||||||
case DEPTH:
|
case DEPTH:
|
||||||
retVal = displayDepth();
|
retVal = prefs.units.show_units_table ? displayDepthWithUnit() : displayDepth();
|
||||||
break;
|
break;
|
||||||
case DURATION:
|
case DURATION:
|
||||||
retVal = displayDuration();
|
retVal = displayDuration();
|
||||||
break;
|
break;
|
||||||
case TEMPERATURE:
|
case TEMPERATURE:
|
||||||
retVal = displayTemperature();
|
retVal = prefs.units.show_units_table ? retVal = displayTemperatureWithUnit() : displayTemperature();
|
||||||
break;
|
break;
|
||||||
case TOTALWEIGHT:
|
case TOTALWEIGHT:
|
||||||
retVal = displayWeight();
|
retVal = prefs.units.show_units_table ? retVal = displayWeightWithUnit() : displayWeight();
|
||||||
break;
|
break;
|
||||||
case SUIT:
|
case SUIT:
|
||||||
retVal = QString(dive->suit);
|
retVal = QString(dive->suit);
|
||||||
|
@ -175,13 +175,16 @@ QVariant DiveItem::data(int column, int role) const
|
||||||
retVal = QString(dive->cylinder[0].type.description);
|
retVal = QString(dive->cylinder[0].type.description);
|
||||||
break;
|
break;
|
||||||
case SAC:
|
case SAC:
|
||||||
retVal = displaySac();
|
retVal = prefs.units.show_units_table ? retVal = displaySacWithUnit() : displaySac();
|
||||||
break;
|
break;
|
||||||
case OTU:
|
case OTU:
|
||||||
retVal = dive->otu;
|
retVal = dive->otu;
|
||||||
break;
|
break;
|
||||||
case MAXCNS:
|
case MAXCNS:
|
||||||
retVal = dive->maxcns;
|
if (prefs.units.show_units_table)
|
||||||
|
retVal = QString("%1%").arg(dive->maxcns);
|
||||||
|
else
|
||||||
|
retVal = dive->maxcns;
|
||||||
break;
|
break;
|
||||||
case PHOTOS:
|
case PHOTOS:
|
||||||
break;
|
break;
|
||||||
|
@ -359,9 +362,10 @@ int DiveItem::countPhotos(dive *dive) const
|
||||||
QString DiveItem::displayDuration() const
|
QString DiveItem::displayDuration() const
|
||||||
{
|
{
|
||||||
struct dive *dive = get_dive_by_uniq_id(diveId);
|
struct dive *dive = get_dive_by_uniq_id(diveId);
|
||||||
return get_dive_duration_string(dive->duration.seconds, "", "", "", ":", dive->dc.divemode == FREEDIVE);
|
if (prefs.units.show_units_table)
|
||||||
// Next line is test for alternative display with units
|
return get_dive_duration_string(dive->duration.seconds, tr("h"), tr("min"), "", ":", dive->dc.divemode == FREEDIVE);
|
||||||
// return get_dive_duration_string(dive->duration.seconds, tr("h"), tr("min"), "", ":", dive->dc.divemode == FREEDIVE);
|
else
|
||||||
|
return get_dive_duration_string(dive->duration.seconds, "", "", "", ":", dive->dc.divemode == FREEDIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString DiveItem::displayTemperature() const
|
QString DiveItem::displayTemperature() const
|
||||||
|
@ -370,11 +374,16 @@ QString DiveItem::displayTemperature() const
|
||||||
struct dive *dive = get_dive_by_uniq_id(diveId);
|
struct dive *dive = get_dive_by_uniq_id(diveId);
|
||||||
if (!dive->watertemp.mkelvin)
|
if (!dive->watertemp.mkelvin)
|
||||||
return str;
|
return str;
|
||||||
if (get_units()->temperature == units::CELSIUS)
|
return get_temperature_string(dive->watertemp, false);
|
||||||
str = QString::number(mkelvin_to_C(dive->watertemp.mkelvin), 'f', 1);
|
}
|
||||||
else
|
|
||||||
str = QString::number(mkelvin_to_F(dive->watertemp.mkelvin), 'f', 1);
|
QString DiveItem::displayTemperatureWithUnit() const
|
||||||
return str;
|
{
|
||||||
|
QString str;
|
||||||
|
struct dive *dive = get_dive_by_uniq_id(diveId);
|
||||||
|
if (!dive->watertemp.mkelvin)
|
||||||
|
return str;
|
||||||
|
return get_temperature_string(dive->watertemp, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString DiveItem::displaySac() const
|
QString DiveItem::displaySac() const
|
||||||
|
@ -390,12 +399,31 @@ QString DiveItem::displaySac() const
|
||||||
return QString("");
|
return QString("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString DiveItem::displaySacWithUnit() const
|
||||||
|
{
|
||||||
|
QString str;
|
||||||
|
struct dive *dive = get_dive_by_uniq_id(diveId);
|
||||||
|
if (dive->sac) {
|
||||||
|
const char *unit;
|
||||||
|
int decimal;
|
||||||
|
double value = get_volume_units(dive->sac, &decimal, &unit);
|
||||||
|
return QString::number(value, 'f', decimal) + QString(unit).append(tr("/min"));
|
||||||
|
}
|
||||||
|
return QString("");
|
||||||
|
}
|
||||||
|
|
||||||
QString DiveItem::displayWeight() const
|
QString DiveItem::displayWeight() const
|
||||||
{
|
{
|
||||||
QString str = weight_string(weight());
|
QString str = weight_string(weight());
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString DiveItem::displayWeightWithUnit() const
|
||||||
|
{
|
||||||
|
QString str = weight_string(weight()) + ((get_units()->weight == units::KG) ? tr("kg") : tr("lbs"));
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
int DiveItem::weight() const
|
int DiveItem::weight() const
|
||||||
{
|
{
|
||||||
struct dive *dive = get_dive_by_uniq_id(diveId);
|
struct dive *dive = get_dive_by_uniq_id(diveId);
|
||||||
|
|
|
@ -38,8 +38,11 @@ public:
|
||||||
QString displayDepth() const;
|
QString displayDepth() const;
|
||||||
QString displayDepthWithUnit() const;
|
QString displayDepthWithUnit() const;
|
||||||
QString displayTemperature() const;
|
QString displayTemperature() const;
|
||||||
|
QString displayTemperatureWithUnit() const;
|
||||||
QString displayWeight() const;
|
QString displayWeight() const;
|
||||||
|
QString displayWeightWithUnit() const;
|
||||||
QString displaySac() const;
|
QString displaySac() const;
|
||||||
|
QString displaySacWithUnit() const;
|
||||||
int countPhotos(dive *dive) const;
|
int countPhotos(dive *dive) const;
|
||||||
int weight() const;
|
int weight() const;
|
||||||
QString icon_names[4];
|
QString icon_names[4];
|
||||||
|
|
Loading…
Add table
Reference in a new issue