Merge branch 'remove_ActionBarSherlock' into navigationDrawer_update
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / dialog / RemoveFileDialogFragment.java
index 9acc11f..3045b27 100644 (file)
@@ -1,6 +1,8 @@
-/* ownCloud Android client application
- *   Copyright (C) 2012 Bartek Przybylski
- *   Copyright (C) 2012-2013 ownCloud Inc.
+/**
+ *   ownCloud Android client application
+ *
+ *   @author David A. Velasco
+ *   Copyright (C) 2015 ownCloud Inc.
  *
  *   This program is free software: you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License version 2,
  *
  *   This program is free software: you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License version 2,
@@ -21,31 +23,29 @@ package com.owncloud.android.ui.dialog;
 /**
  *  Dialog requiring confirmation before removing a given OCFile.  
  * 
 /**
  *  Dialog requiring confirmation before removing a given OCFile.  
  * 
- *  Triggers the removal according to the user response. 
+ *  Triggers the removal according to the user response.
  */
  */
+import java.util.Vector;
+
+import android.app.Dialog;
+import android.os.Bundle;
+
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener;
 
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener;
 
-import android.app.Dialog;
-import android.os.Bundle;
-
 public class RemoveFileDialogFragment extends ConfirmationDialogFragment 
 implements ConfirmationDialogFragmentListener {
 
     private static final String ARG_TARGET_FILE = "TARGET_FILE";
 
     /**
 public class RemoveFileDialogFragment extends ConfirmationDialogFragment 
 implements ConfirmationDialogFragmentListener {
 
     private static final String ARG_TARGET_FILE = "TARGET_FILE";
 
     /**
-     * Public factory method to create new RemoveFIleDialogFragment instances.
+     * Public factory method to create new RemoveFileDialogFragment instances.
      * 
      * 
-     * @param string_id         Resource id for a message to show in the dialog.
-     * @param arguments         Arguments to complete the message, if it's a format string.
-     * @param posBtn            Resource id for the text of the positive button.
-     * @param neuBtn            Resource id for the text of the neutral button.
-     * @param negBtn            Resource id for the text of the negative button.
-     * @return                  Dialog ready to show.
+     * @param file            File to remove.
+     * @return                Dialog ready to show.
      */
     public static RemoveFileDialogFragment newInstance(OCFile file) {
         RemoveFileDialogFragment frag = new RemoveFileDialogFragment();
      */
     public static RemoveFileDialogFragment newInstance(OCFile file) {
         RemoveFileDialogFragment frag = new RemoveFileDialogFragment();
@@ -93,7 +93,7 @@ implements ConfirmationDialogFragmentListener {
      */
     @Override
     public void onConfirmation(String callerTag) {
      */
     @Override
     public void onConfirmation(String callerTag) {
-        ComponentsGetter cg = (ComponentsGetter)getSherlockActivity();
+        ComponentsGetter cg = (ComponentsGetter)getActivity();
         FileDataStorageManager storageManager = cg.getStorageManager();
         if (storageManager.getFileById(mTargetFile.getFileId()) != null) {
             cg.getFileOperationsHelper().removeFile(mTargetFile, false);
         FileDataStorageManager storageManager = cg.getStorageManager();
         if (storageManager.getFileById(mTargetFile.getFileId()) != null) {
             cg.getFileOperationsHelper().removeFile(mTargetFile, false);
@@ -101,12 +101,40 @@ implements ConfirmationDialogFragmentListener {
     }
     
     /**
     }
     
     /**
-     * Performs the removal of the local copy of the taget file
+     * Performs the removal of the local copy of the target file
      */
     @Override
     public void onNeutral(String callerTag) {
      */
     @Override
     public void onNeutral(String callerTag) {
-        ((ComponentsGetter)getSherlockActivity()).getFileOperationsHelper()
-            .removeFile(mTargetFile, true);
+        ComponentsGetter cg = (ComponentsGetter)getActivity();
+        cg.getFileOperationsHelper().removeFile(mTargetFile, true);
+        
+        FileDataStorageManager storageManager = cg.getStorageManager();
+        
+        boolean containsKeepInSync = false;
+        if (mTargetFile.isFolder()) {
+            // TODO Enable when "On Device" is recovered ?
+            Vector<OCFile> files = storageManager.getFolderContent(mTargetFile/*, false*/);
+            for(OCFile file: files) {
+                containsKeepInSync = file.keepInSync() || containsKeepInSync;
+
+                if (containsKeepInSync)
+                    break;
+            }
+        }
+
+        // Remove etag for parent, if file is a keep_in_sync 
+        // or is a folder and contains keep_in_sync        
+        if (mTargetFile.keepInSync() || containsKeepInSync) {
+            OCFile folder = null;
+            if (mTargetFile.isFolder()) {
+                folder = mTargetFile;
+            } else {
+                folder = storageManager.getFileById(mTargetFile.getParentId());
+            }
+            
+           folder.setEtag("");
+           storageManager.saveFile(folder);
+        }
     }
 
     @Override
     }
 
     @Override
@@ -114,4 +142,4 @@ implements ConfirmationDialogFragmentListener {
         // nothing to do here
     }
     
         // nothing to do here
     }
     
-}
+}
\ No newline at end of file