mirror of
https://github.com/Julow/Unexpected-Keyboard.git
synced 2025-06-21 02:09:09 +02:00
Turn Config into a singleton object
The goal is to remove a cast of the 'context' into 'Keyboard2'.
This commit is contained in:
parent
dd24ad323b
commit
0190cfc29a
@ -1,14 +1,14 @@
|
|||||||
package juloo.keyboard2;
|
package juloo.keyboard2;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
import android.util.DisplayMetrics;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
|
|
||||||
class Config
|
final class Config
|
||||||
{
|
{
|
||||||
private Keyboard2 _context;
|
|
||||||
|
|
||||||
// From resources
|
// From resources
|
||||||
public final float marginTop;
|
public final float marginTop;
|
||||||
public final float keyPadding;
|
public final float keyPadding;
|
||||||
@ -34,11 +34,9 @@ class Config
|
|||||||
public boolean shouldOfferSwitchingToNextInputMethod;
|
public boolean shouldOfferSwitchingToNextInputMethod;
|
||||||
public int accent_flags_to_remove;
|
public int accent_flags_to_remove;
|
||||||
|
|
||||||
public Config(Keyboard2 context)
|
private Config(Context context)
|
||||||
{
|
{
|
||||||
Resources res = context.getResources();
|
Resources res = context.getResources();
|
||||||
|
|
||||||
_context = context;
|
|
||||||
// static values
|
// static values
|
||||||
marginTop = res.getDimension(R.dimen.margin_top);
|
marginTop = res.getDimension(R.dimen.margin_top);
|
||||||
keyPadding = res.getDimension(R.dimen.key_padding);
|
keyPadding = res.getDimension(R.dimen.key_padding);
|
||||||
@ -59,7 +57,7 @@ class Config
|
|||||||
characterSize = 1.f;
|
characterSize = 1.f;
|
||||||
accents = 1;
|
accents = 1;
|
||||||
// from prefs
|
// from prefs
|
||||||
refresh();
|
refresh(context);
|
||||||
// initialized later
|
// initialized later
|
||||||
shouldOfferSwitchingToNextInputMethod = false;
|
shouldOfferSwitchingToNextInputMethod = false;
|
||||||
accent_flags_to_remove = 0;
|
accent_flags_to_remove = 0;
|
||||||
@ -68,32 +66,30 @@ class Config
|
|||||||
/*
|
/*
|
||||||
** Reload prefs
|
** Reload prefs
|
||||||
*/
|
*/
|
||||||
public void refresh()
|
public void refresh(Context context)
|
||||||
{
|
{
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(_context);
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
DisplayMetrics dm = context.getResources().getDisplayMetrics();
|
||||||
layout = layoutId_of_string(prefs.getString("layout", "system"));
|
layout = layoutId_of_string(prefs.getString("layout", "system"));
|
||||||
subValueDist = prefs.getFloat("sub_value_dist", subValueDist);
|
subValueDist = prefs.getFloat("sub_value_dist", subValueDist);
|
||||||
vibrateEnabled = prefs.getBoolean("vibrate_enabled", vibrateEnabled);
|
vibrateEnabled = prefs.getBoolean("vibrate_enabled", vibrateEnabled);
|
||||||
vibrateDuration = prefs.getInt("vibrate_duration", (int)vibrateDuration);
|
vibrateDuration = prefs.getInt("vibrate_duration", (int)vibrateDuration);
|
||||||
longPressTimeout = prefs.getInt("longpress_timeout", (int)longPressTimeout);
|
longPressTimeout = prefs.getInt("longpress_timeout", (int)longPressTimeout);
|
||||||
longPressInterval = prefs.getInt("longpress_interval", (int)longPressInterval);
|
longPressInterval = prefs.getInt("longpress_interval", (int)longPressInterval);
|
||||||
marginBottom = getDipPref(prefs, "margin_bottom", marginBottom);
|
marginBottom = getDipPref(dm, prefs, "margin_bottom", marginBottom);
|
||||||
keyHeight = getDipPref(prefs, "key_height", keyHeight);
|
keyHeight = getDipPref(dm, prefs, "key_height", keyHeight);
|
||||||
horizontalMargin = getDipPref(prefs, "horizontal_margin", horizontalMargin);
|
horizontalMargin = getDipPref(dm, prefs, "horizontal_margin", horizontalMargin);
|
||||||
preciseRepeat = prefs.getBoolean("precise_repeat", preciseRepeat);
|
preciseRepeat = prefs.getBoolean("precise_repeat", preciseRepeat);
|
||||||
characterSize = prefs.getFloat("character_size", characterSize);
|
characterSize = prefs.getFloat("character_size", characterSize);
|
||||||
accents = Integer.valueOf(prefs.getString("accents", "1"));
|
accents = Integer.valueOf(prefs.getString("accents", "1"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private float getDipPref(SharedPreferences prefs, String pref_name, float def)
|
private float getDipPref(DisplayMetrics dm, SharedPreferences prefs, String pref_name, float def)
|
||||||
{
|
{
|
||||||
int value = prefs.getInt(pref_name, -1);
|
int value = prefs.getInt(pref_name, -1);
|
||||||
|
|
||||||
if (value < 0)
|
if (value < 0)
|
||||||
return (def);
|
return (def);
|
||||||
return (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value,
|
return (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value, dm));
|
||||||
_context.getResources().getDisplayMetrics()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int layoutId_of_string(String name)
|
public static int layoutId_of_string(String name)
|
||||||
@ -121,4 +117,16 @@ class Config
|
|||||||
default: throw new RuntimeException(name);
|
default: throw new RuntimeException(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Config _globalConfig = null;
|
||||||
|
|
||||||
|
public static void initGlobalConfig(Context context)
|
||||||
|
{
|
||||||
|
_globalConfig = new Config(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Config globalConfig()
|
||||||
|
{
|
||||||
|
return _globalConfig;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,16 +54,12 @@ public class Keyboard2 extends InputMethodService
|
|||||||
_specialKeyFont = Typeface.createFromAsset(getAssets(), "fonts/keys.ttf");
|
_specialKeyFont = Typeface.createFromAsset(getAssets(), "fonts/keys.ttf");
|
||||||
PreferenceManager.setDefaultValues(this, R.xml.settings, false);
|
PreferenceManager.setDefaultValues(this, R.xml.settings, false);
|
||||||
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
|
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
|
||||||
_config = new Config(this);
|
Config.initGlobalConfig(this);
|
||||||
|
_config = Config.globalConfig();
|
||||||
_keyboardView = (Keyboard2View)getLayoutInflater().inflate(R.layout.keyboard, null);
|
_keyboardView = (Keyboard2View)getLayoutInflater().inflate(R.layout.keyboard, null);
|
||||||
_keyboardView.reset();
|
_keyboardView.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Config getConfig()
|
|
||||||
{
|
|
||||||
return (_config);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Typeface getSpecialKeyFont()
|
public Typeface getSpecialKeyFont()
|
||||||
{
|
{
|
||||||
return (_specialKeyFont);
|
return (_specialKeyFont);
|
||||||
@ -186,9 +182,9 @@ public class Keyboard2 extends InputMethodService
|
|||||||
@Override
|
@Override
|
||||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
|
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
|
||||||
{
|
{
|
||||||
_config.refresh();
|
_config.refresh(this);
|
||||||
refreshSubtypeImm();
|
refreshSubtypeImm();
|
||||||
_keyboardView.refreshConfig(_config, getLayout(_currentTextLayout));
|
_keyboardView.refreshConfig(getLayout(_currentTextLayout));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -45,14 +45,14 @@ public class Keyboard2View extends View
|
|||||||
_vibratorService = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);
|
_vibratorService = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);
|
||||||
_handler = new Handler(this);
|
_handler = new Handler(this);
|
||||||
_theme = new Theme(getContext(), attrs);
|
_theme = new Theme(getContext(), attrs);
|
||||||
refreshConfig(((Keyboard2)context).getConfig(), null);
|
_config = Config.globalConfig();
|
||||||
|
refreshConfig(null);
|
||||||
setOnTouchListener(this);
|
setOnTouchListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Internally calls [reset()]. */
|
/* Internally calls [reset()]. */
|
||||||
public void refreshConfig(Config config, KeyboardData kw)
|
public void refreshConfig(KeyboardData kw)
|
||||||
{
|
{
|
||||||
_config = config;
|
|
||||||
if (kw != null)
|
if (kw != null)
|
||||||
setKeyboard(kw); // handle layout options then calls reset().
|
setKeyboard(kw); // handle layout options then calls reset().
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user