import org.apache.http.protocol.HTTP;
-import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Intent;
import android.net.Uri;
import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
import com.owncloud.android.lib.common.network.WebdavUtils;
-import com.owncloud.android.lib.common.operations.RemoteOperation;
import com.owncloud.android.lib.resources.status.OwnCloudVersion;
-import com.owncloud.android.operations.RemoveFileOperation;
-import com.owncloud.android.operations.RenameFileOperation;
-import com.owncloud.android.operations.SynchronizeFileOperation;
import com.owncloud.android.services.OperationsService;
import com.owncloud.android.ui.activity.FileActivity;
import com.owncloud.android.ui.dialog.ShareLinkToDialog;
private static final String FTAG_CHOOSER_DIALOG = "CHOOSER_DIALOG";
protected FileActivity mFileActivity = null;
+
+ /// Identifier of operation in progress which result shouldn't be lost
+ private long mWaitingForOpId = Long.MAX_VALUE;
public FileOperationsHelper(FileActivity fileActivity) {
mFileActivity = fileActivity;
service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
service.putExtra(OperationsService.EXTRA_SEND_INTENT, sendIntent);
- mFileActivity.getOperationsServiceBinder().newOperation(service);
+ mWaitingForOpId = mFileActivity.getOperationsServiceBinder().newOperation(service);
} else {
Log_OC.wtf(TAG, "Trying to open a NULL OCFile");
service.setAction(OperationsService.ACTION_UNSHARE);
service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
- mFileActivity.getOperationsServiceBinder().newOperation(service);
+ mWaitingForOpId = mFileActivity.getOperationsServiceBinder().newOperation(service);
mFileActivity.showLoadingDialog();
public void syncFile(OCFile file) {
- Account account = mFileActivity.getAccount();
- RemoteOperation operation = new SynchronizeFileOperation(
- file,
- null,
- mFileActivity.getStorageManager(),
- account,
- true,
- mFileActivity);
- operation.execute(account, mFileActivity, mFileActivity, mFileActivity.getHandler(), mFileActivity);
+ // Sync file
+ Intent service = new Intent(mFileActivity, OperationsService.class);
+ service.setAction(OperationsService.ACTION_SYNC_FILE);
+ service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
+ service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
+ service.putExtra(OperationsService.EXTRA_SYNC_FILE_CONTENTS, true);
+ mWaitingForOpId = mFileActivity.getOperationsServiceBinder().newOperation(service);
+
mFileActivity.showLoadingDialog();
}
public void renameFile(OCFile file, String newFilename) {
- Account account = mFileActivity.getAccount();
- RemoteOperation operation = new RenameFileOperation(
- file,
- account,
- newFilename,
- mFileActivity.getStorageManager());
-
- operation.execute(
- account,
- mFileActivity,
- mFileActivity,
- mFileActivity.getHandler(),
- mFileActivity);
+ // RenameFile
+ Intent service = new Intent(mFileActivity, OperationsService.class);
+ service.setAction(OperationsService.ACTION_RENAME);
+ service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
+ service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
+ service.putExtra(OperationsService.EXTRA_NEWNAME, newFilename);
+ mWaitingForOpId = mFileActivity.getOperationsServiceBinder().newOperation(service);
mFileActivity.showLoadingDialog();
}
- public void removeFile(OCFile file, boolean removeLocalCopy) {
- Account account = mFileActivity.getAccount();
- RemoteOperation operation = new RemoveFileOperation(
- file,
- removeLocalCopy,
- mFileActivity.getStorageManager());
-
- operation.execute(
- account,
- mFileActivity,
- mFileActivity,
- mFileActivity.getHandler(),
- mFileActivity);
+ public void removeFile(OCFile file, boolean onlyLocalCopy) {
+ // RemoveFile
+ Intent service = new Intent(mFileActivity, OperationsService.class);
+ service.setAction(OperationsService.ACTION_REMOVE);
+ service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
+ service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
+ service.putExtra(OperationsService.EXTRA_REMOVE_ONLY_LOCAL, onlyLocalCopy);
+ mWaitingForOpId = mFileActivity.getOperationsServiceBinder().newOperation(service);
mFileActivity.showLoadingDialog();
}
+
+ public void createFolder(String remotePath, boolean createFullPath) {
+ // Create Folder
+ Intent service = new Intent(mFileActivity, OperationsService.class);
+ service.setAction(OperationsService.ACTION_CREATE_FOLDER);
+ service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
+ service.putExtra(OperationsService.EXTRA_REMOTE_PATH, remotePath);
+ service.putExtra(OperationsService.EXTRA_CREATE_FULL_PATH, createFullPath);
+ mWaitingForOpId = mFileActivity.getOperationsServiceBinder().newOperation(service);
+
+ mFileActivity.showLoadingDialog();
+ }
+
+
+ public long getOpIdWaitingFor() {
+ return mWaitingForOpId;
+ }
+
+
+ public void setOpIdWaitingFor(long waitingForOpId) {
+ mWaitingForOpId = waitingForOpId;
+ }
}