4dd024b974
Instead of changing the display order of the Folder to preserve the upper left quadrant, we are opting to change the Folder Icon preview to always show the upper left quadrant. This means that when adding items to a Folder, the preview items may change. (They will change when the column size increases). Bug: 27944225 Bug: 63140071 Change-Id: I863c2479469d68559cab2878030c2087d48217d6
76 lines
2.7 KiB
Java
76 lines
2.7 KiB
Java
/*
|
|
* Copyright (C) 2017 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package com.android.launcher3.folder;
|
|
|
|
import com.android.launcher3.FolderInfo;
|
|
import com.android.launcher3.InvariantDeviceProfile;
|
|
import com.android.launcher3.config.FeatureFlags;
|
|
|
|
/**
|
|
* Verifies whether an item in a Folder is displayed in the FolderIcon preview.
|
|
*/
|
|
public class FolderIconPreviewVerifier {
|
|
|
|
private final int mMaxGridCountX;
|
|
private final int mMaxGridCountY;
|
|
private final int mMaxItemsPerPage;
|
|
private final int[] mGridSize = new int[2];
|
|
|
|
private int mGridCountX;
|
|
private boolean mDisplayingUpperLeftQuadrant = false;
|
|
|
|
public FolderIconPreviewVerifier(InvariantDeviceProfile profile) {
|
|
mMaxGridCountX = profile.numFolderColumns;
|
|
mMaxGridCountY = profile.numFolderRows;
|
|
mMaxItemsPerPage = mMaxGridCountX * mMaxGridCountY;
|
|
}
|
|
|
|
public void setFolderInfo(FolderInfo info) {
|
|
int numItemsInFolder = info.contents.size();
|
|
FolderPagedView.calculateGridSize(numItemsInFolder, 0, 0, mMaxGridCountX,
|
|
mMaxGridCountY, mMaxItemsPerPage, mGridSize);
|
|
mGridCountX = mGridSize[0];
|
|
|
|
mDisplayingUpperLeftQuadrant = FeatureFlags.LAUNCHER3_NEW_FOLDER_ANIMATION
|
|
&& !FeatureFlags.LAUNCHER3_LEGACY_FOLDER_ICON
|
|
&& numItemsInFolder > FolderIcon.NUM_ITEMS_IN_PREVIEW;
|
|
}
|
|
|
|
/**
|
|
* Returns whether the item with {@param rank} is in the default Folder icon preview.
|
|
*/
|
|
public boolean isItemInPreview(int rank) {
|
|
return isItemInPreview(0, rank);
|
|
}
|
|
|
|
/**
|
|
* @param page The page the item is on.
|
|
* @param rank The rank of the item.
|
|
* @return True iff the icon is in the 2x2 upper left quadrant of the Folder.
|
|
*/
|
|
public boolean isItemInPreview(int page, int rank) {
|
|
// First page items are laid out such that the first 4 items are always in the upper
|
|
// left quadrant. For all other pages, we need to check the row and col.
|
|
if (page > 0 || mDisplayingUpperLeftQuadrant) {
|
|
int col = rank % mGridCountX;
|
|
int row = rank / mGridCountX;
|
|
return col < 2 && row < 2;
|
|
}
|
|
return rank < FolderIcon.NUM_ITEMS_IN_PREVIEW;
|
|
}
|
|
}
|