Merge "Disable call settings for secondary users." into lmp-dev
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index cb01e8e..12c52da 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -65,6 +65,7 @@
 import com.android.contacts.common.CallUtil;
 import com.android.contacts.common.dialog.ClearFrequentsDialog;
 import com.android.contacts.common.interactions.ImportExportDialogFragment;
+import com.android.contacts.common.interactions.TouchPointManager;
 import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
 import com.android.contacts.common.widget.FloatingActionButtonController;
 import com.android.dialer.activity.TransactionSafeActivity;
@@ -89,6 +90,7 @@
 import com.android.dialer.widget.SearchEditTextLayout;
 import com.android.dialer.widget.SearchEditTextLayout.OnBackButtonClickedListener;
 import com.android.dialerbind.DatabaseHelperManager;
+import com.android.incallui.CallCardFragment;
 import com.android.phone.common.animation.AnimUtils;
 import com.android.phone.common.animation.AnimationListenerAdapter;
 
@@ -100,6 +102,7 @@
  * The dialer tab's title is 'phone', a more common name (see strings.xml).
  */
 public class DialtactsActivity extends TransactionSafeActivity implements View.OnClickListener,
+        View.OnTouchListener,
         DialpadFragment.OnDialpadQueryChangedListener,
         OnListFragmentScrolledListener,
         DialpadFragment.HostInterface,
@@ -387,6 +390,7 @@
         int floatingActionButtonWidth = resources.getDimensionPixelSize(
                 R.dimen.floating_action_button_width);
         mFloatingActionButton.setOnClickListener(this);
+        mFloatingActionButton.setOnTouchListener(this);
         mFloatingActionButtonController = new FloatingActionButtonController(this,
                 floatingActionButtonContainer);
         mFloatingActionButtonDialpadMarginBottomOffset = resources.getDimensionPixelOffset(
@@ -414,10 +418,16 @@
             mActionBarController.restoreInstanceState(savedInstanceState);
         }
 
-        mSlideIn = AnimationUtils.loadAnimation(this,
-                mIsLandscape ? R.anim.dialpad_slide_in_right : R.anim.dialpad_slide_in_bottom);
-        mSlideOut = AnimationUtils.loadAnimation(this,
-                mIsLandscape ? R.anim.dialpad_slide_out_right : R.anim.dialpad_slide_out_bottom);
+        final boolean isLayoutRtl = DialerUtils.isRtl();
+        if (mIsLandscape) {
+            mSlideIn = AnimationUtils.loadAnimation(this,
+                    isLayoutRtl ? R.anim.dialpad_slide_in_left : R.anim.dialpad_slide_in_right);
+            mSlideOut = AnimationUtils.loadAnimation(this,
+                    isLayoutRtl ? R.anim.dialpad_slide_out_left : R.anim.dialpad_slide_out_right);
+        } else {
+            mSlideIn = AnimationUtils.loadAnimation(this, R.anim.dialpad_slide_in_bottom);
+            mSlideOut = AnimationUtils.loadAnimation(this, R.anim.dialpad_slide_out_bottom);
+        }
 
         mSlideIn.setInterpolator(AnimUtils.EASE_IN);
         mSlideOut.setInterpolator(AnimUtils.EASE_OUT);
@@ -457,6 +467,8 @@
                 if (!mIsDialpadShown) {
                     maybeExitSearchUi();
                 }
+
+                recordTouchEvent(v, event);
                 return false;
             }
         });
@@ -558,6 +570,18 @@
     }
 
     @Override
+    public boolean onTouch(View view, MotionEvent event) {
+        recordTouchEvent(view, event);
+        return false;
+    }
+
+    private void recordTouchEvent(View view, MotionEvent event) {
+        if (event.getAction() == MotionEvent.ACTION_DOWN) {
+            TouchPointManager.getInstance().setPoint((int) event.getRawX(), (int) event.getRawY());
+        }
+    }
+
+    @Override
     public boolean onMenuItemClick(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.menu_history:
diff --git a/src/com/android/dialer/util/DialerUtils.java b/src/com/android/dialer/util/DialerUtils.java
index e24b642..7f6e75b 100644
--- a/src/com/android/dialer/util/DialerUtils.java
+++ b/src/com/android/dialer/util/DialerUtils.java
@@ -23,8 +23,11 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.res.Resources;
+import android.graphics.Point;
 import android.net.Uri;
+import android.os.Bundle;
 import android.provider.Telephony;
+import android.telecomm.TelecommManager;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
@@ -33,7 +36,10 @@
 import android.widget.Toast;
 
 import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.interactions.TouchPointManager;
 import com.android.dialer.R;
+import com.android.incallui.CallCardFragment;
+import com.android.incallui.Log;
 
 import java.util.List;
 import java.util.Locale;
@@ -66,6 +72,14 @@
     public static void startActivityWithErrorToast(Context context, Intent intent, int msgId) {
         try {
             if (Intent.ACTION_CALL.equals(intent.getAction())) {
+                // All dialer-initiated calls should pass the touch point to the InCallUI
+                Point touchPoint = TouchPointManager.getInstance().getPoint();
+                if (touchPoint.x != 0 || touchPoint.y != 0) {
+                    Bundle extras = new Bundle();
+                    extras.putParcelable(TouchPointManager.TOUCH_POINT, touchPoint);
+                    intent.putExtra(TelecommManager.EXTRA_OUTGOING_CALL_EXTRAS, extras);
+                }
+
                 ((Activity) context).startActivityForResult(intent, 0);
             } else {
                 context.startActivity(intent);