Add option to display GPS coordinates as decimals

This adds a field to the units preferences to have GPS coordinates
show as decimals (as for example Google maps does it).

Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Robert C. Helling 2015-05-20 12:25:46 +02:00 committed by Dirk Hohndel
parent 0e78915c7e
commit 187f7dab9f
5 changed files with 183 additions and 136 deletions

1
pref.h
View file

@ -48,6 +48,7 @@ struct preferences {
short display_invalid_dives;
short unit_system;
struct units units;
bool coordinates_traditional;
short show_sac;
short display_unused_tanks;
short show_average_depth;

View file

@ -146,6 +146,8 @@ void PreferencesDialog::setUiFromPrefs()
ui.imperial->setChecked(true);
else
ui.personalize->setChecked(true);
ui.gpsTraditional->setChecked(prefs.coordinates_traditional);
ui.gpsDecimal->setChecked(!prefs.coordinates_traditional);
ui.celsius->setChecked(prefs.units.temperature == units::CELSIUS);
ui.fahrenheit->setChecked(prefs.units.temperature == units::FAHRENHEIT);
@ -306,6 +308,7 @@ void PreferencesDialog::syncSettings()
s.setValue("volume", ui.cuft->isChecked() ? units::CUFT : units::LITER);
s.setValue("weight", ui.lbs->isChecked() ? units::LBS : units::KG);
s.setValue("vertical_speed_time", ui.vertical_speed_minutes->isChecked() ? units::MINUTES : units::SECONDS);
s.setValue("coordinates", ui.gpsTraditional->isChecked());
s.endGroup();
// Defaults
@ -384,6 +387,7 @@ void PreferencesDialog::loadSettings()
GET_UNIT("weight", weight, units::LBS, units::KG);
}
GET_UNIT("vertical_speed_time", vertical_speed_time, units::MINUTES, units::SECONDS);
GET_BOOL("coordinates", coordinates_traditional);
s.endGroup();
s.beginGroup("TecDetails");
GET_BOOL("po2graph", pp_graphs.po2);

View file

@ -21,127 +21,6 @@
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QListWidget" name="listWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="iconSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="textElideMode">
<enum>Qt::ElideNone</enum>
</property>
<property name="movement">
<enum>QListView::Static</enum>
</property>
<property name="isWrapping" stdset="0">
<bool>true</bool>
</property>
<property name="layoutMode">
<enum>QListView::Batched</enum>
</property>
<property name="spacing">
<number>0</number>
</property>
<property name="gridSize">
<size>
<width>70</width>
<height>60</height>
</size>
</property>
<property name="viewMode">
<enum>QListView::IconMode</enum>
</property>
<property name="uniformItemSizes">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="currentRow">
<number>-1</number>
</property>
<item>
<property name="text">
<string>Defaults</string>
</property>
<property name="icon">
<iconset>
<normalon>:/subsurface-icon</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Units</string>
</property>
<property name="icon">
<iconset>
<normalon>:/units</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Graph</string>
</property>
<property name="icon">
<iconset>
<normalon>:/graph</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Language</string>
</property>
<property name="icon">
<iconset>
<normalon>:/advanced</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Network</string>
</property>
<property name="icon">
<iconset>
<normalon>:/network</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Facebook</string>
</property>
<property name="icon">
<iconset>
<normalon>:/facebook</normalon>
</iconset>
</property>
</item>
</widget>
</item>
<item>
<widget class="QStackedWidget" name="stackedWidget">
<property name="sizePolicy">
@ -584,6 +463,42 @@
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox_11">
<property name="title">
<string>GPS coordinates</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QLabel" name="label_27">
<property name="text">
<string>Location Display</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="gpsTraditional">
<property name="text">
<string>traditional (dms)</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_7</string>
</attribute>
</widget>
</item>
<item>
<widget class="QRadioButton" name="gpsDecimal">
<property name="text">
<string>decimal</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_7</string>
</attribute>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
@ -1077,6 +992,127 @@
</widget>
</widget>
</item>
<item>
<widget class="QListWidget" name="listWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="iconSize">
<size>
<width>40</width>
<height>40</height>
</size>
</property>
<property name="textElideMode">
<enum>Qt::ElideNone</enum>
</property>
<property name="movement">
<enum>QListView::Static</enum>
</property>
<property name="isWrapping" stdset="0">
<bool>true</bool>
</property>
<property name="layoutMode">
<enum>QListView::Batched</enum>
</property>
<property name="spacing">
<number>0</number>
</property>
<property name="gridSize">
<size>
<width>70</width>
<height>60</height>
</size>
</property>
<property name="viewMode">
<enum>QListView::IconMode</enum>
</property>
<property name="uniformItemSizes">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="currentRow">
<number>-1</number>
</property>
<item>
<property name="text">
<string>Defaults</string>
</property>
<property name="icon">
<iconset>
<normalon>:/subsurface-icon</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Units</string>
</property>
<property name="icon">
<iconset>
<normalon>:/units</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Graph</string>
</property>
<property name="icon">
<iconset>
<normalon>:/graph</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Language</string>
</property>
<property name="icon">
<iconset>
<normalon>:/advanced</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Network</string>
</property>
<property name="icon">
<iconset>
<normalon>:/network</normalon>
</iconset>
</property>
</item>
<item>
<property name="text">
<string>Facebook</string>
</property>
<property name="icon">
<iconset>
<normalon>:/facebook</normalon>
</iconset>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item>
@ -1431,12 +1467,13 @@
</connection>
</connections>
<buttongroups>
<buttongroup name="buttonGroup"/>
<buttongroup name="verticalSpeed"/>
<buttongroup name="buttonGroup_2"/>
<buttongroup name="buttonGroup_3"/>
<buttongroup name="buttonGroup_4"/>
<buttongroup name="buttonGroup_5"/>
<buttongroup name="buttonGroup"/>
<buttongroup name="buttonGroup_6"/>
<buttongroup name="verticalSpeed"/>
<buttongroup name="buttonGroup_7"/>
</buttongroups>
</ui>

View file

@ -84,6 +84,7 @@ extern "C" const char *printGPSCoords(int lat, int lon)
if (!lat && !lon)
return strdup("");
if (prefs.coordinates_traditional) {
lath = lat >= 0 ? translate("gettextFromC", "N") : translate("gettextFromC", "S");
lonh = lon >= 0 ? translate("gettextFromC", "E") : translate("gettextFromC", "W");
lat = abs(lat);
@ -97,6 +98,9 @@ extern "C" const char *printGPSCoords(int lat, int lon)
result.sprintf("%u%s%02d\'%06.3f\"%s %u%s%02d\'%06.3f\"%s",
latdeg, UTF8_DEGREE, latmin / 1000000, latsec / 1000000, lath.toUtf8().data(),
londeg, UTF8_DEGREE, lonmin / 1000000, lonsec / 1000000, lonh.toUtf8().data());
} else {
result.sprintf("%f %f", (double) lat / 1000000.0, (double) lon / 1000000.0);
}
return strdup(result.toUtf8().data());
}

View file

@ -7,6 +7,7 @@ struct preferences prefs;
struct preferences default_prefs = {
.units = SI_UNITS,
.unit_system = METRIC,
.coordinates_traditional = true,
.pp_graphs = {
.po2 = false,
.pn2 = false,