cleanup: use taxonomy_get_value() instead of taxonomy_get_index()

Instead of getting the index and using that to access values, use
the taxonomy_get_value() helper function. Two places are affected:
1) reverse geo-lookup
2) location filter delegate

The behavior of reverse geo-lookup is changed slightly: now an
empty string is likewise recognized as missing "TC_ADMIN_L3".
Before, only a missing category was interpreted as such.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-09-06 13:48:52 +02:00 committed by Dirk Hohndel
parent 1f1fd78f78
commit ee2f466470
2 changed files with 7 additions and 7 deletions

View file

@ -114,13 +114,13 @@ taxonomy_data reverseGeoLookup(degrees_t latitude, degrees_t longitude)
taxonomy_set_category(&taxonomy, (taxonomy_category)idx, qPrintable(value), taxonomy_origin::GEOCODED);
}
}
int l3 = taxonomy_index_for_category(&taxonomy, TC_ADMIN_L3);
int lt = taxonomy_index_for_category(&taxonomy, TC_LOCALNAME);
if (l3 == -1 && lt != -1) {
const char *l3 = taxonomy_get_value(&taxonomy, TC_ADMIN_L3);
const char *lt = taxonomy_get_value(&taxonomy, TC_LOCALNAME);
if (empty_string(l3) && !empty_string(lt)) {
// basically this means we did get a local name (what we call town), but just like most places
// we didn't get an adminName_3 - which in some regions is the actual city that town belongs to,
// then we copy the town into the city
taxonomy_set_category(&taxonomy, TC_ADMIN_L3, taxonomy.category[lt].value, taxonomy_origin::GEOCOPIED);
taxonomy_set_category(&taxonomy, TC_ADMIN_L3, lt, taxonomy_origin::GEOCOPIED);
}
} else {
report_error("geonames.org did not provide reverse lookup information");

View file

@ -404,12 +404,12 @@ void LocationFilterDelegate::paint(QPainter *painter, const QStyleOptionViewItem
for (int i = 0; i < 3; i++) {
if (prefs.geocoding.category[i] == TC_NONE)
continue;
int idx = taxonomy_index_for_category(&ds->taxonomy, prefs.geocoding.category[i]);
if (idx == -1)
const char *value = taxonomy_get_value(&ds->taxonomy, prefs.geocoding.category[i]);
if (empty_string(value))
continue;
if(!bottomText.isEmpty())
bottomText += " / ";
bottomText += QString(ds->taxonomy.category[idx].value);
bottomText += QString(value);
}
if (bottomText.isEmpty())