X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/3969dbb768843818c3fd17f19beb19e3b0714b52..d7b32ecc1754cc06023de2e6f2bbbf3555514d74:/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java diff --git a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java index 9020dd0f..8158a5a2 100644 --- a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java @@ -24,6 +24,9 @@ package com.owncloud.android.ui.dialog; * * @author David A. Velasco */ +import java.io.File; +import java.util.Vector; + import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; @@ -31,6 +34,7 @@ import com.owncloud.android.ui.activity.ComponentsGetter; import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener; import android.app.Dialog; +import android.media.MediaScannerConnection; import android.os.Bundle; public class RemoveFileDialogFragment extends ConfirmationDialogFragment @@ -93,17 +97,51 @@ implements ConfirmationDialogFragmentListener { ComponentsGetter cg = (ComponentsGetter)getSherlockActivity(); FileDataStorageManager storageManager = cg.getStorageManager(); if (storageManager.getFileById(mTargetFile.getFileId()) != null) { + String path = new File(mTargetFile.getStoragePath()).getParent(); 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() + String path = new File(mTargetFile.getStoragePath()).getParent(); + ComponentsGetter cg = (ComponentsGetter)getSherlockActivity(); + cg.getFileOperationsHelper() .removeFile(mTargetFile, true); + + FileDataStorageManager storageManager = cg.getStorageManager(); + + boolean containsKeepInSync = false; + if (mTargetFile.isFolder()) { + Vector 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 +149,10 @@ implements ConfirmationDialogFragmentListener { // nothing to do here } -} + private void triggerMediaScan(String path){ + MediaScannerConnection.scanFile( + getActivity().getApplicationContext(), + new String[]{path}, + null,null); + } +} \ No newline at end of file