/* ownCloud Android client application
- * Copyright (C) 2012 Bartek Przybylski
- * Copyright (C) 2012-2013 ownCloud Inc.
+ * Copyright (C) 2014 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,
* Dialog requiring confirmation before removing a given OCFile.
*
* Triggers the removal according to the user response.
+ *
+ * @author David A. Velasco
*/
+import java.util.Vector;
+
import com.owncloud.android.R;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
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();
args.putParcelable(ARG_TARGET_FILE, file);
frag.setArguments(args);
- frag.setOnConfirmationListener(frag);
-
return frag;
}
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
mTargetFile = getArguments().getParcelable(ARG_TARGET_FILE);
+
+ setOnConfirmationListener(this);
+
return dialog;
}
}
/**
- * 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()
+ 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);
+ }
}
@Override