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

View file

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

View file

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

View file

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