Ver código fonte

Clear selection after deleting files - issue#2463

Now we exit the selection mode after deleting files.
Jessie Chatham Spencer 6 anos atrás
pai
commit
3ef8ed04fe

+ 29 - 1
src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java

@@ -30,6 +30,7 @@ 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;
@@ -47,6 +48,21 @@ implements ConfirmationDialogFragmentListener {
 
     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<OCFile> files, ActionMode actionMode) {
+        RemoveFilesDialogFragment dialogFragment = newInstance(files);
+        dialogFragment.setActionMode(actionMode);
+        return dialogFragment;
+    }
+
     /**
      * Public factory method to create new RemoveFilesDialogFragment instances.
      * 
@@ -137,12 +153,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 +182,8 @@ implements ConfirmationDialogFragmentListener {
     public void onNeutral(String callerTag) {
         // nothing to do here
     }
+
+    private void setActionMode(ActionMode actionMode) {
+        this.actionMode = actionMode;
+    }
 }

+ 1 - 1
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;
             }