X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/21d3282c8ac26e022200a576ea74826f6b6c44d3..c7817b93022a2ba0edb6f33f1133fa84cea6b57a:/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 81aa4f32..3045b278 100644 --- a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java @@ -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, @@ -21,31 +23,29 @@ package com.owncloud.android.ui.dialog; /** * 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 android.app.Dialog; -import android.os.Bundle; - 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(); @@ -73,8 +73,6 @@ implements ConfirmationDialogFragmentListener { args.putParcelable(ARG_TARGET_FILE, file); frag.setArguments(args); - frag.setOnConfirmationListener(frag); - return frag; } @@ -84,6 +82,9 @@ implements ConfirmationDialogFragmentListener { public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); mTargetFile = getArguments().getParcelable(ARG_TARGET_FILE); + + setOnConfirmationListener(this); + return dialog; } @@ -92,7 +93,7 @@ implements ConfirmationDialogFragmentListener { */ @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); @@ -100,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) { - ((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 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 @@ -113,4 +142,4 @@ implements ConfirmationDialogFragmentListener { // nothing to do here } -} +} \ No newline at end of file