From 03cc0a54297a758f0ba0f1a7ba8aed0040413a5c Mon Sep 17 00:00:00 2001 From: jaguillo Date: Sun, 11 Oct 2015 15:30:39 +0200 Subject: Key to switch to numeric pane --- srcs/juloo.keyboard2/Keyboard2.java | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'srcs/juloo.keyboard2/Keyboard2.java') 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) -- cgit v1.2.3