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>
This commit is contained in:
Tomaz Canabrava 2015-10-07 19:34:02 -03:00 committed by Dirk Hohndel
parent ebf2407db6
commit 2eed9c0b9b
4 changed files with 36 additions and 22 deletions

View file

@ -317,6 +317,7 @@ set(SUBSURFACE_CORE_LIB_SRCS
device.c device.c
dive.c dive.c
divesite.c divesite.c
divesite.cpp # some new stuff that is not c code but belongs to divesite.
divelist.c divelist.c
equipment.c equipment.c
file.c file.c

31
divesite.cpp Normal file
View file

@ -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;
}

View file

@ -6,6 +6,7 @@
#include <stdlib.h> #include <stdlib.h>
#ifdef __cplusplus #ifdef __cplusplus
#include <QString>
extern "C" { extern "C" {
#else #else
#include <stdbool.h> #include <stdbool.h>
@ -72,6 +73,8 @@ void merge_dive_sites(uint32_t ref, uint32_t *uuids, int count);
#ifdef __cplusplus #ifdef __cplusplus
} }
QString constructLocationTags(uint32_t ds_uuid);
#endif #endif
#endif // DIVESITE_H #endif // DIVESITE_H

View file

@ -487,29 +487,8 @@ void MainTab::updateDiveInfo(bool clear)
} }
if (ds) { 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.location->setCurrentDiveSiteUuid(ds->uuid);
ui.locationTags->setText(locationTag); ui.locationTags->setText(constructLocationTags(ds->uuid));
} else { } else {
ui.location->clear(); ui.location->clear();
clear_dive_site(&displayed_dive_site); clear_dive_site(&displayed_dive_site);