summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Matt Pietal <mpietal@google.com> 2019-04-16 12:53:28 -0400
committer Matt Pietal <mpietal@google.com> 2019-04-16 15:15:22 -0400
commitdadc0d1541e6615404b674f3fc18e49d95cc7df1 (patch)
tree68e088c3c3bb856f430e05309eb70fb7033e12f4
parent49c98a7b6350174d0411f563c960afe2d747fd89 (diff)
Sharesheet - Merge EXTRA_INITIAL_INTENTS + Ranked apps
Organize app-supplied EXTRA_INITIAL_INTENTS plus the highest ranked apps into a single row (4 in portrait, 8 landscape) Bug: 130429746 Test: Visual inspection Change-Id: Icd0755d25b2801b42ea2c3a8c984e9e1f0c7987e
-rw-r--r--core/java/com/android/internal/app/ChooserActivity.java33
1 files changed, 23 insertions, 10 deletions
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 4d4fe0397791..26141c437204 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -2591,12 +2591,24 @@ public class ChooserActivity extends ResolverActivity {
}
}
+ /**
+ * Need to merge CALLER + ranked STANDARD into a single row. All other types
+ * are placed into their own row as determined by their target type, and dividers
+ * are added in the list to separate each type.
+ */
+ int getRowType(int rowPosition) {
+ int positionType = mChooserListAdapter.getPositionTargetType(rowPosition);
+ if (positionType == ChooserListAdapter.TARGET_CALLER) {
+ return ChooserListAdapter.TARGET_STANDARD;
+ }
+
+ return positionType;
+ }
+
void bindViewHolder(int rowPosition, RowViewHolder holder) {
final int start = getFirstRowPosition(rowPosition);
- final int startType = mChooserListAdapter.getPositionTargetType(start);
-
- final int lastStartType = mChooserListAdapter.getPositionTargetType(
- getFirstRowPosition(rowPosition - 1));
+ final int startType = getRowType(start);
+ final int lastStartType = getRowType(getFirstRowPosition(rowPosition - 1));
final ViewGroup row = holder.getViewGroup();
@@ -2608,7 +2620,7 @@ public class ChooserActivity extends ResolverActivity {
int columnCount = holder.getColumnCount();
int end = start + columnCount - 1;
- while (mChooserListAdapter.getPositionTargetType(end) != startType && end >= start) {
+ while (getRowType(end) != startType && end >= start) {
end--;
}
@@ -2660,14 +2672,15 @@ public class ChooserActivity extends ResolverActivity {
return row * getMaxTargetsPerRow();
}
- final int callerCount = mChooserListAdapter.getCallerTargetCount();
- final int callerRows = (int) Math.ceil((float) callerCount / getMaxTargetsPerRow());
- if (row < callerRows + serviceRows) {
+ final int callerAndRankedCount = mChooserListAdapter.getCallerTargetCount()
+ + mChooserListAdapter.getRankedTargetCount();
+ final int callerAndRankedRows = getCallerAndRankedTargetRowCount();
+ if (row < callerAndRankedRows + serviceRows) {
return serviceCount + (row - serviceRows) * getMaxTargetsPerRow();
}
- return callerCount + serviceCount
- + (row - callerRows - serviceRows) * getMaxTargetsPerRow();
+ return callerAndRankedCount + serviceCount
+ + (row - callerAndRankedRows - serviceRows) * getMaxTargetsPerRow();
}
public void handleScroll(View v, int y, int oldy) {