diff options
author | Adam Cohen <adamcohen@google.com> | 2011-06-23 15:38:03 -0700 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2011-06-23 18:52:18 -0700 |
commit | afb01ee74243cede19088e694ca82cea5983c603 (patch) | |
tree | 12186d5aadd2cca5cd7b5170ba12ebb1bca24846 /src/com/android/launcher2/Folder.java | |
parent | 4e076545e4ccdbd3c045a3fa33869a2b7519a0cc (diff) | |
download | android_packages_apps_Trebuchet-afb01ee74243cede19088e694ca82cea5983c603.tar.gz android_packages_apps_Trebuchet-afb01ee74243cede19088e694ca82cea5983c603.tar.bz2 android_packages_apps_Trebuchet-afb01ee74243cede19088e694ca82cea5983c603.zip |
Folder auto-destroys itself when there is only one item left.
Change-Id: I4ea41e0730e3dc474a518eba0a04c11167b5c1df
Diffstat (limited to 'src/com/android/launcher2/Folder.java')
-rw-r--r-- | src/com/android/launcher2/Folder.java | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java index 029b89f60..1324a08ed 100644 --- a/src/com/android/launcher2/Folder.java +++ b/src/com/android/launcher2/Folder.java @@ -329,7 +329,7 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL mItemsInvalidated = true; mInfo.addListener(this); - if (sDefaultFolderName != mInfo.title) { + if (!sDefaultFolderName.contentEquals(mInfo.title)) { mFolderName.setText(mInfo.title); } else { mFolderName.setText(""); @@ -784,6 +784,42 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL setupContentForNumItems(getItemCount()); mRearrangeOnClose = false; } + if (getItemCount() <= 1) { + replaceFolderWithFinalItem(); + } + } + + private void replaceFolderWithFinalItem() { + ItemInfo finalItem = null; + + if (getItemCount() == 1) { + finalItem = mInfo.contents.get(0); + } + + // Remove the folder completely + final CellLayout cellLayout = (CellLayout) + mLauncher.getWorkspace().getChildAt(mInfo.screen); + cellLayout.removeView(mFolderIcon); + if (mFolderIcon instanceof DropTarget) { + mDragController.removeDropTarget((DropTarget) mFolderIcon); + } + mLauncher.removeFolder(mInfo); + + if (finalItem != null) { + LauncherModel.addOrMoveItemInDatabase(mLauncher, finalItem, + LauncherSettings.Favorites.CONTAINER_DESKTOP, mInfo.screen, + mInfo.cellX, mInfo.cellY); + } + LauncherModel.deleteFolderContentsFromDatabase(mLauncher, mInfo, true); + + // Add the last remaining child to the workspace in place of the folder + if (finalItem != null) { + View child = mLauncher.createShortcut(R.layout.application, cellLayout, + (ShortcutInfo) finalItem); + + mLauncher.getWorkspace().addInScreen(child, mInfo.screen, mInfo.cellX, mInfo.cellY, + mInfo.spanX, mInfo.spanY); + } } public void onDrop(DragObject d) { @@ -833,6 +869,9 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL } else { setupContentForNumItems(getItemCount()); } + if (getItemCount() <= 1) { + replaceFolderWithFinalItem(); + } } public void onItemsChanged() { |