abouttreesummaryrefslogcommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/values/strings.xml9
-rw-r--r--res/xml/settings.xml35
-rw-r--r--srcs/juloo.common/IntSlideBarPreference.java116
-rw-r--r--srcs/juloo.common/SlideBarPreference.java2
-rw-r--r--srcs/juloo.keyboard2/Keyboard2View.java17
5 files changed, 154 insertions, 25 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index cc6169b..ad5982e 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
+
<string name="app_name">Keyboard 2.0</string>
<string name="settings_activity_label">Keyboard 2.0 Settings</string>
@@ -15,13 +16,15 @@
<string name="pref_category_typing">Typing</string>
<string name="pref_preci_title">Precision</string>
<string name="pref_preci_summary">Distance of corner values (%spx)</string>
+ <string name="pref_long_timeout_title">Long press timeout</string>
+ <string name="pref_long_timeout_summary">%sms</string>
+ <string name="pref_long_interval_title">Long press interval</string>
+ <string name="pref_long_interval_summary">%sms</string>
<string name="pref_category_vibrate">Vibration</string>
<string name="pref_vibrate_title">Vibration</string>
<string name="pref_vibrate_summary">Enable/Disable vibrations</string>
<string name="pref_vibrate_duration_title">Duration</string>
- <string name="pref_vibrate_duration_summary">Change vibrations duration</string>
-
- <string name="pref_category_misc">Other</string>
+ <string name="pref_vibrate_duration_summary">%sms</string>
</resources>
diff --git a/res/xml/settings.xml b/res/xml/settings.xml
index 7902527..fe6dbef 100644
--- a/res/xml/settings.xml
+++ b/res/xml/settings.xml
@@ -14,13 +14,26 @@
android:key="sub_value_dist"
android:title="@string/pref_preci_title"
android:summary="@string/pref_preci_summary"
- android:defaultValue="8.0"
+ android:defaultValue="10.0"
min="5.0"
- max="20.0"
+ max="25.0"
+ />
+ <juloo.common.IntSlideBarPreference
+ android:key="longpress_timeout"
+ android:title="@string/pref_long_timeout_title"
+ android:summary="@string/pref_long_timeout_summary"
+ android:defaultValue="600"
+ min="50"
+ max="2000"
+ />
+ <juloo.common.IntSlideBarPreference
+ android:key="longpress_interval"
+ android:title="@string/pref_long_interval_title"
+ android:summary="@string/pref_long_interval_summary"
+ android:defaultValue="25"
+ min="5"
+ max="100"
/>
- <!-- Precision (sub_value_dist) -->
- <!-- Key repeat timeout (longpress_timeout) -->
- <!-- Key repeat interval (longpress_interval) -->
</PreferenceCategory>
<PreferenceCategory android:title="@string/pref_category_vibrate">
<CheckBoxPreference
@@ -28,9 +41,13 @@
android:title="@string/pref_vibrate_title"
android:summary="@string/pref_vibrate_summary"
android:defaultValue="true" />
- <!-- Duration (vibrate_duration) -->
- </PreferenceCategory>
- <PreferenceCategory android:title="@string/pref_category_misc">
- <!-- Offset height (margin_bottom) -->
+ <juloo.common.IntSlideBarPreference
+ android:key="vibrate_duration"
+ android:title="@string/pref_vibrate_duration_title"
+ android:summary="@string/pref_vibrate_duration_summary"
+ android:defaultValue="20"
+ min="5"
+ max="50"
+ />
</PreferenceCategory>
</PreferenceScreen>
diff --git a/srcs/juloo.common/IntSlideBarPreference.java b/srcs/juloo.common/IntSlideBarPreference.java
new file mode 100644
index 0000000..a9df4e6
--- /dev/null
+++ b/srcs/juloo.common/IntSlideBarPreference.java
@@ -0,0 +1,116 @@
+package juloo.common;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.preference.DialogPreference;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+import android.widget.SeekBar;
+
+/*
+** IntSlideBarPreference
+** -
+** Open a dialog showing a seekbar
+** -
+** xml attrs:
+** android:defaultValue Default value (int)
+** min min value (int)
+** max max value (int)
+** -
+** Summary field allow to show the current value using %s flag
+*/
+public class IntSlideBarPreference extends DialogPreference
+ implements SeekBar.OnSeekBarChangeListener
+{
+ private LinearLayout _layout;
+ private TextView _textView;
+ private SeekBar _seekBar;
+
+ private int _min;
+
+ private String _initialSummary;
+
+ public IntSlideBarPreference(Context context, AttributeSet attrs)
+ {
+ super(context, attrs);
+ _initialSummary = getSummary().toString();
+ _textView = new TextView(context);
+ _textView.setPadding(48, 40, 48, 40);
+ _seekBar = new SeekBar(context);
+ _seekBar.setOnSeekBarChangeListener(this);
+ _min = attrs.getAttributeIntValue(null, "min", 0);
+ int max = attrs.getAttributeIntValue(null, "max", 0);
+ _seekBar.setMax(max - _min);
+ _layout = new LinearLayout(getContext());
+ _layout.setOrientation(LinearLayout.VERTICAL);
+ _layout.addView(_textView);
+ _layout.addView(_seekBar);
+ }
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
+ {
+ updateText();
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar)
+ {
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar)
+ {
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue)
+ {
+ int value;
+
+ if (restorePersistedValue)
+ {
+ value = getPersistedInt(_min);
+ }
+ else
+ {
+ value = (Integer)defaultValue;
+ persistInt(value);
+ }
+ _seekBar.setProgress(value - _min);
+ updateText();
+ }
+
+ @Override
+ protected Object onGetDefaultValue(TypedArray a, int index)
+ {
+ return (a.getInt(index, _min));
+ }
+
+ @Override
+ protected void onDialogClosed(boolean positiveResult)
+ {
+ if (positiveResult)
+ persistInt(_seekBar.getProgress() + _min);
+ }
+
+ protected View onCreateDialogView()
+ {
+ ViewGroup parent = (ViewGroup)_layout.getParent();
+
+ if (parent != null)
+ parent.removeView(_layout);
+ return (_layout);
+ }
+
+ private void updateText()
+ {
+ String f = String.format(_initialSummary, _seekBar.getProgress() + _min);
+
+ _textView.setText(f);
+ setSummary(f);
+ }
+}
diff --git a/srcs/juloo.common/SlideBarPreference.java b/srcs/juloo.common/SlideBarPreference.java
index 6bfb33e..765f758 100644
--- a/srcs/juloo.common/SlideBarPreference.java
+++ b/srcs/juloo.common/SlideBarPreference.java
@@ -25,7 +25,7 @@ import android.widget.SeekBar;
public class SlideBarPreference extends DialogPreference
implements SeekBar.OnSeekBarChangeListener
{
- private static final int SEEKBAR_MAX = 1000;
+ private static final int SEEKBAR_MAX = 100000;
private LinearLayout _layout;
private TextView _textView;
diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java
index fd8a7ab..8d29e91 100644
--- a/srcs/juloo.keyboard2/Keyboard2View.java
+++ b/srcs/juloo.keyboard2/Keyboard2View.java
@@ -43,7 +43,7 @@ public class Keyboard2View extends View
private float _keyBgPadding;
private float _keyRound;
- private float _subValueDist = 7f;
+ private float _subValueDist = 10f;
private boolean _vibrateEnabled = true;
private long _vibrateDuration = 20;
private long _longPressTimeout = 600;
@@ -86,18 +86,11 @@ public class Keyboard2View extends View
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ime);
_ime = ime;
- try
- {
- _subValueDist = prefs.getFloat("sub_value_dist", _subValueDist);
- }
- catch (Exception e)
- {
- _subValueDist = 7.0f;
- }
+ _subValueDist = prefs.getFloat("sub_value_dist", _subValueDist);
_vibrateEnabled = prefs.getBoolean("vibrate_enabled", _vibrateEnabled);
- _vibrateDuration = prefs.getLong("vibrate_duration", _vibrateDuration);
- _longPressTimeout = prefs.getLong("longpress_timeout", _longPressTimeout);
- _longPressInterval = prefs.getLong("longpress_interval", _longPressInterval);
+ _vibrateDuration = prefs.getInt("vibrate_duration", (int)_vibrateDuration);
+ _longPressTimeout = prefs.getInt("longpress_timeout", (int)_longPressTimeout);
+ _longPressInterval = prefs.getInt("longpress_interval", (int)_longPressInterval);
_marginBottom = prefs.getFloat("margin_bottom", _marginBottom);
String keyboardLayout = prefs.getString("keyboard_layout", null);