*
* @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 {
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
// 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