diff options
author | Andrew Lee <anwlee@google.com> | 2014-08-21 13:20:54 -0700 |
---|---|---|
committer | Andrew Lee <anwlee@google.com> | 2014-08-22 15:41:35 -0700 |
commit | eb141e078353a2e3a997001afd1aa16a88da429b (patch) | |
tree | 9e8a0aa407c0c04feb7d8d78f8c4648209d908bd | |
parent | 6fad34b5fd3edfe8a14c038a72195b69afd503ba (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.xml | 75 | ||||
-rw-r--r-- | res/values/dimens.xml | 3 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/CallLogAdapter.java | 93 | ||||
-rw-r--r-- | src/com/android/dialer/list/ListsFragment.java | 25 |
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 |