Merge "Reduce number of views in call log."
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
index f28bda1..5447f65 100644
--- a/res/layout/call_log_list_item.xml
+++ b/res/layout/call_log_list_item.xml
@@ -74,24 +74,12 @@
android:background="@drawable/ic_divider_dashed_holo_dark"
/>
<ImageView
- android:id="@+id/call_icon"
+ android:id="@+id/secondary_action_icon"
android:layout_width="@dimen/call_log_call_action_width"
android:layout_height="@dimen/call_log_call_action_height"
android:layout_gravity="center_vertical"
android:scaleType="center"
- android:src="@drawable/ic_ab_dialer_holo_dark"
android:background="@drawable/list_selector"
- android:contentDescription="@string/description_call_log_call_button"
- />
- <ImageView
- android:id="@+id/play_icon"
- android:layout_width="@dimen/call_log_call_action_width"
- android:layout_height="@dimen/call_log_call_action_height"
- android:layout_gravity="center_vertical"
- android:scaleType="center"
- android:src="@drawable/ic_play_holo_dark"
- android:background="@drawable/list_selector"
- android:contentDescription="@string/description_call_log_play_button"
/>
</LinearLayout>
<LinearLayout
diff --git a/src/com/android/contacts/calllog/CallLogFragment.java b/src/com/android/contacts/calllog/CallLogFragment.java
index 58dcc8b..bac3987 100644
--- a/src/com/android/contacts/calllog/CallLogFragment.java
+++ b/src/com/android/contacts/calllog/CallLogFragment.java
@@ -327,7 +327,8 @@
PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
resources, callTypeHelper, mPhoneNumberHelper);
mCallLogViewsHelper =
- new CallLogListItemHelper(phoneCallDetailsHelper, mPhoneNumberHelper);
+ new CallLogListItemHelper(
+ phoneCallDetailsHelper, mPhoneNumberHelper, resources);
mCallLogGroupBuilder = new CallLogGroupBuilder(this);
}
@@ -660,8 +661,7 @@
private void findAndCacheViews(View view) {
// Get the views to bind to.
CallLogListItemViews views = CallLogListItemViews.fromView(view);
- views.callView.setOnClickListener(mCallPlayOnClickListener);
- views.playView.setOnClickListener(mCallPlayOnClickListener);
+ views.secondaryActionView.setOnClickListener(mCallPlayOnClickListener);
view.setTag(views);
}
@@ -703,17 +703,15 @@
if (callType == Calls.VOICEMAIL_TYPE) {
String voicemailUri = c.getString(CallLogQuery.VOICEMAIL_URI);
final long rowId = c.getLong(CallLogQuery.ID);
- views.playView.setTag(
+ views.secondaryActionView.setTag(
IntentProvider.getPlayVoicemailIntentProvider(rowId, voicemailUri));
- views.callView.setTag(null);
} else if (!TextUtils.isEmpty(number)) {
// Store away the number so we can call it directly if you click on the call icon.
- views.callView.setTag(IntentProvider.getReturnCallIntentProvider(number));
- views.playView.setTag(null);
+ views.secondaryActionView.setTag(
+ IntentProvider.getReturnCallIntentProvider(number));
} else {
// No action enabled.
- views.callView.setTag(null);
- views.playView.setTag(null);
+ views.secondaryActionView.setTag(null);
}
// Lookup contacts with this number
diff --git a/src/com/android/contacts/calllog/CallLogListItemHelper.java b/src/com/android/contacts/calllog/CallLogListItemHelper.java
index a973d49..5951ea3 100644
--- a/src/com/android/contacts/calllog/CallLogListItemHelper.java
+++ b/src/com/android/contacts/calllog/CallLogListItemHelper.java
@@ -18,7 +18,9 @@
import com.android.contacts.PhoneCallDetails;
import com.android.contacts.PhoneCallDetailsHelper;
+import com.android.contacts.R;
+import android.content.res.Resources;
import android.provider.CallLog.Calls;
import android.view.View;
@@ -30,6 +32,8 @@
private final PhoneCallDetailsHelper mPhoneCallDetailsHelper;
/** Helper for handling phone numbers. */
private final PhoneNumberHelper mPhoneNumberHelper;
+ /** Resources to look up strings. */
+ private final Resources mResources;
/**
* Creates a new helper instance.
@@ -38,9 +42,10 @@
* @param phoneNumberHelper used to process phone number
*/
public CallLogListItemHelper(PhoneCallDetailsHelper phoneCallDetailsHelper,
- PhoneNumberHelper phoneNumberHelper) {
+ PhoneNumberHelper phoneNumberHelper, Resources resources) {
mPhoneCallDetailsHelper = phoneCallDetailsHelper;
mPhoneNumberHelper= phoneNumberHelper;
+ mResources = resources;
}
/**
@@ -59,22 +64,35 @@
if (canPlay) {
// Playback action takes preference.
- views.callView.setVisibility(View.GONE);
- views.playView.setVisibility(View.VISIBLE);
+ configurePlaySecondaryAction(views);
views.unheardView.setVisibility(isHighlighted ? View.VISIBLE : View.GONE);
views.dividerView.setVisibility(View.VISIBLE);
} else if (canCall) {
- // Call is the main action.
- views.callView.setVisibility(View.VISIBLE);
- views.playView.setVisibility(View.GONE);
+ // Call is the secondary action.
+ configureCallSecondaryAction(views);
views.unheardView.setVisibility(View.GONE);
views.dividerView.setVisibility(View.VISIBLE);
} else {
// No action available.
- views.callView.setVisibility(View.GONE);
- views.playView.setVisibility(View.GONE);
+ views.secondaryActionView.setVisibility(View.GONE);
views.unheardView.setVisibility(View.GONE);
views.dividerView.setVisibility(View.GONE);
}
}
+
+ /** Sets the secondary action to correspond to the call button. */
+ private void configureCallSecondaryAction(CallLogListItemViews views) {
+ views.secondaryActionView.setVisibility(View.VISIBLE);
+ views.secondaryActionView.setImageResource(R.drawable.ic_ab_dialer_holo_dark);
+ views.secondaryActionView.setContentDescription(
+ mResources.getString(R.string.description_call_log_call_button));
+ }
+
+ /** Sets the secondary action to correspond to the play button. */
+ private void configurePlaySecondaryAction(CallLogListItemViews views) {
+ views.secondaryActionView.setVisibility(View.VISIBLE);
+ views.secondaryActionView.setImageResource(R.drawable.ic_play_holo_dark);
+ views.secondaryActionView.setContentDescription(
+ mResources.getString(R.string.description_call_log_play_button));
+ }
}
diff --git a/src/com/android/contacts/calllog/CallLogListItemViews.java b/src/com/android/contacts/calllog/CallLogListItemViews.java
index 21f2dc5..040d0ad 100644
--- a/src/com/android/contacts/calllog/CallLogListItemViews.java
+++ b/src/com/android/contacts/calllog/CallLogListItemViews.java
@@ -21,6 +21,7 @@
import android.content.Context;
import android.view.View;
+import android.widget.ImageView;
import android.widget.QuickContactBadge;
import android.widget.TextView;
@@ -30,13 +31,11 @@
public final class CallLogListItemViews {
/** The quick contact badge for the contact. */
public final QuickContactBadge quickContactView;
- /** The main action button on the entry. */
- public final View callView;
- /** The play action button used for voicemail. */
- public final View playView;
+ /** The secondary action button on the entry. */
+ public final ImageView secondaryActionView;
/** The icon used for unheard voicemail. */
public final View unheardView;
- /** The divider between callView and playView. */
+ /** The divider between the primary and secondary actions. */
public final View dividerView;
/** The details of the phone call. */
public final PhoneCallDetailsViews phoneCallDetailsViews;
@@ -46,12 +45,11 @@
public final TextView listHeaderTextView;
private CallLogListItemViews(QuickContactBadge quickContactView,
- View callView, View playView, View unheardView, View dividerView,
+ ImageView secondaryActionView, View unheardView, View dividerView,
PhoneCallDetailsViews phoneCallDetailsViews, View listItemView,
TextView listHeaderTextView) {
this.quickContactView = quickContactView;
- this.callView = callView;
- this.playView = playView;
+ this.secondaryActionView = secondaryActionView;
this.unheardView = unheardView;
this.dividerView = dividerView;
this.phoneCallDetailsViews = phoneCallDetailsViews;
@@ -62,8 +60,7 @@
public static CallLogListItemViews fromView(View view) {
return new CallLogListItemViews(
(QuickContactBadge) view.findViewById(R.id.quick_contact_photo),
- view.findViewById(R.id.call_icon),
- view.findViewById(R.id.play_icon),
+ (ImageView) view.findViewById(R.id.secondary_action_icon),
view.findViewById(R.id.unheard_icon),
view.findViewById(R.id.divider),
PhoneCallDetailsViews.fromView(view),
@@ -74,8 +71,7 @@
public static CallLogListItemViews createForTest(Context context) {
return new CallLogListItemViews(
new QuickContactBadge(context),
- new View(context),
- new View(context),
+ new ImageView(context),
new View(context),
new View(context),
PhoneCallDetailsViews.createForTest(context),
diff --git a/tests/src/com/android/contacts/activities/CallLogActivityTests.java b/tests/src/com/android/contacts/activities/CallLogActivityTests.java
index 7043eb0..ce2418f 100644
--- a/tests/src/com/android/contacts/activities/CallLogActivityTests.java
+++ b/tests/src/com/android/contacts/activities/CallLogActivityTests.java
@@ -174,7 +174,7 @@
insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
View view = mAdapter.newGroupView(getActivity(), mParentView);
mAdapter.bindGroupView(view, getActivity(), mCursor, 3, false);
- assertNotNull(view.findViewById(R.id.call_icon));
+ assertNotNull(view.findViewById(R.id.secondary_action_icon));
}
@MediumTest
@@ -183,7 +183,7 @@
insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
View view = mAdapter.newStandAloneView(getActivity(), mParentView);
mAdapter.bindStandAloneView(view, getActivity(), mCursor);
- assertNotNull(view.findViewById(R.id.call_icon));
+ assertNotNull(view.findViewById(R.id.secondary_action_icon));
}
@MediumTest
@@ -192,7 +192,7 @@
insert(CallerInfo.PRIVATE_NUMBER, NOW, 0, Calls.INCOMING_TYPE);
View view = mAdapter.newChildView(getActivity(), mParentView);
mAdapter.bindChildView(view, getActivity(), mCursor);
- assertNotNull(view.findViewById(R.id.call_icon));
+ assertNotNull(view.findViewById(R.id.secondary_action_icon));
}
@MediumTest
@@ -303,7 +303,7 @@
mAdapter.bindStandAloneView(view, getActivity(), mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- IntentProvider intentProvider = (IntentProvider) views.callView.getTag();
+ IntentProvider intentProvider = (IntentProvider) views.secondaryActionView.getTag();
Intent intent = intentProvider.getIntent(mActivity);
// Starts a call.
assertEquals(Intent.ACTION_CALL_PRIVILEGED, intent.getAction());
@@ -319,7 +319,7 @@
mAdapter.bindStandAloneView(view, getActivity(), mCursor);
CallLogListItemViews views = (CallLogListItemViews) view.getTag();
- IntentProvider intentProvider = (IntentProvider) views.playView.getTag();
+ IntentProvider intentProvider = (IntentProvider) views.secondaryActionView.getTag();
Intent intent = intentProvider.getIntent(mActivity);
// Starts the call detail activity.
assertEquals(new ComponentName(mActivity, CallDetailActivity.class),
@@ -357,9 +357,9 @@
String number = getPhoneNumberForListEntry(i);
if (CallerInfo.PRIVATE_NUMBER.equals(number) ||
CallerInfo.UNKNOWN_NUMBER.equals(number)) {
- assertFalse(View.VISIBLE == mItem.callView.getVisibility());
+ assertFalse(View.VISIBLE == mItem.secondaryActionView.getVisibility());
} else {
- assertEquals(View.VISIBLE, mItem.callView.getVisibility());
+ assertEquals(View.VISIBLE, mItem.secondaryActionView.getVisibility());
}
}
}
diff --git a/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.java b/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.java
index 1cf7da9..74f834a 100644
--- a/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.java
+++ b/tests/src/com/android/contacts/calllog/CallLogListItemHelperTest.java
@@ -59,7 +59,7 @@
mPhoneNumberHelper = new PhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER);
PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
resources, callTypeHelper, mPhoneNumberHelper);
- mHelper = new CallLogListItemHelper(phoneCallDetailsHelper, mPhoneNumberHelper);
+ mHelper = new CallLogListItemHelper(phoneCallDetailsHelper, mPhoneNumberHelper, resources);
mViews = CallLogListItemViews.createForTest(context);
}
@@ -72,8 +72,7 @@
public void testSetPhoneCallDetails() {
setPhoneCallDetailsWithNumber("12125551234", "1-212-555-1234");
- assertEquals(View.VISIBLE, mViews.callView.getVisibility());
- assertEquals(View.GONE, mViews.playView.getVisibility());
+ assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility());
assertEquals(View.GONE, mViews.unheardView.getVisibility());
}
@@ -94,37 +93,32 @@
public void testSetPhoneCallDetails_VoicemailNumber() {
setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER, TEST_VOICEMAIL_NUMBER);
- assertEquals(View.VISIBLE, mViews.callView.getVisibility());
- assertEquals(View.GONE, mViews.playView.getVisibility());
+ assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility());
assertEquals(View.GONE, mViews.unheardView.getVisibility());
}
public void testSetPhoneCallDetails_ReadVoicemail() {
setPhoneCallDetailsWithTypes(Calls.VOICEMAIL_TYPE);
- assertEquals(View.GONE, mViews.callView.getVisibility());
- assertEquals(View.VISIBLE, mViews.playView.getVisibility());
+ assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility());
assertEquals(View.GONE, mViews.unheardView.getVisibility());
}
public void testSetPhoneCallDetails_UnreadVoicemail() {
setUnreadPhoneCallDetailsWithTypes(Calls.VOICEMAIL_TYPE);
- assertEquals(View.GONE, mViews.callView.getVisibility());
- assertEquals(View.VISIBLE, mViews.playView.getVisibility());
+ assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility());
assertEquals(View.VISIBLE, mViews.unheardView.getVisibility());
}
public void testSetPhoneCallDetails_VoicemailFromUnknown() {
setPhoneCallDetailsWithNumberAndType(CallerInfo.UNKNOWN_NUMBER, CallerInfo.UNKNOWN_NUMBER,
Calls.VOICEMAIL_TYPE);
- assertEquals(View.GONE, mViews.callView.getVisibility());
- assertEquals(View.VISIBLE, mViews.playView.getVisibility());
+ assertEquals(View.VISIBLE, mViews.secondaryActionView.getVisibility());
assertEquals(View.GONE, mViews.unheardView.getVisibility());
}
/** Asserts that the whole call area is gone. */
private void assertNoCallButton() {
- assertEquals(View.GONE, mViews.callView.getVisibility());
- assertEquals(View.GONE, mViews.playView.getVisibility());
+ assertEquals(View.GONE, mViews.secondaryActionView.getVisibility());
assertEquals(View.GONE, mViews.unheardView.getVisibility());
assertEquals(View.GONE, mViews.dividerView.getVisibility());
}