summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Lee <anwlee@google.com>2014-08-21 13:20:54 -0700
committerAndrew Lee <anwlee@google.com>2014-08-22 15:41:35 -0700
commiteb141e078353a2e3a997001afd1aa16a88da429b (patch)
tree9e8a0aa407c0c04feb7d8d78f8c4648209d908bd
parent6fad34b5fd3edfe8a14c038a72195b69afd503ba (diff)
Add "add to contacts" actionable item to shortcut card.
+ This appears for contacts with no lookup key. This means that it will show up for businesses too; even though we match a name, there's no lookup key. + Remove missed call information which used to be shown below the shortcut card, but no longer is. + Make alignment of this call log list item more pretty. + Add tinted person_add drawable for this actionable item. Bug: 17186220 Change-Id: Iabcfa73c2ffeeb0bb24127ef74e85e612be51b9e
-rw-r--r--res/layout/call_log_list_item_extra.xml75
-rw-r--r--res/values/dimens.xml3
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java93
-rw-r--r--src/com/android/dialer/list/ListsFragment.java25
4 files changed, 57 insertions, 139 deletions
diff --git a/res/layout/call_log_list_item_extra.xml b/res/layout/call_log_list_item_extra.xml
index 3623e3f94..c4126e42f 100644
--- a/res/layout/call_log_list_item_extra.xml
+++ b/res/layout/call_log_list_item_extra.xml
@@ -18,45 +18,50 @@
<!-- Can't use merge here because this is referenced via a ViewStub -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/badge_container">
+ android:id="@+id/badge_container"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
<View android:layout_width="match_parent"
- android:layout_height="1px"
- android:background="@color/favorite_contacts_separator_color"/>
+ android:layout_height="1px"
+ android:background="@color/favorite_contacts_separator_color" />
<LinearLayout android:id="@+id/badge_link_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingStart="@dimen/call_log_outer_margin"
- android:paddingEnd="@dimen/call_log_outer_margin"
- android:paddingTop="0dip"
- android:paddingBottom="0dip"
- android:background="?android:attr/selectableItemBackground"
- android:clickable="true">
- <ImageView android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/badge_image"
- android:tint="@color/dialpad_primary_text_color"
- android:padding="@dimen/call_log_outer_margin"/>
- <TextView android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingStart="@dimen/call_log_start_margin"
- android:id="@+id/badge_text"
- android:textColor="@color/dialpad_primary_text_color"
- android:layout_gravity="center_vertical"
- android:layout_weight="1"/>
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="@dimen/call_log_outer_margin"
+ android:paddingEnd="@dimen/call_log_outer_margin"
+ android:paddingTop="@dimen/call_log_item_extra_padding_vertical"
+ android:paddingBottom="@dimen/call_log_item_extra_padding_vertical"
+ android:background="?android:attr/selectableItemBackground"
+ android:clickable="true">
+
+ <ImageView android:id="@+id/badge_image"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:tint="@color/dialpad_primary_text_color"
+ android:padding="@dimen/call_log_outer_margin" />
+
+ <TextView android:id="@+id/badge_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingStart="@dimen/call_log_start_margin"
+ android:textColor="@color/dialpad_primary_text_color"
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1" />
+
<ImageView android:id="@+id/dismiss_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:layout_marginEnd="@dimen/call_log_icon_margin"
- android:src="@drawable/ic_close_dk"
- android:tint="@color/recent_call_log_item_phone_icon_tint"
- android:alpha="0.3"
- android:background="?android:attr/selectableItemBackground"
- android:visibility="gone"
- android:contentDescription="@string/description_dismiss"/>
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_marginEnd="@dimen/call_log_icon_margin"
+ android:src="@drawable/ic_close_dk"
+ android:tint="@color/recent_call_log_item_phone_icon_tint"
+ android:alpha="0.3"
+ android:background="?android:attr/selectableItemBackground"
+ android:visibility="gone"
+ android:contentDescription="@string/description_dismiss" />
+
</LinearLayout>
+
</FrameLayout> \ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 0856032b2..e48720edd 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -76,6 +76,9 @@
<dimen name="recent_call_log_item_padding_top">12dp</dimen>
<dimen name="recent_call_log_item_padding_bottom">11dp</dimen>
+ <dimen name="call_log_item_extra_padding_vertical">4dp</dimen>
+
+
<!-- Size of the star icon on the favorites tile. -->
<dimen name="favorites_star_icon_size">12dp</dimen>
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index e009ddafb..e7d5a4ae5 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -44,6 +44,7 @@ import com.android.common.widget.GroupingListAdapter;
import com.android.contacts.common.ContactPhotoManager;
import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.util.UriUtils;
+import com.android.dialer.DialtactsActivity;
import com.android.dialer.PhoneCallDetails;
import com.android.dialer.PhoneCallDetailsHelper;
import com.android.dialer.R;
@@ -255,8 +256,6 @@ public class CallLogAdapter extends GroupingListAdapter
private volatile boolean mRequestProcessingDisabled = false;
private boolean mIsCallLog = true;
- private int mNumMissedCalls = 0;
- private int mNumMissedCallsShown = 0;
private View mBadgeContainer;
private ImageView mBadgeImageView;
@@ -1032,21 +1031,13 @@ public class CallLogAdapter extends GroupingListAdapter
mCallLogViewsHelper.setActionContentDescriptions(views);
}
- protected void bindBadge(View view, ContactInfo info, PhoneCallDetails details, int callType) {
-
+ protected void bindBadge(
+ View view, ContactInfo info, final PhoneCallDetails details, int callType) {
// Do not show badge in call log.
if (!mIsCallLog) {
- final int numMissed = getNumMissedCalls(callType);
final ViewStub stub = (ViewStub) view.findViewById(R.id.link_stub);
- if (shouldShowBadge(numMissed, info, details)) {
- // Do not process if the data has not changed (optimization since bind view is
- // called multiple times due to contact lookup).
- if (numMissed == mNumMissedCallsShown) {
- return;
- }
-
- // stub will be null if it was already inflated.
+ if (TextUtils.isEmpty(info.lookupKey)) {
if (stub != null) {
final View inflated = stub.inflate();
inflated.setVisibility(View.VISIBLE);
@@ -1055,11 +1046,16 @@ public class CallLogAdapter extends GroupingListAdapter
mBadgeText = (TextView) inflated.findViewById(R.id.badge_text);
}
- mBadgeContainer.setOnClickListener(getBadgeClickListener());
- mBadgeImageView.setImageResource(getBadgeImageResId());
- mBadgeText.setText(getBadgeText(numMissed));
-
- mNumMissedCallsShown = numMissed;
+ mBadgeContainer.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ final Intent intent =
+ DialtactsActivity.getAddNumberToContactIntent(details.number);
+ mContext.startActivity(intent);
+ }
+ });
+ mBadgeImageView.setImageResource(R.drawable.ic_person_add_24dp);
+ mBadgeText.setText(R.string.recentCalls_addToContact);
} else {
// Hide badge if it was previously shown.
if (stub == null) {
@@ -1072,67 +1068,6 @@ public class CallLogAdapter extends GroupingListAdapter
}
}
- public void setMissedCalls(Cursor data) {
- final int missed;
- if (data == null) {
- missed = 0;
- } else {
- missed = data.getCount();
- }
- // Only need to update if the number of calls changed.
- if (missed != mNumMissedCalls) {
- mNumMissedCalls = missed;
- notifyDataSetChanged();
- }
- }
-
- protected View.OnClickListener getBadgeClickListener() {
- return new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- final Intent intent = new Intent(mContext, CallLogActivity.class);
- mContext.startActivity(intent);
- }
- };
- }
-
- /**
- * Get the resource id for the image to be shown for the badge.
- */
- protected int getBadgeImageResId() {
- return R.drawable.ic_call_log_blue;
- }
-
- /**
- * Get the text to be shown for the badge.
- *
- * @param numMissed The number of missed calls.
- */
- protected String getBadgeText(int numMissed) {
- return mContext.getResources().getString(R.string.num_missed_calls, numMissed);
- }
-
- /**
- * Whether to show the badge.
- *
- * @param numMissedCalls The number of missed calls.
- * @param info The contact info.
- * @param details The call detail.
- * @return {@literal true} if badge should be shown. {@literal false} otherwise.
- */
- protected boolean shouldShowBadge(int numMissedCalls, ContactInfo info,
- PhoneCallDetails details) {
- return numMissedCalls > 0;
- }
-
- private int getNumMissedCalls(int callType) {
- if (callType == Calls.MISSED_TYPE) {
- // Exclude the current missed call shown in the shortcut.
- return mNumMissedCalls - 1;
- }
- return mNumMissedCalls;
- }
-
/** Checks whether the contact info from the call log matches the one from the contacts db. */
private boolean callLogInfoMatches(ContactInfo callLogInfo, ContactInfo info) {
// The call log only contains a subset of the fields in the contacts db.
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 22cb35c0f..ed95dc2a4 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -70,9 +70,6 @@ public class ListsFragment extends AnalyticsFragment implements CallLogQueryHand
public static final float REMOVE_VIEW_SHOWN_ALPHA = 0.5f;
public static final float REMOVE_VIEW_HIDDEN_ALPHA = 1;
- // Used with LoaderManager
- private static int MISSED_CALL_LOADER = 1;
-
public interface HostInterface {
public void showCallHistory();
public int getActionBarHeight();
@@ -111,27 +108,6 @@ public class ListsFragment extends AnalyticsFragment implements CallLogQueryHand
*/
private long mCurrentCallShortcutDate = 0;
- private class MissedCallLogLoaderListener implements LoaderManager.LoaderCallbacks<Cursor> {
-
- @Override
- public Loader<Cursor> onCreateLoader(int id, Bundle args) {
- final Uri uri = CallLog.Calls.CONTENT_URI;
- final String[] projection = new String[] {CallLog.Calls.TYPE};
- final String selection = CallLog.Calls.TYPE + " = " + CallLog.Calls.MISSED_TYPE +
- " AND " + CallLog.Calls.IS_READ + " = 0";
- return new CursorLoader(getActivity(), uri, projection, selection, null, null);
- }
-
- @Override
- public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor data) {
- mCallLogAdapter.setMissedCalls(data);
- }
-
- @Override
- public void onLoaderReset(Loader<Cursor> cursorLoader) {
- }
- }
-
private PanelSlideListener mPanelSlideListener = new PanelSlideListener() {
@Override
public void onPanelSlide(View panel, float slideOffset) {
@@ -229,7 +205,6 @@ public class ListsFragment extends AnalyticsFragment implements CallLogQueryHand
@Override
public void onStart() {
super.onStart();
- getLoaderManager().initLoader(MISSED_CALL_LOADER, null, new MissedCallLogLoaderListener());
}
@Override