| package org.connectbot.util; |
| |
| import android.content.Context; |
| import android.preference.ListPreference; |
| import android.util.AttributeSet; |
| |
| import java.nio.charset.Charset; |
| import java.util.LinkedList; |
| import java.util.List; |
| import java.util.Map.Entry; |
| |
| public class EncodingPreference extends ListPreference { |
| |
| public EncodingPreference(Context context, AttributeSet attrs) { |
| super(context, attrs); |
| |
| List<CharSequence> charsetIdsList = new LinkedList<CharSequence>(); |
| List<CharSequence> charsetNamesList = new LinkedList<CharSequence>(); |
| |
| for (Entry<String, Charset> entry : Charset.availableCharsets().entrySet()) { |
| Charset c = entry.getValue(); |
| if (c.canEncode() && c.isRegistered()) { |
| String key = entry.getKey(); |
| if (key.startsWith("cp")) { |
| // Custom CP437 charset changes |
| charsetIdsList.add("CP437"); |
| charsetNamesList.add("CP437"); |
| } |
| charsetIdsList.add(entry.getKey()); |
| charsetNamesList.add(c.displayName()); |
| } |
| } |
| |
| this.setEntryValues(charsetIdsList.toArray(new CharSequence[charsetIdsList.size()])); |
| this.setEntries(charsetNamesList.toArray(new CharSequence[charsetNamesList.size()])); |
| } |
| } |