From 2693030ea4604f68cf662aa4785a9a8fb3a1a23d Mon Sep 17 00:00:00 2001 From: Wink Saville Date: Fri, 12 Feb 2010 12:12:45 -0800 Subject: Launcher changes to handle UTS test mode. When in UTS test mode keys received need to be handled by the Phone application or Contacts application to operate properly in the test mode. When not in test mode the search widget will handle the keys as it was before this change. The UTS test mode is enabled when presist.sys.uts-test-mode is 1. bug: 2402366 Change-Id: I58e68830f9ce6905e189ecba1c04b1076799a0a0 Signed-off-by: Wink Saville --- src/com/android/launcher2/Launcher.java | 56 +++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 45545db5..7a4e2bc2 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -43,13 +43,16 @@ import android.graphics.Rect; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.graphics.drawable.ColorDrawable; +import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Parcelable; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; +import android.provider.ContactsContract; import android.provider.LiveFolders; +import android.telephony.PhoneNumberUtils; import android.text.Selection; import android.text.SpannableStringBuilder; import android.text.TextUtils; @@ -201,6 +204,8 @@ public final class Launcher extends Activity private ImageView mPreviousView; private ImageView mNextView; + private boolean mUtsTestMode; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -406,6 +411,7 @@ public final class Launcher extends Activity super.onResume(); mPaused = false; + mUtsTestMode = SystemProperties.getInt("persist.sys.uts-test-mode", 0) == 1; if (mRestoring) { mWorkspaceLoading = true; @@ -456,6 +462,10 @@ public final class Launcher extends Activity @Override public boolean onKeyDown(int keyCode, KeyEvent event) { + if (mUtsTestMode) { + return handleUtsTestModeKeyDown(keyCode, event); + } + boolean handled = super.onKeyDown(keyCode, event); if (!handled && acceptFilter() && keyCode != KeyEvent.KEYCODE_ENTER) { boolean gotKey = TextKeyListener.getInstance().onKeyDown(mWorkspace, mDefaultKeySsb, @@ -474,6 +484,52 @@ public final class Launcher extends Activity return handled; } + public boolean handleUtsTestModeKeyDown(int keyCode, KeyEvent event) { + Log.d(TAG, "UTS-TEST-MODE"); + boolean handled = super.onKeyDown(keyCode, event); + if (!handled && acceptFilter() && keyCode != KeyEvent.KEYCODE_ENTER) { + boolean gotKey = TextKeyListener.getInstance().onKeyDown(mWorkspace, mDefaultKeySsb, + keyCode, event); + if (gotKey && mDefaultKeySsb != null && mDefaultKeySsb.length() > 0) { + // something usable has been typed - dispatch it now. + final String str = mDefaultKeySsb.toString(); + + boolean isDialable = true; + final int count = str.length(); + for (int i = 0; i < count; i++) { + if (!PhoneNumberUtils.isReallyDialable(str.charAt(i))) { + isDialable = false; + break; + } + } + Intent intent; + if (isDialable) { + intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", str, null)); + } else { + intent = new Intent(ContactsContract.Intents.UI.FILTER_CONTACTS_ACTION); + intent.putExtra(ContactsContract.Intents.UI.FILTER_TEXT_EXTRA_KEY, str); + } + + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK + | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + + try { + startActivity(intent); + } catch (android.content.ActivityNotFoundException ex) { + // Oh well... no one knows how to filter/dial. Life goes on. + } + + mDefaultKeySsb.clear(); + mDefaultKeySsb.clearSpans(); + Selection.setSelection(mDefaultKeySsb, 0); + + return true; + } + } + + return handled; + } + private String getTypedText() { return mDefaultKeySsb.toString(); } -- cgit v1.2.3