Update region search
This commit is contained in:
parent
096f0c2bc1
commit
e7abeec082
6 changed files with 44 additions and 13 deletions
|
@ -344,8 +344,14 @@ public class SearchAddressFragment extends Fragment {
|
|||
}
|
||||
|
||||
private static String getRegionName(Context ctx, OsmandSettings settings) {
|
||||
return FileNameTranslationHelper.getFileName(ctx, ((OsmandApplication) ctx.getApplicationContext())
|
||||
.getResourceManager().getOsmandRegions(), settings.getLastSearchedRegion());
|
||||
OsmandApplication app = ((OsmandApplication) ctx.getApplicationContext());
|
||||
RegionAddressRepository reg = app.getResourceManager().getRegionRepository(settings.getLastSearchedRegion());
|
||||
if(reg != null) {
|
||||
return FileNameTranslationHelper.getFileName(ctx,
|
||||
app.getResourceManager().getOsmandRegions(), reg.getFileName());
|
||||
} else {
|
||||
return settings.getLastSearchedRegion().replace('_', ' ');
|
||||
}
|
||||
}
|
||||
|
||||
public static AddressInformation buildCity(Context ctx, OsmandSettings settings){
|
||||
|
@ -475,8 +481,13 @@ public class SearchAddressFragment extends Fragment {
|
|||
|
||||
|
||||
private String getRegionName() {
|
||||
return FileNameTranslationHelper.getFileName(getActivity(),
|
||||
((OsmandApplication) getActivity().getApplication()).getResourceManager().getOsmandRegions(), region);
|
||||
RegionAddressRepository reg = getApplication().getResourceManager().getRegionRepository(region);
|
||||
if(reg != null) {
|
||||
return FileNameTranslationHelper.getFileName(getApplication(),
|
||||
getApplication().getResourceManager().getOsmandRegions(), reg.getFileName());
|
||||
} else {
|
||||
return region;
|
||||
}
|
||||
}
|
||||
|
||||
public void loadData() {
|
||||
|
|
|
@ -288,6 +288,10 @@ public abstract class SearchByNameAbstractActivity<T> extends OsmandListActivity
|
|||
|
||||
public abstract String getText(T obj);
|
||||
|
||||
public String getAdditionalFilterText(T obj) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getShortText(T obj) {
|
||||
return getText(obj);
|
||||
}
|
||||
|
@ -300,7 +304,11 @@ public abstract class SearchByNameAbstractActivity<T> extends OsmandListActivity
|
|||
if(filter == null || filter.length() == 0){
|
||||
return true;
|
||||
}
|
||||
return CollatorStringMatcher.cmatches(collator, getText(obj), filter, StringMatcherMode.CHECK_STARTS_FROM_SPACE);
|
||||
boolean matches = CollatorStringMatcher.cmatches(collator, getText(obj), filter, StringMatcherMode.CHECK_STARTS_FROM_SPACE);
|
||||
if(!matches && getAdditionalFilterText(obj) != null) {
|
||||
matches = CollatorStringMatcher.cmatches(collator, getAdditionalFilterText(obj), filter, StringMatcherMode.CHECK_STARTS_FROM_SPACE);
|
||||
}
|
||||
return matches;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -4,22 +4,19 @@ import java.text.Collator;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import net.osmand.access.AccessibleToast;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandSettings;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.helpers.FileNameTranslationHelper;
|
||||
import net.osmand.plus.resources.RegionAddressRepository;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
||||
public class SearchRegionByNameActivity extends SearchByNameAbstractActivity<RegionAddressRepository> {
|
||||
private OsmandSettings osmandSettings;
|
||||
|
||||
@Override
|
||||
protected Comparator<? super RegionAddressRepository> createComparator() {
|
||||
|
@ -61,7 +58,12 @@ public class SearchRegionByNameActivity extends SearchByNameAbstractActivity<Reg
|
|||
@Override
|
||||
public String getText(RegionAddressRepository obj) {
|
||||
return FileNameTranslationHelper.getFileName(this,
|
||||
getMyApplication().getResourceManager().getOsmandRegions(), obj.getName());
|
||||
getMyApplication().getResourceManager().getOsmandRegions(), obj.getFileName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAdditionalFilterText(RegionAddressRepository obj) {
|
||||
return obj.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -17,6 +17,9 @@ public interface RegionAddressRepository {
|
|||
|
||||
public String getName();
|
||||
|
||||
public String getFileName() ;
|
||||
|
||||
|
||||
public LatLon getEstimatedRegionCenter();
|
||||
|
||||
// is called on low memory
|
||||
|
|
|
@ -43,10 +43,12 @@ public class RegionAddressRepositoryBinary implements RegionAddressRepository {
|
|||
private final Map<String, City> postCodes;
|
||||
private boolean useEnglishNames = false;
|
||||
private final Collator collator;
|
||||
private String fileName;
|
||||
|
||||
public RegionAddressRepositoryBinary(BinaryMapIndexReader file, String name) {
|
||||
public RegionAddressRepositoryBinary(BinaryMapIndexReader file, String name, String fileName) {
|
||||
this.file = file;
|
||||
this.region = name;
|
||||
this.fileName = fileName;
|
||||
this.collator = OsmAndCollator.primaryCollator();
|
||||
this.postCodes = new TreeMap<String, City>(OsmAndCollator.primaryCollator());
|
||||
}
|
||||
|
@ -265,6 +267,11 @@ public class RegionAddressRepositoryBinary implements RegionAddressRepository {
|
|||
return region;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFileName() {
|
||||
return fileName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getName() + " repository";
|
||||
|
|
|
@ -644,7 +644,7 @@ public class ResourceManager {
|
|||
for (String rName : index.getRegionNames()) {
|
||||
// skip duplicate names (don't make collision between getName() and name in the map)
|
||||
// it can be dangerous to use one file to different indexes if it is multithreaded
|
||||
RegionAddressRepositoryBinary rarb = new RegionAddressRepositoryBinary(index, rName);
|
||||
RegionAddressRepositoryBinary rarb = new RegionAddressRepositoryBinary(index, rName, f.getName());
|
||||
addressMap.put(rName, rarb);
|
||||
}
|
||||
if (index.hasTransportData()) {
|
||||
|
|
Loading…
Reference in a new issue