diff --git a/res/layout/extra_keys_preference.xml b/res/layout/extra_keys_preference.xml
new file mode 100644
index 0000000..40bbfbe
--- /dev/null
+++ b/res/layout/extra_keys_preference.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/res/xml/settings.xml b/res/xml/settings.xml
index 322bf4d..f57d58a 100644
--- a/res/xml/settings.xml
+++ b/res/xml/settings.xml
@@ -7,42 +7,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java
index 2c48b3f..1bc406c 100644
--- a/srcs/juloo.keyboard2/Config.java
+++ b/srcs/juloo.keyboard2/Config.java
@@ -154,7 +154,7 @@ final class Config
theme = getThemeId(res, _prefs.getString("theme", ""));
autocapitalisation = _prefs.getBoolean("autocapitalisation", true);
switch_input_immediate = _prefs.getBoolean("switch_input_immediate", false);
- extra_keys_param = ExtraKeyCheckBoxPreference.get_extra_keys(_prefs);
+ extra_keys_param = ExtraKeysPreference.get_extra_keys(_prefs);
}
KeyValue action_key()
diff --git a/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java b/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java
deleted file mode 100644
index 8f7471a..0000000
--- a/srcs/juloo.keyboard2/ExtraKeyCheckBoxPreference.java
+++ /dev/null
@@ -1,110 +0,0 @@
-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",
- "voice_typing",
- "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",
- "accent_slash",
- "accent_bar",
- "accent_dot_below",
- "accent_hook_above",
- "accent_horn",
- "€",
- "ß",
- "£",
- "switch_greekmath",
- "capslock",
- "copy",
- "paste",
- "cut",
- "selectAll",
- "shareText",
- "pasteAsPlainText",
- "undo",
- "redo",
- "replaceText",
- "textAssist",
- "autofill",
- };
-
- public static boolean default_checked(String name)
- {
- switch (name)
- {
- case "voice_typing":
- return true;
- 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;
- }
-}
diff --git a/srcs/juloo.keyboard2/ExtraKeysPreference.java b/srcs/juloo.keyboard2/ExtraKeysPreference.java
new file mode 100644
index 0000000..698e344
--- /dev/null
+++ b/srcs/juloo.keyboard2/ExtraKeysPreference.java
@@ -0,0 +1,136 @@
+package juloo.keyboard2;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.preference.CheckBoxPreference;
+import android.preference.PreferenceGroup;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.TextView;
+import java.util.HashSet;
+import java.util.Set;
+
+/** This class implements the "extra keys" preference but also defines the
+ possible extra keys. */
+public class ExtraKeysPreference extends PreferenceGroup
+{
+ public static String[] extra_keys = new String[]
+ {
+ "alt",
+ "meta",
+ "voice_typing",
+ "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",
+ "accent_slash",
+ "accent_bar",
+ "accent_dot_below",
+ "accent_hook_above",
+ "accent_horn",
+ "€",
+ "ß",
+ "£",
+ "switch_greekmath",
+ "capslock",
+ "copy",
+ "paste",
+ "cut",
+ "selectAll",
+ "shareText",
+ "pasteAsPlainText",
+ "undo",
+ "redo",
+ "replaceText",
+ "textAssist",
+ "autofill",
+ };
+
+ /** Whether an extra key is enabled by default. */
+ public static boolean default_checked(String name)
+ {
+ switch (name)
+ {
+ case "voice_typing":
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ /** Get the set of enabled extra keys. */
+ 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;
+ }
+
+ boolean _attached; /** Whether it has already been attached. */
+
+ public ExtraKeysPreference(Context context, AttributeSet attrs)
+ {
+ super(context, attrs);
+ Resources res = context.getResources();
+ setOrderingAsAdded(true);
+ setLayoutResource(R.layout.extra_keys_preference);
+ }
+
+ protected void onAttachedToActivity()
+ {
+ if (_attached)
+ return;
+ _attached = true;
+ for (String key_name : extra_keys)
+ addPreference(new ExtraKeyCheckBoxPreference(getContext(), key_name,
+ default_checked(key_name)));
+ }
+
+ public static String pref_key_of_key_name(String key_name)
+ {
+ return "extra_key_" + key_name;
+ }
+
+ final class ExtraKeyCheckBoxPreference extends CheckBoxPreference
+ {
+ boolean _key_font;
+
+ public ExtraKeyCheckBoxPreference(Context context, String key_name,
+ boolean default_checked)
+ {
+ super(context);
+ 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);
+ 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);
+ }
+ }
+}