From 2eed9c0b9b56a507cfeb6f387176f675643dd436 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Wed, 7 Oct 2015 19:34:02 -0300 Subject: [PATCH] Move the algorithm to divesite.cpp file This shouldn't be on the maintab.cpp, this file is already too convoluted. [Dirk Hohndel: slightly refactored this commit and the next one to make the code actually work and make the split across the two commits more reasonable] Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- CMakeLists.txt | 1 + divesite.cpp | 31 +++++++++++++++++++++++++++++++ divesite.h | 3 +++ qt-ui/maintab.cpp | 23 +---------------------- 4 files changed, 36 insertions(+), 22 deletions(-) create mode 100644 divesite.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index b3c791223..287d1a83d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -317,6 +317,7 @@ set(SUBSURFACE_CORE_LIB_SRCS device.c dive.c divesite.c + divesite.cpp # some new stuff that is not c code but belongs to divesite. divelist.c equipment.c file.c diff --git a/divesite.cpp b/divesite.cpp new file mode 100644 index 000000000..ae102a14b --- /dev/null +++ b/divesite.cpp @@ -0,0 +1,31 @@ +#include "divesite.h" +#include "pref.h" + +QString constructLocationTags(uint32_t ds_uuid) +{ + QString locationTag; + struct dive_site *ds = get_dive_site_by_uuid(ds_uuid); + + if (!ds || !ds->taxonomy.nr) + return locationTag; + + locationTag = "(tags: "; + QString connector; + for (int i = 0; i < 3; i++) { + if (prefs.geocoding.category[i] == TC_NONE) + continue; + for (int j = 0; j < TC_NR_CATEGORIES; j++) { + if (ds->taxonomy.category[j].category == prefs.geocoding.category[i]) { + QString tag = ds->taxonomy.category[j].value; + if (!tag.isEmpty()) { + locationTag += connector + tag; + connector = " / "; + } + break; + } + } + } + + locationTag += ")"; + return locationTag; +} diff --git a/divesite.h b/divesite.h index d8987075b..f18b2e8e8 100644 --- a/divesite.h +++ b/divesite.h @@ -6,6 +6,7 @@ #include #ifdef __cplusplus +#include extern "C" { #else #include @@ -72,6 +73,8 @@ void merge_dive_sites(uint32_t ref, uint32_t *uuids, int count); #ifdef __cplusplus } +QString constructLocationTags(uint32_t ds_uuid); + #endif #endif // DIVESITE_H diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index d4483273e..49af15677 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -487,29 +487,8 @@ void MainTab::updateDiveInfo(bool clear) } if (ds) { - // construct the location tags - QString locationTag; - if (ds->taxonomy.nr) { - locationTag = "(tags: "; - QString connector = ""; - for (int i = 0; i < 3; i++) { - if (prefs.geocoding.category[i] == TC_NONE) - continue; - for (int j = 0; j < TC_NR_CATEGORIES; j++) { - if (ds->taxonomy.category[j].category == prefs.geocoding.category[i]) { - QString tag = ds->taxonomy.category[j].value; - if (!tag.isEmpty()) { - locationTag += connector + tag; - connector = " / "; - } - break; - } - } - } - locationTag += ")"; - } ui.location->setCurrentDiveSiteUuid(ds->uuid); - ui.locationTags->setText(locationTag); + ui.locationTags->setText(constructLocationTags(ds->uuid)); } else { ui.location->clear(); clear_dive_site(&displayed_dive_site);