X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/a00b27290354eb909f23b851e22036aa02d076a2..19cf573db0abc90b221ba912a94dbab33a9e3391:/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 3b5e062b..ccbcf07d 100644 --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@ -139,7 +139,42 @@ public class FileOperationsHelper { .show(); } - public void shareFileWithLink(OCFile file) { + + /** + * Helper method to share a file via a public link. Starts a request to do it in {@link OperationsService} + * + * @param file The file to share. + */ + public void shareFileViaLink(OCFile file) { + if (isSharedSupported()) { + if (file != null) { + mFileActivity.showLoadingDialog( + mFileActivity.getApplicationContext(). + getString(R.string.wait_a_moment) + ); + Intent service = new Intent(mFileActivity, OperationsService.class); + service.setAction(OperationsService.ACTION_CREATE_SHARE_VIA_LINK); + service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); + service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); + mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); + + } else { + Log_OC.wtf(TAG, "Trying to share a NULL OCFile"); + // TODO user-level error? + } + + } else { + // Show a Message + Toast t = Toast.makeText( + mFileActivity, mFileActivity.getString(R.string.share_link_no_support_share_api), + Toast.LENGTH_LONG + ); + t.show(); + } + } + + + public void shareFileWithLinkOLD(OCFile file) { if (isSharedSupported()) { if (file != null) { @@ -172,7 +207,7 @@ public class FileOperationsHelper { 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); @@ -194,6 +229,33 @@ public class FileOperationsHelper { /** + * Helper method to share a file with a known 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,18 +267,45 @@ public class FileOperationsHelper { } - public void unshareFileWithLink(OCFile file) { + /** + * Helper method to unshare a file publicly shared via link. + * Starts a request to do it in {@link OperationsService} + * + * @param file The file to unshare. + */ + public void unshareFileViaLink(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()); - service.putExtra(OperationsService.EXTRA_SHARE_TYPE, ShareType.PUBLIC_LINK); - service.putExtra(OperationsService.EXTRA_SHARE_WITH, ""); - mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); - + mWaitingForOpId = mFileActivity.getOperationsServiceBinder(). + queueNewOperation(unshareService); + mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). getString(R.string.wait_a_moment)); @@ -230,6 +319,11 @@ public class FileOperationsHelper { } } + /** + * Show an instance of {@link ShareType} for sharing or unsharing the {@OCFile} received as parameter. + * + * @param file File to share or unshare. + */ public void showShareFile(OCFile file){ Intent intent = new Intent(mFileActivity, ShareActivity.class); intent.putExtra(mFileActivity.EXTRA_FILE, file); @@ -238,6 +332,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(); @@ -427,4 +533,5 @@ public class FileOperationsHelper { } return false; } + }