parent
b8bb2b78bd
commit
cb86be578b
1 changed files with 22 additions and 11 deletions
|
@ -1,6 +1,14 @@
|
||||||
package org.thoughtcrime.securesms.database.loaders;
|
package org.thoughtcrime.securesms.database.loaders;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import androidx.loader.content.AsyncTaskLoader;
|
||||||
|
|
||||||
|
import com.google.i18n.phonenumbers.PhoneNumberUtil;
|
||||||
|
|
||||||
|
import org.whispersystems.signalservice.api.util.PhoneNumberFormatter;
|
||||||
|
|
||||||
|
import java.text.Collator;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
@ -8,14 +16,7 @@ import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import android.content.Context;
|
public final class CountryListLoader extends AsyncTaskLoader<ArrayList<Map<String, String>>> {
|
||||||
import androidx.loader.content.AsyncTaskLoader;
|
|
||||||
|
|
||||||
|
|
||||||
import com.google.i18n.phonenumbers.PhoneNumberUtil;
|
|
||||||
import org.whispersystems.signalservice.api.util.PhoneNumberFormatter;
|
|
||||||
|
|
||||||
public class CountryListLoader extends AsyncTaskLoader<ArrayList<Map<String, String>>> {
|
|
||||||
|
|
||||||
public CountryListLoader(Context context) {
|
public CountryListLoader(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
|
@ -24,10 +25,10 @@ public class CountryListLoader extends AsyncTaskLoader<ArrayList<Map<String, Str
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<Map<String, String>> loadInBackground() {
|
public ArrayList<Map<String, String>> loadInBackground() {
|
||||||
Set<String> regions = PhoneNumberUtil.getInstance().getSupportedRegions();
|
Set<String> regions = PhoneNumberUtil.getInstance().getSupportedRegions();
|
||||||
ArrayList<Map<String, String>> results = new ArrayList<Map<String, String>>(regions.size());
|
ArrayList<Map<String, String>> results = new ArrayList<>(regions.size());
|
||||||
|
|
||||||
for (String region : regions) {
|
for (String region : regions) {
|
||||||
Map<String, String> data = new HashMap<String, String>(2);
|
Map<String, String> data = new HashMap<>(2);
|
||||||
data.put("country_name", PhoneNumberFormatter.getRegionDisplayName(region));
|
data.put("country_name", PhoneNumberFormatter.getRegionDisplayName(region));
|
||||||
data.put("country_code", "+" +PhoneNumberUtil.getInstance().getCountryCodeForRegion(region));
|
data.put("country_code", "+" +PhoneNumberUtil.getInstance().getCountryCodeForRegion(region));
|
||||||
results.add(data);
|
results.add(data);
|
||||||
|
@ -39,9 +40,19 @@ public class CountryListLoader extends AsyncTaskLoader<ArrayList<Map<String, Str
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class RegionComparator implements Comparator<Map<String, String>> {
|
private static class RegionComparator implements Comparator<Map<String, String>> {
|
||||||
|
|
||||||
|
private final Collator collator;
|
||||||
|
|
||||||
|
RegionComparator() {
|
||||||
|
collator = Collator.getInstance();
|
||||||
|
collator.setStrength(Collator.PRIMARY);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compare(Map<String, String> lhs, Map<String, String> rhs) {
|
public int compare(Map<String, String> lhs, Map<String, String> rhs) {
|
||||||
return lhs.get("country_name").compareTo(rhs.get("country_name"));
|
String a = lhs.get("country_name");
|
||||||
|
String b = rhs.get("country_name");
|
||||||
|
return collator.compare(a, b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue