aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/inputmethod/latin/LatinIME.java160
-rw-r--r--src/com/android/inputmethod/latin/LatinIMESettings.java58
-rw-r--r--src/com/android/inputmethod/latin/Tutorial.java154
3 files changed, 176 insertions, 196 deletions
diff --git a/src/com/android/inputmethod/latin/LatinIME.java b/src/com/android/inputmethod/latin/LatinIME.java
index e5ad75bca..a36ff5747 100644
--- a/src/com/android/inputmethod/latin/LatinIME.java
+++ b/src/com/android/inputmethod/latin/LatinIME.java
@@ -23,7 +23,6 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
import android.content.res.Configuration;
import android.inputmethodservice.InputMethodService;
import android.inputmethodservice.Keyboard;
@@ -35,6 +34,7 @@ import android.os.Message;
import android.os.SystemClock;
import android.os.Vibrator;
import android.preference.PreferenceManager;
+import android.text.AutoText;
import android.text.ClipboardManager;
import android.text.TextUtils;
import android.util.Log;
@@ -64,14 +64,13 @@ public class LatinIME extends InputMethodService
private static final String PREF_VIBRATE_ON = "vibrate_on";
private static final String PREF_SOUND_ON = "sound_on";
- private static final String PREF_PROXIMITY_CORRECTION = "hit_correction";
- private static final String PREF_PREDICTION = "prediction_mode";
- private static final String PREF_PREDICTION_LANDSCAPE = "prediction_landscape";
private static final String PREF_AUTO_CAP = "auto_cap";
- static final String PREF_TUTORIAL_RUN = "tutorial_run";
+ private static final String PREF_QUICK_FIXES = "quick_fixes";
+ private static final String PREF_SHOW_SUGGESTIONS = "show_suggestions";
+ private static final String PREF_AUTO_COMPLETE = "auto_complete";
private static final int MSG_UPDATE_SUGGESTIONS = 0;
- private static final int MSG_CHECK_TUTORIAL = 1;
+ private static final int MSG_START_TUTORIAL = 1;
// How many continuous deletes at which to start deleting at a higher speed.
private static final int DELETE_ACCELERATE_AT = 20;
@@ -93,7 +92,7 @@ public class LatinIME extends InputMethodService
private AlertDialog mOptionsDialog;
- private KeyboardSwitcher mKeyboardSwitcher;
+ KeyboardSwitcher mKeyboardSwitcher;
private UserDictionary mUserDictionary;
@@ -106,20 +105,17 @@ public class LatinIME extends InputMethodService
private CharSequence mBestWord;
private boolean mPredictionOn;
private boolean mCompletionOn;
- private boolean mPasswordMode;
private boolean mAutoSpace;
private boolean mAutoCorrectOn;
private boolean mCapsLock;
- private long mLastShiftTime;
private boolean mVibrateOn;
private boolean mSoundOn;
- private boolean mProximityCorrection;
- private int mCorrectionMode;
private boolean mAutoCap;
- private boolean mAutoPunctuate;
- private boolean mTutorialShownBefore;
+ private boolean mQuickFixes;
+ private boolean mShowSuggestions;
+ private boolean mAutoComplete;
+ private int mCorrectionMode;
// Indicates whether the suggestion strip is to be on in landscape
- private boolean mShowSuggestInLand;
private boolean mJustAccepted;
private CharSequence mJustRevertedSeparator;
private int mDeleteCount;
@@ -144,10 +140,15 @@ public class LatinIME extends InputMethodService
case MSG_UPDATE_SUGGESTIONS:
updateSuggestions();
break;
- case MSG_CHECK_TUTORIAL:
- if (!mTutorialShownBefore) {
- mTutorial = new Tutorial(mInputView);
- mTutorial.start();
+ case MSG_START_TUTORIAL:
+ if (mTutorial == null) {
+ if (mInputView.isShown()) {
+ mTutorial = new Tutorial(LatinIME.this, mInputView);
+ mTutorial.start();
+ } else {
+ // Try again soon if the view is not yet showing
+ sendMessageDelayed(obtainMessage(MSG_START_TUTORIAL), 100);
+ }
}
break;
}
@@ -188,10 +189,6 @@ public class LatinIME extends InputMethodService
if (!TextUtils.equals(conf.locale.toString(), mLocale)) {
initSuggest(conf.locale.toString());
}
- if (!mTutorialShownBefore && mTutorial != null) {
- mTutorial.close(false);
- mTutorial = null;
- }
super.onConfigurationChanged(conf);
}
@@ -253,10 +250,7 @@ public class LatinIME extends InputMethodService
int variation = attribute.inputType & EditorInfo.TYPE_MASK_VARIATION;
if (variation == EditorInfo.TYPE_TEXT_VARIATION_PASSWORD ||
variation == EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD ) {
- mPasswordMode = true;
mPredictionOn = false;
- } else {
- mPasswordMode = false;
}
if (variation == EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS
|| variation == EditorInfo.TYPE_TEXT_VARIATION_PERSON_NAME) {
@@ -296,39 +290,22 @@ public class LatinIME extends InputMethodService
setCandidatesViewShown(false);
if (mCandidateView != null) mCandidateView.setSuggestions(null, false, false, false);
loadSettings();
- mInputView.setProximityCorrectionEnabled(mProximityCorrection);
+ mInputView.setProximityCorrectionEnabled(true);
if (mSuggest != null) {
mSuggest.setCorrectionMode(mCorrectionMode);
}
mPredictionOn = mPredictionOn && mCorrectionMode > 0;
- if (!mTutorialShownBefore && mTutorial == null) {
- mHandler.sendEmptyMessageDelayed(MSG_CHECK_TUTORIAL,
- mInputView.isShown() ? 100 : 3000);
- }
+ checkTutorial(attribute.privateImeOptions);
if (TRACE) Debug.startMethodTracing("latinime");
}
@Override
- public void onWindowShown() {
- super.onWindowShown();
- // Bring the tutorial up faster, if window just shown
- if (!mTutorialShownBefore && mTutorial == null) {
- mHandler.removeMessages(MSG_CHECK_TUTORIAL);
- mHandler.sendEmptyMessageDelayed(MSG_CHECK_TUTORIAL, 1000);
- }
- }
-
- @Override
public void onFinishInput() {
super.onFinishInput();
if (mInputView != null) {
mInputView.closing();
}
-// if (!mTutorialShownBefore && mTutorial != null) {
-// mTutorial.close(false);
-// mTutorial = null;
-// }
}
@Override
@@ -359,8 +336,12 @@ public class LatinIME extends InputMethodService
@Override
public void hideWindow() {
if (TRACE) Debug.stopMethodTracing();
- if (!mTutorialShownBefore && mTutorial != null) {
- mTutorial.close(false);
+ if (mOptionsDialog != null && mOptionsDialog.isShowing()) {
+ mOptionsDialog.dismiss();
+ mOptionsDialog = null;
+ }
+ if (mTutorial != null) {
+ mTutorial.close();
mTutorial = null;
}
super.hideWindow();
@@ -417,11 +398,21 @@ public class LatinIME extends InputMethodService
if (event.getRepeatCount() == 0 && mInputView != null) {
if (mInputView.handleBack()) {
return true;
- } else if (!mTutorialShownBefore && mTutorial != null) {
- mTutorial.close(true);
+ } else if (mTutorial != null) {
+ mTutorial.close();
+ mTutorial = null;
}
}
break;
+ case KeyEvent.KEYCODE_DPAD_DOWN:
+ case KeyEvent.KEYCODE_DPAD_UP:
+ case KeyEvent.KEYCODE_DPAD_LEFT:
+ case KeyEvent.KEYCODE_DPAD_RIGHT:
+ // If tutorial is visible, don't allow dpad to work
+ if (mTutorial != null) {
+ return true;
+ }
+ break;
}
return super.onKeyDown(keyCode, event);
}
@@ -433,6 +424,10 @@ public class LatinIME extends InputMethodService
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_DPAD_LEFT:
case KeyEvent.KEYCODE_DPAD_RIGHT:
+ // If tutorial is visible, don't allow dpad to work
+ if (mTutorial != null) {
+ return true;
+ }
// Enable shift key and DPAD to do selections
if (mInputView != null && mInputView.isShown() && mInputView.isShifted()) {
event = new KeyEvent(event.getDownTime(), event.getEventTime(),
@@ -596,9 +591,7 @@ public class LatinIME extends InputMethodService
ic.deleteSurroundingText(1, 0);
}
} else {
- //getCurrentInputConnection().deleteSurroundingText(1, 0);
deleteChar = true;
- //sendDownUpKeyEvents(KeyEvent.KEYCODE_DEL);
}
updateShiftKeyState(getCurrentInputEditorInfo());
TextEntryState.backspace();
@@ -697,9 +690,6 @@ public class LatinIME extends InputMethodService
private void handleClose() {
commitTyped(getCurrentInputConnection());
- if (!mTutorialShownBefore && mTutorial != null) {
- mTutorial.close(true);
- }
requestHideSelf(0);
mInputView.closing();
TextEntryState.endSession();
@@ -730,11 +720,7 @@ public class LatinIME extends InputMethodService
}
private boolean isCandidateStripVisible() {
- boolean visible = isPredictionOn() &&
- (!isFullscreenMode() ||
- mCorrectionMode == Suggest.CORRECTION_FULL ||
- mShowSuggestInLand);
- return visible;
+ return isPredictionOn() && mShowSuggestions;
}
private void updateSuggestions() {
@@ -901,14 +887,6 @@ public class LatinIME extends InputMethodService
mInputView.startPlaying(text.toString());
}
}
-// if (mAutoCorrectOn) {
-// commitTyped(getCurrentInputConnection());
-// } else if (mPredicting) {
-// pickDefaultSuggestion();
-// }
-// if (mAutoSpace) {
-// sendSpace();
-// }
}
public void swipeLeft() {
@@ -987,6 +965,27 @@ public class LatinIME extends InputMethodService
mVibrator.vibrate(mVibrateDuration);
}
+ private void checkTutorial(String privateImeOptions) {
+ if (privateImeOptions == null) return;
+ if (privateImeOptions.equals("com.android.setupwizard:ShowTutorial")) {
+ if (mTutorial == null) startTutorial();
+ } else if (privateImeOptions.equals("com.android.setupwizard:HideTutorial")) {
+ if (mTutorial != null) {
+ if (mTutorial.close()) {
+ mTutorial = null;
+ }
+ }
+ }
+ }
+
+ private void startTutorial() {
+ mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_START_TUTORIAL), 500);
+ }
+
+ void tutorialDone() {
+ mTutorial = null;
+ }
+
private void launchSettings() {
handleClose();
Intent intent = new Intent();
@@ -998,24 +997,17 @@ public class LatinIME extends InputMethodService
private void loadSettings() {
// Get the settings preferences
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
- mProximityCorrection = sp.getBoolean(PREF_PROXIMITY_CORRECTION, true);
mVibrateOn = sp.getBoolean(PREF_VIBRATE_ON, false);
mSoundOn = sp.getBoolean(PREF_SOUND_ON, false);
- String predictionBasic = getString(R.string.prediction_basic);
- String mode = sp.getString(PREF_PREDICTION, predictionBasic);
- if (mode.equals(getString(R.string.prediction_full))) {
- mCorrectionMode = 2;
- } else if (mode.equals(predictionBasic)) {
- mCorrectionMode = 1;
- } else {
- mCorrectionMode = 0;
- }
- mAutoCorrectOn = mSuggest != null && mCorrectionMode > 0;
-
mAutoCap = sp.getBoolean(PREF_AUTO_CAP, true);
- //mAutoPunctuate = sp.getBoolean(PREF_AUTO_PUNCTUATE, mCorrectionMode > 0);
- mShowSuggestInLand = !sp.getBoolean(PREF_PREDICTION_LANDSCAPE, false);
- mTutorialShownBefore = sp.getBoolean(PREF_TUTORIAL_RUN, false);
+ mQuickFixes = sp.getBoolean(PREF_QUICK_FIXES, true);
+ // If there is no auto text data, then quickfix is forced to "on", so that the other options
+ // will continue to work
+ if (AutoText.getSize(mInputView) < 1) mQuickFixes = true;
+ mShowSuggestions = sp.getBoolean(PREF_SHOW_SUGGESTIONS, true) & mQuickFixes;
+ mAutoComplete = sp.getBoolean(PREF_AUTO_COMPLETE, true) & mShowSuggestions;
+ mAutoCorrectOn = mSuggest != null && (mAutoComplete || mQuickFixes);
+ mCorrectionMode = mAutoComplete ? 2 : (mQuickFixes ? 1 : 0);
}
private void showOptionsMenu() {
@@ -1079,11 +1071,7 @@ public class LatinIME extends InputMethodService
p.println(" mSoundOn=" + mSoundOn);
p.println(" mVibrateOn=" + mVibrateOn);
}
-
-
- private static final int[] KEY_SPACE = { KEYCODE_SPACE };
-
-
+
// Characters per second measurement
private static final boolean PERF_DEBUG = false;
diff --git a/src/com/android/inputmethod/latin/LatinIMESettings.java b/src/com/android/inputmethod/latin/LatinIMESettings.java
index 2c23263ea..e87c4a5a1 100644
--- a/src/com/android/inputmethod/latin/LatinIMESettings.java
+++ b/src/com/android/inputmethod/latin/LatinIMESettings.java
@@ -16,60 +16,38 @@
package com.android.inputmethod.latin;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
-import android.preference.ListPreference;
-import android.preference.Preference;
+import android.preference.CheckBoxPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceGroup;
+import android.text.AutoText;
-public class LatinIMESettings extends PreferenceActivity
- implements OnSharedPreferenceChangeListener{
+public class LatinIMESettings extends PreferenceActivity {
- private static final String CORRECTION_MODE_KEY = "prediction_mode";
+ private static final String QUICK_FIXES_KEY = "quick_fixes";
+ private static final String SHOW_SUGGESTIONS_KEY = "show_suggestions";
private static final String PREDICTION_SETTINGS_KEY = "prediction_settings";
- private static final String PREDICTION_LANDSCAPE_KEY = "prediction_landscape";
- private ListPreference mCorrectionMode;
- private PreferenceGroup mPredictionSettings;
- private Preference mPredictionLandscape;
+ private CheckBoxPreference mQuickFixes;
+ private CheckBoxPreference mShowSuggestions;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.prefs);
- mCorrectionMode = (ListPreference) findPreference(CORRECTION_MODE_KEY);
- mPredictionSettings = (PreferenceGroup) findPreference(PREDICTION_SETTINGS_KEY);
- mPredictionLandscape = findPreference(PREDICTION_LANDSCAPE_KEY);
- updatePredictionSettings();
- getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
- }
-
- @Override
- protected void onDestroy() {
- getPreferenceScreen().getSharedPreferences()
- .unregisterOnSharedPreferenceChangeListener(this);
- super.onDestroy();
- }
-
- private void updatePredictionSettings() {
- if (mCorrectionMode != null && mPredictionSettings != null) {
- String correctionMode = mCorrectionMode.getValue();
- if (correctionMode.equals(getResources().getString(R.string.prediction_none))) {
- mPredictionSettings.setEnabled(false);
- } else {
- mPredictionSettings.setEnabled(true);
- boolean suggestionsInLandscape =
- !correctionMode.equals(getResources().getString(R.string.prediction_full));
- mPredictionLandscape.setEnabled(suggestionsInLandscape);
- }
- }
+ mQuickFixes = (CheckBoxPreference) findPreference(QUICK_FIXES_KEY);
+ mShowSuggestions = (CheckBoxPreference) findPreference(SHOW_SUGGESTIONS_KEY);
}
- public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
- if (key.equals(CORRECTION_MODE_KEY)) {
- updatePredictionSettings();
+ @Override
+ protected void onResume() {
+ super.onResume();
+ int autoTextSize = AutoText.getSize(getListView());
+ if (autoTextSize < 1) {
+ ((PreferenceGroup) findPreference(PREDICTION_SETTINGS_KEY))
+ .removePreference(mQuickFixes);
+ } else {
+ mShowSuggestions.setDependency(QUICK_FIXES_KEY);
}
}
}
diff --git a/src/com/android/inputmethod/latin/Tutorial.java b/src/com/android/inputmethod/latin/Tutorial.java
index d944d17bf..750de054b 100644
--- a/src/com/android/inputmethod/latin/Tutorial.java
+++ b/src/com/android/inputmethod/latin/Tutorial.java
@@ -17,38 +17,38 @@
package com.android.inputmethod.latin;
import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
+import android.graphics.Rect;
import android.graphics.drawable.Drawable;
-import android.opengl.Visibility;
import android.os.Handler;
import android.os.Message;
-import android.os.SystemClock;
-import android.preference.PreferenceManager;
import android.text.Layout;
+import android.text.SpannableStringBuilder;
import android.text.StaticLayout;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
+import android.view.View.OnTouchListener;
import android.widget.PopupWindow;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
-public class Tutorial {
+public class Tutorial implements OnTouchListener {
private List<Bubble> mBubbles = new ArrayList<Bubble>();
private long mStartTime;
private static final long MINIMUM_TIME = 6000;
private static final long MAXIMUM_TIME = 20000;
private View mInputView;
+ private LatinIME mIme;
private int[] mLocation = new int[2];
private int mBubblePointerOffset;
private static final int MSG_SHOW_BUBBLE = 0;
- private static final int MSG_HIDE_ALL = 1;
+
+ private int mBubbleIndex;
Handler mHandler = new Handler() {
@Override
@@ -58,8 +58,6 @@ public class Tutorial {
Bubble bubba = (Bubble) msg.obj;
bubba.show(mLocation[0], mLocation[1]);
break;
- case MSG_HIDE_ALL:
- close(true);
}
}
};
@@ -70,7 +68,7 @@ public class Tutorial {
int y;
int width;
int gravity;
- String text;
+ CharSequence text;
boolean dismissOnTouch;
boolean dismissOnClose;
PopupWindow window;
@@ -78,16 +76,18 @@ public class Tutorial {
View inputView;
Bubble(Context context, View inputView,
- int backgroundResource, int bx, int by, int bw, int gravity, int textResource,
- boolean dismissOnTouch, boolean dismissOnClose) {
+ int backgroundResource, int bx, int by, int textResource1, int textResource2) {
bubbleBackground = context.getResources().getDrawable(backgroundResource);
- x = bx;
+ x = bx;
y = by;
- width = bw;
- this.gravity = gravity;
- text = context.getResources().getString(textResource);
- this.dismissOnTouch = dismissOnTouch;
- this.dismissOnClose = dismissOnClose;
+ width = (int) (inputView.getWidth() * 0.9);
+ this.gravity = Gravity.TOP | Gravity.LEFT;
+ text = new SpannableStringBuilder()
+ .append(context.getResources().getText(textResource1))
+ .append("\n")
+ .append(context.getResources().getText(textResource2));
+ this.dismissOnTouch = true;
+ this.dismissOnClose = false;
this.inputView = inputView;
window = new PopupWindow(context);
window.setBackgroundDrawable(null);
@@ -97,19 +97,20 @@ public class Tutorial {
textView = (TextView) inflate.inflate(R.layout.bubble_text, null);
textView.setBackgroundDrawable(bubbleBackground);
textView.setText(text);
+ //textView.setText(textResource1);
window.setContentView(textView);
window.setFocusable(false);
window.setTouchable(true);
window.setOutsideTouchable(false);
textView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent me) {
- Tutorial.this.touched();
+ Tutorial.this.next();
return true;
}
});
}
- private void chooseSize(PopupWindow pop, View parentView, CharSequence text, TextView tv) {
+ private int chooseSize(PopupWindow pop, View parentView, CharSequence text, TextView tv) {
int wid = tv.getPaddingLeft() + tv.getPaddingRight();
int ht = tv.getPaddingTop() + tv.getPaddingBottom();
@@ -131,10 +132,12 @@ public class Tutorial {
*/
pop.setWidth(width);
pop.setHeight(ht + l.getHeight());
+ return l.getHeight();
}
void show(int offx, int offy) {
- chooseSize(window, inputView, text, textView);
+ int textHeight = chooseSize(window, inputView, text, textView);
+ offy -= textView.getPaddingTop() + textHeight;
if (inputView.getVisibility() == View.VISIBLE
&& inputView.getWindowVisibility() == View.VISIBLE) {
try {
@@ -155,72 +158,83 @@ public class Tutorial {
}
}
- public Tutorial(LatinKeyboardView inputView) {
+ public Tutorial(LatinIME ime, LatinKeyboardView inputView) {
Context context = inputView.getContext();
- int inputHeight = inputView.getHeight();
+ mIme = ime;
int inputWidth = inputView.getWidth();
+ final int x = inputWidth / 20; // Half of 1/10th
mBubblePointerOffset = inputView.getContext().getResources()
.getDimensionPixelOffset(R.dimen.bubble_pointer_offset);
- Bubble b0 = new Bubble(context, inputView,
- R.drawable.dialog_bubble_step02, 0, 0,
- inputWidth,
- Gravity.BOTTOM | Gravity.LEFT,
- R.string.tip_dismiss,
- false, true);
- mBubbles.add(b0);
-// Bubble b1 = new Bubble(context, inputView,
-// R.drawable.dialog_bubble_step03,
-// (int) (inputWidth * 0.85) + mBubblePointerOffset, inputHeight / 5,
-// (int) (inputWidth * 0.45),
-// Gravity.TOP | Gravity.RIGHT,
-// R.string.tip_long_press,
-// true, false);
-// mBubbles.add(b1);
-// Bubble b2 = new Bubble(inputView.getContext(), inputView,
-// R.drawable.dialog_bubble_step04,
-// inputWidth / 10 - mBubblePointerOffset, inputHeight - inputHeight / 5,
-// (int) (inputWidth * 0.45),
-// Gravity.BOTTOM | Gravity.LEFT,
-// R.string.tip_access_symbols,
-// true, false);
-// mBubbles.add(b2);
+ Bubble bWelcome = new Bubble(context, inputView,
+ R.drawable.dialog_bubble_step02, x, 0,
+ R.string.tip_to_open_keyboard, R.string.touch_to_continue);
+ mBubbles.add(bWelcome);
+ Bubble bAccents = new Bubble(context, inputView,
+ R.drawable.dialog_bubble_step02, x, 0,
+ R.string.tip_to_view_accents, R.string.touch_to_continue);
+ mBubbles.add(bAccents);
+ Bubble b123 = new Bubble(context, inputView,
+ R.drawable.dialog_bubble_step07, x, 0,
+ R.string.tip_to_open_symbols, R.string.touch_to_continue);
+ mBubbles.add(b123);
+ Bubble bABC = new Bubble(context, inputView,
+ R.drawable.dialog_bubble_step07, x, 0,
+ R.string.tip_to_close_symbols, R.string.touch_to_continue);
+ mBubbles.add(bABC);
+ Bubble bSettings = new Bubble(context, inputView,
+ R.drawable.dialog_bubble_step07, x, 0,
+ R.string.tip_to_launch_settings, R.string.touch_to_continue);
+ mBubbles.add(bSettings);
+ Bubble bDone = new Bubble(context, inputView,
+ R.drawable.dialog_bubble_step02, x, 0,
+ R.string.tip_to_start_typing, R.string.touch_to_finish);
+ mBubbles.add(bDone);
mInputView = inputView;
}
void start() {
mInputView.getLocationInWindow(mLocation);
- long delayMillis = 0;
- for (int i = 0; i < mBubbles.size(); i++) {
- mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SHOW_BUBBLE, mBubbles.get(i)), delayMillis);
- delayMillis += 2000;
- }
- //mHandler.sendEmptyMessageDelayed(MSG_HIDE_ALL, MAXIMUM_TIME);
- mStartTime = SystemClock.uptimeMillis();
+ mBubbleIndex = -1;
+ mInputView.setOnTouchListener(this);
+ next();
}
-
- void touched() {
- if (SystemClock.uptimeMillis() - mStartTime < MINIMUM_TIME) {
- return;
+
+ boolean next() {
+ if (mBubbleIndex >= 0) {
+ mBubbles.get(mBubbleIndex).hide();
}
- for (int i = 0; i < mBubbles.size(); i++) {
- Bubble bubba = mBubbles.get(i);
- if (bubba.dismissOnTouch) {
- bubba.hide();
- }
+ mBubbleIndex++;
+ if (mBubbleIndex >= mBubbles.size()) {
+ mInputView.setOnTouchListener(null);
+ mIme.sendDownUpKeyEvents(-1); // Inform the setupwizard that tutorial is in last bubble
+ mIme.tutorialDone();
+ return false;
}
+ if (mBubbleIndex == 3 || mBubbleIndex == 4) {
+ mIme.mKeyboardSwitcher.toggleSymbols();
+ }
+ mHandler.sendMessageDelayed(
+ mHandler.obtainMessage(MSG_SHOW_BUBBLE, mBubbles.get(mBubbleIndex)), 200);
+ return true;
}
- void close(boolean completed) {
- mHandler.removeMessages(MSG_SHOW_BUBBLE);
+ void hide() {
for (int i = 0; i < mBubbles.size(); i++) {
mBubbles.get(i).hide();
}
- if (completed) {
- SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(
- mInputView.getContext());
- Editor editor = sp.edit();
- editor.putBoolean(LatinIME.PREF_TUTORIAL_RUN, true);
- editor.commit();
+ mInputView.setOnTouchListener(null);
+ }
+
+ boolean close() {
+ mHandler.removeMessages(MSG_SHOW_BUBBLE);
+ hide();
+ return true;
+ }
+
+ public boolean onTouch(View v, MotionEvent event) {
+ if (event.getAction() == MotionEvent.ACTION_UP) {
+ next();
}
+ return true;
}
}