package juloo.keyboard2; import android.content.Context; import android.content.res.TypedArray; import android.content.SharedPreferences; import android.preference.CheckBoxPreference; import android.util.AttributeSet; import android.view.View; import android.widget.TextView; import java.util.HashSet; import java.util.Set; public class ExtraKeyCheckBoxPreference extends CheckBoxPreference { public static String[] extra_keys = new String[] { "alt", "meta", "accent_aigu", "accent_grave", "accent_double_aigu", "accent_dot_above", "accent_circonflexe", "accent_tilde", "accent_cedille", "accent_trema", "accent_ring", "accent_caron", "accent_macron", "accent_ogonek", "accent_breve", "€", "ß", "£", "switch_greekmath", "capslock", }; public static boolean default_checked(String name) { switch (name) { default: return false; } } boolean _key_font; public ExtraKeyCheckBoxPreference(Context context, AttributeSet attrs) { super(context, attrs); final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ExtraKeyCheckBoxPreference); int index = a.getInteger(R.styleable.ExtraKeyCheckBoxPreference_index, 0); a.recycle(); String key_name = extra_keys[index]; KeyValue kv = KeyValue.getKeyByName(key_name); String title = kv.getString(); String descr = KeyValue.getKeyDescription(key_name); if (descr != null) title += " (" + descr + ")"; setKey(pref_key_of_key_name(key_name)); setDefaultValue(default_checked(key_name)); setTitle(title); _key_font = kv.hasFlags(KeyValue.FLAG_KEY_FONT); } @Override protected void onBindView(View view) { super.onBindView(view); TextView title = (TextView)view.findViewById(android.R.id.title); title.setTypeface(_key_font ? Theme.getKeyFont(getContext()) : null); } static String pref_key_of_key_name(String key_name) { return "extra_key_" + key_name; } public static Set get_extra_keys(SharedPreferences prefs) { HashSet ks = new HashSet(); for (String key_name : extra_keys) { if (prefs.getBoolean(pref_key_of_key_name(key_name), default_checked(key_name))) ks.add(KeyValue.getKeyByName(key_name)); } return ks; } }