diff options
| author | jaguillo | 2015-10-11 15:30:39 +0200 |
|---|---|---|
| committer | jaguillo | 2015-10-11 15:30:39 +0200 |
| commit | 03cc0a54297a758f0ba0f1a7ba8aed0040413a5c (patch) | |
| tree | f286abcd348a1957b91eb3b574e8130eb0442d86 /srcs/juloo.keyboard2 | |
| parent | 549c753450be61fdd267904e5b34666e8318b79f (diff) | |
| download | unexpected-keyboard-03cc0a54297a758f0ba0f1a7ba8aed0040413a5c.tar.gz unexpected-keyboard-03cc0a54297a758f0ba0f1a7ba8aed0040413a5c.zip | |
Key to switch to numeric pane
Diffstat (limited to 'srcs/juloo.keyboard2')
| -rw-r--r-- | srcs/juloo.keyboard2/KeyValue.java | 7 | ||||
| -rw-r--r-- | srcs/juloo.keyboard2/Keyboard2.java | 34 | ||||
| -rw-r--r-- | srcs/juloo.keyboard2/Keyboard2View.java | 13 |
3 files changed, 44 insertions, 10 deletions
diff --git a/srcs/juloo.keyboard2/KeyValue.java b/srcs/juloo.keyboard2/KeyValue.java index 22ac90e..33b78aa 100644 --- a/srcs/juloo.keyboard2/KeyValue.java +++ b/srcs/juloo.keyboard2/KeyValue.java @@ -8,6 +8,8 @@ class KeyValue { public static final int EVENT_NONE = -1; public static final int EVENT_CONFIG = -2; + public static final int EVENT_SWITCH_TEXT = -3; + public static final int EVENT_SWITCH_NUMERIC = -4; public static final char CHAR_NONE = '\0'; public static final int FLAG_KEEP_ON = 1; @@ -164,7 +166,10 @@ class KeyValue new KeyValue("8", null, '8', KeyEvent.KEYCODE_8, 0); new KeyValue("9", null, '9', KeyEvent.KEYCODE_9, 0); - new KeyValue("config", "Conf", CHAR_NONE, EVENT_CONFIG, 0); + new KeyValue("config", "Conf", CHAR_NONE, EVENT_CONFIG, 0); + new KeyValue("switch_text", "ABC", CHAR_NONE, EVENT_SWITCH_TEXT, 0); + new KeyValue("switch_numeric", "123+", CHAR_NONE, EVENT_SWITCH_NUMERIC, 0); + new KeyValue("enter", "↵", CHAR_NONE, KeyEvent.KEYCODE_ENTER, 0); new KeyValue("up", "↑", CHAR_NONE, KeyEvent.KEYCODE_DPAD_UP, 0); new KeyValue("right", "→", CHAR_NONE, KeyEvent.KEYCODE_DPAD_RIGHT, 0); diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java index 69a1de2..8cb104b 100644 --- a/srcs/juloo.keyboard2/Keyboard2.java +++ b/srcs/juloo.keyboard2/Keyboard2.java @@ -5,7 +5,9 @@ import android.content.Intent; import android.content.SharedPreferences; import android.inputmethodservice.InputMethodService; import android.os.Bundle; +import android.text.InputType; import android.preference.PreferenceManager; +import android.view.inputmethod.EditorInfo; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; @@ -14,6 +16,8 @@ public class Keyboard2 extends InputMethodService implements SharedPreferences.OnSharedPreferenceChangeListener { private Keyboard2View _inputView = null; + private KeyboardData _textKeyboard = null; + private KeyboardData _numericKeyboard = null; @Override public void onCreate() @@ -21,6 +25,7 @@ public class Keyboard2 extends InputMethodService super.onCreate(); PreferenceManager.setDefaultValues(this, R.xml.settings, false); PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this); + updateConfig(); _inputView = (Keyboard2View)getLayoutInflater().inflate(R.layout.input, null); _inputView.reset_prefs(this); } @@ -32,13 +37,22 @@ public class Keyboard2 extends InputMethodService if (parent != null) parent.removeView(_inputView); - _inputView.reset(); return (_inputView); } @Override + public void onStartInputView(EditorInfo info, boolean restarting) + { + if ((info.inputType & InputType.TYPE_CLASS_NUMBER) != 0) + _inputView.setKeyboard(_numericKeyboard); + else + _inputView.setKeyboard(_textKeyboard); + } + + @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + updateConfig(); _inputView.reset_prefs(this); } @@ -53,6 +67,20 @@ public class Keyboard2 extends InputMethodService _inputView.reset(); } + private void updateConfig() + { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + String keyboardLayout = prefs.getString("keyboard_layout", null); + int xmlRes = 0; + + if (keyboardLayout != null) + xmlRes = getResources().getIdentifier(keyboardLayout, "xml", getPackageName()); + if (xmlRes == 0) + xmlRes = R.xml.azerty; + _textKeyboard = new KeyboardData(getResources().getXml(xmlRes)); + _numericKeyboard = new KeyboardData(getResources().getXml(R.xml.numeric)); + } + public void handleKeyUp(KeyValue key, int flags) { if (getCurrentInputConnection() == null) @@ -63,6 +91,10 @@ public class Keyboard2 extends InputMethodService intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } + else if (key.getEventCode() == KeyValue.EVENT_SWITCH_TEXT) + _inputView.setKeyboard(_textKeyboard); + else if (key.getEventCode() == KeyValue.EVENT_SWITCH_NUMERIC) + _inputView.setKeyboard(_numericKeyboard); else if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0) handleMetaKeyUp(key, flags); else if (key.getEventCode() == KeyEvent.KEYCODE_DEL) diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java index b10c1fb..5d21759 100644 --- a/srcs/juloo.keyboard2/Keyboard2View.java +++ b/srcs/juloo.keyboard2/Keyboard2View.java @@ -102,15 +102,12 @@ public class Keyboard2View extends View _marginBottom = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, prefs.getInt("margin_bottom", (int)_marginBottom), getResources().getDisplayMetrics()); _keyHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, prefs.getInt("key_height", (int)_keyHeight), getResources().getDisplayMetrics()); _horizontalMargin = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, prefs.getInt("horizontal_margin", (int)_horizontalMargin), getResources().getDisplayMetrics()); + reset(); + } - String keyboardLayout = prefs.getString("keyboard_layout", null); - int xmlRes = 0; - - if (keyboardLayout != null) - xmlRes = ime.getResources().getIdentifier(keyboardLayout, "xml", ime.getPackageName()); - if (xmlRes == 0) - xmlRes = R.xml.azerty; - _keyboard = new KeyboardData(ime.getResources().getXml(xmlRes)); + public void setKeyboard(KeyboardData keyboard) + { + _keyboard = keyboard; reset(); } |
