Loading res/layout/call_detail.xml +6 −4 Original line number Diff line number Diff line Loading @@ -77,7 +77,8 @@ android:layout_alignTop="@id/photo_text_bar" android:layout_marginRight="@dimen/call_log_outer_margin" /> <RelativeLayout <TextView android:id="@+id/header_text" android:layout_width="wrap_content" android:layout_height="0dip" android:layout_alignLeft="@id/photo_text_bar" Loading @@ -86,9 +87,10 @@ android:layout_alignBottom="@id/photo_text_bar" android:layout_marginRight="@dimen/call_log_inner_margin" android:layout_marginLeft="@dimen/call_detail_contact_name_margin" > <include layout="@layout/call_log_phone_call_details" /> </RelativeLayout> android:textColor="?attr/call_log_primary_text_color" android:textSize="18sp" android:singleLine="true" /> <ImageButton android:id="@+id/main_action_push_layer" android:layout_width="match_parent" Loading src/com/android/contacts/CallDetailActivity.java +3 −5 Original line number Diff line number Diff line Loading @@ -80,11 +80,10 @@ public class CallDetailActivity extends ListActivity implements /** If we should immediately start playback of the voicemail, this extra will be set to true. */ public static final String EXTRA_VOICEMAIL_START_PLAYBACK = "EXTRA_VOICEMAIL_START_PLAYBACK"; /** The views representing the details of a phone call. */ private PhoneCallDetailsViews mPhoneCallDetailsViews; private CallTypeHelper mCallTypeHelper; private PhoneNumberHelper mPhoneNumberHelper; private PhoneCallDetailsHelper mPhoneCallDetailsHelper; private TextView mHeaderTextView; private ImageView mMainActionView; private ImageButton mMainActionPushLayerView; private ImageView mContactBackgroundView; Loading Loading @@ -148,13 +147,13 @@ public class CallDetailActivity extends ListActivity implements mInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); mResources = getResources(); mPhoneCallDetailsViews = PhoneCallDetailsViews.fromView(getWindow().getDecorView()); mCallTypeHelper = new CallTypeHelper(getResources()); mPhoneNumberHelper = new PhoneNumberHelper(mResources, getVoicemailNumber()); mPhoneCallDetailsHelper = new PhoneCallDetailsHelper(mResources, mCallTypeHelper, mPhoneNumberHelper); mVoicemailStatusHelper = new VoicemailStatusHelperImpl(); mAsyncQueryHandler = new CallDetailActivityQueryHandler(this); mHeaderTextView = (TextView) findViewById(R.id.header_text); mStatusMessageView = findViewById(R.id.voicemail_status); mStatusMessageText = (TextView) findViewById(R.id.voicemail_status_message); mStatusMessageAction = (TextView) findViewById(R.id.voicemail_status_action); Loading Loading @@ -292,8 +291,7 @@ public class CallDetailActivity extends ListActivity implements final Uri photoUri = details[0].photoUri; // Set the details header, based on the first phone call. mPhoneCallDetailsHelper.setPhoneCallDetails(mPhoneCallDetailsViews, details[0], false, false, true); mPhoneCallDetailsHelper.setPhoneCallName(mHeaderTextView, details[0]); // Cache the details about the phone number. final Uri numberCallUri = mPhoneNumberHelper.getCallUri(mNumber); Loading src/com/android/contacts/PhoneCallDetailsHelper.java +14 −12 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.text.Spanned; import android.text.TextUtils; import android.text.format.DateUtils; import android.view.View; import android.widget.TextView; /** * Helper class to fill in the views in {@link PhoneCallDetailsViews}. Loading Loading @@ -59,7 +60,7 @@ public class PhoneCallDetailsHelper { /** Fills the call details views with content. */ public void setPhoneCallDetails(PhoneCallDetailsViews views, PhoneCallDetails details, boolean useIcons, boolean isHighlighted, boolean nameOnly) { boolean useIcons, boolean isHighlighted) { if (useIcons) { views.callTypeIcons.clear(); int count = details.callTypes.length; Loading Loading @@ -130,21 +131,22 @@ public class PhoneCallDetailsHelper { } views.dateView.setText(shortDateText); views.dateView.setVisibility(View.VISIBLE); views.nameView.setText(nameText); views.nameView.setVisibility(View.VISIBLE); // Do not show the number if it is not available. This happens if we have only the number, // in which case the number is shown in the name field instead. if (!TextUtils.isEmpty(numberText)) { views.numberView.setText(numberText); views.numberView.setVisibility(View.VISIBLE); } /** Sets the name in the text view for the given phone call. */ public void setPhoneCallName(TextView nameView, PhoneCallDetails details) { final CharSequence nameText; final CharSequence displayNumber = mPhoneNumberHelper.getDisplayNumber(details.number, details.formattedNumber); if (TextUtils.isEmpty(details.name)) { nameText = displayNumber; } else { views.numberView.setVisibility(View.GONE); nameText = details.name; } // Hide the rest if not visible. views.callTypeView.setVisibility(nameOnly ? View.GONE : View.VISIBLE); views.numberView.setVisibility(nameOnly ? View.GONE : View.VISIBLE); nameView.setText(nameText); } public void setCurrentTimeForTest(long currentTimeMillis) { Loading src/com/android/contacts/calllog/CallLogListItemHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ import android.view.View; public void setPhoneCallDetails(CallLogListItemViews views, PhoneCallDetails details, boolean useIcons, boolean isHighlighted) { mPhoneCallDetailsHelper.setPhoneCallDetails(views.phoneCallDetailsViews, details, useIcons, isHighlighted, false); isHighlighted); boolean canCall = mPhoneNumberHelper.canPlaceCallsTo(details.number); boolean canPlay = details.callTypes[0] == Calls.VOICEMAIL_TYPE; Loading tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java +27 −13 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.provider.CallLog.Calls; import android.test.AndroidTestCase; import android.view.View; import android.widget.TextView; import java.util.GregorianCalendar; import java.util.Locale; Loading @@ -51,6 +52,7 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { private PhoneCallDetailsHelper mHelper; /** The views to fill. */ private PhoneCallDetailsViews mViews; private TextView mNameView; private PhoneNumberHelper mPhoneNumberHelper; @Override Loading @@ -62,6 +64,7 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { mPhoneNumberHelper = new PhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER); mHelper = new PhoneCallDetailsHelper(resources, callTypeHelper, mPhoneNumberHelper); mViews = PhoneCallDetailsViews.createForTest(context); mNameView = new TextView(context); } @Override Loading Loading @@ -197,11 +200,16 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { } } public void testSetPhoneCallDetails_NameOnly() { setPhoneCallDetailsNameOnly(); assertEquals(View.VISIBLE, mViews.nameView.getVisibility()); assertEquals(View.GONE, mViews.numberView.getVisibility()); assertEquals(View.GONE, mViews.callTypeView.getVisibility()); public void testSetPhoneName_NumberOnly() { setPhoneCallNameWithNumberOnly(); assertEquals(View.VISIBLE, mNameView.getVisibility()); assertEquals(TEST_FORMATTED_NUMBER, mNameView.getText().toString()); } public void testSetPhoneName() { setPhoneCallName("John Doe"); assertEquals(View.VISIBLE, mNameView.getVisibility()); assertEquals("John Doe", mNameView.getText().toString()); } /** Asserts that the name text field contains the value of the given string resource. */ Loading Loading @@ -265,7 +273,7 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { mHelper.setPhoneCallDetails(mViews, new PhoneCallDetails(number, formattedNumber, TEST_COUNTRY_ISO, new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION), false, false, false); false, false); } /** Sets the phone call details with default values and the given date. */ Loading @@ -273,7 +281,7 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { mHelper.setPhoneCallDetails(mViews, new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, new int[]{ Calls.INCOMING_TYPE }, date, TEST_DURATION), false, false, false); false, false); } /** Sets the phone call details with default values and the given call types using icons. */ Loading @@ -290,13 +298,19 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { mHelper.setPhoneCallDetails(mViews, new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, callTypes, TEST_DATE, TEST_DURATION), useIcons, false, false); useIcons, false); } private void setPhoneCallDetailsNameOnly() { mHelper.setPhoneCallDetails(mViews, private void setPhoneCallNameWithNumberOnly() { mHelper.setPhoneCallName(mNameView, new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION), true, false, true); new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION)); } private void setPhoneCallName(String name) { mHelper.setPhoneCallName(mNameView, new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION, name, 0, "", 1, null)); } } Loading
res/layout/call_detail.xml +6 −4 Original line number Diff line number Diff line Loading @@ -77,7 +77,8 @@ android:layout_alignTop="@id/photo_text_bar" android:layout_marginRight="@dimen/call_log_outer_margin" /> <RelativeLayout <TextView android:id="@+id/header_text" android:layout_width="wrap_content" android:layout_height="0dip" android:layout_alignLeft="@id/photo_text_bar" Loading @@ -86,9 +87,10 @@ android:layout_alignBottom="@id/photo_text_bar" android:layout_marginRight="@dimen/call_log_inner_margin" android:layout_marginLeft="@dimen/call_detail_contact_name_margin" > <include layout="@layout/call_log_phone_call_details" /> </RelativeLayout> android:textColor="?attr/call_log_primary_text_color" android:textSize="18sp" android:singleLine="true" /> <ImageButton android:id="@+id/main_action_push_layer" android:layout_width="match_parent" Loading
src/com/android/contacts/CallDetailActivity.java +3 −5 Original line number Diff line number Diff line Loading @@ -80,11 +80,10 @@ public class CallDetailActivity extends ListActivity implements /** If we should immediately start playback of the voicemail, this extra will be set to true. */ public static final String EXTRA_VOICEMAIL_START_PLAYBACK = "EXTRA_VOICEMAIL_START_PLAYBACK"; /** The views representing the details of a phone call. */ private PhoneCallDetailsViews mPhoneCallDetailsViews; private CallTypeHelper mCallTypeHelper; private PhoneNumberHelper mPhoneNumberHelper; private PhoneCallDetailsHelper mPhoneCallDetailsHelper; private TextView mHeaderTextView; private ImageView mMainActionView; private ImageButton mMainActionPushLayerView; private ImageView mContactBackgroundView; Loading Loading @@ -148,13 +147,13 @@ public class CallDetailActivity extends ListActivity implements mInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); mResources = getResources(); mPhoneCallDetailsViews = PhoneCallDetailsViews.fromView(getWindow().getDecorView()); mCallTypeHelper = new CallTypeHelper(getResources()); mPhoneNumberHelper = new PhoneNumberHelper(mResources, getVoicemailNumber()); mPhoneCallDetailsHelper = new PhoneCallDetailsHelper(mResources, mCallTypeHelper, mPhoneNumberHelper); mVoicemailStatusHelper = new VoicemailStatusHelperImpl(); mAsyncQueryHandler = new CallDetailActivityQueryHandler(this); mHeaderTextView = (TextView) findViewById(R.id.header_text); mStatusMessageView = findViewById(R.id.voicemail_status); mStatusMessageText = (TextView) findViewById(R.id.voicemail_status_message); mStatusMessageAction = (TextView) findViewById(R.id.voicemail_status_action); Loading Loading @@ -292,8 +291,7 @@ public class CallDetailActivity extends ListActivity implements final Uri photoUri = details[0].photoUri; // Set the details header, based on the first phone call. mPhoneCallDetailsHelper.setPhoneCallDetails(mPhoneCallDetailsViews, details[0], false, false, true); mPhoneCallDetailsHelper.setPhoneCallName(mHeaderTextView, details[0]); // Cache the details about the phone number. final Uri numberCallUri = mPhoneNumberHelper.getCallUri(mNumber); Loading
src/com/android/contacts/PhoneCallDetailsHelper.java +14 −12 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.text.Spanned; import android.text.TextUtils; import android.text.format.DateUtils; import android.view.View; import android.widget.TextView; /** * Helper class to fill in the views in {@link PhoneCallDetailsViews}. Loading Loading @@ -59,7 +60,7 @@ public class PhoneCallDetailsHelper { /** Fills the call details views with content. */ public void setPhoneCallDetails(PhoneCallDetailsViews views, PhoneCallDetails details, boolean useIcons, boolean isHighlighted, boolean nameOnly) { boolean useIcons, boolean isHighlighted) { if (useIcons) { views.callTypeIcons.clear(); int count = details.callTypes.length; Loading Loading @@ -130,21 +131,22 @@ public class PhoneCallDetailsHelper { } views.dateView.setText(shortDateText); views.dateView.setVisibility(View.VISIBLE); views.nameView.setText(nameText); views.nameView.setVisibility(View.VISIBLE); // Do not show the number if it is not available. This happens if we have only the number, // in which case the number is shown in the name field instead. if (!TextUtils.isEmpty(numberText)) { views.numberView.setText(numberText); views.numberView.setVisibility(View.VISIBLE); } /** Sets the name in the text view for the given phone call. */ public void setPhoneCallName(TextView nameView, PhoneCallDetails details) { final CharSequence nameText; final CharSequence displayNumber = mPhoneNumberHelper.getDisplayNumber(details.number, details.formattedNumber); if (TextUtils.isEmpty(details.name)) { nameText = displayNumber; } else { views.numberView.setVisibility(View.GONE); nameText = details.name; } // Hide the rest if not visible. views.callTypeView.setVisibility(nameOnly ? View.GONE : View.VISIBLE); views.numberView.setVisibility(nameOnly ? View.GONE : View.VISIBLE); nameView.setText(nameText); } public void setCurrentTimeForTest(long currentTimeMillis) { Loading
src/com/android/contacts/calllog/CallLogListItemHelper.java +1 −1 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ import android.view.View; public void setPhoneCallDetails(CallLogListItemViews views, PhoneCallDetails details, boolean useIcons, boolean isHighlighted) { mPhoneCallDetailsHelper.setPhoneCallDetails(views.phoneCallDetailsViews, details, useIcons, isHighlighted, false); isHighlighted); boolean canCall = mPhoneNumberHelper.canPlaceCallsTo(details.number); boolean canPlay = details.callTypes[0] == Calls.VOICEMAIL_TYPE; Loading
tests/src/com/android/contacts/PhoneCallDetailsHelperTest.java +27 −13 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.provider.CallLog.Calls; import android.test.AndroidTestCase; import android.view.View; import android.widget.TextView; import java.util.GregorianCalendar; import java.util.Locale; Loading @@ -51,6 +52,7 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { private PhoneCallDetailsHelper mHelper; /** The views to fill. */ private PhoneCallDetailsViews mViews; private TextView mNameView; private PhoneNumberHelper mPhoneNumberHelper; @Override Loading @@ -62,6 +64,7 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { mPhoneNumberHelper = new PhoneNumberHelper(resources, TEST_VOICEMAIL_NUMBER); mHelper = new PhoneCallDetailsHelper(resources, callTypeHelper, mPhoneNumberHelper); mViews = PhoneCallDetailsViews.createForTest(context); mNameView = new TextView(context); } @Override Loading Loading @@ -197,11 +200,16 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { } } public void testSetPhoneCallDetails_NameOnly() { setPhoneCallDetailsNameOnly(); assertEquals(View.VISIBLE, mViews.nameView.getVisibility()); assertEquals(View.GONE, mViews.numberView.getVisibility()); assertEquals(View.GONE, mViews.callTypeView.getVisibility()); public void testSetPhoneName_NumberOnly() { setPhoneCallNameWithNumberOnly(); assertEquals(View.VISIBLE, mNameView.getVisibility()); assertEquals(TEST_FORMATTED_NUMBER, mNameView.getText().toString()); } public void testSetPhoneName() { setPhoneCallName("John Doe"); assertEquals(View.VISIBLE, mNameView.getVisibility()); assertEquals("John Doe", mNameView.getText().toString()); } /** Asserts that the name text field contains the value of the given string resource. */ Loading Loading @@ -265,7 +273,7 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { mHelper.setPhoneCallDetails(mViews, new PhoneCallDetails(number, formattedNumber, TEST_COUNTRY_ISO, new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION), false, false, false); false, false); } /** Sets the phone call details with default values and the given date. */ Loading @@ -273,7 +281,7 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { mHelper.setPhoneCallDetails(mViews, new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, new int[]{ Calls.INCOMING_TYPE }, date, TEST_DURATION), false, false, false); false, false); } /** Sets the phone call details with default values and the given call types using icons. */ Loading @@ -290,13 +298,19 @@ public class PhoneCallDetailsHelperTest extends AndroidTestCase { mHelper.setPhoneCallDetails(mViews, new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, callTypes, TEST_DATE, TEST_DURATION), useIcons, false, false); useIcons, false); } private void setPhoneCallDetailsNameOnly() { mHelper.setPhoneCallDetails(mViews, private void setPhoneCallNameWithNumberOnly() { mHelper.setPhoneCallName(mNameView, new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION), true, false, true); new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION)); } private void setPhoneCallName(String name) { mHelper.setPhoneCallName(mNameView, new PhoneCallDetails(TEST_NUMBER, TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, new int[]{ Calls.INCOMING_TYPE }, TEST_DATE, TEST_DURATION, name, 0, "", 1, null)); } }