abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2
diff options
context:
space:
mode:
Diffstat (limited to 'srcs/juloo.keyboard2')
-rw-r--r--srcs/juloo.keyboard2/Config.java118
-rw-r--r--srcs/juloo.keyboard2/Emoji.java34
-rw-r--r--srcs/juloo.keyboard2/EmojiGridView.java296
-rw-r--r--srcs/juloo.keyboard2/EmojiKeyButton.java32
-rw-r--r--srcs/juloo.keyboard2/EmojiTypeButton.java34
-rw-r--r--srcs/juloo.keyboard2/KeyValue.java22
-rw-r--r--srcs/juloo.keyboard2/Keyboard2.java230
-rw-r--r--srcs/juloo.keyboard2/Keyboard2View.java596
-rw-r--r--srcs/juloo.keyboard2/KeyboardData.java98
-rw-r--r--srcs/juloo.keyboard2/SettingsActivity.java12
10 files changed, 736 insertions, 736 deletions
diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java
index 8c6a46a..7f1b395 100644
--- a/srcs/juloo.keyboard2/Config.java
+++ b/srcs/juloo.keyboard2/Config.java
@@ -7,25 +7,25 @@ import android.util.TypedValue;
class Config
{
- private Keyboard2 _context;
+ private Keyboard2 _context;
// From resources
- public final float marginTop;
- public final float keyPadding;
- public final float keyVerticalInterval;
- public final float keyHorizontalInterval;
- public final float keyRound;
+ public final float marginTop;
+ public final float keyPadding;
+ public final float keyVerticalInterval;
+ public final float keyHorizontalInterval;
+ public final float keyRound;
// From preferences
public int layout; // Or '-1' for the system defaults
- public float subValueDist;
- public boolean vibrateEnabled;
- public long vibrateDuration;
- public long longPressTimeout;
- public long longPressInterval;
- public float marginBottom;
- public float keyHeight;
- public float horizontalMargin;
+ public float subValueDist;
+ public boolean vibrateEnabled;
+ public long vibrateDuration;
+ public long longPressTimeout;
+ public long longPressInterval;
+ public float marginBottom;
+ public float keyHeight;
+ public float horizontalMargin;
public boolean preciseRepeat;
public float characterSize; // Ratio
public int accents; // Values are R.values.pref_accents_v_*
@@ -34,67 +34,67 @@ class Config
public boolean shouldOfferSwitchingToNextInputMethod;
public int accent_flags_to_remove;
- public Config(Keyboard2 context)
- {
- Resources res = context.getResources();
+ public Config(Keyboard2 context)
+ {
+ Resources res = context.getResources();
- _context = context;
- // static values
- marginTop = res.getDimension(R.dimen.margin_top);
- keyPadding = res.getDimension(R.dimen.key_padding);
- keyVerticalInterval = res.getDimension(R.dimen.key_vertical_interval);
- keyHorizontalInterval = res.getDimension(R.dimen.key_horizontal_interval);
- keyRound = res.getDimension(R.dimen.key_round);
- // default values
+ _context = context;
+ // static values
+ marginTop = res.getDimension(R.dimen.margin_top);
+ keyPadding = res.getDimension(R.dimen.key_padding);
+ keyVerticalInterval = res.getDimension(R.dimen.key_vertical_interval);
+ keyHorizontalInterval = res.getDimension(R.dimen.key_horizontal_interval);
+ keyRound = res.getDimension(R.dimen.key_round);
+ // default values
layout = -1;
- subValueDist = 10f;
- vibrateEnabled = true;
- vibrateDuration = 20;
- longPressTimeout = 600;
- longPressInterval = 65;
- marginBottom = res.getDimension(R.dimen.margin_bottom);
- keyHeight = res.getDimension(R.dimen.key_height);
- horizontalMargin = res.getDimension(R.dimen.horizontal_margin);
+ subValueDist = 10f;
+ vibrateEnabled = true;
+ vibrateDuration = 20;
+ longPressTimeout = 600;
+ longPressInterval = 65;
+ marginBottom = res.getDimension(R.dimen.margin_bottom);
+ keyHeight = res.getDimension(R.dimen.key_height);
+ horizontalMargin = res.getDimension(R.dimen.horizontal_margin);
preciseRepeat = true;
characterSize = 1.f;
accents = 1;
- // from prefs
- refresh();
+ // from prefs
+ refresh();
// initialized later
shouldOfferSwitchingToNextInputMethod = false;
accent_flags_to_remove = 0;
- }
+ }
- /*
- ** Reload prefs
- */
- public void refresh()
- {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(_context);
+ /*
+ ** Reload prefs
+ */
+ public void refresh()
+ {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(_context);
layout = layoutId_of_string(prefs.getString("layout", "system"));
- subValueDist = prefs.getFloat("sub_value_dist", subValueDist);
- vibrateEnabled = prefs.getBoolean("vibrate_enabled", vibrateEnabled);
- vibrateDuration = prefs.getInt("vibrate_duration", (int)vibrateDuration);
- longPressTimeout = prefs.getInt("longpress_timeout", (int)longPressTimeout);
- longPressInterval = prefs.getInt("longpress_interval", (int)longPressInterval);
- marginBottom = getDipPref(prefs, "margin_bottom", marginBottom);
- keyHeight = getDipPref(prefs, "key_height", keyHeight);
- horizontalMargin = getDipPref(prefs, "horizontal_margin", horizontalMargin);
+ subValueDist = prefs.getFloat("sub_value_dist", subValueDist);
+ vibrateEnabled = prefs.getBoolean("vibrate_enabled", vibrateEnabled);
+ vibrateDuration = prefs.getInt("vibrate_duration", (int)vibrateDuration);
+ longPressTimeout = prefs.getInt("longpress_timeout", (int)longPressTimeout);
+ longPressInterval = prefs.getInt("longpress_interval", (int)longPressInterval);
+ marginBottom = getDipPref(prefs, "margin_bottom", marginBottom);
+ keyHeight = getDipPref(prefs, "key_height", keyHeight);
+ horizontalMargin = getDipPref(prefs, "horizontal_margin", horizontalMargin);
preciseRepeat = prefs.getBoolean("precise_repeat", preciseRepeat);
characterSize = prefs.getFloat("character_size", characterSize);
accents = Integer.valueOf(prefs.getString("accents", "1"));
- }
+ }
- private float getDipPref(SharedPreferences prefs, String pref_name, float def)
- {
- int value = prefs.getInt(pref_name, -1);
+ private float getDipPref(SharedPreferences prefs, String pref_name, float def)
+ {
+ int value = prefs.getInt(pref_name, -1);
- if (value < 0)
- return (def);
- return (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value,
- _context.getResources().getDisplayMetrics()));
- }
+ if (value < 0)
+ return (def);
+ return (TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value,
+ _context.getResources().getDisplayMetrics()));
+ }
public static int layoutId_of_string(String name)
{
diff --git a/srcs/juloo.keyboard2/Emoji.java b/srcs/juloo.keyboard2/Emoji.java
index 8f563cb..e8ee8a1 100644
--- a/srcs/juloo.keyboard2/Emoji.java
+++ b/srcs/juloo.keyboard2/Emoji.java
@@ -10,35 +10,35 @@ import java.util.HashMap;
public class Emoji extends KeyValue
{
- private final String _desc;
+ private final String _desc;
private static HashMap<String, Emoji> emojis_by_name = new HashMap<String, Emoji>();
- protected Emoji(String name, String bytecode, String desc)
- {
- super(name, bytecode, CHAR_NONE, EVENT_NONE, 0);
- _desc = desc;
+ protected Emoji(String name, String bytecode, String desc)
+ {
+ super(name, bytecode, CHAR_NONE, EVENT_NONE, 0);
+ _desc = desc;
emojis_by_name.put(name, this);
- }
+ }
- public String getDescription()
- {
- return (_desc);
- }
+ public String getDescription()
+ {
+ return (_desc);
+ }
public static int num_groups = 0;
private static Emoji[][] emojis_by_group = new Emoji[][]{};
- public static Emoji getEmojiByName(String name)
- {
+ public static Emoji getEmojiByName(String name)
+ {
return emojis_by_name.get(name);
- }
+ }
- public static Emoji[] getEmojisByGroup(int group_id)
- {
- return (emojis_by_group[group_id]);
- }
+ public static Emoji[] getEmojisByGroup(int group_id)
+ {
+ return (emojis_by_group[group_id]);
+ }
/* Read the list of emojis from a raw file. Will initialize only once. */
public static void init(Resources res)
diff --git a/srcs/juloo.keyboard2/EmojiGridView.java b/srcs/juloo.keyboard2/EmojiGridView.java
index 58a0911..4f7ca05 100644
--- a/srcs/juloo.keyboard2/EmojiGridView.java
+++ b/srcs/juloo.keyboard2/EmojiGridView.java
@@ -19,158 +19,158 @@ import java.util.Set;
import java.util.HashSet;
public class EmojiGridView extends GridView
- implements GridView.OnItemClickListener
+ implements GridView.OnItemClickListener
{
- public static final int GROUP_LAST_USE = -1;
+ public static final int GROUP_LAST_USE = -1;
- public static final int COLUMN_WIDTH = 192;
- public static final float EMOJI_SIZE = 32.f;
+ public static final int COLUMN_WIDTH = 192;
+ public static final float EMOJI_SIZE = 32.f;
- private static final String LAST_USE_PREF = "emoji_last_use";
+ private static final String LAST_USE_PREF = "emoji_last_use";
- private Emoji[] _emojiArray;
- private HashMap<Emoji, Integer> _lastUsed;
+ private Emoji[] _emojiArray;
+ private HashMap<Emoji, Integer> _lastUsed;
- /*
- ** TODO: adapt column width and emoji size
- ** TODO: use ArraySet instead of Emoji[]
- */
- public EmojiGridView(Context context, AttributeSet attrs)
- {
- super(context, attrs);
+ /*
+ ** TODO: adapt column width and emoji size
+ ** TODO: use ArraySet instead of Emoji[]
+ */
+ public EmojiGridView(Context context, AttributeSet attrs)
+ {
+ super(context, attrs);
Emoji.init(context.getResources());
- setOnItemClickListener(this);
- setColumnWidth(COLUMN_WIDTH);
- loadLastUsed();
- setEmojiGroup((_lastUsed.size() == 0) ? 0 : GROUP_LAST_USE);
- }
-
- public void setEmojiGroup(int group)
- {
- _emojiArray = (group == GROUP_LAST_USE) ? getLastEmojis() : Emoji.getEmojisByGroup(group);
- setAdapter(new EmojiViewAdpater((Keyboard2)getContext(), _emojiArray));
- }
-
- public void onItemClick(AdapterView<?> parent, View v, int pos, long id)
- {
- Keyboard2 main = (Keyboard2)getContext();
- Integer used = _lastUsed.get(_emojiArray[pos]);
-
- _lastUsed.put(_emojiArray[pos], (used == null) ? 1 : used.intValue() + 1);
- main.handleKeyUp(_emojiArray[pos], 0);
- saveLastUsed(); // TODO: opti
- }
-
- @Override
- public void onMeasure(int wSpec, int hSpec)
- {
- super.onMeasure(wSpec, hSpec);
- setNumColumns(getMeasuredWidth() / COLUMN_WIDTH);
- }
-
- private Emoji[] getLastEmojis()
- {
- final HashMap<Emoji, Integer> map = _lastUsed;
- Emoji[] array = new Emoji[map.size()];
-
- map.keySet().toArray(array);
- Arrays.sort(array, 0, array.length, new Comparator<Emoji>()
- {
- public int compare(Emoji a, Emoji b)
- {
- return (map.get(b).intValue() - map.get(a).intValue());
- }
- });
- return (array);
- }
-
- private void saveLastUsed()
- {
- SharedPreferences.Editor edit = PreferenceManager.getDefaultSharedPreferences(getContext()).edit();
- HashSet<String> set = new HashSet<String>();
-
- for (Emoji emoji : _lastUsed.keySet())
- set.add(String.valueOf(_lastUsed.get(emoji)) + "-" + emoji.name);
- edit.putStringSet(LAST_USE_PREF, set);
- edit.apply();
- }
-
- private void loadLastUsed()
- {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
- Set<String> lastUseSet = prefs.getStringSet(LAST_USE_PREF, null);
-
- _lastUsed = new HashMap<Emoji, Integer>();
- if (lastUseSet != null)
- for (String emojiData : lastUseSet)
- {
- String[] data = emojiData.split("-", 2);
- Emoji emoji;
-
- if (data.length != 2)
- continue ;
- emoji = Emoji.getEmojiByName(data[1]);
- if (emoji == null)
- continue ;
- _lastUsed.put(emoji, Integer.valueOf(data[0]));
- }
- }
-
- private static class EmojiView extends TextView
- {
- public EmojiView(Keyboard2 context)
- {
- super(context);
- setTextSize(EMOJI_SIZE);
- setGravity(Gravity.CENTER);
- setBackgroundColor(0x0);
- setTextColor(getResources().getColor(R.color.emoji_color));
- setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.WRAP_CONTENT, GridView.LayoutParams.WRAP_CONTENT));
- }
-
- public void setEmoji(Emoji emoji)
- {
- setText(emoji.symbol);
- }
- }
-
- private static class EmojiViewAdpater extends BaseAdapter
- {
- private Keyboard2 _main;
-
- private Emoji[] _emojiArray;
-
- public EmojiViewAdpater(Keyboard2 main, Emoji[] emojiArray)
- {
- _main = main;
- _emojiArray = emojiArray;
- }
-
- public int getCount()
- {
- if (_emojiArray == null)
- return (0);
- return (_emojiArray.length);
- }
-
- public Object getItem(int pos)
- {
- return (_emojiArray[pos]);
- }
-
- public long getItemId(int pos)
- {
- return (pos);
- }
-
- public View getView(int pos, View convertView, ViewGroup parent)
- {
- EmojiView view = (EmojiView)convertView;
-
- if (view == null)
- view = new EmojiView(_main);
- view.setEmoji(_emojiArray[pos]);
- return (view);
- }
- }
+ setOnItemClickListener(this);
+ setColumnWidth(COLUMN_WIDTH);
+ loadLastUsed();
+ setEmojiGroup((_lastUsed.size() == 0) ? 0 : GROUP_LAST_USE);
+ }
+
+ public void setEmojiGroup(int group)
+ {
+ _emojiArray = (group == GROUP_LAST_USE) ? getLastEmojis() : Emoji.getEmojisByGroup(group);
+ setAdapter(new EmojiViewAdpater((Keyboard2)getContext(), _emojiArray));
+ }
+
+ public void onItemClick(AdapterView<?> parent, View v, int pos, long id)
+ {
+ Keyboard2 main = (Keyboard2)getContext();
+ Integer used = _lastUsed.get(_emojiArray[pos]);
+
+ _lastUsed.put(_emojiArray[pos], (used == null) ? 1 : used.intValue() + 1);
+ main.handleKeyUp(_emojiArray[pos], 0);
+ saveLastUsed(); // TODO: opti
+ }
+
+ @Override
+ public void onMeasure(int wSpec, int hSpec)
+ {
+ super.onMeasure(wSpec, hSpec);
+ setNumColumns(getMeasuredWidth() / COLUMN_WIDTH);
+ }
+
+ private Emoji[] getLastEmojis()
+ {
+ final HashMap<Emoji, Integer> map = _lastUsed;
+ Emoji[] array = new Emoji[map.size()];
+
+ map.keySet().toArray(array);
+ Arrays.sort(array, 0, array.length, new Comparator<Emoji>()
+ {
+ public int compare(Emoji a, Emoji b)
+ {
+ return (map.get(b).intValue() - map.get(a).intValue());
+ }
+ });
+ return (array);
+ }
+
+ private void saveLastUsed()
+ {
+ SharedPreferences.Editor edit = PreferenceManager.getDefaultSharedPreferences(getContext()).edit();
+ HashSet<String> set = new HashSet<String>();
+
+ for (Emoji emoji : _lastUsed.keySet())
+ set.add(String.valueOf(_lastUsed.get(emoji)) + "-" + emoji.name);
+ edit.putStringSet(LAST_USE_PREF, set);
+ edit.apply();
+ }
+
+ private void loadLastUsed()
+ {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
+ Set<String> lastUseSet = prefs.getStringSet(LAST_USE_PREF, null);
+
+ _lastUsed = new HashMap<Emoji, Integer>();
+ if (lastUseSet != null)
+ for (String emojiData : lastUseSet)
+ {
+ String[] data = emojiData.split("-", 2);
+ Emoji emoji;
+
+ if (data.length != 2)
+ continue ;
+ emoji = Emoji.getEmojiByName(data[1]);
+ if (emoji == null)
+ continue ;
+ _lastUsed.put(emoji, Integer.valueOf(data[0]));
+ }
+ }
+
+ private static class EmojiView extends TextView
+ {
+ public EmojiView(Keyboard2 context)
+ {
+ super(context);
+ setTextSize(EMOJI_SIZE);
+ setGravity(Gravity.CENTER);
+ setBackgroundColor(0x0);
+ setTextColor(getResources().getColor(R.color.emoji_color));
+ setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.WRAP_CONTENT, GridView.LayoutParams.WRAP_CONTENT));
+ }
+
+ public void setEmoji(Emoji emoji)
+ {
+ setText(emoji.symbol);
+ }
+ }
+
+ private static class EmojiViewAdpater extends BaseAdapter
+ {
+ private Keyboard2 _main;
+
+ private Emoji[] _emojiArray;
+
+ public EmojiViewAdpater(Keyboard2 main, Emoji[] emojiArray)
+ {
+ _main = main;
+ _emojiArray = emojiArray;
+ }
+
+ public int getCount()
+ {
+ if (_emojiArray == null)
+ return (0);
+ return (_emojiArray.length);
+ }
+
+ public Object getItem(int pos)
+ {
+ return (_emojiArray[pos]);
+ }
+
+ public long getItemId(int pos)
+ {
+ return (pos);
+ }
+
+ public View getView(int pos, View convertView, ViewGroup parent)
+ {
+ EmojiView view = (EmojiView)convertView;
+
+ if (view == null)
+ view = new EmojiView(_main);
+ view.setEmoji(_emojiArray[pos]);
+ return (view);
+ }
+ }
}
diff --git a/srcs/juloo.keyboard2/EmojiKeyButton.java b/srcs/juloo.keyboard2/EmojiKeyButton.java
index de9f206..3f86b1b 100644
--- a/srcs/juloo.keyboard2/EmojiKeyButton.java
+++ b/srcs/juloo.keyboard2/EmojiKeyButton.java
@@ -6,24 +6,24 @@ import android.view.View;
import android.widget.Button;
public class EmojiKeyButton extends Button
- implements View.OnClickListener
+ implements View.OnClickListener
{
- KeyValue _key;
+ KeyValue _key;
- public EmojiKeyButton(Context context, AttributeSet attrs)
- {
- super(context, attrs);
- setOnClickListener(this);
- _key = KeyValue.getKeyByName(attrs.getAttributeValue(null, "key"));
- setText(_key.symbol);
- if ((_key.flags & KeyValue.FLAG_KEY_FONT) != 0)
- setTypeface(((Keyboard2)context).getSpecialKeyFont());
- }
+ public EmojiKeyButton(Context context, AttributeSet attrs)
+ {
+ super(context, attrs);
+ setOnClickListener(this);
+ _key = KeyValue.getKeyByName(attrs.getAttributeValue(null, "key"));
+ setText(_key.symbol);
+ if ((_key.flags & KeyValue.FLAG_KEY_FONT) != 0)
+ setTypeface(((Keyboard2)context).getSpecialKeyFont());
+ }
- public void onClick(View v)
- {
- Keyboard2 main = (Keyboard2)getContext();
+ public void onClick(View v)
+ {
+ Keyboard2 main = (Keyboard2)getContext();
- main.handleKeyUp(_key, 0);
- }
+ main.handleKeyUp(_key, 0);
+ }
}
diff --git a/srcs/juloo.keyboard2/EmojiTypeButton.java b/srcs/juloo.keyboard2/EmojiTypeButton.java
index a36af8e..cd12325 100644
--- a/srcs/juloo.keyboard2/EmojiTypeButton.java
+++ b/srcs/juloo.keyboard2/EmojiTypeButton.java
@@ -10,28 +10,28 @@ import android.widget.Button;
/* Emoji "types" are groups. This class is misnamed. */
public class EmojiTypeButton extends Button
- implements View.OnTouchListener
+ implements View.OnTouchListener
{
- private int _emojiType;
+ private int _emojiType;
static private final int DEFAULT_GROUP = 0;
- public EmojiTypeButton(Context context, int group_id, String symbol)
- {
- super(new ContextThemeWrapper(context, R.style.emojiTypeButton), null, 0);
+ public EmojiTypeButton(Context context, int group_id, String symbol)
+ {
+ super(new ContextThemeWrapper(context, R.style.emojiTypeButton), null, 0);
_emojiType = group_id;
- setText(symbol);
- setOnTouchListener(this);
- }
+ setText(symbol);
+ setOnTouchListener(this);
+ }
- public boolean onTouch(View view, MotionEvent event)
- {
- EmojiGridView emojiGrid;
+ public boolean onTouch(View view, MotionEvent event)
+ {
+ EmojiGridView emojiGrid;
- if (event.getAction() != MotionEvent.ACTION_DOWN)
- return (false);
- emojiGrid = (EmojiGridView)((ViewGroup)(getParent().getParent())).findViewById(R.id.emoji_grid);
- emojiGrid.setEmojiGroup(_emojiType);
- return (true);
- }
+ if (event.getAction() != MotionEvent.ACTION_DOWN)
+ return (false);
+ emojiGrid = (EmojiGridView)((ViewGroup)(getParent().getParent())).findViewById(R.id.emoji_grid);
+ emojiGrid.setEmojiGroup(_emojiType);
+ return (true);
+ }
}
diff --git a/srcs/juloo.keyboard2/KeyValue.java b/srcs/juloo.keyboard2/KeyValue.java
index 6677248..80cb744 100644
--- a/srcs/juloo.keyboard2/KeyValue.java
+++ b/srcs/juloo.keyboard2/KeyValue.java
@@ -6,14 +6,14 @@ import java.util.HashMap;
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 int EVENT_SWITCH_EMOJI = -5;
- public static final int EVENT_SWITCH_BACK_EMOJI = -6;
- public static final int EVENT_CHANGE_METHOD = -7;
- public static final char CHAR_NONE = '\0';
+ 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 int EVENT_SWITCH_EMOJI = -5;
+ public static final int EVENT_SWITCH_BACK_EMOJI = -6;
+ public static final int EVENT_CHANGE_METHOD = -7;
+ public static final char CHAR_NONE = '\0';
// Behavior flags
public static final int FLAG_KEEP_ON = 1;
@@ -75,7 +75,7 @@ class KeyValue
flags = f;
}
- public static KeyValue getKeyByName(String name)
+ public static KeyValue getKeyByName(String name)
{
if (name == null)
return null;
@@ -222,7 +222,7 @@ class KeyValue
addEventKey("f9", "F9", KeyEvent.KEYCODE_F9);
addEventKey("f10", "F10", KeyEvent.KEYCODE_F10);
- addKey("tab", "↹", '\t', KeyEvent.KEYCODE_TAB, 0);
- addKey("space", " ", ' ', KeyEvent.KEYCODE_SPACE, 0);
+ addKey("tab", "↹", '\t', KeyEvent.KEYCODE_TAB, 0);
+ addKey("space", " ", ' ', KeyEvent.KEYCODE_SPACE, 0);
}
}
diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java
index 58e71a3..b1bafbd 100644
--- a/srcs/juloo.keyboard2/Keyboard2.java
+++ b/srcs/juloo.keyboard2/Keyboard2.java
@@ -25,14 +25,14 @@ import java.util.Locale;
import java.util.Map;
public class Keyboard2 extends InputMethodService
- implements SharedPreferences.OnSharedPreferenceChangeListener
+ implements SharedPreferences.OnSharedPreferenceChangeListener
{
- private Keyboard2View _keyboardView;
+ private Keyboard2View _keyboardView;
private int _currentTextLayout;
- private ViewGroup _emojiPane = null;
- private Typeface _specialKeyFont = null;
+ private ViewGroup _emojiPane = null;
+ private Typeface _specialKeyFont = null;
- private Config _config;
+ private Config _config;
private Map<Integer, KeyboardData> _layoutCache = new HashMap<Integer, KeyboardData>();
@@ -47,27 +47,27 @@ public class Keyboard2 extends InputMethodService
return l;
}
- @Override
- public void onCreate()
- {
- super.onCreate();
- _specialKeyFont = Typeface.createFromAsset(getAssets(), "fonts/keys.ttf");
- PreferenceManager.setDefaultValues(this, R.xml.settings, false);
- PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
- _config = new Config(this);
- _keyboardView = (Keyboard2View)getLayoutInflater().inflate(R.layout.keyboard, null);
- _keyboardView.reset();
- }
+ @Override
+ public void onCreate()
+ {
+ super.onCreate();
+ _specialKeyFont = Typeface.createFromAsset(getAssets(), "fonts/keys.ttf");
+ PreferenceManager.setDefaultValues(this, R.xml.settings, false);
+ PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
+ _config = new Config(this);
+ _keyboardView = (Keyboard2View)getLayoutInflater().inflate(R.layout.keyboard, null);
+ _keyboardView.reset();
+ }
- public Config getConfig()
- {
- return (_config);
- }
+ public Config getConfig()
+ {
+ return (_config);
+ }
- public Typeface getSpecialKeyFont()
- {
- return (_specialKeyFont);
- }
+ public Typeface getSpecialKeyFont()
+ {
+ return (_specialKeyFont);
+ }
private List<InputMethodSubtype> getEnabledSubtypes(InputMethodManager imm)
{
@@ -148,26 +148,26 @@ public class Keyboard2 extends InputMethodService
}
}
- @Override
- public View onCreateInputView()
- {
- ViewGroup parent = (ViewGroup)_keyboardView.getParent();
+ @Override
+ public View onCreateInputView()
+ {
+ ViewGroup parent = (ViewGroup)_keyboardView.getParent();
- if (parent != null)
- parent.removeView(_keyboardView);
- return (_keyboardView);
- }
+ if (parent != null)
+ parent.removeView(_keyboardView);
+ return (_keyboardView);
+ }
- @Override
- public void onStartInputView(EditorInfo info, boolean restarting)
- {
+ @Override
+ public void onStartInputView(EditorInfo info, boolean restarting)
+ {
refreshSubtypeImm();
- if ((info.inputType & InputType.TYPE_CLASS_NUMBER) != 0)
+ if ((info.inputType & InputType.TYPE_CLASS_NUMBER) != 0)
_keyboardView.setKeyboard(getLayout(R.xml.numeric));
else
_keyboardView.setKeyboard(getLayout(_currentTextLayout));
_keyboardView.reset(); // Layout might need to change due to rotation
- }
+ }
@Override
public void onCurrentInputMethodSubtypeChanged(InputMethodSubtype subtype)
@@ -183,92 +183,92 @@ public class Keyboard2 extends InputMethodService
_keyboardView.reset();
}
- @Override
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
- {
- _config.refresh();
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
+ {
+ _config.refresh();
refreshSubtypeImm();
- _keyboardView.refreshConfig(_config, getLayout(_currentTextLayout));
- }
+ _keyboardView.refreshConfig(_config, getLayout(_currentTextLayout));
+ }
- @Override
- public void onConfigurationChanged(Configuration newConfig)
- {
- _keyboardView.reset();
- }
+ @Override
+ public void onConfigurationChanged(Configuration newConfig)
+ {
+ _keyboardView.reset();
+ }
- public void handleKeyUp(KeyValue key, int flags)
- {
- if (getCurrentInputConnection() == null)
- return ;
+ public void handleKeyUp(KeyValue key, int flags)
+ {
+ if (getCurrentInputConnection() == null)
+ return ;
key = KeyModifier.handleFlags(key, flags);
- if (key.eventCode == KeyValue.EVENT_CONFIG)
- {
- Intent intent = new Intent(this, SettingsActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
- }
- else if (key.eventCode == KeyValue.EVENT_SWITCH_TEXT)
- _keyboardView.setKeyboard(getLayout(_currentTextLayout));
- else if (key.eventCode == KeyValue.EVENT_SWITCH_NUMERIC)
- _keyboardView.setKeyboard(getLayout(R.xml.numeric));
- else if (key.eventCode == KeyValue.EVENT_SWITCH_EMOJI)
- {
- if (_emojiPane == null)
- _emojiPane = (ViewGroup)getLayoutInflater().inflate(R.layout.emoji_pane, null);
- setInputView(_emojiPane);
- }
- else if (key.eventCode == KeyValue.EVENT_SWITCH_BACK_EMOJI)
- setInputView(_keyboardView);
- else if (key.eventCode == KeyValue.EVENT_CHANGE_METHOD)
- {
- InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
- imm.switchToNextInputMethod(getConnectionToken(), false);
- }
- else if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0)
- handleMetaKeyUp(key, flags);
- // else if (eventCode == KeyEvent.KEYCODE_DEL)
- // handleDelKey(1, 0);
- // else if (eventCode == KeyEvent.KEYCODE_FORWARD_DEL)
- // handleDelKey(0, 1);
- else if (key.char_ == KeyValue.CHAR_NONE)
- {
- if (key.eventCode != KeyValue.EVENT_NONE)
- handleMetaKeyUp(key, flags);
- else
- getCurrentInputConnection().commitText(key.symbol, 1);
- }
- else
- sendKeyChar(key.char_);
- }
+ if (key.eventCode == KeyValue.EVENT_CONFIG)
+ {
+ Intent intent = new Intent(this, SettingsActivity.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ }
+ else if (key.eventCode == KeyValue.EVENT_SWITCH_TEXT)
+ _keyboardView.setKeyboard(getLayout(_currentTextLayout));
+ else if (key.eventCode == KeyValue.EVENT_SWITCH_NUMERIC)
+ _keyboardView.setKeyboard(getLayout(R.xml.numeric));
+ else if (key.eventCode == KeyValue.EVENT_SWITCH_EMOJI)
+ {
+ if (_emojiPane == null)
+ _emojiPane = (ViewGroup)getLayoutInflater().inflate(R.layout.emoji_pane, null);
+ setInputView(_emojiPane);
+ }
+ else if (key.eventCode == KeyValue.EVENT_SWITCH_BACK_EMOJI)
+ setInputView(_keyboardView);
+ else if (key.eventCode == KeyValue.EVENT_CHANGE_METHOD)
+ {
+ InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
+ imm.switchToNextInputMethod(getConnectionToken(), false);
+ }
+ else if ((flags & (KeyValue.FLAG_CTRL | KeyValue.FLAG_ALT)) != 0)
+ handleMetaKeyUp(key, flags);
+ // else if (eventCode == KeyEvent.KEYCODE_DEL)
+ // handleDelKey(1, 0);
+ // else if (eventCode == KeyEvent.KEYCODE_FORWARD_DEL)
+ // handleDelKey(0, 1);
+ else if (key.char_ == KeyValue.CHAR_NONE)
+ {
+ if (key.eventCode != KeyValue.EVENT_NONE)
+ handleMetaKeyUp(key, flags);
+ else
+ getCurrentInputConnection().commitText(key.symbol, 1);
+ }
+ else
+ sendKeyChar(key.char_);
+ }
- // private void handleDelKey(int before, int after)
- // {
- // CharSequence selection = getCurrentInputConnection().getSelectedText(0);
+ // private void handleDelKey(int before, int after)
+ // {
+ // CharSequence selection = getCurrentInputConnection().getSelectedText(0);
- // if (selection != null && selection.length() > 0)
- // getCurrentInputConnection().commitText("", 1);
- // else
- // getCurrentInputConnection().deleteSurroundingText(before, after);
- // }
+ // if (selection != null && selection.length() > 0)
+ // getCurrentInputConnection().commitText("", 1);
+ // else
+ // getCurrentInputConnection().deleteSurroundingText(before, after);
+ // }
- private void handleMetaKeyUp(KeyValue key, int flags)
- {
- int metaState = 0;
- KeyEvent event;
+ private void handleMetaKeyUp(KeyValue key, int flags)
+ {
+ int metaState = 0;
+ KeyEvent event;
- if (key.eventCode == KeyValue.EVENT_NONE)
- return ;
- if ((flags & KeyValue.FLAG_CTRL) != 0)
- metaState |= KeyEvent.META_CTRL_LEFT_ON | KeyEvent.META_CTRL_ON;
- if ((flags & KeyValue.FLAG_ALT) != 0)
- metaState |= KeyEvent.META_ALT_LEFT_ON | KeyEvent.META_ALT_ON;
- if ((flags & KeyValue.FLAG_SHIFT) != 0)
- metaState |= KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ON;
- event = new KeyEvent(1, 1, KeyEvent.ACTION_DOWN, key.eventCode, 0, metaState);
- getCurrentInputConnection().sendKeyEvent(event);
- getCurrentInputConnection().sendKeyEvent(KeyEvent.changeAction(event, KeyEvent.ACTION_UP));
- }
+ if (key.eventCode == KeyValue.EVENT_NONE)
+ return ;
+ if ((flags & KeyValue.FLAG_CTRL) != 0)
+ metaState |= KeyEvent.META_CTRL_LEFT_ON | KeyEvent.META_CTRL_ON;
+ if ((flags & KeyValue.FLAG_ALT) != 0)
+ metaState |= KeyEvent.META_ALT_LEFT_ON | KeyEvent.META_ALT_ON;
+ if ((flags & KeyValue.FLAG_SHIFT) != 0)
+ metaState |= KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ON;
+ event = new KeyEvent(1, 1, KeyEvent.ACTION_DOWN, key.eventCode, 0, metaState);
+ getCurrentInputConnection().sendKeyEvent(event);
+ getCurrentInputConnection().sendKeyEvent(KeyEvent.changeAction(event, KeyEvent.ACTION_UP));
+ }
private IBinder getConnectionToken()
{
diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java
index 5cbdfd0..c4f8462 100644
--- a/srcs/juloo.keyboard2/Keyboard2View.java
+++ b/srcs/juloo.keyboard2/Keyboard2View.java
@@ -17,32 +17,32 @@ import android.widget.PopupWindow;
import java.util.ArrayList;
public class Keyboard2View extends View
- implements View.OnTouchListener, Handler.Callback
+ implements View.OnTouchListener, Handler.Callback
{
- private static final long VIBRATE_MIN_INTERVAL = 100;
+ private static final long VIBRATE_MIN_INTERVAL = 100;
- private KeyboardData _keyboard;
+ private KeyboardData _keyboard;
- private ArrayList<KeyDown> _downKeys = new ArrayList<KeyDown>();
+ private ArrayList<KeyDown> _downKeys = new ArrayList<KeyDown>();
- private int _flags = 0;
+ private int _flags = 0;
- private Vibrator _vibratorService;
- private long _lastVibration = 0;
+ private Vibrator _vibratorService;
+ private long _lastVibration = 0;
- private Handler _handler;
- private static int _currentWhat = 0;
+ private Handler _handler;
+ private static int _currentWhat = 0;
- private Config _config;
+ private Config _config;
- private float _keyWidth;
+ private float _keyWidth;
- private Paint _keyBgPaint = new Paint();
- private Paint _keyDownBgPaint = new Paint();
- private Paint _keyLabelPaint;
- private Paint _keySubLabelPaint;
- private Paint _specialKeyLabelPaint;
- private Paint _specialKeySubLabelPaint;
+ private Paint _keyBgPaint = new Paint();
+ private Paint _keyDownBgPaint = new Paint();
+ private Paint _keyLabelPaint;
+ private Paint _keySubLabelPaint;
+ private Paint _specialKeyLabelPaint;
+ private Paint _specialKeySubLabelPaint;
private int _lockedColor;
private int _activatedColor;
private int _labelColor;
@@ -50,49 +50,49 @@ public class Keyboard2View extends View
private float _labelTextSize;
private float _sublabelTextSize;
- private static RectF _tmpRect = new RectF();
+ private static RectF _tmpRect = new RectF();
- public Keyboard2View(Context context, AttributeSet attrs)
- {
- super(context, attrs);
- _vibratorService = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);
- _handler = new Handler(this);
+ public Keyboard2View(Context context, AttributeSet attrs)
+ {
+ super(context, attrs);
+ _vibratorService = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);
+ _handler = new Handler(this);
refreshConfig(((Keyboard2)context).getConfig(), null);
- setOnTouchListener(this);
- }
+ setOnTouchListener(this);
+ }
/* Internally calls [reset()]. */
public void refreshConfig(Config config, KeyboardData kw)
{
Resources res = getResources();
- _config = config;
+ _config = config;
_lockedColor = res.getColor(R.color.key_label_locked);
_activatedColor = res.getColor(R.color.key_label_activated);
_labelColor = res.getColor(R.color.key_label);
_subLabelColor = res.getColor(R.color.key_sub_label);
_labelTextSize = res.getDimension(R.dimen.label_text_size) * config.characterSize;
_sublabelTextSize = res.getDimension(R.dimen.sublabel_text_size) * config.characterSize;
- _keyBgPaint.setColor(res.getColor(R.color.key_bg));
- _keyDownBgPaint.setColor(res.getColor(R.color.key_down_bg));
- _keyLabelPaint = initLabelPaint(Paint.Align.CENTER, null);
- _keySubLabelPaint = initLabelPaint(Paint.Align.LEFT, null);
- Typeface specialKeysFont = ((Keyboard2)getContext()).getSpecialKeyFont();
- _specialKeyLabelPaint = initLabelPaint(Paint.Align.CENTER, specialKeysFont);
- _specialKeySubLabelPaint = initLabelPaint(Paint.Align.LEFT, specialKeysFont);
+ _keyBgPaint.setColor(res.getColor(R.color.key_bg));
+ _keyDownBgPaint.setColor(res.getColor(R.color.key_down_bg));
+ _keyLabelPaint = initLabelPaint(Paint.Align.CENTER, null);
+ _keySubLabelPaint = initLabelPaint(Paint.Align.LEFT, null);
+ Typeface specialKeysFont = ((Keyboard2)getContext()).getSpecialKeyFont();
+ _specialKeyLabelPaint = initLabelPaint(Paint.Align.CENTER, specialKeysFont);
+ _specialKeySubLabelPaint = initLabelPaint(Paint.Align.LEFT, specialKeysFont);
if (kw != null)
setKeyboard(kw); // handle layout options then calls reset().
}
- private Paint initLabelPaint(Paint.Align align, Typeface font)
- {
+ private Paint initLabelPaint(Paint.Align align, Typeface font)
+ {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setTextAlign(align);
if (font != null)
paint.setTypeface(font);
- return (paint);
- }
+ return (paint);
+ }
- public void setKeyboard(KeyboardData kw)
+ public void setKeyboard(KeyboardData kw)
{
if (!_config.shouldOfferSwitchingToNextInputMethod)
kw = kw.removeKeys(new KeyboardData.RemoveKeysByEvent(KeyValue.EVENT_CHANGE_METHOD));
@@ -102,155 +102,155 @@ public class Keyboard2View extends View
reset();
}
- public void reset()
- {
- _flags = 0;
- _downKeys.clear();
- requestLayout();
- invalidate();
- }
-
- @Override
- public boolean onTouch(View v, MotionEvent event)
- {
- float x;
- float y;
- float keyW;
- int p;
-
- switch (event.getActionMasked())
- {
- case MotionEvent.ACTION_UP:
- case MotionEvent.ACTION_POINTER_UP:
- onTouchUp(event.getPointerId(event.getActionIndex()));
- break ;
- case MotionEvent.ACTION_DOWN:
- case MotionEvent.ACTION_POINTER_DOWN:
- p = event.getActionIndex();
- onTouchDown(event.getX(p), event.getY(p), event.getPointerId(p));
- break ;
- case MotionEvent.ACTION_MOVE:
- for (p = 0; p < event.getPointerCount(); p++)
- onTouchMove(event.getX(p), event.getY(p), event.getPointerId(p));
- break ;
- default:
- return (false);
- }
- return (true);
- }
-
- private KeyDown getKeyDown(int pointerId)
- {
- for (KeyDown k : _downKeys)
- {
- if (k.pointerId == pointerId)
- return (k);
- }
- return (null);
- }
-
- private KeyDown getKeyDown(KeyboardData.Key key)
- {
- for (KeyDown k : _downKeys)
- {
- if (k.key == key)
- return (k);
- }
- return (null);
- }
-
- private KeyDown getKeyDown(KeyValue kv)
- {
- for (KeyDown k : _downKeys)
- {
- if (k.value == kv)
- return (k);
- }
- return (null);
- }
-
- private void onTouchMove(float moveX, float moveY, int pointerId)
- {
- KeyDown key = getKeyDown(pointerId);
- KeyValue newValue;
-
- if (key != null)
- {
- moveX -= key.downX;
- moveY -= key.downY;
+ public void reset()
+ {
+ _flags = 0;
+ _downKeys.clear();
+ requestLayout();
+ invalidate();
+ }
+
+ @Override
+ public boolean onTouch(View v, MotionEvent event)
+ {
+ float x;
+ float y;
+ float keyW;
+ int p;
+
+ switch (event.getActionMasked())
+ {
+ case MotionEvent.ACTION_UP:
+ case MotionEvent.ACTION_POINTER_UP:
+ onTouchUp(event.getPointerId(event.getActionIndex()));
+ break ;
+ case MotionEvent.ACTION_DOWN:
+ case MotionEvent.ACTION_POINTER_DOWN:
+ p = event.getActionIndex();
+ onTouchDown(event.getX(p), event.getY(p), event.getPointerId(p));
+ break ;
+ case MotionEvent.ACTION_MOVE:
+ for (p = 0; p < event.getPointerCount(); p++)
+ onTouchMove(event.getX(p), event.getY(p), event.getPointerId(p));
+ break ;
+ default:
+ return (false);
+ }
+ return (true);
+ }
+
+ private KeyDown getKeyDown(int pointerId)
+ {
+ for (KeyDown k : _downKeys)
+ {
+ if (k.pointerId == pointerId)
+ return (k);
+ }
+ return (null);
+ }
+
+ private KeyDown getKeyDown(KeyboardData.Key key)
+ {
+ for (KeyDown k : _downKeys)
+ {
+ if (k.key == key)
+ return (k);
+ }
+ return (null);
+ }
+
+ private KeyDown getKeyDown(KeyValue kv)
+ {
+ for (KeyDown k : _downKeys)
+ {
+ if (k.value == kv)
+ return (k);
+ }
+ return (null);
+ }
+
+ private void onTouchMove(float moveX, float moveY, int pointerId)
+ {
+ KeyDown key = getKeyDown(pointerId);
+ KeyValue newValue;
+
+ if (key != null)
+ {
+ moveX -= key.downX;
+ moveY -= key.downY;
float absDist = Math.abs(moveX) + Math.abs(moveY);
key.ptrDist = absDist;
- if (absDist < _config.subValueDist)
- newValue = key.key.key0;
- else if (moveX < 0)
- newValue = (moveY < 0) ? key.key.key1 : key.key.key3;
- else if (moveY < 0)
- newValue = key.key.key2;
- else
- newValue = key.key.key4;
- if (newValue != null && newValue != key.value)
- {
- if (key.timeoutWhat != -1)
- {
- _handler.removeMessages(key.timeoutWhat);
- if ((newValue.flags & KeyValue.FLAG_NOREPEAT) == 0)
- _handler.sendEmptyMessageDelayed(key.timeoutWhat, _config.longPressTimeout);
- }
- key.value = newValue;
- key.flags = newValue.flags;
- updateFlags();
- invalidate();
- handleKeyDown(newValue);
- }
- }
- }
-
- private void onTouchDown(float touchX, float touchY, int pointerId)
- {
- float y = _config.marginTop - _config.keyHeight;
- for (KeyboardData.Row row : _keyboard.rows)
- {
- y += _config.keyHeight;
- if (touchY < y || touchY >= (y + _config.keyHeight))
- continue ;
+ if (absDist < _config.subValueDist)
+ newValue = key.key.key0;
+ else if (moveX < 0)
+ newValue = (moveY < 0) ? key.key.key1 : key.key.key3;
+ else if (moveY < 0)
+ newValue = key.key.key2;
+ else
+ newValue = key.key.key4;
+ if (newValue != null && newValue != key.value)
+ {
+ if (key.timeoutWhat != -1)
+ {
+ _handler.removeMessages(key.timeoutWhat);
+ if ((newValue.flags & KeyValue.FLAG_NOREPEAT) == 0)
+ _handler.sendEmptyMessageDelayed(key.timeoutWhat, _config.longPressTimeout);
+ }
+ key.value = newValue;
+ key.flags = newValue.flags;
+ updateFlags();
+ invalidate();
+ handleKeyDown(newValue);
+ }
+ }
+ }
+
+ private void onTouchDown(float touchX, float touchY, int pointerId)
+ {
+ float y = _config.marginTop - _config.keyHeight;
+ for (KeyboardData.Row row : _keyboard.rows)
+ {
+ y += _config.keyHeight;
+ if (touchY < y || touchY >= (y + _config.keyHeight))
+ continue ;
float x = _config.horizontalMargin;
- for (KeyboardData.Key key : row.keys)
- {
+ for (KeyboardData.Key key : row.keys)
+ {
x += key.shift * _keyWidth;
- float keyW = _keyWidth * key.width;
- if (touchX >= x && touchX < (x + keyW))
- {
+ float keyW = _keyWidth * key.width;
+ if (touchX >= x && touchX < (x + keyW))
+ {
int what = _currentWhat++;
if (key.key0 != null && (key.key0.flags & KeyValue.FLAG_NOREPEAT) == 0)
_handler.sendEmptyMessageDelayed(what, _config.longPressTimeout);
_downKeys.add(new KeyDown(pointerId, key, touchX, touchY, what));
- handleKeyDown(key.key0);
- updateFlags();
- invalidate();
- return ;
- }
- x += keyW;
- }
- }
- }
+ handleKeyDown(key.key0);
+ updateFlags();
+ invalidate();
+ return ;
+ }
+ x += keyW;
+ }
+ }
+ }
// Whether a key is already activated (key down but pointer up)
private KeyDown getActivatedKey(KeyValue kv)
{
- for (KeyDown k : _downKeys)
- {
- if (k.value == kv && k.pointerId == -1)
- return (k);
- }
- return (null);
+ for (KeyDown k : _downKeys)
+ {
+ if (k.value == kv && k.pointerId == -1)
+ return (k);
+ }
+ return (null);
}
- private void onTouchUp(int pointerId)
- {
- KeyDown k = getKeyDown(pointerId);
+ private void onTouchUp(int pointerId)
+ {
+ KeyDown k = getKeyDown(pointerId);
- if (k != null)
- {
+ if (k != null)
+ {
// Stop key repeat
if (k.timeoutWhat != -1)
{
@@ -295,55 +295,55 @@ public class Keyboard2View extends View
}
updateFlags();
invalidate();
- }
- }
-
- private void handleKeyUp(KeyDown key)
- {
- if (key.value != null && (key.flags & (KeyValue.FLAG_LOCKED | KeyValue.FLAG_NOCHAR)) == 0)
- ((Keyboard2)getContext()).handleKeyUp(key.value, _flags);
- }
-
- private void handleKeyDown(KeyValue key)
- {
- if (key == null)
- return ;
- vibrate();
- }
-
- private void updateFlags()
- {
- _flags = 0;
- for (KeyDown k : _downKeys)
- _flags |= k.flags;
- }
-
- private void vibrate()
- {
- if (!_config.vibrateEnabled)
- return ;
- long now = System.currentTimeMillis();
- if ((now - _lastVibration) > VIBRATE_MIN_INTERVAL)
- {
- _lastVibration = now;
- try
- {
- _vibratorService.vibrate(_config.vibrateDuration);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- }
-
- @Override
- public boolean handleMessage(Message msg)
- {
- for (KeyDown key : _downKeys)
- {
- if (key.timeoutWhat == msg.what)
- {
+ }
+ }
+
+ private void handleKeyUp(KeyDown key)
+ {
+ if (key.value != null && (key.flags & (KeyValue.FLAG_LOCKED | KeyValue.FLAG_NOCHAR)) == 0)
+ ((Keyboard2)getContext()).handleKeyUp(key.value, _flags);
+ }
+
+ private void handleKeyDown(KeyValue key)
+ {
+ if (key == null)
+ return ;
+ vibrate();
+ }
+
+ private void updateFlags()
+ {
+ _flags = 0;
+ for (KeyDown k : _downKeys)
+ _flags |= k.flags;
+ }
+
+ private void vibrate()
+ {
+ if (!_config.vibrateEnabled)
+ return ;
+ long now = System.currentTimeMillis();
+ if ((now - _lastVibration) > VIBRATE_MIN_INTERVAL)
+ {
+ _lastVibration = now;
+ try
+ {
+ _vibratorService.vibrate(_config.vibrateDuration);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public boolean handleMessage(Message msg)
+ {
+ for (KeyDown key : _downKeys)
+ {
+ if (key.timeoutWhat == msg.what)
+ {
long nextInterval = _config.longPressInterval;
if (_config.preciseRepeat && (key.flags & KeyValue.FLAG_PRECISE_REPEAT) != 0)
{
@@ -351,17 +351,17 @@ public class Keyboard2View extends View
float accel = Math.min(4.f, Math.max(0.3f, key.ptrDist / (_config.subValueDist * 15.f)));
nextInterval = (long)((float)nextInterval / accel);
}
- _handler.sendEmptyMessageDelayed(msg.what, nextInterval);
- ((Keyboard2)getContext()).handleKeyUp(key.value, _flags);
- return (true);
- }
- }
- return (false);
- }
-
- @Override
- public void onMeasure(int wSpec, int hSpec)
- {
+ _handler.sendEmptyMessageDelayed(msg.what, nextInterval);
+ ((Keyboard2)getContext()).handleKeyUp(key.value, _flags);
+ return (true);
+ }
+ }
+ return (false);
+ }
+
+ @Override
+ public void onMeasure(int wSpec, int hSpec)
+ {
DisplayMetrics dm = getContext().getResources().getDisplayMetrics();
int width = dm.widthPixels;
int height =
@@ -370,49 +370,49 @@ public class Keyboard2View extends View
+ _config.marginTop + _config.marginBottom);
setMeasuredDimension(width, height);
_keyWidth = (width - (_config.horizontalMargin * 2)) / _keyboard.keysWidth;
- }
-
- @Override
- protected void onDraw(Canvas canvas)
- {
- float y = _config.marginTop;
- for (KeyboardData.Row row : _keyboard.rows)
- {
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas)
+ {
+ float y = _config.marginTop;
+ for (KeyboardData.Row row : _keyboard.rows)
+ {
y += row.shift * _config.keyHeight;
float x = _config.horizontalMargin;
float keyH = row.height * _config.keyHeight;
- for (KeyboardData.Key k : row.keys)
- {
+ for (KeyboardData.Key k : row.keys)
+ {
x += k.shift * _keyWidth + _config.keyHorizontalInterval;
- float keyW = _keyWidth * k.width - _config.keyHorizontalInterval;
- KeyDown keyDown = getKeyDown(k);
- _tmpRect.set(x, y, x + keyW, y + keyH);
- if (keyDown != null)
- canvas.drawRect(_tmpRect, _keyDownBgPaint);
- else
- canvas.drawRoundRect(_tmpRect, _config.keyRound, _config.keyRound, _keyBgPaint);
- if (k.key0 != null)
- drawLabel(canvas, k.key0, keyW / 2f + x, (keyH + _labelTextSize) / 2f + y, keyDown);
- float subPadding = _config.keyPadding;
- if (k.key1 != null)
- drawSubLabel(canvas, k.key1, x + subPadding, y + subPadding, false, true, keyDown);
- if (k.key3 != null)
- drawSubLabel(canvas, k.key3, x + subPadding, y + keyH - subPadding, false, false, keyDown);
- if (k.key2 != null)
- drawSubLabel(canvas, k.key2, x + keyW - subPadding, y + subPadding, true, true, keyDown);
- if (k.key4 != null)
- drawSubLabel(canvas, k.key4, x + keyW - subPadding, y + keyH - subPadding, true, false, keyDown);
- x += keyW;
- }
- y += keyH + _config.keyVerticalInterval;
- }
- }
-
- @Override
- public void onDetachedFromWindow()
- {
- super.onDetachedFromWindow();
- }
+ float keyW = _keyWidth * k.width - _config.keyHorizontalInterval;
+ KeyDown keyDown = getKeyDown(k);
+ _tmpRect.set(x, y, x + keyW, y + keyH);
+ if (keyDown != null)
+ canvas.drawRect(_tmpRect, _keyDownBgPaint);
+ else
+ canvas.drawRoundRect(_tmpRect, _config.keyRound, _config.keyRound, _keyBgPaint);
+ if (k.key0 != null)
+ drawLabel(canvas, k.key0, keyW / 2f + x, (keyH + _labelTextSize) / 2f + y, keyDown);
+ float subPadding = _config.keyPadding;
+ if (k.key1 != null)
+ drawSubLabel(canvas, k.key1, x + subPadding, y + subPadding, false, true, keyDown);
+ if (k.key3 != null)
+ drawSubLabel(canvas, k.key3, x + subPadding, y + keyH - subPadding, false, false, keyDown);
+ if (k.key2 != null)
+ drawSubLabel(canvas, k.key2, x + keyW - subPadding, y + subPadding, true, true, keyDown);
+ if (k.key4 != null)
+ drawSubLabel(canvas, k.key4, x + keyW - subPadding, y + keyH - subPadding, true, false, keyDown);
+ x += keyW;
+ }
+ y += keyH + _config.keyVerticalInterval;
+ }
+ }
+
+ @Override
+ public void onDetachedFromWindow()
+ {
+ super.onDetachedFromWindow();
+ }
private int labelColor(KeyValue k, KeyDown hasKeyDown, int defaultColor)
{
@@ -430,17 +430,17 @@ public class Keyboard2View extends View
return defaultColor;
}
- private void drawLabel(Canvas canvas, KeyValue k, float x, float y, KeyDown keyDown)
- {
+ private void drawLabel(Canvas canvas, KeyValue k, float x, float y, KeyDown keyDown)
+ {
k = KeyModifier.handleFlags(k, _flags);
Paint p = ((k.flags & KeyValue.FLAG_KEY_FONT) != 0) ? _specialKeyLabelPaint : _keyLabelPaint;
p.setColor(labelColor(k, keyDown, _labelColor));
p.setTextSize(_labelTextSize * scaleTextSize(k));
canvas.drawText(k.symbol, x, y, p);
- }
+ }
- private void drawSubLabel(Canvas canvas, KeyValue k, float x, float y, boolean right, boolean up, KeyDown keyDown)
- {
+ private void drawSubLabel(Canvas canvas, KeyValue k, float x, float y, boolean right, boolean up, KeyDown keyDown)
+ {
k = KeyModifier.handleFlags(k, _flags);
Paint p = ((k.flags & KeyValue.FLAG_KEY_FONT) != 0) ? _specialKeySubLabelPaint : _keySubLabelPaint;
p.setColor(labelColor(k, keyDown, _subLabelColor));
@@ -448,36 +448,36 @@ public class Keyboard2View extends View
p.setTextSize(_sublabelTextSize * scaleTextSize(k));
y -= up ? p.ascent() : p.descent();
canvas.drawText(k.symbol, x, y, p);
- }
+ }
private float scaleTextSize(KeyValue k)
{
return (k.symbol.length() < 2) ? 1.f : 0.8f;
}
- private static class KeyDown
- {
+ private static class KeyDown
+ {
/* -1 if pointer is up. */
- public int pointerId;
- public KeyValue value;
- public KeyboardData.Key key;
- public float downX;
- public float downY;
+ public int pointerId;
+ public KeyValue value;
+ public KeyboardData.Key key;
+ public float downX;
+ public float downY;
/* Manhattan distance of the pointer to the center of the key */
public float ptrDist;
- public int flags;
- public int timeoutWhat;
-
- public KeyDown(int pointerId, KeyboardData.Key key, float x, float y, int what)
- {
- this.pointerId = pointerId;
- value = key.key0;
- this.key = key;
- downX = x;
- downY = y;
+ public int flags;
+ public int timeoutWhat;
+
+ public KeyDown(int pointerId, KeyboardData.Key key, float x, float y, int what)
+ {
+ this.pointerId = pointerId;
+ value = key.key0;
+ this.key = key;
+ downX = x;
+ downY = y;
ptrDist = 0.f;
- flags = (value == null) ? 0 : value.flags;
- timeoutWhat = what;
- }
- }
+ flags = (value == null) ? 0 : value.flags;
+ timeoutWhat = what;
+ }
+ }
}
diff --git a/srcs/juloo.keyboard2/KeyboardData.java b/srcs/juloo.keyboard2/KeyboardData.java
index ea226ee..db3b884 100644
--- a/srcs/juloo.keyboard2/KeyboardData.java
+++ b/srcs/juloo.keyboard2/KeyboardData.java
@@ -6,7 +6,7 @@ import java.util.List;
class KeyboardData
{
- public final List<Row> rows;
+ public final List<Row> rows;
/* Total width of the keyboard. Unit is abstract. */
public final float keysWidth;
/* Total height of the keyboard. Unit is abstract. */
@@ -26,54 +26,54 @@ class KeyboardData
keysHeight = kh;
}
- public static KeyboardData parse(XmlResourceParser parser)
- {
- ArrayList<Row> rows = new ArrayList<Row>();
-
- try
- {
- int status;
-
- while (parser.next() != XmlResourceParser.START_TAG)
- continue ;
- if (!parser.getName().equals("keyboard"))
- throw new Exception("Unknow tag: " + parser.getName());
- while ((status = parser.next()) != XmlResourceParser.END_DOCUMENT)
- {
- if (status == XmlResourceParser.START_TAG)
- {
- String tag = parser.getName();
- if (tag.equals("row"))
- rows.add(Row.parse(parser));
- else
- throw new Exception("Unknow keyboard tag: " + tag);
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
+ public static KeyboardData parse(XmlResourceParser parser)
+ {
+ ArrayList<Row> rows = new ArrayList<Row>();
+
+ try
+ {
+ int status;
+
+ while (parser.next() != XmlResourceParser.START_TAG)
+ continue ;
+ if (!parser.getName().equals("keyboard"))
+ throw new Exception("Unknow tag: " + parser.getName());
+ while ((status = parser.next()) != XmlResourceParser.END_DOCUMENT)
+ {
+ if (status == XmlResourceParser.START_TAG)
+ {
+ String tag = parser.getName();
+ if (tag.equals("row"))
+ rows.add(Row.parse(parser));
+ else
+ throw new Exception("Unknow keyboard tag: " + tag);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
return new KeyboardData(rows);
- }
+ }
public KeyboardData removeKeys(MapKeys f)
{
- ArrayList<Row> rows_ = new ArrayList<Row>();
+ ArrayList<Row> rows_ = new ArrayList<Row>();
for (Row r : rows)
rows_.add(r.removeKeys(f));
return new KeyboardData(rows_);
}
- public static class Row
- {
+ public static class Row
+ {
public final List<Key> keys;
/* Height of the row. Unit is abstract. */
public final float height;
/* Extra empty space on the top. */
public final float shift;
/* Total width of very keys. Unit is abstract. */
- private final float keysWidth;
+ private final float keysWidth;
public Row(List<Key> keys_, float h, float s)
{
@@ -85,25 +85,25 @@ class KeyboardData
keysWidth = kw;
}
- public static Row parse(XmlResourceParser parser) throws Exception
- {
+ public static Row parse(XmlResourceParser parser) throws Exception
+ {
ArrayList<Key> keys = new ArrayList<Key>();
- int status;
+ int status;
float h = parser.getAttributeFloatValue(null, "height", 1f);
float shift = parser.getAttributeFloatValue(null, "shift", 0f);
- while ((status = parser.next()) != XmlResourceParser.END_TAG)
- {
- if (status == XmlResourceParser.START_TAG)
- {
- String tag = parser.getName();
- if (tag.equals("key"))
+ while ((status = parser.next()) != XmlResourceParser.END_TAG)
+ {
+ if (status == XmlResourceParser.START_TAG)
+ {
+ String tag = parser.getName();
+ if (tag.equals("key"))
keys.add(Key.parse(parser));
- else
- throw new Exception("Unknow row tag: " + tag);
- }
- }
+ else
+ throw new Exception("Unknow row tag: " + tag);
+ }
+ }
return new Row(keys, h, shift);
- }
+ }
public Row removeKeys(MapKeys f)
{
@@ -112,7 +112,7 @@ class KeyboardData
keys_.add(k.removeKeys(f));
return new Row(keys_, height, shift);
}
- }
+ }
public static class Key
{
diff --git a/srcs/juloo.keyboard2/SettingsActivity.java b/srcs/juloo.keyboard2/SettingsActivity.java
index e9e49c3..9ec82c5 100644
--- a/srcs/juloo.keyboard2/SettingsActivity.java
+++ b/srcs/juloo.keyboard2/SettingsActivity.java
@@ -5,10 +5,10 @@ import android.preference.PreferenceActivity;
public class SettingsActivity extends PreferenceActivity
{
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.settings);
- }
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.settings);
+ }
}