Synchronize direct share expansion between work and personal tabs am: 2b15d71b58

Change-Id: Ied3fb046d5611f54918592d5d79852947e293206
This commit is contained in:
arangelov
2020-04-22 18:16:15 +00:00
committed by Automerger Merge Worker
2 changed files with 54 additions and 9 deletions

View File

@@ -2885,6 +2885,13 @@ public class ChooserActivity extends ResolverActivity implements
return METRICS_CATEGORY_CHOOSER;
}
@Override
protected void onProfileTabSelected() {
ChooserGridAdapter currentRootAdapter =
mChooserMultiProfilePagerAdapter.getCurrentRootAdapter();
currentRootAdapter.updateDirectShareExpansion();
}
/**
* Adapter for all types of items and targets in ShareSheet.
* Note that ranked sections like Direct Share - while appearing grid-like - are handled on the
@@ -3357,15 +3364,7 @@ public class ChooserActivity extends ResolverActivity implements
}
public void handleScroll(View v, int y, int oldy) {
// Only expand direct share area if there is a minimum number of shortcuts,
// which will help reduce the amount of visible shuffling due to older-style
// direct share targets.
int orientation = getResources().getConfiguration().orientation;
boolean canExpandDirectShare =
mChooserListAdapter.getNumShortcutResults() > getMaxTargetsPerRow()
&& orientation == Configuration.ORIENTATION_PORTRAIT
&& !isInMultiWindowMode();
boolean canExpandDirectShare = canExpandDirectShare();
if (mDirectShareViewHolder != null && canExpandDirectShare) {
mDirectShareViewHolder.handleScroll(
mChooserMultiProfilePagerAdapter.getActiveAdapterView(), y, oldy,
@@ -3373,6 +3372,18 @@ public class ChooserActivity extends ResolverActivity implements
}
}
/**
* Only expand direct share area if there is a minimum number of shortcuts,
* which will help reduce the amount of visible shuffling due to older-style
* direct share targets.
*/
private boolean canExpandDirectShare() {
int orientation = getResources().getConfiguration().orientation;
return mChooserListAdapter.getNumShortcutResults() > getMaxTargetsPerRow()
&& orientation == Configuration.ORIENTATION_PORTRAIT
&& !isInMultiWindowMode();
}
public ChooserListAdapter getListAdapter() {
return mChooserListAdapter;
}
@@ -3380,6 +3391,19 @@ public class ChooserActivity extends ResolverActivity implements
boolean shouldCellSpan(int position) {
return getItemViewType(position) == VIEW_TYPE_NORMAL;
}
void updateDirectShareExpansion() {
if (mDirectShareViewHolder == null || !canExpandDirectShare()) {
return;
}
RecyclerView activeAdapterView =
mChooserMultiProfilePagerAdapter.getActiveAdapterView();
if (mResolverDrawerLayout.isCollapsed()) {
mDirectShareViewHolder.collapse(activeAdapterView);
} else {
mDirectShareViewHolder.expand(activeAdapterView);
}
}
}
/**
@@ -3577,6 +3601,20 @@ public class ChooserActivity extends ResolverActivity implements
newHeight = Math.max(newHeight, mDirectShareMinHeight);
yDiff = newHeight - prevHeight;
updateDirectShareRowHeight(view, yDiff, newHeight);
}
void expand(RecyclerView view) {
updateDirectShareRowHeight(view, mDirectShareMaxHeight - mDirectShareCurrHeight,
mDirectShareMaxHeight);
}
void collapse(RecyclerView view) {
updateDirectShareRowHeight(view, mDirectShareMinHeight - mDirectShareCurrHeight,
mDirectShareMinHeight);
}
private void updateDirectShareRowHeight(RecyclerView view, int yDiff, int newHeight) {
if (view == null || view.getChildCount() == 0 || yDiff == 0) {
return;
}

View File

@@ -1622,6 +1622,7 @@ public class ResolverActivity extends Activity implements
}
setupViewVisibilities();
maybeLogProfileChange();
onProfileTabSelected();
DevicePolicyEventLogger
.createEvent(DevicePolicyEnums.RESOLVER_SWITCH_TABS)
.setInt(viewPager.getCurrentItem())
@@ -1640,6 +1641,12 @@ public class ResolverActivity extends Activity implements
findViewById(R.id.resolver_tab_divider).setVisibility(View.VISIBLE);
}
/**
* Callback called when user changes the profile tab.
* <p>This method is intended to be overridden by subclasses.
*/
protected void onProfileTabSelected() { }
private void resetCheckedItem() {
if (!isIntentPicker()) {
return;