mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2024-12-11 08:31:14 +01:00
0269cd65ea
Allow items to be of any class instead of strings. Item serialization and deserialization methods are in a separate class because they are also used in a static context.
69 lines
2.2 KiB
Java
69 lines
2.2 KiB
Java
package juloo.keyboard2;
|
|
|
|
import android.app.AlertDialog;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.content.SharedPreferences;
|
|
import android.preference.Preference;
|
|
import android.preference.PreferenceCategory;
|
|
import android.util.AttributeSet;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.EditText;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONException;
|
|
|
|
/** Allows to enter custom keys to be added to the keyboard. This shows up at
|
|
the top of the "Add keys to the keyboard" option. */
|
|
public class CustomExtraKeysPreference extends ListGroupPreference<String>
|
|
{
|
|
/** This pref stores a list of strings encoded as JSON. */
|
|
static final String KEY = "custom_extra_keys";
|
|
static final ListGroupPreference.Serializer<String> SERIALIZER =
|
|
new ListGroupPreference.StringSerializer();
|
|
|
|
public CustomExtraKeysPreference(Context context, AttributeSet attrs)
|
|
{
|
|
super(context, attrs);
|
|
setKey(KEY);
|
|
}
|
|
|
|
public static List<KeyValue> get(SharedPreferences prefs)
|
|
{
|
|
List<KeyValue> kvs = new ArrayList<KeyValue>();
|
|
List<String> key_names = load_from_preferences(KEY, prefs, null, SERIALIZER);
|
|
if (key_names != null)
|
|
{
|
|
for (String key_name : key_names)
|
|
kvs.add(KeyValue.makeStringKey(key_name));
|
|
}
|
|
return kvs;
|
|
}
|
|
|
|
String label_of_value(String value, int i) { return value; }
|
|
|
|
@Override
|
|
void select(final SelectionCallback<String> callback)
|
|
{
|
|
new AlertDialog.Builder(getContext())
|
|
.setView(R.layout.custom_extra_key_add_dialog)
|
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener(){
|
|
public void onClick(DialogInterface dialog, int which)
|
|
{
|
|
EditText input = (EditText)((AlertDialog)dialog).findViewById(R.id.key_name);
|
|
final String k = input.getText().toString();
|
|
if (!k.equals(""))
|
|
callback.select(k);
|
|
}
|
|
})
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
.setIcon(android.R.drawable.ic_dialog_alert)
|
|
.show();
|
|
}
|
|
|
|
@Override
|
|
Serializer<String> get_serializer() { return SERIALIZER; }
|
|
}
|