From: masensio Date: Wed, 19 Feb 2014 07:51:58 +0000 (+0100) Subject: Merge branch 'develop' into send_file_pr311_with_develop X-Git-Tag: oc-android-1.5.5~22^2~21 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/9343650e8496e6b1c895e448ad91bc9682d3c2f2?ds=inline;hp=-c Merge branch 'develop' into send_file_pr311_with_develop --- 9343650e8496e6b1c895e448ad91bc9682d3c2f2 diff --combined src/com/owncloud/android/files/FileOperationsHelper.java index a0927b2f,1ddbd4ab..f77767d4 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@@ -28,8 -28,8 +28,8 @@@ import android.widget.Toast import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; - import com.owncloud.android.lib.accounts.OwnCloudAccount; - import com.owncloud.android.lib.network.webdav.WebdavUtils; + import com.owncloud.android.lib.common.accounts.AccountUtils.Constants; + import com.owncloud.android.lib.common.network.WebdavUtils; import com.owncloud.android.services.OperationsService; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.dialog.ActivityChooserDialog; @@@ -135,11 -135,11 +135,11 @@@ public class FileOperationsHelper public boolean isSharedSupported(FileActivity callerActivity) { if (callerActivity.getAccount() != null) { AccountManager accountManager = AccountManager.get(callerActivity); - return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_SUPPORTS_SHARE_API)); + return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), Constants.KEY_SUPPORTS_SHARE_API)); } return false; } - + public void unshareFileWithLink(OCFile file, FileActivity callerActivity) { @@@ -160,23 -160,4 +160,23 @@@ } } + + public void sendDownloadedFile(OCFile file, FileActivity callerActivity) { + 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("file://" + file.getStoragePath())); + sendIntent.putExtra(Intent.ACTION_SEND, true); // Send Action + + // Show dialog, without the own app + String[] packagesToExclude = new String[] { callerActivity.getPackageName() }; + DialogFragment chooserDialog = ActivityChooserDialog.newInstance(sendIntent, packagesToExclude, file); + chooserDialog.show(callerActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG); + + } else { + Log_OC.wtf(TAG, "Trying to send a NULL OCFile"); + } + } + } diff --combined src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 4bbac63d,d5429dac..3c8b4776 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@@ -67,9 -67,9 +67,9 @@@ import com.owncloud.android.files.servi import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.operations.CreateFolderOperation; - import com.owncloud.android.lib.operations.common.RemoteOperation; - import com.owncloud.android.lib.operations.common.RemoteOperationResult; - import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; + import com.owncloud.android.lib.common.operations.RemoteOperation; + import com.owncloud.android.lib.common.operations.RemoteOperationResult; + import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; @@@ -86,6 -86,7 +86,6 @@@ import com.owncloud.android.ui.fragment import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.ui.fragment.OCFileListFragment; import com.owncloud.android.ui.preview.PreviewImageActivity; -import com.owncloud.android.ui.preview.PreviewImageFragment; import com.owncloud.android.ui.preview.PreviewMediaFragment; import com.owncloud.android.ui.preview.PreviewVideoActivity; import com.owncloud.android.utils.DisplayUtils; @@@ -119,8 -120,7 +119,8 @@@ OCFileListFragment.ContainerActivity, F private static final String KEY_WAITING_TO_PREVIEW = "WAITING_TO_PREVIEW"; private static final String KEY_SYNC_IN_PROGRESS = "SYNC_IN_PROGRESS"; - private static final String KEY_REFRESH_SHARES_IN_PROGRESS = "SHARES_IN_PROGRESS"; + //private static final String KEY_REFRESH_SHARES_IN_PROGRESS = "SHARES_IN_PROGRESS"; + private static final String KEY_WAITING_TO_SEND = "WAITING_TO_SEND"; public static final int DIALOG_SHORT_WAIT = 0; private static final int DIALOG_CHOOSE_UPLOAD_SOURCE = 1; @@@ -142,8 -142,6 +142,8 @@@ private boolean mSyncInProgress = false; //private boolean mRefreshSharesInProgress = false; + private OCFile mWaitingToSend; + @Override protected void onCreate(Bundle savedInstanceState) { Log_OC.d(TAG, "onCreate() start"); @@@ -174,13 -172,11 +174,13 @@@ mWaitingToPreview = (OCFile) savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW); mSyncInProgress = savedInstanceState.getBoolean(KEY_SYNC_IN_PROGRESS); //mRefreshSharesInProgress = savedInstanceState.getBoolean(KEY_REFRESH_SHARES_IN_PROGRESS); + mWaitingToSend = (OCFile) savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND); } else { mWaitingToPreview = null; mSyncInProgress = false; //mRefreshSharesInProgress = false; + mWaitingToSend = null; } /// USER INTERFACE @@@ -671,7 -667,6 +671,7 @@@ outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW, mWaitingToPreview); outState.putBoolean(FileDisplayActivity.KEY_SYNC_IN_PROGRESS, mSyncInProgress); //outState.putBoolean(FileDisplayActivity.KEY_REFRESH_SHARES_IN_PROGRESS, mRefreshSharesInProgress); + outState.putParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND, mWaitingToSend); Log_OC.d(TAG, "onSaveInstanceState() end"); } @@@ -1028,13 -1023,6 +1028,13 @@@ refreshSecondFragment(intent.getAction(), downloadedRemotePath, intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false)); } + if (mWaitingToSend != null) { + mWaitingToSend = getStorageManager().getFileByPath(mWaitingToSend.getRemotePath()); // Update the file to send + if (mWaitingToSend.isDown()) { + sendDownloadedFile(); + } + } + removeStickyBroadcast(intent); } @@@ -1614,34 -1602,4 +1614,34 @@@ } */ + /** + * Requests the download of the received {@link OCFile} , updates the UI + * to monitor the download progress and prepares the activity to send the file + * when the download finishes. + * + * @param file {@link OCFile} to download and preview. + */ + @Override + public void startDownloadForSending(OCFile file) { + mWaitingToSend = file; + requestForDownload(mWaitingToSend); + updateFragmentsVisibility(true); + } + + private void requestForDownload(OCFile file) { + Account account = getAccount(); + if (!mDownloaderBinder.isDownloading(account, file)) { + Intent i = new Intent(this, FileDownloader.class); + i.putExtra(FileDownloader.EXTRA_ACCOUNT, account); + i.putExtra(FileDownloader.EXTRA_FILE, file); + startService(i); + } + } + + private void sendDownloadedFile(){ + dismissLoadingDialog(); + getFileOperationsHelper().sendDownloadedFile(mWaitingToSend, this); + mWaitingToSend = null; + } + } diff --combined src/com/owncloud/android/ui/fragment/FileDetailFragment.java index 4d3b0318,af29cffb..58edf6ed --- a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java @@@ -50,11 -50,11 +50,11 @@@ import com.owncloud.android.files.servi import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; - import com.owncloud.android.lib.network.OnDatatransferProgressListener; - import com.owncloud.android.lib.operations.common.OnRemoteOperationListener; - import com.owncloud.android.lib.operations.common.RemoteOperation; - import com.owncloud.android.lib.operations.common.RemoteOperationResult; - import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; + import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; + import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; + import com.owncloud.android.lib.common.operations.RemoteOperation; + import com.owncloud.android.lib.common.operations.RemoteOperationResult; + import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; @@@ -376,19 -376,6 +376,19 @@@ public class FileDetailFragment extend synchronizeFile(); return true; } + case R.id.action_send_file: { + FileDisplayActivity activity = (FileDisplayActivity) getSherlockActivity(); + // Obtain the file + if (!getFile().isDown()) { // Download the file + //activity.showLoadingDialog(); + Log_OC.d(TAG, getFile().getRemotePath() + " : File must be downloaded"); + activity.startDownloadForSending(getFile()); + + } else { + activity.getFileOperationsHelper().sendDownloadedFile(getFile(), activity); + } + return true; + } default: return false; } diff --combined src/com/owncloud/android/ui/fragment/OCFileListFragment.java index f4fb2f80,87fd6869..a4919cab --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@@ -27,8 -27,8 +27,8 @@@ import com.owncloud.android.datamodel.F import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; - import com.owncloud.android.lib.operations.common.OnRemoteOperationListener; - import com.owncloud.android.lib.operations.common.RemoteOperation; + import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; + import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.operations.RenameFileOperation; import com.owncloud.android.operations.SynchronizeFileOperation; @@@ -44,6 -44,8 +44,6 @@@ import com.owncloud.android.utils.Log_O import android.accounts.Account; import android.app.Activity; -import android.content.Intent; -import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.view.ContextMenu; @@@ -220,7 -222,7 +220,7 @@@ public class OCFileListFragment extend toHide.add(R.id.action_cancel_upload); toHide.add(R.id.action_sync_file); toHide.add(R.id.action_see_details); - toHide.add(R.id.action_share_file); + toHide.add(R.id.action_send_file); if ( mContainerActivity.getFileDownloaderBinder().isDownloading(AccountUtils.getCurrentOwnCloudAccount(getActivity()), targetFile) || mContainerActivity.getFileUploaderBinder().isUploading(AccountUtils.getCurrentOwnCloudAccount(getActivity()), targetFile) ) { toDisable.add(R.id.action_rename_file); @@@ -360,17 -362,11 +360,17 @@@ return true; } case R.id.action_send_file: { - Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); - // set MimeType - sharingIntent.setType(mTargetFile.getMimetype()); - sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+mTargetFile.getStoragePath())); - startActivity(Intent.createChooser(sharingIntent, "Share via")); + // Obtain the file + if (!mTargetFile.isDown()) { // Download the file + ((FileDisplayActivity) getSherlockActivity()).showLoadingDialog(); + Log_OC.d(TAG, mTargetFile.getRemotePath() + " : File must be downloaded"); + mContainerActivity.startDownloadForSending(mTargetFile); + + } else { + + FileDisplayActivity activity = (FileDisplayActivity) getSherlockActivity(); + activity.getFileOperationsHelper().sendDownloadedFile(mTargetFile, activity); + } return true; } default: @@@ -477,8 -473,6 +477,8 @@@ * @param uploading Flag signaling if the file is now uploading. */ public void onTransferStateChanged(OCFile file, boolean downloading, boolean uploading); + + void startDownloadForSending(OCFile file); } diff --combined src/com/owncloud/android/ui/preview/PreviewImageFragment.java index 5560c272,1582b6af..2ea1e1f6 --- a/src/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageFragment.java @@@ -52,10 -52,10 +52,10 @@@ import com.actionbarsherlock.view.MenuI import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; - import com.owncloud.android.lib.network.webdav.WebdavUtils; - import com.owncloud.android.lib.operations.common.OnRemoteOperationListener; - import com.owncloud.android.lib.operations.common.RemoteOperation; - import com.owncloud.android.lib.operations.common.RemoteOperationResult; + import com.owncloud.android.lib.common.network.WebdavUtils; + import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; + import com.owncloud.android.lib.common.operations.RemoteOperation; + import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.fragment.ConfirmationDialogFragment; @@@ -311,8 -311,7 +311,8 @@@ public class PreviewImageFragment exten return true; } case R.id.action_send_file: { - shareFile(); + FileActivity act = (FileActivity)getSherlockActivity(); + act.getFileOperationsHelper().sendDownloadedFile(getFile(), act); return true; } @@@ -321,6 -320,15 +321,6 @@@ } } - private void shareFile(){ - Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); - // set MimeType - sharingIntent.setType(getFile().getMimetype()); - sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+getFile().getStoragePath())); - startActivity(Intent.createChooser(sharingIntent, "Share via")); - } - - private void seeDetails() { ((FileFragment.ContainerActivity)getActivity()).showDetails(getFile()); diff --combined src/com/owncloud/android/ui/preview/PreviewMediaFragment.java index 1f98649e,83f937a3..d2b5e509 --- a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@@ -57,10 -57,10 +57,10 @@@ import com.owncloud.android.datamodel.O import com.owncloud.android.media.MediaControlView; import com.owncloud.android.media.MediaService; import com.owncloud.android.media.MediaServiceBinder; - import com.owncloud.android.lib.network.webdav.WebdavUtils; - import com.owncloud.android.lib.operations.common.OnRemoteOperationListener; - import com.owncloud.android.lib.operations.common.RemoteOperation; - import com.owncloud.android.lib.operations.common.RemoteOperationResult; + import com.owncloud.android.lib.common.network.WebdavUtils; + import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; + import com.owncloud.android.lib.common.operations.RemoteOperation; + import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.operations.RemoveFileOperation; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; @@@ -351,9 -351,6 +351,9 @@@ public class PreviewMediaFragment exten seeDetails(); return true; } + case R.id.action_send_file: { + sendFile(); + } default: return false; @@@ -383,12 -380,6 +383,12 @@@ } + private void sendFile() { + stopPreview(false); + FileActivity activity = (FileActivity)((FileFragment.ContainerActivity)getActivity()); + activity.getFileOperationsHelper().sendDownloadedFile(getFile(), activity); + + } private void seeDetails() { stopPreview(false);