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;
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) {
}
}
+
+ 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");
+ }
+ }
+
}
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;
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;
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;
private boolean mSyncInProgress = false;
//private boolean mRefreshSharesInProgress = false;
+ private OCFile mWaitingToSend;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
Log_OC.d(TAG, "onCreate() start");
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
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");
}
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);
}
}
*/
+ /**
+ * 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;
+ }
+
}
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;
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;
}
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;
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;
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);
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:
* @param uploading Flag signaling if the file is now uploading.
*/
public void onTransferStateChanged(OCFile file, boolean downloading, boolean uploading);
+
+ void startDownloadForSending(OCFile file);
}
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;
return true;
}
case R.id.action_send_file: {
- shareFile();
+ FileActivity act = (FileActivity)getSherlockActivity();
+ act.getFileOperationsHelper().sendDownloadedFile(getFile(), act);
return true;
}
}
}
- 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());
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;
seeDetails();
return true;
}
+ case R.id.action_send_file: {
+ sendFile();
+ }
default:
return false;
}
+ private void sendFile() {
+ stopPreview(false);
+ FileActivity activity = (FileActivity)((FileFragment.ContainerActivity)getActivity());
+ activity.getFileOperationsHelper().sendDownloadedFile(getFile(), activity);
+
+ }
private void seeDetails() {
stopPreview(false);