summaryrefslogtreecommitdiffstats
path: root/src/com/cyanogenmod
diff options
context:
space:
mode:
authorDanesh Mondegarian <daneshm90@gmail.com>2013-08-25 13:44:21 -0700
committerDanesh Mondegarian <daneshm90@gmail.com>2013-08-25 13:44:21 -0700
commit15b2b8a2da8f4b767c0bebef292dcb00afdde3a2 (patch)
tree2e28dbf63d23321a7105b368429e97c8c193017b /src/com/cyanogenmod
parentcad0342d7477efbb98227d10f73d7a1bfa7f2417 (diff)
downloadandroid_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.java6
-rw-r--r--src/com/cyanogenmod/trebuchet/FolderIcon.java5
-rw-r--r--src/com/cyanogenmod/trebuchet/FolderInfo.java1
-rw-r--r--src/com/cyanogenmod/trebuchet/LiveFolderInfo.java10
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();
}