Refactoring some folder binding logic:

> Moving grid calcutation in a separate class
> Moving content saving logic to folder instead of relying on item bind

Bug: 139051851
Change-Id: I81b226dbebe13652482a767c992e8cc8f4f35a60
This commit is contained in:
Sunny Goyal
2019-08-07 09:24:26 -07:00
parent 3cc153813a
commit 11a50747ed
13 changed files with 356 additions and 344 deletions

View File

@@ -79,7 +79,7 @@ public class FolderAnimationManager {
private final TimeInterpolator mLargeFolderPreviewItemCloseInterpolator;
private final PreviewItemDrawingParams mTmpParams = new PreviewItemDrawingParams(0, 0, 0, 0);
private final FolderGridOrganizer mPreviewVerifier;
public FolderAnimationManager(Folder folder, boolean isOpening) {
mFolder = folder;
@@ -91,6 +91,7 @@ public class FolderAnimationManager {
mContext = folder.getContext();
mLauncher = folder.mLauncher;
mPreviewVerifier = new FolderGridOrganizer(mLauncher.getDeviceProfile().inv);
mIsOpening = isOpening;
@@ -113,7 +114,7 @@ public class FolderAnimationManager {
public AnimatorSet getAnimator() {
final DragLayer.LayoutParams lp = (DragLayer.LayoutParams) mFolder.getLayoutParams();
ClippedFolderIconLayoutRule rule = mFolderIcon.getLayoutRule();
final List<BubbleTextView> itemsInPreview = mFolderIcon.getPreviewItems();
final List<BubbleTextView> itemsInPreview = getPreviewIconsOnPage(0);
// Match position of the FolderIcon
final Rect folderIconPos = new Rect();
@@ -225,6 +226,14 @@ public class FolderAnimationManager {
return a;
}
/**
* Returns the list of "preview items" on {@param page}.
*/
private List<BubbleTextView> getPreviewIconsOnPage(int page) {
return mPreviewVerifier.setFolderInfo(mFolder.mInfo)
.previewItemsForPage(page, mFolder.getIconsInReadingOrder());
}
/**
* Animate the items on the current page.
*/
@@ -232,9 +241,8 @@ public class FolderAnimationManager {
int previewItemOffsetX, int previewItemOffsetY) {
ClippedFolderIconLayoutRule rule = mFolderIcon.getLayoutRule();
boolean isOnFirstPage = mFolder.mContent.getCurrentPage() == 0;
final List<BubbleTextView> itemsInPreview = isOnFirstPage
? mFolderIcon.getPreviewItems()
: mFolderIcon.getPreviewItemsOnPage(mFolder.mContent.getCurrentPage());
final List<BubbleTextView> itemsInPreview = getPreviewIconsOnPage(
isOnFirstPage ? 0 : mFolder.mContent.getCurrentPage());
final int numItemsInPreview = itemsInPreview.size();
final int numItemsInFirstPagePreview = isOnFirstPage
? numItemsInPreview : MAX_NUM_ITEMS_IN_PREVIEW;