Added QuickContacts.
Change-Id: I0bf3b536da73c2f9862a958ff0275ef8404def4f
diff --git a/res/layout/contact_tile_single.xml b/res/layout/contact_tile_frequent.xml
similarity index 95%
rename from res/layout/contact_tile_single.xml
rename to res/layout/contact_tile_frequent.xml
index 7147f3c..4ba7396 100644
--- a/res/layout/contact_tile_single.xml
+++ b/res/layout/contact_tile_frequent.xml
@@ -36,8 +36,8 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:paddingTop="24dip" />
- <ImageView
- android:id="@+id/contact_tile_image"
+ <QuickContactBadge
+ android:id="@+id/contact_tile_quick"
android:layout_width="64dip"
android:layout_height="64dip"
android:scaleType="centerCrop" />
diff --git a/res/layout/contact_tile_square.xml b/res/layout/contact_tile_square.xml
deleted file mode 100644
index ca79cef..0000000
--- a/res/layout/contact_tile_square.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<view
- xmlns:android="http://schemas.android.com/apk/res/android"
- class="com.android.contacts.list.ContactTileSquareView"
- android:focusable="true"
- android:padding="1px"
- android:background="@drawable/list_selector" >
-
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <ImageView
- android:id="@+id/contact_tile_image"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="centerCrop" />
-
- <View
- android:id="@+id/contact_tile_background"
- android:layout_width="match_parent"
- android:layout_height="48dip"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- android:alpha="0.5"
- android:background="@android:color/black" />
-
- <TextView
- android:id="@+id/contact_tile_name"
- android:layout_width="match_parent"
- android:layout_height="48dip"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- android:gravity="center_vertical"
- android:paddingLeft="8dip"
- android:singleLine="true"
- android:ellipsize="end"
- android:textColor="@android:color/white"
- android:textAppearance="?android:attr/textAppearanceMedium" />
-
- </RelativeLayout>
-
-</view>
diff --git a/res/layout/contact_tile_single.xml b/res/layout/contact_tile_starred.xml
similarity index 60%
copy from res/layout/contact_tile_single.xml
copy to res/layout/contact_tile_starred.xml
index 7147f3c..6cdf213 100644
--- a/res/layout/contact_tile_single.xml
+++ b/res/layout/contact_tile_starred.xml
@@ -15,33 +15,27 @@
-->
<view
xmlns:android="http://schemas.android.com/apk/res/android"
- class="com.android.contacts.list.ContactTileView"
- android:focusable="true"
- android:background="@drawable/list_selector"
- android:paddingRight="16dip"
- android:paddingLeft="16dip" >
+ class="com.android.contacts.list.ContactTileStarredView"
+ style="@style/ContactTileStarred" >
- <LinearLayout
+ <RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
- <TextView
- android:id="@+id/contact_tile_name"
- android:layout_width="0dip"
- android:layout_height="fill_parent"
- android:layout_weight="1"
- android:textSize="18sp"
- android:singleLine="true"
- android:ellipsize="end"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:paddingTop="24dip" />
-
<ImageView
android:id="@+id/contact_tile_image"
- android:layout_width="64dip"
- android:layout_height="64dip"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
android:scaleType="centerCrop" />
- </LinearLayout>
+ <View
+ android:id="@+id/contact_tile_background"
+ style="@style/ContactTileStarredTextBackground" />
+
+ <TextView
+ android:id="@+id/contact_tile_name"
+ style="@style/ContactTileStarredText" />
+
+ </RelativeLayout>
</view>
diff --git a/res/layout/contact_tile_starred_quick_contact.xml b/res/layout/contact_tile_starred_quick_contact.xml
new file mode 100644
index 0000000..241ab54
--- /dev/null
+++ b/res/layout/contact_tile_starred_quick_contact.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<view
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ class="com.android.contacts.list.ContactTileStarredView"
+ style="@style/ContactTileStarred" >
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
+
+ <QuickContactBadge
+ android:id="@+id/contact_tile_quick"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:scaleType="centerCrop" />
+
+ <View
+ android:id="@+id/contact_tile_background"
+ style="@style/ContactTileStarredTextBackground" />
+
+ <TextView
+ android:id="@+id/contact_tile_name"
+ style="@style/ContactTileStarredText" />
+
+ </RelativeLayout>
+
+</view>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index e4b7a86..01f0e62 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -328,4 +328,32 @@
<item name="android:background">@drawable/btn_dial</item>
<item name="android:soundEffectsEnabled">false</item>
</style>
+
+ <style name="ContactTileStarred">
+ <item name="android:focusable">true</item>
+ <item name="android:padding">1px</item>
+ <item name="android:background">@drawable/list_selector</item>
+ </style>
+
+ <style name="ContactTileStarredText">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">48dip</item>
+ <item name="android:layout_alignParentBottom">true</item>
+ <item name="android:layout_alignParentLeft">true</item>
+ <item name="android:gravity">center_vertical</item>
+ <item name="android:paddingLeft">8dip</item>
+ <item name="android:singleLine">true</item>
+ <item name="android:ellipsize">end</item>
+ <item name="android:textColor">@android:color/white</item>
+ <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
+ </style>
+
+ <style name="ContactTileStarredTextBackground">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">48dip</item>
+ <item name="android:layout_alignParentBottom">true</item>
+ <item name="android:layout_alignParentLeft">true</item>
+ <item name="android:alpha">0.5</item>
+ <item name="android:background">@android:color/black</item>
+ </style>
</resources>
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index e345db7..0fa745d 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -333,6 +333,7 @@
mCallLogFragment.onVisibilityChanged(currentPosition == TAB_INDEX_CALL_LOG);
} else if (fragment instanceof StrequentContactListFragment) {
mStrequentFragment = (StrequentContactListFragment) fragment;
+ mStrequentFragment.setQuickContact(false);
mStrequentFragment.setListener(mStrequentListener);
} else if (fragment instanceof PhoneNumberPickerFragment) {
mSearchFragment = (PhoneNumberPickerFragment) fragment;
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index bf0b256..12a17f2 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -236,10 +236,12 @@
} else if (fragment instanceof GroupDetailFragment) {
mGroupDetailFragment = (GroupDetailFragment) fragment;
mGroupDetailFragment.setListener(mGroupDetailFragmentListener);
+ mGroupDetailFragment.setQuickContact(PhoneCapabilityTester.isUsingTwoPanes(this));
} else if (fragment instanceof StrequentContactListFragment) {
mFavoritesFragment = (StrequentContactListFragment) fragment;
mFavoritesFragment.setListener(mFavoritesFragmentListener);
mFavoritesFragment.setDisplayType(DisplayType.STARRED_ONLY);
+ mFavoritesFragment.setQuickContact(PhoneCapabilityTester.isUsingTwoPanes(this));
}
}
@@ -488,6 +490,10 @@
filter = ContactListFilter.createFilterWithType(
ContactListFilter.FILTER_TYPE_STARRED);
break;
+ case ContactsRequest.ACTION_VIEW_CONTACT:
+ if (PhoneCapabilityTester.isUsingTwoPanes(this)) {
+ getActionBar().setSelectedNavigationItem(TabState.ALL.ordinal());
+ }
}
mSearchMode = mRequest.isSearchMode();
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index fe2605e..9e668bb 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -105,6 +105,7 @@
mAdapter = new ContactTileAdapter(activity, mContactTileListener, columnCount,
DisplayType.GROUP_MEMBERS);
+
configurePhotoLoader();
}
@@ -130,6 +131,10 @@
startGroupMetadataLoader();
}
+ public void setQuickContact(boolean enableQuickContact) {
+ mAdapter.setQuickContact(enableQuickContact);
+ }
+
private void configureAdapter(long groupId) {
mGroupId = groupId;
mMemberListView.setAdapter(mAdapter);
diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
index 5d5e6cb..20c639e 100644
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/list/ContactTileAdapter.java
@@ -65,6 +65,7 @@
private int mPhotoUriIndex;
private int mNameIndex;
private int mStarredIndex;
+ private boolean mIsQuickContact = false;
/**
* Configures the adapter to filter and display contacts using different view types.
@@ -72,27 +73,23 @@
*/
public enum DisplayType {
/**
- * Displays a mixed view type where Starred Contacts
- * are in a regular {@link ContactTileView} layout and
- * frequent contacts are in a small {@link ContactTileView} layout.
+ * Displays a mixed view type of starred and frequent contacts
*/
STREQUENT,
/**
- * Display only starred contacts in
- * regular {@link ContactTileView} layout.
+ * Display only starred contacts
*/
STARRED_ONLY,
/**
- * Display only most frequently contacted in a
- * single {@link ContactTileView} layout.
+ * Display only most frequently contacted
*/
FREQUENT_ONLY,
/**
- * Display all contacts from a group in the cursor in a
- * regular {@link ContactTileView} layout. Use {@link GroupMemberLoader}
+ * Display all contacts from a group in the cursor
+ * Use {@link GroupMemberLoader}
* when passing {@link Cursor} into loadFromCusor method.
*/
GROUP_MEMBERS
@@ -120,6 +117,10 @@
mDisplayType = displayType;
}
+ public void setQuickContact(boolean enableQuickContact) {
+ mIsQuickContact = enableQuickContact;
+ }
+
/**
* Sets the column indices for expected {@link Cursor}
* based on {@link DisplayType}.
@@ -292,7 +293,7 @@
int columnCount = -1;
switch (itemViewType) {
- case ViewTypes.SQUARE:
+ case ViewTypes.STARRED:
if (contactTileRowView == null) {
// Creating new row if needed
contactTileRowView = new ContactTileRow(mContext, layoutResId, true);
@@ -300,7 +301,7 @@
columnCount = mColumnCount;
break;
- case ViewTypes.SINGLE_ROW:
+ case ViewTypes.FREQUENT:
if (contactTileRowView == null) {
// Creating new row if needed
contactTileRowView = new ContactTileRow(mContext, layoutResId, false);
@@ -327,10 +328,14 @@
private int getLayoutResourceId(int viewType) {
switch (viewType) {
- case ViewTypes.SQUARE:
- return R.layout.contact_tile_square;
- case ViewTypes.SINGLE_ROW:
- return R.layout.contact_tile_single;
+ case ViewTypes.STARRED:
+ if (mIsQuickContact) {
+ return R.layout.contact_tile_starred_quick_contact;
+ } else {
+ return R.layout.contact_tile_starred;
+ }
+ case ViewTypes.FREQUENT:
+ return R.layout.contact_tile_frequent;
default:
throw new IllegalArgumentException("Received unrecognized viewType " + viewType);
}
@@ -343,8 +348,8 @@
/**
* Returns view type based on {@link DisplayType}.
* {@link DisplayType#STARRED_ONLY} and {@link DisplayType#GROUP_MEMBERS}
- * are {@link ViewTypes#SQUARE}.
- * {@link DisplayType#FREQUENT_ONLY} is {@link ViewTypes#SINGLE_ROW}.
+ * are {@link ViewTypes#STARRED}.
+ * {@link DisplayType#FREQUENT_ONLY} is {@link ViewTypes#FREQUENT}.
* {@link DisplayType#STREQUENT} mixes both {@link ViewTypes}
* and also adds in {@link ViewTypes#DIVIDER}.
*/
@@ -353,17 +358,17 @@
switch (mDisplayType) {
case STREQUENT:
if (position < mDividerRowIndex) {
- return ViewTypes.SQUARE;
+ return ViewTypes.STARRED;
} else if (position == mDividerRowIndex) {
return ViewTypes.DIVIDER;
} else {
- return ViewTypes.SINGLE_ROW;
+ return ViewTypes.FREQUENT;
}
case STARRED_ONLY:
case GROUP_MEMBERS:
- return ViewTypes.SQUARE;
+ return ViewTypes.STARRED;
case FREQUENT_ONLY:
- return ViewTypes.SINGLE_ROW;
+ return ViewTypes.FREQUENT;
default:
throw new IllegalStateException(
"Received unrecognized DisplayType " + mDisplayType);
@@ -400,7 +405,7 @@
if (getChildCount() <= tileIndex) {
if (mIsContactTileSquare) {
- contactTile = (ContactTileSquareView) inflate(mContext, mLayoutResId, null);
+ contactTile = (ContactTileStarredView) inflate(mContext, mLayoutResId, null);
} else {
contactTile = (ContactTileView) inflate(mContext, mLayoutResId, null);
}
@@ -433,9 +438,9 @@
private static class ViewTypes {
public static final int COUNT = 3;
- public static final int SQUARE = 0;
+ public static final int STARRED = 0;
public static final int DIVIDER = 1;
- public static final int SINGLE_ROW = 2;
+ public static final int FREQUENT = 2;
}
public interface Listener {
diff --git a/src/com/android/contacts/list/ContactTileSquareView.java b/src/com/android/contacts/list/ContactTileStarredView.java
similarity index 80%
rename from src/com/android/contacts/list/ContactTileSquareView.java
rename to src/com/android/contacts/list/ContactTileStarredView.java
index 7716481..3c0ba42 100644
--- a/src/com/android/contacts/list/ContactTileSquareView.java
+++ b/src/com/android/contacts/list/ContactTileStarredView.java
@@ -19,13 +19,13 @@
import android.util.AttributeSet;
/**
- * A ContactTileSquare displays the contact's picture overlayed with their name
+ * A {@link ContactTileStarredView} displays the contact's picture overlayed with their name
* in a perfect square.
*/
-public class ContactTileSquareView extends ContactTileView {
- private final static String TAG = ContactTileSquareView.class.getSimpleName();
+public class ContactTileStarredView extends ContactTileView {
+ private final static String TAG = ContactTileStarredView.class.getSimpleName();
- public ContactTileSquareView(Context context, AttributeSet attrs) {
+ public ContactTileStarredView(Context context, AttributeSet attrs) {
super(context, attrs);
}
diff --git a/src/com/android/contacts/list/ContactTileView.java b/src/com/android/contacts/list/ContactTileView.java
index ad711cf..279dc93 100644
--- a/src/com/android/contacts/list/ContactTileView.java
+++ b/src/com/android/contacts/list/ContactTileView.java
@@ -26,6 +26,7 @@
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
+import android.widget.QuickContactBadge;
import android.widget.TextView;
/**
@@ -36,6 +37,7 @@
private Uri mLookupUri;
private ImageView mPhoto;
+ private QuickContactBadge mQuickContact;
private TextView mName;
private ContactPhotoManager mPhotoManager = null;
@@ -47,6 +49,8 @@
protected void onFinishInflate() {
super.onFinishInflate();
mName = (TextView) findViewById(R.id.contact_tile_name);
+
+ mQuickContact = (QuickContactBadge) findViewById(R.id.contact_tile_quick);
mPhoto = (ImageView) findViewById(R.id.contact_tile_image);
}
@@ -62,11 +66,23 @@
if (entry != null) {
mName.setText(entry.name);
mLookupUri = entry.lookupKey;
- mPhoto.setImageBitmap(null);
+
+ if (mQuickContact != null) {
+ mQuickContact.assignContactUri(mLookupUri);
+ mQuickContact.setImageBitmap(null);
+ } else {
+ mPhoto.setImageBitmap(null);
+ }
+
setVisibility(View.VISIBLE);
if (mPhotoManager != null) {
- mPhotoManager.loadPhoto(mPhoto, entry.photoUri);
+ if (mQuickContact != null){
+ mPhotoManager.loadPhoto(mQuickContact, entry.photoUri);
+ } else {
+ mPhotoManager.loadPhoto(mPhoto, entry.photoUri);
+ }
+
} else {
Log.w(TAG, "contactPhotoManager not set");
}
diff --git a/src/com/android/contacts/list/StrequentContactListFragment.java b/src/com/android/contacts/list/StrequentContactListFragment.java
index 18edaea..00b3072 100644
--- a/src/com/android/contacts/list/StrequentContactListFragment.java
+++ b/src/com/android/contacts/list/StrequentContactListFragment.java
@@ -85,6 +85,10 @@
mAdapter.setDisplayType(displayType);
}
+ public void setQuickContact(boolean enableQuickContact) {
+ mAdapter.setQuickContact(enableQuickContact);
+ }
+
/**
* The listener for the strequent meta data loader.
*/