package de.fun2code.android.piratebox.preference;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import android.content.Context;
import android.preference.ListPreference;
import android.util.AttributeSet;
import de.fun2code.android.piratebox.Constants;
public class CustomI18nListPreference extends ListPreference {
public CustomI18nListPreference(Context context) {
super(context);
}
public CustomI18nListPreference(Context context, AttributeSet attrs) {
super(context, attrs);
String i18nDir = Constants.getInstallDir(context) + "/html/i18n";
File[] i18nFiles = new File(i18nDir).listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.toLowerCase().matches("^.*_[a-z]{2}\\.properties$");
}
});
if(i18nFiles != null) {
final String langRegEx = "^.*_([a-z]{2})\\.properties$";
Arrays.sort(i18nFiles, new Comparator<File>(){
@Override
public int compare(File lhs, File rhs) {
String lang1 = lhs.getName().replaceAll(langRegEx, "$1");
String langDisp1 = new Locale(lang1).getDisplayLanguage(Locale.getDefault());
String lang2 = rhs.getName().replaceAll(langRegEx, "$1");
String langDisp2 = new Locale(lang2).getDisplayLanguage(Locale.getDefault());
return langDisp1.compareTo(langDisp2);
}
});
List<CharSequence> entriesList = new ArrayList<CharSequence>();
List<CharSequence> valuesList = new ArrayList<CharSequence>();
for(File file : i18nFiles) {
String lang = file.getName().replaceAll(langRegEx, "$1");
String langDisp = new Locale(lang).getDisplayLanguage(Locale.getDefault());
entriesList.add(langDisp);
valuesList.add(lang);
}
setEntries(entriesList.toArray(new CharSequence[entriesList.size()]));
setEntryValues(valuesList.toArray(new CharSequence[valuesList.size()]));
}
else {
setEntries(new CharSequence[0]);
setEntryValues(new CharSequence[0]);
}
}
}