diff --git a/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java b/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java index 1da1065c94..3fafe2ad59 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java +++ b/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java @@ -1,4 +1,4 @@ -/** +/* * ownCloud Android client application * * @author David A. Velasco @@ -15,21 +15,15 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * */ package com.owncloud.android.ui.dialog; -/** - * Dialog requiring confirmation before removing a collection of given OCFiles. - * - * Triggers the removal according to the user response. - */ - import android.app.AlertDialog; import android.app.Dialog; import android.os.Bundle; import android.support.annotation.NonNull; +import android.view.ActionMode; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; @@ -40,13 +34,33 @@ import com.owncloud.android.utils.ThemeUtils; import java.util.ArrayList; import java.util.Collection; -public class RemoveFilesDialogFragment extends ConfirmationDialogFragment -implements ConfirmationDialogFragmentListener { +/** + * Dialog requiring confirmation before removing a collection of given OCFiles. + * + * Triggers the removal according to the user response. + */ +public class RemoveFilesDialogFragment extends ConfirmationDialogFragment implements + ConfirmationDialogFragmentListener { private Collection mTargetFiles; private static final String ARG_TARGET_FILES = "TARGET_FILES"; + private ActionMode actionMode; + + /** + * Public factory method to create new RemoveFilesDialogFragment instances. + * + * @param files Files to remove. + * @param actionMode ActionMode to finish on confirmation + * @return Dialog ready to show. + */ + public static RemoveFilesDialogFragment newInstance(ArrayList files, ActionMode actionMode) { + RemoveFilesDialogFragment dialogFragment = newInstance(files); + dialogFragment.setActionMode(actionMode); + return dialogFragment; + } + /** * Public factory method to create new RemoveFilesDialogFragment instances. * @@ -137,12 +151,20 @@ implements ConfirmationDialogFragmentListener { } /** - * Performs the removal of the target file, both locally and in the server. + * Performs the removal of the target file, both locally and in the server and + * finishes the supplied ActionMode if one was given. */ @Override public void onConfirmation(String callerTag) { ComponentsGetter cg = (ComponentsGetter) getActivity(); cg.getFileOperationsHelper().removeFiles(mTargetFiles, false, false); + + // This is used when finishing an actionMode, + // for example if we want to exit the selection mode + // after deleting the target files. + if (actionMode != null) { + actionMode.finish(); + } } /** @@ -158,4 +180,8 @@ implements ConfirmationDialogFragmentListener { public void onNeutral(String callerTag) { // nothing to do here } + + private void setActionMode(ActionMode actionMode) { + this.actionMode = actionMode; + } } diff --git a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index af8a566894..2934032678 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -940,7 +940,7 @@ public class OCFileListFragment extends ExtendedListFragment implements /// actions possible on a batch of files switch (menuId) { case R.id.action_remove_file: { - RemoveFilesDialogFragment dialog = RemoveFilesDialogFragment.newInstance(new ArrayList<>(checkedFiles)); + RemoveFilesDialogFragment dialog = RemoveFilesDialogFragment.newInstance(new ArrayList<>(checkedFiles), mActiveActionMode); dialog.show(getFragmentManager(), ConfirmationDialogFragment.FTAG_CONFIRMATION); return true; }