Map Short Names - add preference setting

Adds a preference setting in the "Default" settings tab to toggle whether
to display shortened names in the Map.

TODO: instead of using the generic "settingsChanged" signal, it would be much
more efficient to only update items based on the actual setting which was
changed.

Signed-off-by: Michael WERLE <micha@michaelwerle.com>
This commit is contained in:
Michael Werle 2022-08-17 09:17:04 +09:00 committed by Dirk Hohndel
parent 3dbba5ae69
commit efb1832db8
7 changed files with 44 additions and 3 deletions

View file

@ -104,6 +104,7 @@ struct preferences {
double mobile_scale; double mobile_scale;
bool show_developer; bool show_developer;
bool three_m_based_grid; bool three_m_based_grid;
bool map_short_names;
// ********** Equipment tab ******* // ********** Equipment tab *******
const char *default_cylinder; const char *default_cylinder;

View file

@ -68,6 +68,7 @@ void qPrefDisplay::loadSync(bool doSync)
load_singleColumnPortrait(); load_singleColumnPortrait();
} }
disk_three_m_based_grid(doSync); disk_three_m_based_grid(doSync);
disk_map_short_names(doSync);
} }
void qPrefDisplay::set_divelist_font(const QString &value) void qPrefDisplay::set_divelist_font(const QString &value)
@ -151,6 +152,8 @@ HANDLE_PREFERENCE_BOOL(Display, "show_developer", show_developer);
HANDLE_PREFERENCE_BOOL(Display, "three_m_based_grid", three_m_based_grid); HANDLE_PREFERENCE_BOOL(Display, "three_m_based_grid", three_m_based_grid);
HANDLE_PREFERENCE_BOOL(Display, "map_short_names", map_short_names);
void qPrefDisplay::setCorrectFont() void qPrefDisplay::setCorrectFont()
{ {
// get the font from the settings or our defaults // get the font from the settings or our defaults

View file

@ -26,6 +26,7 @@ class qPrefDisplay : public QObject {
Q_PROPERTY(int lastState READ lastState WRITE set_lastState NOTIFY lastStateChanged) Q_PROPERTY(int lastState READ lastState WRITE set_lastState NOTIFY lastStateChanged)
Q_PROPERTY(bool singleColumnPortrait READ singleColumnPortrait WRITE set_singleColumnPortrait NOTIFY singleColumnPortraitChanged) Q_PROPERTY(bool singleColumnPortrait READ singleColumnPortrait WRITE set_singleColumnPortrait NOTIFY singleColumnPortraitChanged)
Q_PROPERTY(bool three_m_based_grid READ three_m_based_grid WRITE set_three_m_based_grid NOTIFY three_m_based_gridChanged) Q_PROPERTY(bool three_m_based_grid READ three_m_based_grid WRITE set_three_m_based_grid NOTIFY three_m_based_gridChanged)
Q_PROPERTY(bool map_short_names READ map_short_names WRITE set_map_short_names NOTIFY map_short_namesChanged)
public: public:
static qPrefDisplay *instance(); static qPrefDisplay *instance();
@ -54,6 +55,7 @@ public:
static int lastState() { return st_lastState; } static int lastState() { return st_lastState; }
static bool singleColumnPortrait() { return st_singleColumnPortrait; } static bool singleColumnPortrait() { return st_singleColumnPortrait; }
static bool three_m_based_grid() { return prefs.three_m_based_grid; } static bool three_m_based_grid() { return prefs.three_m_based_grid; }
static bool map_short_names() { return prefs.map_short_names; }
public slots: public slots:
static void set_animation_speed(int value); static void set_animation_speed(int value);
@ -74,6 +76,7 @@ public slots:
static void set_lastState(int value); static void set_lastState(int value);
static void set_singleColumnPortrait(bool value); static void set_singleColumnPortrait(bool value);
static void set_three_m_based_grid(bool value); static void set_three_m_based_grid(bool value);
static void set_map_short_names(bool value);
signals: signals:
void animation_speedChanged(int value); void animation_speedChanged(int value);
@ -94,6 +97,7 @@ signals:
void lastStateChanged(int value); void lastStateChanged(int value);
void singleColumnPortraitChanged(bool value); void singleColumnPortraitChanged(bool value);
void three_m_based_gridChanged(bool value); void three_m_based_gridChanged(bool value);
void map_short_namesChanged(bool value);
private: private:
qPrefDisplay() {} qPrefDisplay() {}
@ -106,6 +110,7 @@ private:
static void disk_display_invalid_dives(bool doSync); static void disk_display_invalid_dives(bool doSync);
static void disk_show_developer(bool doSync); static void disk_show_developer(bool doSync);
static void disk_three_m_based_grid(bool doSync); static void disk_three_m_based_grid(bool doSync);
static void disk_map_short_names(bool doSync);
// functions to handle class variables // functions to handle class variables
static void load_lastDir(); static void load_lastDir();

View file

@ -29,6 +29,7 @@ MapWidget::MapWidget(QWidget *parent) : QQuickWidget(parent)
connect(this, &QQuickWidget::statusChanged, this, &MapWidget::doneLoading); connect(this, &QQuickWidget::statusChanged, this, &MapWidget::doneLoading);
connect(&diveListNotifier, &DiveListNotifier::divesChanged, this, &MapWidget::divesChanged); connect(&diveListNotifier, &DiveListNotifier::divesChanged, this, &MapWidget::divesChanged);
connect(&diveListNotifier, &DiveListNotifier::dataReset, this, &MapWidget::reload); connect(&diveListNotifier, &DiveListNotifier::dataReset, this, &MapWidget::reload);
connect(&diveListNotifier, &DiveListNotifier::settingsChanged, this, &MapWidget::reload);
setSource(urlMapWidget); setSource(urlMapWidget);
} }

View file

@ -32,6 +32,8 @@ void PreferencesDefaults::refreshSettings()
ui->grid3MBased->setChecked(true); ui->grid3MBased->setChecked(true);
else else
ui->gridGeneric->setChecked(true); ui->gridGeneric->setChecked(true);
ui->checkBox_map_short_names->setChecked(qPrefDisplay::map_short_names());
} }
void PreferencesDefaults::syncSettings() void PreferencesDefaults::syncSettings()
@ -40,4 +42,5 @@ void PreferencesDefaults::syncSettings()
qPrefDisplay::set_font_size(ui->fontsize->value()); qPrefDisplay::set_font_size(ui->fontsize->value());
qPrefDisplay::set_animation_speed(ui->velocitySlider->value()); qPrefDisplay::set_animation_speed(ui->velocitySlider->value());
qPrefDisplay::set_three_m_based_grid(ui->grid3MBased->isChecked()); qPrefDisplay::set_three_m_based_grid(ui->grid3MBased->isChecked());
qPrefDisplay::set_map_short_names(ui->checkBox_map_short_names->isChecked());
} }

