abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/Keyboard2.java
diff options
context:
space:
mode:
authorJules Aguillon2021-12-30 00:26:05 +0100
committerJules Aguillon2021-12-30 00:26:05 +0100
commit093a00c572a29d292bc6bbb09559611cb61e1331 (patch)
tree945f43f7c4bbff2bf5d22fa3a12c7d42833dc97d /srcs/juloo.keyboard2/Keyboard2.java
parent40b1ec63a932606fb432ee81801acf147e9ee70e (diff)
downloadunexpected-keyboard-093a00c572a29d292bc6bbb09559611cb61e1331.tar.gz
unexpected-keyboard-093a00c572a29d292bc6bbb09559611cb61e1331.zip
Add themes
Add a "Theme" option to choose between a dark and light theme. The light theme uses the colors of the dark theme with the luminance inversed. The reloading after a configuration change is changed slightly: - Special handling is needed when the Theme is changed (recreate the views) - The default implementation of 'onConfigurationChanged' is used Which triggers more refresh (but don't recreate the views) - 'onCreateInputView' is no longer needed
Diffstat (limited to 'srcs/juloo.keyboard2/Keyboard2.java')
-rw-r--r--srcs/juloo.keyboard2/Keyboard2.java34
1 files changed, 16 insertions, 18 deletions
diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java
index 17c9d4e..b820b98 100644
--- a/srcs/juloo.keyboard2/Keyboard2.java
+++ b/srcs/juloo.keyboard2/Keyboard2.java
@@ -16,6 +16,7 @@ import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype;
+import android.view.ContextThemeWrapper;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
@@ -55,7 +56,7 @@ public class Keyboard2 extends InputMethodService
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
Config.initGlobalConfig(this, new KeyEventHandler(this.new Receiver()));
_config = Config.globalConfig();
- _keyboardView = (Keyboard2View)getLayoutInflater().inflate(R.layout.keyboard, null);
+ _keyboardView = (Keyboard2View)inflate_view(R.layout.keyboard);
_keyboardView.reset();
}
@@ -139,16 +140,6 @@ public class Keyboard2 extends InputMethodService
}
@Override
- public View onCreateInputView()
- {
- ViewGroup parent = (ViewGroup)_keyboardView.getParent();
-
- if (parent != null)
- parent.removeView(_keyboardView);
- return (_keyboardView);
- }
-
- @Override
public void onStartInputView(EditorInfo info, boolean restarting)
{
refreshSubtypeImm();
@@ -157,6 +148,7 @@ public class Keyboard2 extends InputMethodService
else
_keyboardView.setKeyboard(getLayout(_currentTextLayout));
_keyboardView.reset(); // Layout might need to change due to rotation
+ setInputView(_keyboardView);
}
@Override
@@ -176,15 +168,16 @@ public class Keyboard2 extends InputMethodService
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
+ int prev_theme = _config.theme;
_config.refresh(this);
refreshSubtypeImm();
_keyboardView.refreshConfig(getLayout(_currentTextLayout));
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig)
- {
- _keyboardView.reset();
+ // Refreshing the theme config requires re-creating the views
+ if (prev_theme != _config.theme)
+ {
+ _keyboardView = (Keyboard2View)inflate_view(R.layout.keyboard);
+ _emojiPane = null;
+ }
}
/** Not static */
@@ -199,7 +192,7 @@ public class Keyboard2 extends InputMethodService
public void setPane_emoji()
{
if (_emojiPane == null)
- _emojiPane = (ViewGroup)getLayoutInflater().inflate(R.layout.emoji_pane, null);
+ _emojiPane = (ViewGroup)inflate_view(R.layout.emoji_pane);
setInputView(_emojiPane);
}
@@ -247,4 +240,9 @@ public class Keyboard2 extends InputMethodService
{
return getWindow().getWindow().getAttributes().token;
}
+
+ private View inflate_view(int layout)
+ {
+ return View.inflate(new ContextThemeWrapper(this, _config.theme), layout, null);
+ }
}