Merge pull request #9157 from osmandapp/searchRefactor

Search refactor
This commit is contained in:
max-klaus 2020-06-06 10:53:42 +03:00 committed by GitHub
commit f8bf673bc2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 27 deletions

View file

@ -648,6 +648,7 @@ public class SearchCoreFactory {
public void clearCustomFilters() {
this.customPoiFilters.clear();
this.activePoiFilters.clear();
}
public void addCustomFilter(CustomSearchPoiFilter poiFilter, int priority) {
@ -731,6 +732,7 @@ public class SearchCoreFactory {
if (translatedNames.isEmpty()) {
translatedNames = types.getAllTranslatedNames(false);
topVisibleFilters = types.getTopVisibleFilters();
topVisibleFilters.remove(types.getOsmwiki());
categories = types.getCategories(false);
}
}

View file

@ -54,7 +54,6 @@ public class PoiFiltersHelper {
private PoiUIFilter searchByNamePOIFilter;
private PoiUIFilter customPOIFilter;
private PoiUIFilter showAllPOIFilter;
private PoiUIFilter localWikiPoiFilter;
private PoiUIFilter topWikiPoiFilter;
private List<PoiUIFilter> cacheTopStandardFilters;
private Set<PoiUIFilter> selectedPoiFilters = new TreeSet<>();
@ -120,20 +119,6 @@ public class PoiFiltersHelper {
return customPOIFilter;
}
public PoiUIFilter getLocalWikiPOIFilter() {
if (localWikiPoiFilter == null) {
PoiType place = application.getPoiTypes().getPoiTypeByKey(WIKI_PLACE);
if (place != null && !Algorithms.isEmpty(application.getLanguage())) {
PoiUIFilter filter = new PoiUIFilter(place, application, " " +
application.getLangTranslation(application.getLanguage()));
filter.setSavedFilterByName("wiki:lang:" + application.getLanguage());
filter.setStandardFilter(true);
localWikiPoiFilter = filter;
}
}
return localWikiPoiFilter;
}
public void prepareTopWikiFilter(@NonNull PoiUIFilter wiki) {
boolean prepareByDefault = true;
Bundle wikiSettings = WikipediaPoiMenu.getWikiPoiSettings(application);
@ -217,8 +202,7 @@ public class PoiFiltersHelper {
}
}
PoiUIFilter ff = getFilterById(filterId, getCustomPOIFilter(), getSearchByNamePOIFilter(),
getTopWikiPoiFilter(), getLocalWikiPOIFilter(), getShowAllPOIFilter(),
getNominatimPOIFilter(), getNominatimAddressFilter());
getTopWikiPoiFilter(), getShowAllPOIFilter(), getNominatimPOIFilter(), getNominatimAddressFilter());
if (ff != null) {
return ff;
}
@ -284,9 +268,6 @@ public class PoiFiltersHelper {
top = new ArrayList<>();
// user defined
top.addAll(getUserDefinedPoiFilters(true));
if (getLocalWikiPOIFilter() != null) {
top.add(getLocalWikiPOIFilter());
}
// default
MapPoiTypes poiTypes = application.getPoiTypes();
for (AbstractPoiType t : poiTypes.getTopVisibleFilters()) {

View file

@ -1248,7 +1248,7 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
@Override
public void onApplyPoiFiltersState(final ApplicationMode appMode, boolean stateChanged) {
if (stateChanged) {
searchHelper.refreshFilterOrders();
searchHelper.refreshCustomPoiFilters();
reloadCategoriesInternal();
}
View containerView = getView();
@ -1268,7 +1268,7 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
settings.POI_FILTERS_ORDER.setModeValue(mode, orders);
settings.INACTIVE_POI_FILTERS.setModeValue(mode, inactive);
}
searchHelper.refreshFilterOrders();
searchHelper.refreshCustomPoiFilters();
reloadCategoriesInternal();
}
});

View file

@ -111,15 +111,18 @@ public class QuickSearchHelper implements ResourceListener {
for (CustomSearchPoiFilter udf : poiFilters.getUserDefinedPoiFilters(false)) {
core.addCustomSearchPoiFilter(udf, 0);
}
PoiUIFilter localWikiPoiFilter = poiFilters.getLocalWikiPOIFilter();
if (localWikiPoiFilter != null) {
core.addCustomSearchPoiFilter(localWikiPoiFilter, 1);
PoiUIFilter topWikiPoiFilter = poiFilters.getTopWikiPoiFilter();
if (topWikiPoiFilter != null && topWikiPoiFilter.isActive()) {
core.addCustomSearchPoiFilter(topWikiPoiFilter, 1);
}
PoiUIFilter showAllPOIFilter = poiFilters.getShowAllPOIFilter();
if (showAllPOIFilter != null && showAllPOIFilter.isActive()) {
core.addCustomSearchPoiFilter(showAllPOIFilter, 1);
}
core.addCustomSearchPoiFilter(poiFilters.getShowAllPOIFilter(), 1);
refreshFilterOrders();
}
public void refreshFilterOrders() {
private void refreshFilterOrders() {
PoiFiltersHelper filtersHelper = app.getPoiFilters();
core.setActivePoiFiltersByOrder(filtersHelper.getPoiFilterOrders(true));
}