summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2015-03-10 13:42:03 -0700
committerSunny Goyal <sunnygoyal@google.com>2015-03-10 14:01:38 -0700
commite4766230ff8115c5897ebee74c145bcae822581e (patch)
tree49777353b13be8abc44baec97c04753dc690c06d /src
parent28ad58478e6b0034ce8c6a775a18ee253e6657f4 (diff)
downloadandroid_packages_apps_Trebuchet-e4766230ff8115c5897ebee74c145bcae822581e.tar.gz
android_packages_apps_Trebuchet-e4766230ff8115c5897ebee74c145bcae822581e.tar.bz2
android_packages_apps_Trebuchet-e4766230ff8115c5897ebee74c145bcae822581e.zip
Refactoring some logic in FolderPagedView
> Using a common paths for rearranging items, creating new icon and creating new page Change-Id: I85097c7e47b42b79162a8a553a971e44dbc7af3c
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/FolderPagedView.java149
1 files changed, 49 insertions, 100 deletions
diff --git a/src/com/android/launcher3/FolderPagedView.java b/src/com/android/launcher3/FolderPagedView.java
index 60c94e0ed..c9e825aa3 100644
--- a/src/com/android/launcher3/FolderPagedView.java
+++ b/src/com/android/launcher3/FolderPagedView.java
@@ -16,6 +16,7 @@
package com.android.launcher3;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
@@ -44,11 +45,9 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
private final IconCache mIconCache;
private final HashMap<View, Runnable> mPageChangingViews = new HashMap<>();
- private final CellLayout mFirstPage;
-
- final int mMaxCountX;
- final int mMaxCountY;
- final int mMaxItemsPerPage;
+ private final int mMaxCountX;
+ private final int mMaxCountY;
+ private final int mMaxItemsPerPage;
private int mAllocatedContentSize;
private int mGridCountX;
@@ -61,10 +60,6 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
public FolderPagedView(Context context, AttributeSet attrs) {
super(context, attrs);
LauncherAppState app = LauncherAppState.getInstance();
-
- mFirstPage = newCellLayout();
- addFullScreenPage(mFirstPage);
- setCurrentPage(0);
setDataIsReady();
DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
@@ -96,8 +91,6 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
mGridCountY = mMaxCountY;
done = true;
} else {
- mGridCountX = mFirstPage.getCountX();
- mGridCountY = mFirstPage.getCountY();
done = false;
}
@@ -120,50 +113,19 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
done = mGridCountX == oldCountX && mGridCountY == oldCountY;
}
- setGridSize(mGridCountX, mGridCountY);
- }
-
- public void setGridSize(int countX, int countY) {
- mGridCountX = countX;
- mGridCountY = countY;
- mFirstPage.setGridSize(mGridCountX, mGridCountY);
- for (int i = getPageCount() - 1; i > 0; i--) {
+ // Update grid size
+ for (int i = getPageCount() - 1; i >= 0; i--) {
getPageAt(i).setGridSize(mGridCountX, mGridCountY);
}
}
@Override
public ArrayList<ShortcutInfo> bindItems(ArrayList<ShortcutInfo> items) {
- final int count = items.size();
-
- if (getPageCount() > 1) {
- Log.d(TAG, "Binding items to an non-empty view");
- removeAllViews();
- addView(mFirstPage);
- mFirstPage.removeAllViews();
- }
-
- setupContentDimensions(count);
- CellLayout page = mFirstPage;
- int pagePosition = 0;
- int rank = 0;
-
+ ArrayList<View> icons = new ArrayList<View>();
for (ShortcutInfo item : items) {
- if (pagePosition >= mMaxItemsPerPage) {
- // This page is full, add a new page.
- pagePosition = 0;
- page = newCellLayout();
- addFullScreenPage(page);
- }
-
- item.cellX = pagePosition % mGridCountX;
- item.cellY = pagePosition / mGridCountX;
- item.rank = rank;
- addNewView(item, page);
-
- rank++;
- pagePosition++;
+ icons.add(createNewView(item));
}
+ arrangeChildren(icons, icons.size(), false);
return new ArrayList<ShortcutInfo>();
}
@@ -185,7 +147,7 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
// Add a new page if last page is full
if (getPageAt(getChildCount() - 1).getShortcutsAndWidgets().getChildCount()
>= mMaxItemsPerPage) {
- addFullScreenPage(newCellLayout());
+ createAndAddNewPage();
}
setCurrentPage(getChildCount() - 1);
return rank;
@@ -193,47 +155,39 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
@Override
public View createAndAddViewForRank(ShortcutInfo item, int rank) {
- int pageNo = updateItemXY(item, rank);
- CellLayout page = getPageAt(pageNo);
- return addNewView(item, page);
+ View icon = createNewView(item);
+ addViewForRank(createNewView(item), item, rank);
+ return icon;
}
@Override
public void addViewForRank(View view, ShortcutInfo item, int rank) {
- int pageNo = updateItemXY(item, rank);
- CellLayout.LayoutParams lp = (CellLayout.LayoutParams) view.getLayoutParams();
- lp.cellX = item.cellX;
- lp.cellY = item.cellY;
- getPageAt(pageNo).addViewToCellLayout(
- view, -1, mFolder.mLauncher.getViewIdForItem(item), lp, true);
- }
+ int pagePos = rank % mMaxItemsPerPage;
+ int pageNo = rank / mMaxItemsPerPage;
- /**
- * Updates the item cellX and cellY position and return the page number for that item.
- */
- private int updateItemXY(ShortcutInfo item, int rank) {
item.rank = rank;
-
- int pagePos = item.rank % mMaxItemsPerPage;
item.cellX = pagePos % mGridCountX;
item.cellY = pagePos / mGridCountX;
- return item.rank / mMaxItemsPerPage;
+ CellLayout.LayoutParams lp = (CellLayout.LayoutParams) view.getLayoutParams();
+ lp.cellX = item.cellX;
+ lp.cellY = item.cellY;
+ getPageAt(pageNo).addViewToCellLayout(
+ view, -1, mFolder.mLauncher.getViewIdForItem(item), lp, true);
}
- private View addNewView(ShortcutInfo item, CellLayout target) {
+ @SuppressLint("InflateParams")
+ private View createNewView(ShortcutInfo item) {
final BubbleTextView textView = (BubbleTextView) mInflater.inflate(
- R.layout.folder_application, target.getShortcutsAndWidgets(), false);
+ R.layout.folder_application, null, false);
textView.applyFromShortcutInfo(item, mIconCache, false);
textView.setOnClickListener(mFolder);
textView.setOnLongClickListener(mFolder);
textView.setOnFocusChangeListener(mFocusIndicatorView);
textView.setOnKeyListener(mKeyListener);
- CellLayout.LayoutParams lp = new CellLayout.LayoutParams(
- item.cellX, item.cellY, item.spanX, item.spanY);
- target.addViewToCellLayout(
- textView, -1, mFolder.mLauncher.getViewIdForItem(item), lp, true);
+ textView.setLayoutParams(new CellLayout.LayoutParams(
+ item.cellX, item.cellY, item.spanX, item.spanY));
return textView;
}
@@ -252,26 +206,18 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
return getPageAt(getNextPage());
}
- @Override
- public void addFullScreenPage(View page) {
- LayoutParams lp = generateDefaultLayoutParams();
- lp.isFullScreenPage = true;
- super.addView(page, -1, lp);
- }
-
- private CellLayout newCellLayout() {
+ private CellLayout createAndAddNewPage() {
DeviceProfile grid = LauncherAppState.getInstance().getDynamicGrid().getDeviceProfile();
+ CellLayout page = new CellLayout(getContext());
+ page.setCellDimensions(grid.folderCellWidthPx, grid.folderCellHeightPx);
+ page.getShortcutsAndWidgets().setMotionEventSplittingEnabled(false);
+ page.setInvertIfRtl(true);
+ page.setGridSize(mGridCountX, mGridCountY);
- CellLayout layout = new CellLayout(getContext());
- layout.setCellDimensions(grid.folderCellWidthPx, grid.folderCellHeightPx);
- layout.getShortcutsAndWidgets().setMotionEventSplittingEnabled(false);
- layout.setInvertIfRtl(true);
-
- if (mFirstPage != null) {
- layout.setGridSize(mFirstPage.getCountX(), mFirstPage.getCountY());
- }
-
- return layout;
+ LayoutParams lp = generateDefaultLayoutParams();
+ lp.isFullScreenPage = true;
+ addView(page, -1, lp);
+ return page;
}
@Override
@@ -300,6 +246,10 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
*/
@Override
public void arrangeChildren(ArrayList<View> list, int itemCount) {
+ arrangeChildren(list, itemCount, true);
+ }
+
+ private void arrangeChildren(ArrayList<View> list, int itemCount, boolean saveChanges) {
ArrayList<CellLayout> pages = new ArrayList<CellLayout>();
for (int i = 0; i < getChildCount(); i++) {
CellLayout page = (CellLayout) getChildAt(i);
@@ -321,8 +271,7 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
if (pageItr.hasNext()) {
currentPage = pageItr.next();
} else {
- currentPage = newCellLayout();
- addFullScreenPage(currentPage);
+ currentPage = createAndAddNewPage();
}
position = 0;
}
@@ -335,8 +284,10 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
info.cellX = newX;
info.cellY = newY;
info.rank = rank;
- LauncherModel.addOrMoveItemInDatabase(getContext(), info,
- mFolder.mInfo.id, 0, info.cellX, info.cellY);
+ if (saveChanges) {
+ LauncherModel.addOrMoveItemInDatabase(getContext(), info,
+ mFolder.mInfo.id, 0, info.cellX, info.cellY);
+ }
}
lp.cellX = info.cellX;
lp.cellY = info.cellY;
@@ -346,13 +297,11 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
v, -1, mFolder.mLauncher.getViewIdForItem(info), lp, true);
}
+ // Remove extra views.
boolean removed = false;
while (pageItr.hasNext()) {
- CellLayout layout = pageItr.next();
- if (layout != mFirstPage) {
- removeView(layout);
- removed = true;
- }
+ removeView(pageItr.next());
+ removed = true;
}
if (removed) {
setCurrentPage(0);
@@ -369,11 +318,11 @@ public class FolderPagedView extends PagedView implements Folder.FolderContent {
public void syncPageItems(int page, boolean immediate) { }
public int getDesiredWidth() {
- return mFirstPage.getDesiredWidth();
+ return getPageCount() > 0 ? getPageAt(0).getDesiredWidth() : 0;
}
public int getDesiredHeight() {
- return mFirstPage.getDesiredHeight();
+ return getPageCount() > 0 ? getPageAt(0).getDesiredHeight() : 0;
}
@Override