Loading src/com/android/contacts/ContactsUtils.java +19 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.android.i18n.phonenumbers.PhoneNumberUtil; import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.location.CountryDetector; import android.net.Uri; import android.provider.ContactsContract; Loading Loading @@ -221,4 +222,22 @@ public class ContactsUtils { textView.setText(context.getString(textResourceId)); return view; } /** * Returns the {@link Rect} with left, top, right, and bottom coordinates * that are equivalent to the given {@link View}'s bounds. This is equivalent to how the * target {@link Rect} is calculated in {@link QuickContact#showQuickContact}. */ public static Rect getTargetRectFromView(Context context, View view) { final float appScale = context.getResources().getCompatibilityInfo().applicationScale; final int[] pos = new int[2]; view.getLocationOnScreen(pos); final Rect rect = new Rect(); rect.left = (int) (pos[0] * appScale + 0.5f); rect.top = (int) (pos[1] * appScale + 0.5f); rect.right = (int) ((pos[0] + view.getWidth()) * appScale + 0.5f); rect.bottom = (int) ((pos[1] + view.getHeight()) * appScale + 0.5f); return rect; } } src/com/android/contacts/activities/PeopleActivity.java +4 −2 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ import android.app.FragmentTransaction; import android.content.ActivityNotFoundException; import android.content.ContentValues; import android.content.Intent; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.os.Handler; Loading @@ -77,6 +78,7 @@ import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Intents; import android.provider.ContactsContract.ProviderStatus; import android.provider.ContactsContract.QuickContact; import android.provider.Settings; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.PagerAdapter; Loading Loading @@ -1142,9 +1144,9 @@ public class PeopleActivity extends ContactsActivity private final class StrequentContactListFragmentListener implements ContactTileListFragment.Listener { @Override public void onContactSelected(Uri contactUri) { public void onContactSelected(Uri contactUri, Rect targetRect) { if (PhoneCapabilityTester.isUsingTwoPanes(PeopleActivity.this)) { setupContactDetailFragment(contactUri); QuickContact.showQuickContact(PeopleActivity.this, targetRect, contactUri, 0, null); } else { startActivity(new Intent(Intent.ACTION_VIEW, contactUri)); } Loading src/com/android/contacts/group/GroupDetailFragment.java +2 −1 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.content.Intent; import android.content.Loader; import android.content.res.Resources; import android.database.Cursor; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract.Groups; Loading Loading @@ -208,7 +209,7 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener { new ContactTileAdapter.Listener() { @Override public void onContactSelected(Uri contactUri) { public void onContactSelected(Uri contactUri, Rect targetRect) { mListener.onContactSelected(contactUri); } }; Loading src/com/android/contacts/list/ContactTileAdapter.java +4 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.ContentUris; import android.content.Context; import android.content.res.Resources; import android.database.Cursor; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.net.Uri; import android.provider.ContactsContract.CommonDataKinds.Phone; Loading Loading @@ -477,7 +478,8 @@ public class ContactTileAdapter extends BaseAdapter { @Override public void onClick(ContactTileView contactTileView) { if (mListener != null) { mListener.onContactSelected(contactTileView.getLookupUri()); mListener.onContactSelected(contactTileView.getLookupUri(), ContactsUtils.getTargetRectFromView(mContext, contactTileView)); } } }; Loading Loading @@ -659,6 +661,6 @@ public class ContactTileAdapter extends BaseAdapter { } public interface Listener { public void onContactSelected(Uri contactUri); public void onContactSelected(Uri contactUri, Rect targetRect); } } src/com/android/contacts/list/ContactTileListFragment.java +4 −3 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.content.CursorLoader; import android.content.Loader; import android.content.res.Resources; import android.database.Cursor; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; Loading @@ -48,7 +49,7 @@ public class ContactTileListFragment extends Fragment { private static final String TAG = ContactTileListFragment.class.getSimpleName(); public interface Listener { public void onContactSelected(Uri contactUri); public void onContactSelected(Uri contactUri, Rect targetRect); } private static int LOADER_CONTACTS = 1; Loading Loading @@ -166,9 +167,9 @@ public class ContactTileListFragment extends Fragment { private ContactTileAdapter.Listener mAdapterListener = new ContactTileAdapter.Listener() { @Override public void onContactSelected(Uri contactUri) { public void onContactSelected(Uri contactUri, Rect targetRect) { if (mListener != null) { mListener.onContactSelected(contactUri); mListener.onContactSelected(contactUri, targetRect); } } }; Loading Loading
src/com/android/contacts/ContactsUtils.java +19 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import com.android.i18n.phonenumbers.PhoneNumberUtil; import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.location.CountryDetector; import android.net.Uri; import android.provider.ContactsContract; Loading Loading @@ -221,4 +222,22 @@ public class ContactsUtils { textView.setText(context.getString(textResourceId)); return view; } /** * Returns the {@link Rect} with left, top, right, and bottom coordinates * that are equivalent to the given {@link View}'s bounds. This is equivalent to how the * target {@link Rect} is calculated in {@link QuickContact#showQuickContact}. */ public static Rect getTargetRectFromView(Context context, View view) { final float appScale = context.getResources().getCompatibilityInfo().applicationScale; final int[] pos = new int[2]; view.getLocationOnScreen(pos); final Rect rect = new Rect(); rect.left = (int) (pos[0] * appScale + 0.5f); rect.top = (int) (pos[1] * appScale + 0.5f); rect.right = (int) ((pos[0] + view.getWidth()) * appScale + 0.5f); rect.bottom = (int) ((pos[1] + view.getHeight()) * appScale + 0.5f); return rect; } }
src/com/android/contacts/activities/PeopleActivity.java +4 −2 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ import android.app.FragmentTransaction; import android.content.ActivityNotFoundException; import android.content.ContentValues; import android.content.Intent; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.os.Handler; Loading @@ -77,6 +78,7 @@ import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Intents; import android.provider.ContactsContract.ProviderStatus; import android.provider.ContactsContract.QuickContact; import android.provider.Settings; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.PagerAdapter; Loading Loading @@ -1142,9 +1144,9 @@ public class PeopleActivity extends ContactsActivity private final class StrequentContactListFragmentListener implements ContactTileListFragment.Listener { @Override public void onContactSelected(Uri contactUri) { public void onContactSelected(Uri contactUri, Rect targetRect) { if (PhoneCapabilityTester.isUsingTwoPanes(PeopleActivity.this)) { setupContactDetailFragment(contactUri); QuickContact.showQuickContact(PeopleActivity.this, targetRect, contactUri, 0, null); } else { startActivity(new Intent(Intent.ACTION_VIEW, contactUri)); } Loading
src/com/android/contacts/group/GroupDetailFragment.java +2 −1 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.content.Intent; import android.content.Loader; import android.content.res.Resources; import android.database.Cursor; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract.Groups; Loading Loading @@ -208,7 +209,7 @@ public class GroupDetailFragment extends Fragment implements OnScrollListener { new ContactTileAdapter.Listener() { @Override public void onContactSelected(Uri contactUri) { public void onContactSelected(Uri contactUri, Rect targetRect) { mListener.onContactSelected(contactUri); } }; Loading
src/com/android/contacts/list/ContactTileAdapter.java +4 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.ContentUris; import android.content.Context; import android.content.res.Resources; import android.database.Cursor; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.net.Uri; import android.provider.ContactsContract.CommonDataKinds.Phone; Loading Loading @@ -477,7 +478,8 @@ public class ContactTileAdapter extends BaseAdapter { @Override public void onClick(ContactTileView contactTileView) { if (mListener != null) { mListener.onContactSelected(contactTileView.getLookupUri()); mListener.onContactSelected(contactTileView.getLookupUri(), ContactsUtils.getTargetRectFromView(mContext, contactTileView)); } } }; Loading Loading @@ -659,6 +661,6 @@ public class ContactTileAdapter extends BaseAdapter { } public interface Listener { public void onContactSelected(Uri contactUri); public void onContactSelected(Uri contactUri, Rect targetRect); } }
src/com/android/contacts/list/ContactTileListFragment.java +4 −3 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.content.CursorLoader; import android.content.Loader; import android.content.res.Resources; import android.database.Cursor; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; Loading @@ -48,7 +49,7 @@ public class ContactTileListFragment extends Fragment { private static final String TAG = ContactTileListFragment.class.getSimpleName(); public interface Listener { public void onContactSelected(Uri contactUri); public void onContactSelected(Uri contactUri, Rect targetRect); } private static int LOADER_CONTACTS = 1; Loading Loading @@ -166,9 +167,9 @@ public class ContactTileListFragment extends Fragment { private ContactTileAdapter.Listener mAdapterListener = new ContactTileAdapter.Listener() { @Override public void onContactSelected(Uri contactUri) { public void onContactSelected(Uri contactUri, Rect targetRect) { if (mListener != null) { mListener.onContactSelected(contactUri); mListener.onContactSelected(contactUri, targetRect); } } }; Loading