19f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Lipackage org.connectbot.util;
29f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li
39f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Liimport android.content.Context;
49f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Liimport android.preference.ListPreference;
59f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Liimport android.util.AttributeSet;
69f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li
79f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Liimport java.nio.charset.Charset;
89f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Liimport java.util.LinkedList;
99f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Liimport java.util.List;
109f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Liimport java.util.Map.Entry;
119f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li
129f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Lipublic class EncodingPreference extends ListPreference {
139f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li
149f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li  public EncodingPreference(Context context, AttributeSet attrs) {
159f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li    super(context, attrs);
169f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li
179f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li    List<CharSequence> charsetIdsList = new LinkedList<CharSequence>();
189f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li    List<CharSequence> charsetNamesList = new LinkedList<CharSequence>();
199f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li
209f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li    for (Entry<String, Charset> entry : Charset.availableCharsets().entrySet()) {
219f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li      Charset c = entry.getValue();
229f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li      if (c.canEncode() && c.isRegistered()) {
239f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li        String key = entry.getKey();
249f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li        if (key.startsWith("cp")) {
259f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li          // Custom CP437 charset changes
269f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li          charsetIdsList.add("CP437");
279f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li          charsetNamesList.add("CP437");
289f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li        }
299f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li        charsetIdsList.add(entry.getKey());
309f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li        charsetNamesList.add(c.displayName());
319f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li      }
329f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li    }
339f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li
349f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li    this.setEntryValues(charsetIdsList.toArray(new CharSequence[charsetIdsList.size()]));
359f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li    this.setEntries(charsetNamesList.toArray(new CharSequence[charsetNamesList.size()]));
369f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li  }
379f32db87b486c93a0ea71eb1781ee45676b8bf8bXin Li}
38