aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2015-10-07 19:34:02 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-10-08 06:27:38 +0100
commit2eed9c0b9b56a507cfeb6f387176f675643dd436 (patch)
treeb178a86ddee295d791dd8230caaaaab4d5d4a44e
parentebf2407db670e78d1a503cabf27d823da31ecabf (diff)
downloadsubsurface-2eed9c0b9b56a507cfeb6f387176f675643dd436.tar.gz
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 <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--CMakeLists.txt1
-rw-r--r--divesite.cpp31
-rw-r--r--divesite.h3
-rw-r--r--qt-ui/maintab.cpp23
4 files changed, 36 insertions, 22 deletions
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 = "<small><small>(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 += ")</small></small>";
+ 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 <stdlib.h>
#ifdef __cplusplus
+#include <QString>
extern "C" {
#else
#include <stdbool.h>
@@ -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 = "<small><small>(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 += ")</small></small>";
- }
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);