From 177246b419e7787f781e8de8bba1b7ad7ac56583 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 4 May 2024 14:55:10 +0200 Subject: [PATCH] core: fold divesite-helper.cpp into divesite.cpp The divesite-helper.cpp only existed because C-string manipulation was too tedious. Now that divesite.cpp is C++ anyway, the split is not necessary anymore. Moreover, return an std::string, since this is a core-function. Signed-off-by: Berthold Stoeger --- core/CMakeLists.txt | 1 - core/divesite-helper.cpp | 52 -------------------- core/divesite.cpp | 51 +++++++++++++++++++ core/divesite.h | 4 +- desktop-widgets/locationinformation.cpp | 4 +- desktop-widgets/tab-widgets/TabDiveNotes.cpp | 2 +- 6 files changed, 55 insertions(+), 59 deletions(-) delete mode 100644 core/divesite-helper.cpp diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 9d0cab87f..e132eb68a 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -72,7 +72,6 @@ set(SUBSURFACE_CORE_LIB_SRCS divelog.h divelogexportlogic.cpp divelogexportlogic.h - divesite-helper.cpp divesite.cpp divesite.h divesitehelpers.cpp diff --git a/core/divesite-helper.cpp b/core/divesite-helper.cpp deleted file mode 100644 index d9c06e9c0..000000000 --- a/core/divesite-helper.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -#include "divesite.h" -#include "pref.h" -#include "gettextfromc.h" - -QString constructLocationTags(taxonomy_data &taxonomy, bool for_maintab) -{ - QString locationTag; - - if (taxonomy.empty()) - return locationTag; - - /* Check if the user set any of the 3 geocoding categories */ - bool prefs_set = false; - for (int i = 0; i < 3; i++) { - if (prefs.geocoding.category[i] != TC_NONE) - prefs_set = true; - } - - if (!prefs_set && !for_maintab) { - locationTag = QString("") + gettextFromC::tr("No dive site layout categories set in preferences!") + - QString(""); - return locationTag; - } - else if (!prefs_set) - return locationTag; - - if (for_maintab) - locationTag = QString("(") + gettextFromC::tr("Tags") + QString(": "); - else - locationTag = QString(""); - QString connector; - for (int i = 0; i < 3; i++) { - if (prefs.geocoding.category[i] == TC_NONE) - continue; - for (auto const &t: taxonomy) { - if (t.category == prefs.geocoding.category[i]) { - if (!t.value.empty()) { - locationTag += connector + QString::fromStdString(t.value); - connector = " / "; - } - break; - } - } - } - - if (for_maintab) - locationTag += ")"; - else - locationTag += ""; - return locationTag; -} diff --git a/core/divesite.cpp b/core/divesite.cpp index e5ba7c2ae..2f9c0846a 100644 --- a/core/divesite.cpp +++ b/core/divesite.cpp @@ -5,7 +5,9 @@ #include "divelist.h" #include "divelog.h" #include "errorhelper.h" +#include "gettextfromc.h" #include "membuffer.h" +#include "pref.h" #include "subsurface-string.h" #include "table.h" #include "sha1.h" @@ -378,3 +380,52 @@ struct dive_site *unregister_dive_from_dive_site(struct dive *d) d->dive_site = nullptr; return ds; } + +std::string constructLocationTags(const taxonomy_data &taxonomy, bool for_maintab) +{ + using namespace std::string_literals; + std::string locationTag; + + if (taxonomy.empty()) + return locationTag; + + /* Check if the user set any of the 3 geocoding categories */ + bool prefs_set = false; + for (int i = 0; i < 3; i++) { + if (prefs.geocoding.category[i] != TC_NONE) + prefs_set = true; + } + + if (!prefs_set && !for_maintab) { + locationTag = "" + gettextFromC::tr("No dive site layout categories set in preferences!").toStdString() + + ""s; + return locationTag; + } + else if (!prefs_set) + return locationTag; + + if (for_maintab) + locationTag = "("s + gettextFromC::tr("Tags").toStdString() + ": "s; + else + locationTag = ""s; + std::string connector; + for (int i = 0; i < 3; i++) { + if (prefs.geocoding.category[i] == TC_NONE) + continue; + for (auto const &t: taxonomy) { + if (t.category == prefs.geocoding.category[i]) { + if (!t.value.empty()) { + locationTag += connector + t.value; + connector = " / "s; + } + break; + } + } + } + + if (for_maintab) + locationTag += ")"s; + else + locationTag += ""s; + return locationTag; +} diff --git a/core/divesite.h b/core/divesite.h index c02226880..550d19b0a 100644 --- a/core/divesite.h +++ b/core/divesite.h @@ -8,7 +8,6 @@ #include #ifdef __cplusplus -#include #include struct dive_site @@ -73,8 +72,7 @@ void clear_dive_site_table(struct dive_site_table *ds_table); void move_dive_site_table(struct dive_site_table *src, struct dive_site_table *dst); void add_dive_to_dive_site(struct dive *d, struct dive_site *ds); struct dive_site *unregister_dive_from_dive_site(struct dive *d); - -QString constructLocationTags(taxonomy_data &taxonomy, bool for_maintab); +std::string constructLocationTags(const taxonomy_data &taxonomy, bool for_maintab); /* Make pointer-to-dive_site a "Qt metatype" so that we can pass it through QVariants */ Q_DECLARE_METATYPE(dive_site *); diff --git a/desktop-widgets/locationinformation.cpp b/desktop-widgets/locationinformation.cpp index dc5131da4..9acee5072 100644 --- a/desktop-widgets/locationinformation.cpp +++ b/desktop-widgets/locationinformation.cpp @@ -152,7 +152,7 @@ void LocationInformationWidget::updateLabels() ui.diveSiteCoordinates->clear(); coordinatesSetWarning(false); - ui.locationTags->setText(constructLocationTags(diveSite->taxonomy, false)); + ui.locationTags->setText(QString::fromStdString(constructLocationTags(diveSite->taxonomy, false))); } void LocationInformationWidget::unitsChanged() @@ -182,7 +182,7 @@ void LocationInformationWidget::diveSiteChanged(struct dive_site *ds, int field) return; case LocationInformationModel::TAXONOMY: ui.diveSiteCountry->setText(QString::fromStdString(taxonomy_get_country(diveSite->taxonomy))); - ui.locationTags->setText(constructLocationTags(diveSite->taxonomy, false)); + ui.locationTags->setText(QString::fromStdString(constructLocationTags(diveSite->taxonomy, false))); return; case LocationInformationModel::LOCATION: filter_model.setCoordinates(diveSite->location); diff --git a/desktop-widgets/tab-widgets/TabDiveNotes.cpp b/desktop-widgets/tab-widgets/TabDiveNotes.cpp index 3e4b995e5..35f69a5e7 100644 --- a/desktop-widgets/tab-widgets/TabDiveNotes.cpp +++ b/desktop-widgets/tab-widgets/TabDiveNotes.cpp @@ -178,7 +178,7 @@ void TabDiveNotes::updateDiveSite(struct dive *d) struct dive_site *ds = d->dive_site; ui.location->setCurrentDiveSite(d); if (ds) { - ui.locationTags->setText(constructLocationTags(ds->taxonomy, true)); + ui.locationTags->setText(QString::fromStdString(constructLocationTags(ds->taxonomy, true))); if (ui.locationTags->text().isEmpty() && has_location(&ds->location)) ui.locationTags->setText(printGPSCoords(&ds->location));