public List<Pair<SortType, String>> getAvailableTypes() {
        final Set<SortType> types = new HashSet<>(Arrays.asList(SortType.values()));
        if (isEventList) {
            types.remove(SortType.HIDDEN_DATE);
        } else {
            types.remove(SortType.EVENT_DATE);
        }
        if (targetCoords == null) {
            types.remove(SortType.TARGET_DISTANCE);
        }

        final List<Pair<SortType, String>> result = new ArrayList<>();
        for (SortType t : types) {
            result.add(new Pair<>(t, getNameFor(t, t.equals(type) && isInverse)));
        }
        //sort by display name, but put AUTO always first
        TextUtils.sortListLocaleAware(result, p -> p.first.equals(SortType.AUTO) ? "_" : p.second);
        return result;
    }
Returns the currently available sort types (together with their user-displayable name) for user selection
main/src/main/java/cgeo/geocaching/sorting/GeocacheSort.java