}
- public void shareFileWithLinkToApp(OCFile file, Intent sendIntent) {
+ public void shareFileWithLinkToApp(OCFile file, String password, Intent sendIntent) {
if (file != null) {
mFileActivity.showLoadingDialog();
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);
public class CreateShareOperation extends SyncOperation {
private static final String TAG = CreateShareOperation.class.getSimpleName();
-
protected FileDataStorageManager mStorageManager;
* To obtain combinations, add the desired values together.
* For instance, for Re-Share, delete, read, update, add 16+8+2+1 = 27.
*/
- public CreateShareOperation(Context context, String path, ShareType shareType, String shareWith, boolean publicUpload,
- String password, int permissions, Intent sendIntent) {
+ public CreateShareOperation(Context context, String path, ShareType shareType, String shareWith,
+ boolean publicUpload, String password, int permissions,
+ Intent sendIntent) {
mContext = context;
mPath = path;
return result;
}
-
+ public String getPath() {
+ return mPath;
+ }
+
+ public ShareType getShareType() {
+ return mShareType;
+ }
+
+ public String getShareWith() {
+ return mShareWith;
+ }
+
+ public boolean getPublicUpload() {
+ return mPublicUpload;
+ }
+
+ public String getPassword() {
+ return mPassword;
+ }
+
+ public int getPermissions() {
+ return mPermissions;
+ }
+
public Intent getSendIntent() {
return mSendIntent;
}
public static final String EXTRA_RESULT = "RESULT";
public static final String EXTRA_NEW_PARENT_PATH = "NEW_PARENT_PATH";
public static final String EXTRA_FILE = "FILE";
+ public static final String EXTRA_PASSWORD_SHARE = "PASSWORD_SHARE";
public static final String EXTRA_COOKIE = "COOKIE";
String action = operationIntent.getAction();
if (action.equals(ACTION_CREATE_SHARE)) { // Create Share
String remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH);
+ String password = operationIntent.getStringExtra(EXTRA_PASSWORD_SHARE);
Intent sendIntent = operationIntent.getParcelableExtra(EXTRA_SEND_INTENT);
if (remotePath.length() > 0) {
operation = new CreateShareOperation(OperationsService.this, remotePath,
ShareType.PUBLIC_LINK,
- "", false, "", 1, sendIntent);
+ "", false, password, 1, sendIntent);
}
} else if (action.equals(ACTION_UNSHARE)) { // Unshare file
if (result.getCode() == ResultCode.UNAUTHORIZED) {
dismissLoadingDialog();
- Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
+ Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result,
+ operation, getResources()),
Toast.LENGTH_LONG);
t.show();
}
}
- private void onCreateShareOperationFinish(CreateShareOperation operation, RemoteOperationResult result) {
+ private void onCreateShareOperationFinish(CreateShareOperation operation,
+ RemoteOperationResult result) {
dismissLoadingDialog();
if (result.isSuccess()) {
updateFileFromDB();
startActivity(sendIntent);
} else {
- // TODO Detect Failure (403) --> needs Password
+ // Detect Failure (403) --> needs Password
if (result.getCode() == ResultCode.SHARE_FORBIDDEN) {
SharePasswordDialogFragment dialog =
- SharePasswordDialogFragment.newInstance(getFile());
+ SharePasswordDialogFragment.newInstance( new OCFile(operation.getPath()),
+ operation.getSendIntent());
dialog.show(getSupportFragmentManager(), DIALOG_SHARE_PASSWORD);
} else {
- Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
+ Toast t = Toast.makeText(this,
+ ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()),
Toast.LENGTH_LONG);
t.show();
}
package com.owncloud.android.ui.activity;
import java.io.File;
-import java.io.IOException;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AuthenticatorException;
-import android.accounts.OperationCanceledException;
-import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.app.Dialog;
} else {
// Create a new share resource
((ComponentsGetter)getSherlockActivity()).getFileOperationsHelper()
- .shareFileWithLinkToApp(mFile, mIntent);
+ .shareFileWithLinkToApp(mFile, "", mIntent);
}
}
})
import android.app.AlertDialog;
import android.app.Dialog;
-import android.app.DialogFragment;
import android.content.DialogInterface;
+import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import com.actionbarsherlock.app.SherlockDialogFragment;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.ui.activity.FileActivity;
/**
* Dialog to input the password for sharing a file/folder.
public class SharePasswordDialogFragment extends SherlockDialogFragment
implements DialogInterface.OnClickListener {
- public static final String PASSWORD_FRAGMENT = "PASSWORD_FRAGMENT";
+ private static final String ARG_FILE = "FILE";
+ private static final String ARG_SEND_INTENT = "SEND_INTENT";
+
+ public static final String PASSWORD_FRAGMENT = "PASSWORD_FRAGMENT";
+
+ private OCFile mFile;
+ private Intent mSendIntent;
/**
* Public factory method to create new SharePasswordDialogFragment instances.
*
- * @param file File to share
- * @return Dialog ready to show.
+ * @param file
+ * @param sendIntent
+ * @return Dialog ready to show.
*/
- public static SharePasswordDialogFragment newInstance(OCFile file) {
+ public static SharePasswordDialogFragment newInstance(OCFile file, Intent sendIntent) {
SharePasswordDialogFragment frag = new SharePasswordDialogFragment();
Bundle args = new Bundle();
+ args.putParcelable(ARG_FILE, file);
+ args.putParcelable(ARG_SEND_INTENT, sendIntent);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
+ mFile = getArguments().getParcelable(ARG_FILE);
+ mSendIntent = getArguments().getParcelable(ARG_SEND_INTENT);
+
// Inflate the layout for the dialog
LayoutInflater inflater = getActivity().getLayoutInflater();
View v = inflater.inflate(R.layout.password_dialog, null);
return;
}
- // TODO
// Share the file
+ ((FileActivity)getSherlockActivity()).getFileOperationsHelper()
+ .shareFileWithLinkToApp(mFile, password, mSendIntent);
}
}