Merge "Add circular photo support to ContactPhotoManager"
diff --git a/src/com/android/contacts/common/list/ContactListItemView.java b/src/com/android/contacts/common/list/ContactListItemView.java
index d3ecd61..186ee8b 100644
--- a/src/com/android/contacts/common/list/ContactListItemView.java
+++ b/src/com/android/contacts/common/list/ContactListItemView.java
@@ -22,20 +22,17 @@
import android.database.CharArrayBuffer;
import android.database.Cursor;
import android.graphics.Canvas;
-import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
-import android.telephony.PhoneNumberUtils;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.TextUtils.TruncateAt;
import android.util.AttributeSet;
-import android.util.TypedValue;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
@@ -99,10 +96,6 @@
*/
private int mDataViewWidthWeight = 5;
- // Will be used with adjustListItemSelectionBounds().
- private int mSelectionBoundsMarginLeft;
- private int mSelectionBoundsMarginRight;
-
protected static class HighlightSequence {
private final int start;
private final int end;
@@ -314,7 +307,7 @@
ensurePhotoViewSize();
// Width each TextView is able to use.
- final int effectiveWidth;
+ int effectiveWidth;
// All the other Views will honor the photo, so available width for them may be shrunk.
if (mPhotoViewWidth > 0 || mKeepHorizontalPaddingForPhotoView) {
effectiveWidth = specWidth - getPaddingLeft() - getPaddingRight()
@@ -323,11 +316,15 @@
effectiveWidth = specWidth - getPaddingLeft() - getPaddingRight();
}
+ if (mIsSectionHeaderEnabled) {
+ effectiveWidth -= mHeaderWidth + mGapBetweenImageAndText;
+ }
+
// Go over all visible text views and measure actual width of each of them.
// Also calculate their heights to get the total height for this entire view.
if (isVisible(mNameTextView)) {
- // Caculate width for name text - this parallels similar measurement in onLayout.
+ // Claculate width for name text - this parallels similar measurement in onLayout.
int nameTextWidth = effectiveWidth;
if (mPhotoPosition != PhotoPosition.LEFT) {
nameTextWidth -= mTextIndent;
@@ -467,7 +464,15 @@
}
}
- mBoundsWithoutHeader.set(leftBound, topBound, width, bottomBound);
+ mBoundsWithoutHeader.set(leftBound, topBound, rightBound, bottomBound);
+
+ if (mIsSectionHeaderEnabled) {
+ if (isLayoutRtl) {
+ rightBound -= mGapBetweenImageAndText;
+ } else {
+ leftBound += mGapBetweenImageAndText;
+ }
+ }
if (mActivatedStateSupported && isActivated()) {
mActivatedBackgroundDrawable.setBounds(mBoundsWithoutHeader);
@@ -619,8 +624,8 @@
public void adjustListItemSelectionBounds(Rect bounds) {
bounds.top += mBoundsWithoutHeader.top;
bounds.bottom = bounds.top + mBoundsWithoutHeader.height();
- bounds.left += mSelectionBoundsMarginLeft;
- bounds.right -= mSelectionBoundsMarginRight;
+ bounds.left = mBoundsWithoutHeader.left;
+ bounds.right = mBoundsWithoutHeader.right;
}
protected boolean isVisible(View view) {
@@ -700,7 +705,8 @@
if (mHeaderTextView == null) {
mHeaderTextView = new TextView(getContext());
mHeaderTextView.setTextAppearance(getContext(), R.style.SectionHeaderStyle);
- mHeaderTextView.setGravity(Gravity.CENTER);
+ mHeaderTextView.setGravity(Gravity.CENTER_VERTICAL |
+ (ViewUtil.isViewLayoutRtl(this) ? Gravity.RIGHT : Gravity.LEFT));
addView(mHeaderTextView);
}
setMarqueeText(mHeaderTextView, title);
@@ -1384,15 +1390,6 @@
}
/**
- * Specifies left and right margin for selection bounds. See also
- * {@link #adjustListItemSelectionBounds(Rect)}.
- */
- public void setSelectionBoundsHorizontalMargin(int left, int right) {
- mSelectionBoundsMarginLeft = left;
- mSelectionBoundsMarginRight = right;
- }
-
- /**
* Set drawable resources directly for both the background and the drawable resource
* of the photo view
*
diff --git a/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java b/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java
index 6f6e551..e0c3e1a 100644
--- a/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java
+++ b/src/com/android/contacts/common/list/ContactListPinnedHeaderView.java
@@ -27,6 +27,7 @@
import android.widget.TextView;
import com.android.contacts.common.R;
+import com.android.contacts.common.util.ViewUtil;
/**
* A custom view for the pinned section header shown at the top of the contact list.
@@ -42,11 +43,12 @@
a.recycle();
setBackgroundColor(backgroundColor);
- setTextAppearance(getContext(), R.style.DirectoryHeaderStyle);
+ setTextAppearance(getContext(), R.style.SectionHeaderStyle);
setLayoutParams(new LayoutParams(
getResources().getDimensionPixelSize(R.dimen.contact_list_section_header_width),
LayoutParams.WRAP_CONTENT));
- setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER);
+ setGravity(Gravity.CENTER_VERTICAL |
+ (ViewUtil.isViewLayoutRtl(this) ? Gravity.RIGHT : Gravity.LEFT));
}
/**
diff --git a/src/com/android/contacts/common/model/AccountTypeManager.java b/src/com/android/contacts/common/model/AccountTypeManager.java
index b5a9a16..45af346 100644
--- a/src/com/android/contacts/common/model/AccountTypeManager.java
+++ b/src/com/android/contacts/common/model/AccountTypeManager.java
@@ -420,7 +420,6 @@
} else if (ExchangeAccountType.isExchangeType(type)) {
accountType = new ExchangeAccountType(mContext, auth.packageName, type);
} else {
- // TODO: use syncadapter package instead, since it provides resources
Log.d(TAG, "Registering external account type=" + type
+ ", packageName=" + auth.packageName);
accountType = new ExternalAccountType(mContext, auth.packageName, false);