X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/905b68b4ec886cff35799c0e0604383d9f1d245b..c5ba47d4f2868de3d69b2307ef10267eb8a18cf0:/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 63de2e13..753dff1d 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -39,6 +39,7 @@ import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.lib.common.network.WebdavUtils; import com.owncloud.android.lib.common.utils.Log_OC; +import com.owncloud.android.lib.resources.shares.ShareType; import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.services.OperationsService; import com.owncloud.android.services.observer.FileObserverService; @@ -167,10 +168,11 @@ public class FileOperationsHelper { public void shareFileWithLinkToApp(OCFile file, String password, Intent sendIntent) { if (file != null) { - mFileActivity.showLoadingDialog(); + mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). + getString(R.string.wait_a_moment)); Intent service = new Intent(mFileActivity, OperationsService.class); - service.setAction(OperationsService.ACTION_CREATE_SHARE); + service.setAction(OperationsService.ACTION_CREATE_SHARE_VIA_LINK); service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); service.putExtra(OperationsService.EXTRA_PASSWORD_SHARE, password); @@ -192,6 +194,33 @@ public class FileOperationsHelper { /** + * Helper method to share a file with a know sharee. Starts a request to do it in {@link OperationsService} + * + * @param file The file to share. + * @param shareeName Name (user name or group name) of the target sharee. + * @param shareType The share type determines the sharee type. + */ + public void shareFileWithSharee(OCFile file, String shareeName, ShareType shareType) { + if (file != null) { + // TODO check capability? + mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). + getString(R.string.wait_a_moment)); + + Intent service = new Intent(mFileActivity, OperationsService.class); + service.setAction(OperationsService.ACTION_CREATE_SHARE_WITH_SHAREE); + service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); + service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); + service.putExtra(OperationsService.EXTRA_SHARE_WITH, shareeName); + service.putExtra(OperationsService.EXTRA_SHARE_TYPE, shareType); + mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); + + } else { + Log_OC.wtf(TAG, "Trying to share a NULL OCFile"); + } + } + + + /** * @return 'True' if the server supports the Share API */ public boolean isSharedSupported() { @@ -205,15 +234,39 @@ public class FileOperationsHelper { public void unshareFileWithLink(OCFile file) { + // Unshare the file: Create the intent + Intent unshareService = new Intent(mFileActivity, OperationsService.class); + unshareService.setAction(OperationsService.ACTION_UNSHARE); + unshareService.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); + unshareService.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); + unshareService.putExtra(OperationsService.EXTRA_SHARE_TYPE, ShareType.PUBLIC_LINK); + unshareService.putExtra(OperationsService.EXTRA_SHARE_WITH, ""); + + unshareFile(unshareService); + } + + public void unshareFileWithUserOrGroup(OCFile file, ShareType shareType, String userOrGroup){ + + // Unshare the file: Create the intent + Intent unshareService = new Intent(mFileActivity, OperationsService.class); + unshareService.setAction(OperationsService.ACTION_UNSHARE); + unshareService.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); + unshareService.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); + unshareService.putExtra(OperationsService.EXTRA_SHARE_TYPE, shareType); + unshareService.putExtra(OperationsService.EXTRA_SHARE_WITH, userOrGroup); + + unshareFile(unshareService); + } + + + private void unshareFile(Intent unshareService){ if (isSharedSupported()) { // Unshare the file - Intent service = new Intent(mFileActivity, OperationsService.class); - service.setAction(OperationsService.ACTION_UNSHARE); - service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); - service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); - mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); - - mFileActivity.showLoadingDialog(); + mWaitingForOpId = mFileActivity.getOperationsServiceBinder(). + queueNewOperation(unshareService); + + mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). + getString(R.string.wait_a_moment)); } else { // Show a Message @@ -233,6 +286,18 @@ public class FileOperationsHelper { } + + /** + * @return 'True' if the server supports the Search Users API + */ + public boolean isSearchUsersSupportedSupported() { + if (mFileActivity.getAccount() != null) { + OwnCloudVersion serverVersion = AccountUtils.getServerVersion(mFileActivity.getAccount()); + return (serverVersion != null && serverVersion.isSearchUsersSupported()); + } + return false; + } + public void sendDownloadedFile(OCFile file) { if (file != null) { String storagePath = file.getStoragePath(); @@ -267,7 +332,8 @@ public class FileOperationsHelper { intent.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); intent.putExtra(OperationsService.EXTRA_SYNC_FILE_CONTENTS, true); mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(intent); - mFileActivity.showLoadingDialog(); + mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). + getString(R.string.wait_a_moment)); } else { Intent intent = new Intent(mFileActivity, OperationsService.class); @@ -306,7 +372,8 @@ public class FileOperationsHelper { service.putExtra(OperationsService.EXTRA_NEWNAME, newFilename); mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); - mFileActivity.showLoadingDialog(); + mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). + getString(R.string.wait_a_moment)); } @@ -319,7 +386,8 @@ public class FileOperationsHelper { service.putExtra(OperationsService.EXTRA_REMOVE_ONLY_LOCAL, onlyLocalCopy); mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); - mFileActivity.showLoadingDialog(); + mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). + getString(R.string.wait_a_moment)); } @@ -332,7 +400,8 @@ public class FileOperationsHelper { service.putExtra(OperationsService.EXTRA_CREATE_FULL_PATH, createFullPath); mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); - mFileActivity.showLoadingDialog(); + mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). + getString(R.string.wait_a_moment)); } /** @@ -375,7 +444,8 @@ public class FileOperationsHelper { service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); - mFileActivity.showLoadingDialog(); + mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). + getString(R.string.wait_a_moment)); } /** @@ -393,7 +463,8 @@ public class FileOperationsHelper { service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); - mFileActivity.showLoadingDialog(); + mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). + getString(R.string.wait_a_moment)); } public long getOpIdWaitingFor() {