1package org.connectbot.util;
2
3import android.content.Context;
4import android.preference.ListPreference;
5import android.util.AttributeSet;
6
7import java.nio.charset.Charset;
8import java.util.LinkedList;
9import java.util.List;
10import java.util.Map.Entry;
11
12public class EncodingPreference extends ListPreference {
13
14  public EncodingPreference(Context context, AttributeSet attrs) {
15    super(context, attrs);
16
17    List<CharSequence> charsetIdsList = new LinkedList<CharSequence>();
18    List<CharSequence> charsetNamesList = new LinkedList<CharSequence>();
19
20    for (Entry<String, Charset> entry : Charset.availableCharsets().entrySet()) {
21      Charset c = entry.getValue();
22      if (c.canEncode() && c.isRegistered()) {
23        String key = entry.getKey();
24        if (key.startsWith("cp")) {
25          // Custom CP437 charset changes
26          charsetIdsList.add("CP437");
27          charsetNamesList.add("CP437");
28        }
29        charsetIdsList.add(entry.getKey());
30        charsetNamesList.add(c.displayName());
31      }
32    }
33
34    this.setEntryValues(charsetIdsList.toArray(new CharSequence[charsetIdsList.size()]));
35    this.setEntries(charsetNamesList.toArray(new CharSequence[charsetNamesList.size()]));
36  }
37}
38