X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/cec7baba5b77f7acb39fefbe6c6e6bd259130472..a1bc147849ecef3fba9f9cfd9cdba037e762d14d:/src/com/owncloud/android/files/FileOperationsHelper.java diff --git a/src/com/owncloud/android/files/FileOperationsHelper.java b/src/com/owncloud/android/files/FileOperationsHelper.java index fe8d6c5b..bddeed02 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -1,5 +1,9 @@ -/* ownCloud Android client application - * Copyright (C) 2012-2014 ownCloud Inc. +/** + * ownCloud Android client application + * + * @author masensio + * @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, @@ -22,14 +26,16 @@ import org.apache.http.protocol.HTTP; import android.accounts.Account; import android.accounts.AccountManager; import android.content.Intent; +import android.graphics.Bitmap; import android.net.Uri; import android.support.v4.app.DialogFragment; import android.webkit.MimeTypeMap; import android.widget.Toast; +import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.files.services.FileDownloader; +import com.owncloud.android.datamodel.ThumbnailsCacheManager; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; @@ -39,12 +45,17 @@ import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.services.OperationsService; import com.owncloud.android.ui.activity.FileActivity; +import com.owncloud.android.ui.adapter.DiskLruImageCacheFileProvider; import com.owncloud.android.ui.dialog.ShareLinkToDialog; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; + /** - * - * @author masensio - * @author David A. Velasco + * */ public class FileOperationsHelper { @@ -118,7 +129,7 @@ public class FileOperationsHelper { } - public void shareFileWithLinkToApp(OCFile file, Intent sendIntent) { + public void shareFileWithLinkToApp(OCFile file, String password, Intent sendIntent) { if (file != null) { mFileActivity.showLoadingDialog(); @@ -127,6 +138,7 @@ public class FileOperationsHelper { service.setAction(OperationsService.ACTION_CREATE_SHARE); service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); + service.putExtra(OperationsService.EXTRA_PASSWORD_SHARE, password); service.putExtra(OperationsService.EXTRA_SEND_INTENT, sendIntent); mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); @@ -195,6 +207,24 @@ public class FileOperationsHelper { Log_OC.wtf(TAG, "Trying to send a NULL OCFile"); } } + + public void sendCachedImage(OCFile file) { + if (file != null) { + Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND); + // set MimeType + sendIntent.setType(file.getMimetype()); +// sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://" + DiskLruImageCacheFileProvider.AUTHORITY + "/#" + file.getRemoteId() + "#" + file.getFileName())); + sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://" + DiskLruImageCacheFileProvider.AUTHORITY + file.getRemotePath())); + sendIntent.putExtra(Intent.ACTION_SEND, true); // Send Action + + // Show dialog, without the own app + String[] packagesToExclude = new String[] { mFileActivity.getPackageName() }; + DialogFragment chooserDialog = ShareLinkToDialog.newInstance(sendIntent, packagesToExclude, file); + chooserDialog.show(mFileActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG); + } else { + Log_OC.wtf(TAG, "Trying to send a NULL OCFile"); + } + } public void syncFile(OCFile file) { @@ -209,35 +239,11 @@ public class FileOperationsHelper { mFileActivity.showLoadingDialog(); } else { - /* - // Add files recursivly - FileDataStorageManager storageManager = mFileActivity.getStorageManager(); - filesList.addAll(storageManager.getFolderContent(file)); - boolean newfiles; - do { - Vector tmpFolders = new Vector(); - for (OCFile tmpfile : filesList) { - if (tmpfile.isFolder()) { - tmpFolders.add(tmpfile); - } - } - if (tmpFolders.isEmpty()){ - newfiles = false; - }else { - for(OCFile tmpFolder : tmpFolders){ - filesList.remove(tmpFolder); - filesList.addAll(storageManager.getFolderContent(tmpFolder)); - } - newfiles = true; - } - } while(newfiles); - */ Intent intent = new Intent(mFileActivity, OperationsService.class); intent.setAction(OperationsService.ACTION_SYNC_FOLDER); intent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); intent.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); - mFileActivity.startService(intent); // reevaluating: with or without Binder? - //mFileActivity.getOperationsServiceBinder().queueNewOperation(intent); + mFileActivity.startService(intent); } } @@ -285,29 +291,29 @@ public class FileOperationsHelper { */ public void cancelTransference(OCFile file) { Account account = mFileActivity.getAccount(); - if (!file.isFolder()) { - FileDownloaderBinder downloaderBinder = mFileActivity.getFileDownloaderBinder(); - FileUploaderBinder uploaderBinder = mFileActivity.getFileUploaderBinder(); - if (downloaderBinder != null && downloaderBinder.isDownloading(account, file)) { - // Remove etag for parent, if file is a keep_in_sync - if (file.keepInSync()) { - OCFile parent = mFileActivity.getStorageManager().getFileById(file.getParentId()); - parent.setEtag(""); - mFileActivity.getStorageManager().saveFile(parent); - } + if (file.isFolder()) { + OperationsService.OperationsServiceBinder opsBinder = mFileActivity.getOperationsServiceBinder(); + if (opsBinder != null) { + opsBinder.cancel(account, file); + } + } - downloaderBinder.cancel(account, file); + // for both files and folders + FileDownloaderBinder downloaderBinder = mFileActivity.getFileDownloaderBinder(); + FileUploaderBinder uploaderBinder = mFileActivity.getFileUploaderBinder(); + if (downloaderBinder != null && downloaderBinder.isDownloading(account, file)) { + downloaderBinder.cancel(account, file); - } else if (uploaderBinder != null && uploaderBinder.isUploading(account, file)) { - uploaderBinder.cancel(account, file); + // TODO - review why is this here, and solve in a better way + // Remove etag for parent, if file is a keep_in_sync + if (file.keepInSync()) { + OCFile parent = mFileActivity.getStorageManager().getFileById(file.getParentId()); + parent.setEtag(""); + mFileActivity.getStorageManager().saveFile(parent); } - } else { - Intent intent = new Intent(mFileActivity, OperationsService.class); - intent.setAction(OperationsService.ACTION_CANCEL_SYNC_FOLDER); - intent.putExtra(OperationsService.EXTRA_ACCOUNT, account); - intent.putExtra(OperationsService.EXTRA_FILE, file); - mFileActivity.startService(intent); + } else if (uploaderBinder != null && uploaderBinder.isUploading(account, file)) { + uploaderBinder.cancel(account, file); } }