Merge "Fix QC title translation near bottom of screen" into lmp-dev
diff --git a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
index a536f8c..9891a8f 100644
--- a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
+++ b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
@@ -67,7 +67,7 @@
*/
public static final class Entry {
- private final int mViewId;
+ private final int mId;
private final Drawable mIcon;
private final String mHeader;
private final String mSubHeader;
@@ -82,21 +82,21 @@
private final boolean mIsEditable;
private final EntryContextMenuInfo mEntryContextMenuInfo;
- public Entry(int viewId, Drawable icon, String header, String subHeader, String text,
+ public Entry(int id, Drawable icon, String header, String subHeader, String text,
Intent intent, Drawable alternateIcon, Intent alternateIntent,
String alternateContentDescription, boolean shouldApplyColor,
boolean isEditable, EntryContextMenuInfo entryContextMenuInfo) {
- this(viewId, icon, header, subHeader, null, text, null, intent, alternateIcon,
+ this(id, icon, header, subHeader, null, text, null, intent, alternateIcon,
alternateIntent, alternateContentDescription, shouldApplyColor, isEditable,
entryContextMenuInfo);
}
- public Entry(int viewId, Drawable mainIcon, String header, String subHeader,
+ public Entry(int id, Drawable mainIcon, String header, String subHeader,
Drawable subHeaderIcon, String text, Drawable textIcon, Intent intent,
Drawable alternateIcon, Intent alternateIntent, String alternateContentDescription,
boolean shouldApplyColor, boolean isEditable,
EntryContextMenuInfo entryContextMenuInfo) {
- mViewId = viewId;
+ mId = id;
mIcon = mainIcon;
mHeader = header;
mSubHeader = subHeader;
@@ -160,8 +160,8 @@
return mIsEditable;
}
- int getViewId() {
- return mViewId;
+ int getId() {
+ return mId;
}
EntryContextMenuInfo getEntryContextMenuInfo() {
@@ -182,6 +182,10 @@
private OnClickListener mOnClickListener;
private OnCreateContextMenuListener mOnCreateContextMenuListener;
private boolean mIsExpanded = false;
+ /**
+ * The max number of entries to show in a collapsed card. If there are less entries passed in,
+ * then they are all shown.
+ */
private int mCollapsedEntriesCount;
private ExpandingEntryCardViewListener mListener;
private List<List<Entry>> mEntries;
@@ -255,11 +259,6 @@
mEntryViews.add(new ArrayList<View>());
}
mCollapsedEntriesCount = Math.min(numInitialVisibleEntries, mNumEntries);
- // Only show the head of each entry list if the initial visible number falls between the
- // number of lists and the total number of entries
- if (mCollapsedEntriesCount > mEntries.size()) {
- mCollapsedEntriesCount = mEntries.size();
- }
mListener = listener;
mAnimationViewGroup = animationViewGroup;
@@ -321,11 +320,28 @@
}
}
} else {
- for (int i = 0; i < mCollapsedEntriesCount; i++) {
+ // We want to insert mCollapsedEntriesCount entries into the group. extraEntries is the
+ // number of entries that need to be added that are not the head element of a list
+ // to reach mCollapsedEntriesCount.
+ int numInViewGroup = 0;
+ int extraEntries = mCollapsedEntriesCount - mEntryViews.size();
+ for (int i = 0; i < mEntryViews.size() && numInViewGroup < mCollapsedEntriesCount;
+ i++) {
+ List<View> entryViewList = mEntryViews.get(i);
if (i > 0) {
- addSeparator(mEntryViews.get(i).get(0));
+ addSeparator(entryViewList.get(0));
}
- addEntry(mEntryViews.get(i).get(0));
+ addEntry(entryViewList.get(0));
+ numInViewGroup++;
+ // Insert entries in this list to hit mCollapsedEntriesCount.
+ for (int j = 1;
+ j < entryViewList.size() && numInViewGroup < mCollapsedEntriesCount &&
+ extraEntries > 0;
+ j++) {
+ addEntry(entryViewList.get(j));
+ numInViewGroup++;
+ extraEntries--;
+ }
}
}
@@ -392,9 +408,24 @@
inflateAllEntries(layoutInflater);
} else {
// Otherwise inflate the top entry from each list
- for (int i = 0; i < mCollapsedEntriesCount; i++) {
- mEntryViews.get(i).add(createEntryView(layoutInflater, mEntries.get(i).get(0),
+ // extraEntries is used to add extra entries until mCollapsedEntriesCount is reached.
+ int numInflated = 0;
+ int extraEntries = mCollapsedEntriesCount - mEntries.size();
+ for (int i = 0; i < mEntries.size() && numInflated < mCollapsedEntriesCount; i++) {
+ List<Entry> entryList = mEntries.get(i);
+ List<View> entryViewList = mEntryViews.get(i);
+
+ entryViewList.add(createEntryView(layoutInflater, entryList.get(0),
/* showIcon = */ View.VISIBLE));
+ numInflated++;
+ // Inflate entries in this list to hit mCollapsedEntriesCount.
+ for (int j = 1; j < entryList.size() && numInflated < mCollapsedEntriesCount &&
+ extraEntries > 0; j++) {
+ entryViewList.add(createEntryView(layoutInflater, entryList.get(j),
+ /* showIcon = */ View.VISIBLE));
+ numInflated++;
+ extraEntries--;
+ }
}
}
}
@@ -491,7 +522,6 @@
R.layout.expanding_entry_card_item, this, false);
view.setContextMenuInfo(entry.getEntryContextMenuInfo());
- view.setId(entry.getViewId());
final ImageView icon = (ImageView) view.findViewById(R.id.icon);
icon.setVisibility(iconVisibility);
@@ -535,7 +565,7 @@
if (entry.getIntent() != null) {
view.setOnClickListener(mOnClickListener);
- view.setTag(entry.getIntent());
+ view.setTag(new EntryTag(entry.getId(), entry.getIntent()));
}
// If only the header is visible, add a top margin to match icon's top margin.
@@ -555,8 +585,7 @@
if (entry.getAlternateIcon() != null && entry.getAlternateIntent() != null) {
alternateIcon.setImageDrawable(entry.getAlternateIcon());
alternateIcon.setOnClickListener(mOnClickListener);
- alternateIcon.setTag(entry.getAlternateIntent());
- alternateIcon.setId(entry.getViewId());
+ alternateIcon.setTag(new EntryTag(entry.getId(), entry.getAlternateIntent()));
alternateIcon.setVisibility(View.VISIBLE);
alternateIcon.setContentDescription(entry.getAlternateContentDescription());
@@ -808,4 +837,22 @@
return mCopyLabel;
}
}
+
+ static final class EntryTag {
+ private final int mId;
+ private final Intent mIntent;
+
+ public EntryTag(int id, Intent intent) {
+ mId = id;
+ mIntent = intent;
+ }
+
+ public int getId() {
+ return mId;
+ }
+
+ public Intent getIntent() {
+ return mIntent;
+ }
+ }
}
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 8b4e124..edcb662 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -128,6 +128,7 @@
import com.android.contacts.interactions.SmsInteractionsLoader;
import com.android.contacts.quickcontact.ExpandingEntryCardView.Entry;
import com.android.contacts.quickcontact.ExpandingEntryCardView.EntryContextMenuInfo;
+import com.android.contacts.quickcontact.ExpandingEntryCardView.EntryTag;
import com.android.contacts.quickcontact.ExpandingEntryCardView.ExpandingEntryCardViewListener;
import com.android.contacts.util.ImageViewDrawableSetter;
import com.android.contacts.util.PhoneCapabilityTester;
@@ -287,18 +288,19 @@
final OnClickListener mEntryClickHandler = new OnClickListener() {
@Override
public void onClick(View v) {
- // Data Id is stored as the entry view id
- final int dataId = v.getId();
+ final Object entryTagObject = v.getTag();
+ if (entryTagObject == null || !(entryTagObject instanceof EntryTag)) {
+ Log.w(TAG, "EntryTag was not used correctly");
+ return;
+ }
+ final EntryTag entryTag = (EntryTag) entryTagObject;
+ final Intent intent = entryTag.getIntent();
+ final int dataId = entryTag.getId();
+
if (dataId == CARD_ENTRY_ID_EDIT_CONTACT) {
editContact();
return;
}
- final Object intentObject = v.getTag();
- if (intentObject == null || !(intentObject instanceof Intent)) {
- Log.w(TAG, "Intent tag was not used correctly");
- return;
- }
- final Intent intent = (Intent) intentObject;
// Default to USAGE_TYPE_CALL. Usage is summed among all types for sorting each data id
// so the exact usage type is not necessary in all cases
@@ -1310,6 +1312,7 @@
return null;
}
+ // Ignore dataIds from the Me profile.
final int dataId = dataItem.getId() > Integer.MAX_VALUE ?
-1 : (int) dataItem.getId();