diff options
author | Danesh Mondegarian <daneshm90@gmail.com> | 2013-08-25 13:44:21 -0700 |
---|---|---|
committer | Danesh Mondegarian <daneshm90@gmail.com> | 2013-08-25 13:44:21 -0700 |
commit | 15b2b8a2da8f4b767c0bebef292dcb00afdde3a2 (patch) | |
tree | 2e28dbf63d23321a7105b368429e97c8c193017b /src/com/cyanogenmod | |
parent | cad0342d7477efbb98227d10f73d7a1bfa7f2417 (diff) | |
download | android_packages_apps_Trebuchet-15b2b8a2da8f4b767c0bebef292dcb00afdde3a2.tar.gz android_packages_apps_Trebuchet-15b2b8a2da8f4b767c0bebef292dcb00afdde3a2.tar.bz2 android_packages_apps_Trebuchet-15b2b8a2da8f4b767c0bebef292dcb00afdde3a2.zip |
Trebuchet : Improve deletion of all folder contents
Rather than invoking callbacks for each removed item, just add a
callback for when all items are removed and invoke it once.
This solves the case where if a folder is updated frequently and its
visibility is toggled by the user, we don't enter an inconsistent state.
Change-Id: I149cb2218501e4d0ef0d312550e58e76bf08a850
Diffstat (limited to 'src/com/cyanogenmod')
-rw-r--r-- | src/com/cyanogenmod/trebuchet/Folder.java | 6 | ||||
-rw-r--r-- | src/com/cyanogenmod/trebuchet/FolderIcon.java | 5 | ||||
-rw-r--r-- | src/com/cyanogenmod/trebuchet/FolderInfo.java | 1 | ||||
-rw-r--r-- | src/com/cyanogenmod/trebuchet/LiveFolderInfo.java | 10 |
4 files changed, 15 insertions, 7 deletions
diff --git a/src/com/cyanogenmod/trebuchet/Folder.java b/src/com/cyanogenmod/trebuchet/Folder.java index aa508e5b5..80bda330d 100644 --- a/src/com/cyanogenmod/trebuchet/Folder.java +++ b/src/com/cyanogenmod/trebuchet/Folder.java @@ -1151,6 +1151,12 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList } } + public void onAllItemsRemoved() { + mItemsInvalidated = true; + mContent.removeAllViews(); + replaceFolderWithFinalItem(); + } + private View getViewForInfo(ShortcutInfo item) { for (int j = 0; j < mContent.getCountY(); j++) { for (int i = 0; i < mContent.getCountX(); i++) { diff --git a/src/com/cyanogenmod/trebuchet/FolderIcon.java b/src/com/cyanogenmod/trebuchet/FolderIcon.java index ed5ef53e7..135ea4acb 100644 --- a/src/com/cyanogenmod/trebuchet/FolderIcon.java +++ b/src/com/cyanogenmod/trebuchet/FolderIcon.java @@ -653,4 +653,9 @@ public class FolderIcon extends LinearLayout implements FolderListener { mLongPressHelper.cancelLongPress(); } + + @Override + public void onAllItemsRemoved() { + onRemove(null); + } } diff --git a/src/com/cyanogenmod/trebuchet/FolderInfo.java b/src/com/cyanogenmod/trebuchet/FolderInfo.java index 7c6941b4d..56abaed72 100644 --- a/src/com/cyanogenmod/trebuchet/FolderInfo.java +++ b/src/com/cyanogenmod/trebuchet/FolderInfo.java @@ -105,6 +105,7 @@ class FolderInfo extends ItemInfo { interface FolderListener { public void onAdd(ShortcutInfo item); public void onRemove(ShortcutInfo item); + public void onAllItemsRemoved(); public void onTitleChanged(CharSequence title); public void onItemsChanged(); } diff --git a/src/com/cyanogenmod/trebuchet/LiveFolderInfo.java b/src/com/cyanogenmod/trebuchet/LiveFolderInfo.java index 0138dd656..19ce90613 100644 --- a/src/com/cyanogenmod/trebuchet/LiveFolderInfo.java +++ b/src/com/cyanogenmod/trebuchet/LiveFolderInfo.java @@ -46,13 +46,9 @@ class LiveFolderInfo extends FolderInfo { } public void removeAll() { - Iterator<ShortcutInfo> iter = contents.iterator(); - while (iter.hasNext()) { - ShortcutInfo info = iter.next(); - iter.remove(); - for (FolderListener listener : listeners) { - listener.onRemove(info); - } + contents.clear(); + for (FolderListener listener : listeners) { + listener.onAllItemsRemoved(); } itemsChanged(); } |