Loading AndroidManifest.xml +3 −1 Original line number Diff line number Diff line Loading @@ -286,7 +286,9 @@ android:theme="@style/FullyTranslucent.QuickContact" android:launchMode="singleTop" android:excludeFromRecents="true" android:taskAffinity="android.task.quickcontact"> android:taskAffinity="android.task.quickcontact" android:windowSoftInputMode="stateUnchanged" > <intent-filter> <action android:name="com.android.contacts.action.QUICK_CONTACT" /> Loading res/layout-finger/quickcontact.xml +4 −2 Original line number Diff line number Diff line Loading @@ -14,8 +14,10 @@ limitations under the License. --> <RelativeLayout <view xmlns:android="http://schemas.android.com/apk/res/android" class="com.android.contacts.ui.QuickContactWindow$RootLayout" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="@dimen/quickcontact_shadow_horiz" Loading Loading @@ -145,4 +147,4 @@ android:visibility="invisible" android:src="@drawable/quickcontact_arrow_down" /> </RelativeLayout> </view> src/com/android/contacts/ui/QuickContactWindow.java +42 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import android.content.ActivityNotFoundException; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.content.EntityIterator; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; Loading @@ -59,6 +58,7 @@ import android.provider.ContactsContract.CommonDataKinds.Photo; import android.provider.ContactsContract.CommonDataKinds.StructuredPostal; import android.provider.ContactsContract.CommonDataKinds.Website; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.Gravity; Loading @@ -85,6 +85,7 @@ import android.widget.CompoundButton; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; Loading Loading @@ -114,6 +115,32 @@ public class QuickContactWindow implements Window.Callback, public void onDismiss(QuickContactWindow dialog); } /** * Custom layout the sole purpose of which is to intercept the BACK key and * close QC even when the soft keyboard is open. */ public static class RootLayout extends RelativeLayout { QuickContactWindow mQuickContactWindow; public RootLayout(Context context, AttributeSet attrs) { super(context, attrs); } /** * Intercepts the BACK key event and dismisses QuickContact window. */ @Override public boolean dispatchKeyEventPreIme(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { mQuickContactWindow.dismiss(); return true; } else { return super.dispatchKeyEventPreIme(event); } } } private final Context mContext; private final LayoutInflater mInflater; private final WindowManager mWindowManager; Loading Loading @@ -148,6 +175,8 @@ public class QuickContactWindow implements Window.Callback, private ImageView mArrowDown; private int mMode; private RootLayout mRootView; private View mHeaderView; private View mHeader; private HorizontalScrollView mTrackScroll; private ViewGroup mTrack; Loading Loading @@ -236,9 +265,17 @@ public class QuickContactWindow implements Window.Callback, mWindow = PolicyManager.makeNewWindow(mContext); mWindow.setCallback(this); mWindow.setWindowManager(mWindowManager, null, null); mWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED); mWindow.setContentView(R.layout.quickcontact); mRootView = (RootLayout)mWindow.findViewById(R.id.root); mRootView.mQuickContactWindow = this; mHeaderView = mWindow.findViewById(R.id.header); mHeaderView.setFocusable(true); mHeaderView.setFocusableInTouchMode(true); mArrowUp = (ImageView)mWindow.findViewById(R.id.arrow_up); mArrowDown = (ImageView)mWindow.findViewById(R.id.arrow_down); Loading Loading @@ -353,6 +390,10 @@ public class QuickContactWindow implements Window.Callback, resetTrack(); // We need to have a focused view inside the QuickContact window so // that the BACK key event can be delivered to the RootLayout mHeaderView.requestFocus(); mHasValidSocial = false; mDismissed = false; mQuerying = true; Loading Loading
AndroidManifest.xml +3 −1 Original line number Diff line number Diff line Loading @@ -286,7 +286,9 @@ android:theme="@style/FullyTranslucent.QuickContact" android:launchMode="singleTop" android:excludeFromRecents="true" android:taskAffinity="android.task.quickcontact"> android:taskAffinity="android.task.quickcontact" android:windowSoftInputMode="stateUnchanged" > <intent-filter> <action android:name="com.android.contacts.action.QUICK_CONTACT" /> Loading
res/layout-finger/quickcontact.xml +4 −2 Original line number Diff line number Diff line Loading @@ -14,8 +14,10 @@ limitations under the License. --> <RelativeLayout <view xmlns:android="http://schemas.android.com/apk/res/android" class="com.android.contacts.ui.QuickContactWindow$RootLayout" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="@dimen/quickcontact_shadow_horiz" Loading Loading @@ -145,4 +147,4 @@ android:visibility="invisible" android:src="@drawable/quickcontact_arrow_down" /> </RelativeLayout> </view>
src/com/android/contacts/ui/QuickContactWindow.java +42 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,6 @@ import android.content.ActivityNotFoundException; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.content.EntityIterator; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; Loading @@ -59,6 +58,7 @@ import android.provider.ContactsContract.CommonDataKinds.Photo; import android.provider.ContactsContract.CommonDataKinds.StructuredPostal; import android.provider.ContactsContract.CommonDataKinds.Website; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.Gravity; Loading @@ -85,6 +85,7 @@ import android.widget.CompoundButton; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; Loading Loading @@ -114,6 +115,32 @@ public class QuickContactWindow implements Window.Callback, public void onDismiss(QuickContactWindow dialog); } /** * Custom layout the sole purpose of which is to intercept the BACK key and * close QC even when the soft keyboard is open. */ public static class RootLayout extends RelativeLayout { QuickContactWindow mQuickContactWindow; public RootLayout(Context context, AttributeSet attrs) { super(context, attrs); } /** * Intercepts the BACK key event and dismisses QuickContact window. */ @Override public boolean dispatchKeyEventPreIme(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { mQuickContactWindow.dismiss(); return true; } else { return super.dispatchKeyEventPreIme(event); } } } private final Context mContext; private final LayoutInflater mInflater; private final WindowManager mWindowManager; Loading Loading @@ -148,6 +175,8 @@ public class QuickContactWindow implements Window.Callback, private ImageView mArrowDown; private int mMode; private RootLayout mRootView; private View mHeaderView; private View mHeader; private HorizontalScrollView mTrackScroll; private ViewGroup mTrack; Loading Loading @@ -236,9 +265,17 @@ public class QuickContactWindow implements Window.Callback, mWindow = PolicyManager.makeNewWindow(mContext); mWindow.setCallback(this); mWindow.setWindowManager(mWindowManager, null, null); mWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED); mWindow.setContentView(R.layout.quickcontact); mRootView = (RootLayout)mWindow.findViewById(R.id.root); mRootView.mQuickContactWindow = this; mHeaderView = mWindow.findViewById(R.id.header); mHeaderView.setFocusable(true); mHeaderView.setFocusableInTouchMode(true); mArrowUp = (ImageView)mWindow.findViewById(R.id.arrow_up); mArrowDown = (ImageView)mWindow.findViewById(R.id.arrow_down); Loading Loading @@ -353,6 +390,10 @@ public class QuickContactWindow implements Window.Callback, resetTrack(); // We need to have a focused view inside the QuickContact window so // that the BACK key event can be delivered to the RootLayout mHeaderView.requestFocus(); mHasValidSocial = false; mDismissed = false; mQuerying = true; Loading