X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/c39e851f5eada08c93d3a57d41054ea112b4bfcf..1998cc68d6586c6a0b4bc4c9be42b48d17fa5ba7:/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..0b0883c2 100644 --- a/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java @@ -1,5 +1,8 @@ -/* ownCloud Android client application - * Copyright (C) 2014 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, @@ -20,22 +23,24 @@ package com.owncloud.android.ui.dialog; /** * Dialog requiring confirmation before removing a given OCFile. * - * Triggers the removal according to the user response. - * - * @author David A. Velasco + * 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 OCFile mTargetFile; + private static final String ARG_TARGET_FILE = "TARGET_FILE"; /** @@ -48,32 +53,29 @@ implements ConfirmationDialogFragmentListener { RemoveFileDialogFragment frag = new RemoveFileDialogFragment(); Bundle args = new Bundle(); - int messageStringId = R.string.confirmation_remove_alert; + int messageStringId = R.string.confirmation_remove_file_alert; - int posBtn = R.string.confirmation_remove_remote; - int neuBtn = -1; + int posBtn = R.string.confirmation_remove_file_remote; + int negBtn = -1; if (file.isFolder()) { messageStringId = R.string.confirmation_remove_folder_alert; posBtn = R.string.confirmation_remove_remote_and_local; - neuBtn = R.string.confirmation_remove_folder_local; + negBtn = R.string.confirmation_remove_local; } else if (file.isDown()) { posBtn = R.string.confirmation_remove_remote_and_local; - neuBtn = R.string.confirmation_remove_local; + negBtn = R.string.confirmation_remove_local; } - args.putInt(ARG_CONF_RESOURCE_ID, messageStringId); args.putStringArray(ARG_CONF_ARGUMENTS, new String[]{file.getFileName()}); args.putInt(ARG_POSITIVE_BTN_RES, posBtn); - args.putInt(ARG_NEUTRAL_BTN_RES, neuBtn); - args.putInt(ARG_NEGATIVE_BTN_RES, R.string.common_cancel); + args.putInt(ARG_NEUTRAL_BTN_RES, R.string.common_no); + args.putInt(ARG_NEGATIVE_BTN_RES, negBtn); args.putParcelable(ARG_TARGET_FILE, file); frag.setArguments(args); return frag; } - - private OCFile mTargetFile; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { @@ -90,7 +92,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); @@ -98,17 +100,43 @@ 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); + public void onCancel(String callerTag) { + ComponentsGetter cg = (ComponentsGetter)getActivity(); + cg.getFileOperationsHelper().removeFile(mTargetFile, true); + + FileDataStorageManager storageManager = cg.getStorageManager(); + + boolean containsFavorite = false; + if (mTargetFile.isFolder()) { + Vector files = storageManager.getFolderContent(mTargetFile, false); + for(OCFile file: files) { + containsFavorite = file.isFavorite() || containsFavorite; + + if (containsFavorite) + break; + } + } + + // Remove etag for parent, if file is a favorite + // or is a folder and contains favorite + if (mTargetFile.isFavorite() || containsFavorite) { + OCFile folder = null; + if (mTargetFile.isFolder()) { + folder = mTargetFile; + } else { + folder = storageManager.getFileById(mTargetFile.getParentId()); + } + + folder.setEtag(""); + storageManager.saveFile(folder); + } } @Override - public void onCancel(String callerTag) { + public void onNeutral(String callerTag) { // nothing to do here } - -} +} \ No newline at end of file