mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
core: move constructLocationTags from divesite.cpp to taxonomy.cpp
After all it doesn't access any dive_site structure. Moreover, rename it, since we use mostly snake_case in core. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
7d7766be9a
commit
4ac2486a23
6 changed files with 55 additions and 55 deletions
|
@ -6,9 +6,7 @@
|
|||
#include "divelog.h"
|
||||
#include "errorhelper.h"
|
||||
#include "format.h"
|
||||
#include "gettextfromc.h"
|
||||
#include "membuffer.h"
|
||||
#include "pref.h"
|
||||
#include "subsurface-string.h"
|
||||
#include "sha1.h"
|
||||
|
||||
|
@ -252,52 +250,3 @@ 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 = "<small><small>" + gettextFromC::tr("No dive site layout categories set in preferences!").toStdString() +
|
||||
"</small></small>"s;
|
||||
return locationTag;
|
||||
}
|
||||
else if (!prefs_set)
|
||||
return locationTag;
|
||||
|
||||
if (for_maintab)
|
||||
locationTag = "<small><small>("s + gettextFromC::tr("Tags").toStdString() + ": "s;
|
||||
else
|
||||
locationTag = "<small><small>"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 += ")</small></small>"s;
|
||||
else
|
||||
locationTag += "</small></small>"s;
|
||||
return locationTag;
|
||||
}
|
||||
|
|
|
@ -57,7 +57,6 @@ public:
|
|||
|
||||
struct dive_site *unregister_dive_from_dive_site(struct dive *d);
|
||||
struct dive_site *get_same_dive_site(const struct dive_site &); // accesses global dive list
|
||||
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 *);
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
#include "taxonomy.h"
|
||||
#include "errorhelper.h"
|
||||
#include "gettext.h"
|
||||
#include "pref.h"
|
||||
#include "subsurface-string.h"
|
||||
#include "gettextfromc.h"
|
||||
#include <algorithm>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
@ -57,3 +59,52 @@ void taxonomy_set_country(taxonomy_data &t, const std::string &country, enum tax
|
|||
report_info("%s: set the taxonomy country to %s\n", __func__, country.c_str());
|
||||
taxonomy_set_category(t, TC_COUNTRY, country, origin);
|
||||
}
|
||||
|
||||
std::string taxonomy_get_location_tags(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 = "<small><small>" + gettextFromC::tr("No dive site layout categories set in preferences!").toStdString() +
|
||||
"</small></small>"s;
|
||||
return locationTag;
|
||||
}
|
||||
else if (!prefs_set)
|
||||
return locationTag;
|
||||
|
||||
if (for_maintab)
|
||||
locationTag = "<small><small>("s + gettextFromC::tr("Tags").toStdString() + ": "s;
|
||||
else
|
||||
locationTag = "<small><small>"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 += ")</small></small>"s;
|
||||
else
|
||||
locationTag += "</small></small>"s;
|
||||
return locationTag;
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ using taxonomy_data = std::vector<taxonomy>;
|
|||
|
||||
std::string taxonomy_get_value(const taxonomy_data &t, enum taxonomy_category cat);
|
||||
std::string taxonomy_get_country(const taxonomy_data &t);
|
||||
std::string taxonomy_get_location_tags(const taxonomy_data &taxonomy, bool for_maintab);
|
||||
void taxonomy_set_category(taxonomy_data &t, enum taxonomy_category category, const std::string &value, enum taxonomy_origin origin);
|
||||
void taxonomy_set_country(taxonomy_data &t, const std::string &country, enum taxonomy_origin origin);
|
||||
|
||||
|
|
|
@ -152,7 +152,7 @@ void LocationInformationWidget::updateLabels()
|
|||
ui.diveSiteCoordinates->clear();
|
||||
coordinatesSetWarning(false);
|
||||
|
||||
ui.locationTags->setText(QString::fromStdString(constructLocationTags(diveSite->taxonomy, false)));
|
||||
ui.locationTags->setText(QString::fromStdString(taxonomy_get_location_tags(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(QString::fromStdString(constructLocationTags(diveSite->taxonomy, false)));
|
||||
ui.locationTags->setText(QString::fromStdString(taxonomy_get_location_tags(diveSite->taxonomy, false)));
|
||||
return;
|
||||
case LocationInformationModel::LOCATION:
|
||||
filter_model.setCoordinates(diveSite->location);
|
||||
|
|
|
@ -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(QString::fromStdString(constructLocationTags(ds->taxonomy, true)));
|
||||
ui.locationTags->setText(QString::fromStdString(taxonomy_get_location_tags(ds->taxonomy, true)));
|
||||
|
||||
if (ui.locationTags->text().isEmpty() && has_location(&ds->location))
|
||||
ui.locationTags->setText(printGPSCoords(&ds->location));
|
||||
|
|
Loading…
Add table
Reference in a new issue