From 7030a12a15e565521ffb220c00a0251e47bd3a93 Mon Sep 17 00:00:00 2001 From: Christine Chen Date: Wed, 14 Aug 2013 21:44:19 +0200 Subject: Change primary actions of the CallLog items. - When the CallLog item is in the CallLog fragment, the primary action remains to be opening the call detail page. - When the CallLog item is in the Favorite fragment, the primary action changes to be calling the number directly. The secondary action is hidden unless it is to play a voicemail. Bug: 10308694 Change-Id: I28ca7aa783bcca35eb8b41f6e8508d08062dd253 --- src/com/android/dialer/calllog/CallLogAdapter.java | 22 +++++++++++++++++----- .../android/dialer/calllog/CallLogFragment.java | 2 +- .../dialer/calllog/CallLogListItemHelper.java | 4 ++-- .../android/dialer/list/PhoneFavoriteFragment.java | 2 +- 4 files changed, 21 insertions(+), 9 deletions(-) (limited to 'src/com') diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java index 2c81f46fe..15c9b05a6 100644 --- a/src/com/android/dialer/calllog/CallLogAdapter.java +++ b/src/com/android/dialer/calllog/CallLogAdapter.java @@ -178,6 +178,10 @@ public class CallLogAdapter extends GroupingListAdapter /** Can be set to true by tests to disable processing of requests. */ private volatile boolean mRequestProcessingDisabled = false; + /** True if CallLogAdapter is created from the PhoneFavoriteFragment, where the primary + * action should be set to call a number instead of opening the detail page. */ + private boolean mUseCallAsPrimaryAction = false; + /** Listener for the primary action in the list, opens the call details. */ private final View.OnClickListener mPrimaryActionListener = new View.OnClickListener() { @Override @@ -228,12 +232,13 @@ public class CallLogAdapter extends GroupingListAdapter }; public CallLogAdapter(Context context, CallFetcher callFetcher, - ContactInfoHelper contactInfoHelper) { + ContactInfoHelper contactInfoHelper, boolean useCallAsPrimaryAction) { super(context); mContext = context; mCallFetcher = callFetcher; mContactInfoHelper = contactInfoHelper; + mUseCallAsPrimaryAction = useCallAsPrimaryAction; mContactInfoCache = ExpirableCache.create(CONTACT_INFO_CACHE_SIZE); mRequests = new LinkedList(); @@ -515,9 +520,15 @@ public class CallLogAdapter extends GroupingListAdapter final ContactInfo cachedContactInfo = getContactInfoFromCallLog(c); - views.primaryActionView.setTag( - IntentProvider.getCallDetailIntentProvider( - getCursor(), c.getPosition(), c.getLong(CallLogQuery.ID), count)); + if (!mUseCallAsPrimaryAction) { + // Sets the primary action to open call detail page. + views.primaryActionView.setTag( + IntentProvider.getCallDetailIntentProvider( + getCursor(), c.getPosition(), c.getLong(CallLogQuery.ID), count)); + } else { + // Sets the primary action to call the number. + views.primaryActionView.setTag(IntentProvider.getReturnCallIntentProvider(number)); + } // Store away the voicemail information so we can play it directly. if (callType == Calls.VOICEMAIL_TYPE) { @@ -594,7 +605,8 @@ public class CallLogAdapter extends GroupingListAdapter final boolean isNew = c.getInt(CallLogQuery.IS_READ) == 0; // New items also use the highlighted version of the text. final boolean isHighlighted = isNew; - mCallLogViewsHelper.setPhoneCallDetails(views, details, isHighlighted); + mCallLogViewsHelper.setPhoneCallDetails(views, details, isHighlighted, + mUseCallAsPrimaryAction); setPhoto(views, photoId, lookupUri); // Listen for the first draw diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java index a76d0c17e..7168667e7 100644 --- a/src/com/android/dialer/calllog/CallLogFragment.java +++ b/src/com/android/dialer/calllog/CallLogFragment.java @@ -237,7 +237,7 @@ public class CallLogFragment extends ListFragment updateEmptyMessage(mCallTypeFilter); String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity()); mAdapter = new CallLogAdapter(getActivity(), this, - new ContactInfoHelper(getActivity(), currentCountryIso)); + new ContactInfoHelper(getActivity(), currentCountryIso), false); setListAdapter(mAdapter); getListView().setItemsCanFocus(true); } diff --git a/src/com/android/dialer/calllog/CallLogListItemHelper.java b/src/com/android/dialer/calllog/CallLogListItemHelper.java index 23366e469..fc26e85e2 100644 --- a/src/com/android/dialer/calllog/CallLogListItemHelper.java +++ b/src/com/android/dialer/calllog/CallLogListItemHelper.java @@ -57,7 +57,7 @@ import com.android.dialer.R; * @param isHighlighted whether to use the highlight text for the call */ public void setPhoneCallDetails(CallLogListItemViews views, PhoneCallDetails details, - boolean isHighlighted) { + boolean isHighlighted, boolean useCallAsPrimaryAction) { mPhoneCallDetailsHelper.setPhoneCallDetails(views.phoneCallDetailsViews, details, isHighlighted); boolean canCall = PhoneNumberHelper.canPlaceCallsTo(details.number, @@ -67,7 +67,7 @@ import com.android.dialer.R; if (canPlay) { // Playback action takes preference. configurePlaySecondaryAction(views, isHighlighted); - } else if (canCall) { + } else if (canCall && !useCallAsPrimaryAction) { // Call is the secondary action. configureCallSecondaryAction(views, details); } else { diff --git a/src/com/android/dialer/list/PhoneFavoriteFragment.java b/src/com/android/dialer/list/PhoneFavoriteFragment.java index a1406d242..875977972 100644 --- a/src/com/android/dialer/list/PhoneFavoriteFragment.java +++ b/src/com/android/dialer/list/PhoneFavoriteFragment.java @@ -182,7 +182,7 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen this, 1); final String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity()); mCallLogAdapter = new CallLogAdapter(getActivity(), this, - new ContactInfoHelper(getActivity(), currentCountryIso)); + new ContactInfoHelper(getActivity(), currentCountryIso), true); setHasOptionsMenu(true); } -- cgit v1.2.3