diff options
author | Tony Wickham <twickham@google.com> | 2018-08-21 11:40:23 -0700 |
---|---|---|
committer | Tony Wickham <twickham@google.com> | 2018-08-30 16:22:25 -0700 |
commit | 6a71a5bd7787a2dc4a585e9e6ea0a440d0458a54 (patch) | |
tree | b3bdc0c63c2540f57042c0d09d82786ec8d1869c /src/com/android/launcher3/DeleteDropTarget.java | |
parent | 1654c9e1c00cb41de392880adf7c3a5a558270b3 (diff) | |
download | android_packages_apps_Trebuchet-6a71a5bd7787a2dc4a585e9e6ea0a440d0458a54.tar.gz android_packages_apps_Trebuchet-6a71a5bd7787a2dc4a585e9e6ea0a440d0458a54.tar.bz2 android_packages_apps_Trebuchet-6a71a5bd7787a2dc4a585e9e6ea0a440d0458a54.zip |
Add undo snackbar for deleting items
- Add methods to ModelWriter to prepareForUndoDelete, then
enqueueDeleteRunnable, followed by commitDelete or abortDelete.
- Add Snackbar floating view
- Show Undo snackbar when dropping or flinging to delete target; if the
undo action is clicked, we abort the delete, otherwise we commit it.
Bug: 24238108
Change-Id: I9997235e1f8525cbb8b1fa2338099609e7358426
Diffstat (limited to 'src/com/android/launcher3/DeleteDropTarget.java')
-rw-r--r-- | src/com/android/launcher3/DeleteDropTarget.java | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/com/android/launcher3/DeleteDropTarget.java b/src/com/android/launcher3/DeleteDropTarget.java index 64a58fb8c..c80f96bb8 100644 --- a/src/com/android/launcher3/DeleteDropTarget.java +++ b/src/com/android/launcher3/DeleteDropTarget.java @@ -23,10 +23,11 @@ import android.view.View; import com.android.launcher3.accessibility.LauncherAccessibilityDelegate; import com.android.launcher3.dragndrop.DragOptions; -import com.android.launcher3.folder.Folder; import com.android.launcher3.logging.LoggerUtils; +import com.android.launcher3.model.ModelWriter; import com.android.launcher3.userevent.nano.LauncherLogProto.ControlType; import com.android.launcher3.userevent.nano.LauncherLogProto.Target; +import com.android.launcher3.views.Snackbar; public class DeleteDropTarget extends ButtonDropTarget { @@ -81,13 +82,17 @@ public class DeleteDropTarget extends ButtonDropTarget { */ private void setTextBasedOnDragSource(ItemInfo item) { if (!TextUtils.isEmpty(mText)) { - mText = getResources().getString(item.id != ItemInfo.NO_ID + mText = getResources().getString(canRemove(item) ? R.string.remove_drop_target_label : android.R.string.cancel); requestLayout(); } } + private boolean canRemove(ItemInfo item) { + return item.id != ItemInfo.NO_ID; + } + /** * Set mControlType depending on the drag item. */ @@ -97,10 +102,21 @@ public class DeleteDropTarget extends ButtonDropTarget { } @Override + public void onDrop(DragObject d, DragOptions options) { + if (canRemove(d.dragInfo)) { + mLauncher.getModelWriter().prepareToUndoDelete(); + } + super.onDrop(d, options); + } + + @Override public void completeDrop(DragObject d) { ItemInfo item = d.dragInfo; - if ((d.dragSource instanceof Workspace) || (d.dragSource instanceof Folder)) { + if (canRemove(item)) { onAccessibilityDrop(null, item); + ModelWriter modelWriter = mLauncher.getModelWriter(); + Snackbar.show(mLauncher, R.string.item_removed, R.string.undo, + modelWriter::commitDelete, modelWriter::abortDelete); } } |