cleanup
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / dialog / RemoveFileDialogFragment.java
index 9020dd0..4e0c47b 100644 (file)
@@ -24,15 +24,23 @@ package com.owncloud.android.ui.dialog;
  *  
  *  @author David A. Velasco
  */
+import java.io.File;
+import java.util.Vector;
+
+import android.app.Dialog;
+import android.content.Intent;
+import android.media.MediaScannerConnection;
+import android.net.Uri;
+import android.os.Bundle;
+
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.lib.common.utils.Log_OC;
 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 {
 
@@ -93,17 +101,50 @@ implements ConfirmationDialogFragmentListener {
         ComponentsGetter cg = (ComponentsGetter)getSherlockActivity();
         FileDataStorageManager storageManager = cg.getStorageManager();
         if (storageManager.getFileById(mTargetFile.getFileId()) != null) {
+            String path = mTargetFile.getStoragePath();
             cg.getFileOperationsHelper().removeFile(mTargetFile, false);
+            triggerMediaScan(path);
         }
     }
     
     /**
-     * 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) {
-        ((ComponentsGetter)getSherlockActivity()).getFileOperationsHelper()
-            .removeFile(mTargetFile, true);
+        String path = mTargetFile.getStoragePath();
+        ComponentsGetter cg = (ComponentsGetter)getSherlockActivity();
+        cg.getFileOperationsHelper().removeFile(mTargetFile, true);
+        
+        FileDataStorageManager storageManager = cg.getStorageManager();
+        
+        boolean containsKeepInSync = false;
+        if (mTargetFile.isFolder()) {
+            Vector<OCFile> files = storageManager.getFolderContent(mTargetFile);
+            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);
+        }
+        
+        // Trigger MediaScan
+        triggerMediaScan(path);
     }
 
     @Override
@@ -111,4 +152,13 @@ implements ConfirmationDialogFragmentListener {
         // nothing to do here
     }
     
-}
+    private void triggerMediaScan(String path){
+        try {
+            Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
+            intent.setData(Uri.fromFile(new File(path)));
+            MainApp.getAppContext().sendBroadcast(intent);
+        } catch (Exception e){
+            Log_OC.d("Trigger", "exception: " + e);
+        }
+    }
+}
\ No newline at end of file