View file

@ -86,12 +86,12 @@
</widget> </widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_4"> <layout class="QHBoxLayout" name="horizontalLayout_4">
<item> <item>
<widget class="QLabel" name="label_15"> <widget class="QLabel" name="label_15">
<property name="text"> <property name="text">
<string>Speed</string> <string>Speed</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -149,6 +149,29 @@
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Map Display Options</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Short Names:</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox_map_short_names">
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item> <item>
<spacer name="verticalSpacer_2"> <spacer name="verticalSpacer_2">
<property name="orientation"> <property name="orientation">

View file

@ -3,6 +3,7 @@
#include "divelocationmodel.h" #include "divelocationmodel.h"
#include "core/divesite.h" #include "core/divesite.h"
#include "core/divefilter.h" #include "core/divefilter.h"
#include "core/settings/qPrefDisplay.h"
#if !defined(SUBSURFACE_MOBILE) && !defined(SUBSURFACE_DOWNLOADER) #if !defined(SUBSURFACE_MOBILE) && !defined(SUBSURFACE_DOWNLOADER)
#include "qt-models/filtermodels.h" #include "qt-models/filtermodels.h"
#include "desktop-widgets/mapwidget.h" #include "desktop-widgets/mapwidget.h"
@ -19,8 +20,12 @@ static QString siteMapDisplayName(const char *sitename)
{ {
const char Separator = '/'; const char Separator = '/';
QString fullname(sitename); QString fullname(sitename);
QString name = fullname.section(Separator, -1).trimmed();
if (!qPrefDisplay::map_short_names() ) {
return fullname;
}
QString name = fullname.section(Separator, -1).trimmed();
if (name.isEmpty()) { if (name.isEmpty()) {
name = fullname; name = fullname;
} }