Added push states for ContactTiles
-This does not include Starred Quick Contact for tablet.
--That view needs to be fixed with Bug: 5062027
Bug: 5044780
Change-Id: I2149f1cbf18904bf64611b65482b1ba7fcb42523
diff --git a/res/layout/contact_tile_starred.xml b/res/layout/contact_tile_starred.xml
index ba1dff2..d667a34 100644
--- a/res/layout/contact_tile_starred.xml
+++ b/res/layout/contact_tile_starred.xml
@@ -61,6 +61,12 @@
android:layout_marginLeft="4dip"
style="@style/ContactTileStatusText" />
+ <ImageButton
+ android:id="@+id/contact_tile_push_state"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="?android:attr/selectableItemBackground" />
+
</RelativeLayout>
</view>
diff --git a/res/layout/contact_tile_starred_secondary_target.xml b/res/layout/contact_tile_starred_secondary_target.xml
index f7b8673..4b2639b 100644
--- a/res/layout/contact_tile_starred_secondary_target.xml
+++ b/res/layout/contact_tile_starred_secondary_target.xml
@@ -47,8 +47,15 @@
stlye="@style/ContactTileStarredName" />
<ImageButton
+ android:id="@+id/contact_tile_push_state"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="?android:attr/selectableItemBackground" />
+
+ <ImageButton
android:id="@+id/contact_tile_secondary_button"
android:src="@drawable/ic_tab_unselected_contacts"
+ android:background="?android:attr/selectableItemBackground"
android:layout_height="@dimen/contact_tile_shadowbox_height"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
index 8993cdd..6f2a551 100644
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/list/ContactTileAdapter.java
@@ -19,19 +19,15 @@
import com.android.contacts.ContactTileLoaderFactory;
import com.android.contacts.GroupMemberLoader;
import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.DataKind;
+import com.android.contacts.list.ContactTileAdapter.DisplayType;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
@@ -426,10 +422,19 @@
}
}
+ private ContactTileView.Listener mContactTileListener = new ContactTileView.Listener() {
+ @Override
+ public void onClick(ContactTileView contactTileView) {
+ if (mListener != null) {
+ mListener.onContactSelected(contactTileView.getLookupUri());
+ }
+ }
+ };
+
/**
* Acts as a row item composed of {@link ContactTileView}
*/
- private class ContactTileRow extends LinearLayout implements OnClickListener {
+ private class ContactTileRow extends LinearLayout {
private int mItemViewType;
private int mLayoutResId;
@@ -454,7 +459,7 @@
}
private void addTileFromEntry(ContactEntry entry, int tileIndex) {
- ContactTileView contactTile = null;
+ final ContactTileView contactTile;
if (getChildCount() <= tileIndex) {
switch (mItemViewType) {
@@ -476,7 +481,7 @@
contactTile.setLayoutParams(new LinearLayout.LayoutParams(0,
LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f));
contactTile.setPhotoManager(mPhotoManager);
- contactTile.setOnClickListener(this);
+ contactTile.setListener(mContactTileListener);
addView(contactTile);
} else {
contactTile = (ContactTileView) getChildAt(tileIndex);
@@ -484,11 +489,6 @@
contactTile.setClickable(entry != null);
contactTile.loadFromContact(entry);
}
-
- @Override
- public void onClick(View v) {
- mListener.onContactSelected(((ContactTileView) v).getLookupUri());
- }
}
/**
diff --git a/src/com/android/contacts/list/ContactTileSecondaryTargetView.java b/src/com/android/contacts/list/ContactTileSecondaryTargetView.java
index 862e23d..073ac29 100644
--- a/src/com/android/contacts/list/ContactTileSecondaryTargetView.java
+++ b/src/com/android/contacts/list/ContactTileSecondaryTargetView.java
@@ -20,9 +20,7 @@
import android.content.Context;
import android.content.Intent;
import android.util.AttributeSet;
-import android.view.MotionEvent;
import android.view.View;
-import android.view.View.OnClickListener;
import android.widget.ImageButton;
/**
@@ -30,8 +28,7 @@
* in a perfect square like the {@link ContactTileStarredView}. However it adds in an additional
* touch target for a secondary action.
*/
-public class ContactTileSecondaryTargetView extends ContactTileStarredView
- implements OnClickListener {
+public class ContactTileSecondaryTargetView extends ContactTileStarredView {
private final static String TAG = ContactTileSecondaryTargetView.class.getSimpleName();
@@ -44,12 +41,13 @@
@Override
protected void onFinishInflate() {
super.onFinishInflate();
- mSecondaryButton = (ImageButton) findViewById(R.id.contact_tile_secondary_button);
- mSecondaryButton.setOnClickListener(this);
- }
- @Override
- public void onClick(View v) {
- getContext().startActivity(new Intent(Intent.ACTION_VIEW, getLookupUri()));
+ mSecondaryButton = (ImageButton) findViewById(R.id.contact_tile_secondary_button);
+ mSecondaryButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getContext().startActivity(new Intent(Intent.ACTION_VIEW, getLookupUri()));
+ }
+ });
}
}
diff --git a/src/com/android/contacts/list/ContactTileView.java b/src/com/android/contacts/list/ContactTileView.java
index 3839573..aee34c9 100644
--- a/src/com/android/contacts/list/ContactTileView.java
+++ b/src/com/android/contacts/list/ContactTileView.java
@@ -27,6 +27,7 @@
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
@@ -46,6 +47,8 @@
private TextView mPhoneLabel;
private TextView mPhoneNumber;
private ContactPhotoManager mPhotoManager = null;
+ private ImageButton mPushState;
+ private Listener mListener;
public ContactTileView(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -63,6 +66,22 @@
mStatus = (TextView) findViewById(R.id.contact_tile_status);
mPhoneLabel = (TextView) findViewById(R.id.contact_tile_phone_type);
mPhoneNumber = (TextView) findViewById(R.id.contact_tile_phone_number);
+ mPushState = (ImageButton) findViewById(R.id.contact_tile_push_state);
+
+ OnClickListener listener = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (mListener != null) {
+ mListener.onClick(ContactTileView.this);
+ }
+ }
+ };
+
+ if(mPushState != null) {
+ mPushState.setOnClickListener(listener);
+ } else {
+ setOnClickListener(listener);
+ }
}
public void setPhotoManager(ContactPhotoManager photoManager) {
@@ -130,7 +149,15 @@
}
}
+ public void setListener(Listener listener) {
+ mListener = listener;
+ }
+
public Uri getLookupUri() {
return mLookupUri;
}
+
+ public interface Listener {
+ void onClick(ContactTileView contactTileView);
+ }
}