diff --git a/scripts/analysis/lint-results.txt b/scripts/analysis/lint-results.txt
index 95dc13070f69..586c6ae18a3d 100644
--- a/scripts/analysis/lint-results.txt
+++ b/scripts/analysis/lint-results.txt
@@ -1,2 +1,2 @@
DO NOT TOUCH; GENERATED BY DRONE
- Lint Report: 96 warnings
+ Lint Report: 95 warnings
diff --git a/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java
index b580bfe488e4..ab12c32e2680 100644
--- a/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java
+++ b/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java
@@ -993,6 +993,7 @@ public boolean saveShare(OCShare share) {
cv.put(ProviderTableMeta.OCSHARES_ACCOUNT_OWNER, account.name);
cv.put(ProviderTableMeta.OCSHARES_IS_PASSWORD_PROTECTED, share.isPasswordProtected() ? 1 : 0);
cv.put(ProviderTableMeta.OCSHARES_NOTE, share.getNote());
+ cv.put(ProviderTableMeta.OCSHARES_HIDE_DOWNLOAD, share.isHideFileDownload());
if (shareExistsForRemoteId(share.getRemoteId())) {// for renamed files; no more delete and create
overriden = true;
@@ -1199,6 +1200,7 @@ private OCShare createShareInstance(Cursor c) {
share.setIdRemoteShared(c.getLong(c.getColumnIndex(ProviderTableMeta.OCSHARES_ID_REMOTE_SHARED)));
share.setIsPasswordProtected(c.getInt(c.getColumnIndex(ProviderTableMeta.OCSHARES_IS_PASSWORD_PROTECTED)) == 1);
share.setNote(c.getString(c.getColumnIndex(ProviderTableMeta.OCSHARES_NOTE)));
+ share.setHideFileDownload(c.getInt(c.getColumnIndex(ProviderTableMeta.OCSHARES_HIDE_DOWNLOAD)) == 1);
}
return share;
}
@@ -1304,6 +1306,7 @@ public void saveShares(Collection shares) {
cv.put(ProviderTableMeta.OCSHARES_ACCOUNT_OWNER, account.name);
cv.put(ProviderTableMeta.OCSHARES_IS_PASSWORD_PROTECTED, share.isPasswordProtected() ? 1 : 0);
cv.put(ProviderTableMeta.OCSHARES_NOTE, share.getNote());
+ cv.put(ProviderTableMeta.OCSHARES_HIDE_DOWNLOAD, share.isHideFileDownload());
if (shareExistsForRemoteId(share.getRemoteId())) {
// updating an existing file
@@ -1584,6 +1587,7 @@ private ArrayList prepareInsertShares(
cv.put(ProviderTableMeta.OCSHARES_ACCOUNT_OWNER, account.name);
cv.put(ProviderTableMeta.OCSHARES_IS_PASSWORD_PROTECTED, share.isPasswordProtected() ? 1 : 0);
cv.put(ProviderTableMeta.OCSHARES_NOTE, share.getNote());
+ cv.put(ProviderTableMeta.OCSHARES_HIDE_DOWNLOAD, share.isHideFileDownload());
// adding a new share resource
operations.add(ContentProviderOperation.newInsert(
diff --git a/src/main/java/com/owncloud/android/db/ProviderMeta.java b/src/main/java/com/owncloud/android/db/ProviderMeta.java
index 28bc7bcd16f6..a90fb19bea9a 100644
--- a/src/main/java/com/owncloud/android/db/ProviderMeta.java
+++ b/src/main/java/com/owncloud/android/db/ProviderMeta.java
@@ -32,7 +32,7 @@
public class ProviderMeta {
public static final String DB_NAME = "filelist";
- public static final int DB_VERSION = 36;
+ public static final int DB_VERSION = 37;
private ProviderMeta() {
}
@@ -132,6 +132,7 @@ static public class ProviderTableMeta implements BaseColumns {
public static final String OCSHARES_ACCOUNT_OWNER = "owner_share";
public static final String OCSHARES_IS_PASSWORD_PROTECTED = "is_password_protected";
public static final String OCSHARES_NOTE = "note";
+ public static final String OCSHARES_HIDE_DOWNLOAD = "hide_download";
public static final String OCSHARES_DEFAULT_SORT_ORDER = OCSHARES_FILE_SOURCE
+ " collate nocase asc";
diff --git a/src/main/java/com/owncloud/android/operations/UpdateShareViaLinkOperation.java b/src/main/java/com/owncloud/android/operations/UpdateShareViaLinkOperation.java
index 4d756449cdb3..35ea60cd3a3b 100644
--- a/src/main/java/com/owncloud/android/operations/UpdateShareViaLinkOperation.java
+++ b/src/main/java/com/owncloud/android/operations/UpdateShareViaLinkOperation.java
@@ -1,4 +1,4 @@
-/**
+/*
* ownCloud Android client application
*
* @author David A. Velasco
@@ -37,10 +37,11 @@
*/
public class UpdateShareViaLinkOperation extends SyncOperation {
- private String mPath;
- private String mPassword;
- private Boolean mPublicUpload;
- private long mExpirationDateInMillis;
+ private String path;
+ private String password;
+ private Boolean publicUpload;
+ private Boolean hideFileDownload;
+ private long expirationDateInMillis;
/**
* Constructor
@@ -48,8 +49,8 @@ public class UpdateShareViaLinkOperation extends SyncOperation {
* @param path Full path of the file/folder being shared. Mandatory argument
*/
public UpdateShareViaLinkOperation(String path) {
- mPath = path;
- mExpirationDateInMillis = 0;
+ this.path = path;
+ expirationDateInMillis = 0;
}
/**
@@ -60,7 +61,7 @@ public UpdateShareViaLinkOperation(String path) {
* Null results in no update applied to the password.
*/
public void setPassword(String password) {
- mPassword = password;
+ this.password = password;
}
/**
@@ -72,7 +73,11 @@ public void setPassword(String password) {
* the expiration date.
*/
public void setExpirationDate(long expirationDateInMillis) {
- mExpirationDateInMillis = expirationDateInMillis;
+ this.expirationDateInMillis = expirationDateInMillis;
+ }
+
+ public void setHideFileDownload(boolean hideFileDownload) {
+ this.hideFileDownload = hideFileDownload;
}
/**
@@ -82,32 +87,23 @@ public void setExpirationDate(long expirationDateInMillis) {
* Null results in no update applied to the upload permission.
*/
public void setPublicUpload(Boolean publicUpload) {
- mPublicUpload = publicUpload;
+ this.publicUpload = publicUpload;
}
@Override
protected RemoteOperationResult run(OwnCloudClient client) {
-
- OCShare publicShare = getStorageManager().getFirstShareByPathAndType(
- mPath,
- ShareType.PUBLIC_LINK,
- ""
- );
+ OCShare publicShare = getStorageManager().getFirstShareByPathAndType(path, ShareType.PUBLIC_LINK, "");
if (publicShare == null) {
// TODO try to get remote share before failing?
- return new RemoteOperationResult(
- RemoteOperationResult.ResultCode.SHARE_NOT_FOUND
- );
+ return new RemoteOperationResult(RemoteOperationResult.ResultCode.SHARE_NOT_FOUND);
}
- // Update remote share with password
- UpdateRemoteShareOperation updateOp = new UpdateRemoteShareOperation(
- publicShare.getRemoteId()
- );
- updateOp.setPassword(mPassword);
- updateOp.setExpirationDate(mExpirationDateInMillis);
- updateOp.setPublicUpload(mPublicUpload);
+ UpdateRemoteShareOperation updateOp = new UpdateRemoteShareOperation(publicShare.getRemoteId());
+ updateOp.setPassword(password);
+ updateOp.setExpirationDate(expirationDateInMillis);
+ updateOp.setPublicUpload(publicUpload);
+ updateOp.setHideFileDownload(hideFileDownload);
RemoteOperationResult result = updateOp.execute(client);
if (result.isSuccess()) {
@@ -124,17 +120,17 @@ protected RemoteOperationResult run(OwnCloudClient client) {
}
public String getPath() {
- return mPath;
+ return path;
}
public String getPassword() {
- return mPassword;
+ return password;
}
private void updateData(OCShare share) {
// Update DB with the response
- share.setPath(mPath);
- if (mPath.endsWith(FileUtils.PATH_SEPARATOR)) {
+ share.setPath(path);
+ if (path.endsWith(FileUtils.PATH_SEPARATOR)) {
share.setIsFolder(true);
} else {
share.setIsFolder(false);
@@ -144,7 +140,7 @@ private void updateData(OCShare share) {
// Update OCFile with data from share: ShareByLink and publicLink
// TODO check & remove if not needed
- OCFile file = getStorageManager().getFileByPath(mPath);
+ OCFile file = getStorageManager().getFileByPath(path);
if (file != null) {
file.setPublicLink(share.getShareLink());
file.setSharedViaLink(true);
@@ -152,4 +148,3 @@ private void updateData(OCShare share) {
}
}
}
-
diff --git a/src/main/java/com/owncloud/android/providers/FileContentProvider.java b/src/main/java/com/owncloud/android/providers/FileContentProvider.java
index b6584ed8f190..78c6f2c84920 100644
--- a/src/main/java/com/owncloud/android/providers/FileContentProvider.java
+++ b/src/main/java/com/owncloud/android/providers/FileContentProvider.java
@@ -772,7 +772,8 @@ private void createOCSharesTable(SQLiteDatabase db) {
+ ProviderTableMeta.OCSHARES_ID_REMOTE_SHARED + INTEGER
+ ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + TEXT
+ ProviderTableMeta.OCSHARES_IS_PASSWORD_PROTECTED + INTEGER
- + ProviderTableMeta.OCSHARES_NOTE + " TEXT );");
+ + ProviderTableMeta.OCSHARES_NOTE + TEXT
+ + ProviderTableMeta.OCSHARES_HIDE_DOWNLOAD + " INTEGER );");
}
private void createCapabilitiesTable(SQLiteDatabase db) {
@@ -1783,6 +1784,24 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (!upgraded) {
Log_OC.i(SQL, String.format(Locale.ENGLISH, UPGRADE_VERSION_MSG, oldVersion, newVersion));
}
+
+ if (oldVersion < 37 && newVersion >= 37) {
+ Log_OC.i(SQL, "Entering in the #37 add hide-download to share table");
+ db.beginTransaction();
+ try {
+ db.execSQL(ALTER_TABLE + ProviderTableMeta.OCSHARES_TABLE_NAME +
+ ADD_COLUMN + ProviderTableMeta.OCSHARES_HIDE_DOWNLOAD + " INTEGER ");
+
+ upgraded = true;
+ db.setTransactionSuccessful();
+ } finally {
+ db.endTransaction();
+ }
+ }
+
+ if (!upgraded) {
+ Log_OC.i(SQL, String.format(Locale.ENGLISH, UPGRADE_VERSION_MSG, oldVersion, newVersion));
+ }
}
@Override
diff --git a/src/main/java/com/owncloud/android/services/OperationsService.java b/src/main/java/com/owncloud/android/services/OperationsService.java
index 5944466c099e..b876b53d821e 100644
--- a/src/main/java/com/owncloud/android/services/OperationsService.java
+++ b/src/main/java/com/owncloud/android/services/OperationsService.java
@@ -103,6 +103,7 @@ public class OperationsService extends Service {
public static final String EXTRA_SHARE_EXPIRATION_DATE_IN_MILLIS = "SHARE_EXPIRATION_YEAR";
public static final String EXTRA_SHARE_PERMISSIONS = "SHARE_PERMISSIONS";
public static final String EXTRA_SHARE_PUBLIC_UPLOAD = "SHARE_PUBLIC_UPLOAD";
+ public static final String EXTRA_SHARE_HIDE_FILE_DOWNLOAD = "HIDE_FILE_DOWNLOAD";
public static final String EXTRA_SHARE_ID = "SHARE_ID";
public static final String EXTRA_SHARE_NOTE = "SHARE_NOTE";
public static final String EXTRA_USER_ID = "USER_ID";
@@ -151,7 +152,7 @@ public Target(Account account, Uri serverUrl, String cookie) {
mCookie = cookie;
}
}
-
+
/**
* Service initialization
*/
@@ -160,14 +161,14 @@ public void onCreate() {
super.onCreate();
Log_OC.d(TAG, "Creating service");
- /// First worker thread for most of operations
+ // First worker thread for most of operations
HandlerThread thread = new HandlerThread("Operations thread",
Process.THREAD_PRIORITY_BACKGROUND);
thread.start();
mOperationsHandler = new ServiceHandler(thread.getLooper(), this);
mOperationsBinder = new OperationsServiceBinder(mOperationsHandler);
-
- /// Separated worker thread for download of folders (WIP)
+
+ // Separated worker thread for download of folders (WIP)
thread = new HandlerThread("Syncfolder thread", Process.THREAD_PRIORITY_BACKGROUND);
thread.start();
mSyncFolderHandler = new SyncFolderHandler(thread.getLooper(), this);
@@ -211,7 +212,7 @@ public int onStartCommand(Intent intent, int flags, int startId) {
msg.arg1 = startId;
mOperationsHandler.sendMessage(msg);
}
-
+
return START_NOT_STICKY;
}
@@ -316,8 +317,8 @@ public void addOperationListener (OnRemoteOperationListener listener,
/**
* Removes a listener from the list of objects interested in the being reported about
* the end of operations.
- *
- * @param listener Object to notify about progress of transfer.
+ *
+ * @param listener Object to notify about progress of transfer.
*/
public void removeOperationListener(OnRemoteOperationListener listener) {
synchronized (mBoundListeners) {
@@ -339,9 +340,9 @@ public boolean isPerformingBlockingOperation() {
/**
* Creates and adds to the queue a new operation, as described by operationIntent.
- *
+ *
* Calls startService to make the operation is processed by the ServiceHandler.
- *
+ *
* @param operationIntent Intent describing a new operation to queue and execute.
* @return Identifier of the operation created, or null if failed.
*/
@@ -351,7 +352,7 @@ public long queueNewOperation(Intent operationIntent) {
mServiceHandler.mPendingOperations.add(itemToQueue);
startService(new Intent(OperationsService.this, OperationsService.class));
return itemToQueue.second.hashCode();
-
+
} else {
return Long.MAX_VALUE;
}
@@ -359,7 +360,7 @@ public long queueNewOperation(Intent operationIntent) {
public boolean dispatchResultIfFinished(int operationId,
OnRemoteOperationListener listener) {
- Pair undispatched =
+ Pair undispatched =
mUndispatchedFinishedOperations.remove(operationId);
if (undispatched != null) {
listener.onRemoteOperationFinish(undispatched.first, undispatched.second);
@@ -368,14 +369,14 @@ public boolean dispatchResultIfFinished(int operationId,
return !mServiceHandler.mPendingOperations.isEmpty();
}
}
-
+
/**
* Returns True when the file described by 'file' in the ownCloud account 'account' is
* downloading or waiting to download.
- *
+ *
* If 'file' is a directory, returns 'true' if some of its descendant files is downloading
* or waiting to download.
- *
+ *
* @param account ownCloud account where the remote file is stored.
* @param file File to check if something is synchronizing
* / downloading / uploading inside.
@@ -390,13 +391,13 @@ public boolean isSynchronizing(Account account, OCFile file) {
/**
* Operations worker. Performs the pending operations in the order they were requested.
*
- * Created with the Looper of a new thread, started in {@link OperationsService#onCreate()}.
+ * Created with the Looper of a new thread, started in {@link OperationsService#onCreate()}.
*/
private static class ServiceHandler extends Handler {
// don't make it a final class, and don't remove the static ; lint will warn about a p
// ossible memory leak
-
-
+
+
OperationsService mService;
@@ -406,8 +407,8 @@ private static class ServiceHandler extends Handler {
private Target mLastTarget;
private OwnCloudClient mOwnCloudClient;
private FileDataStorageManager mStorageManager;
-
-
+
+
public ServiceHandler(Looper looper, OperationsService service) {
super(looper);
if (service == null) {
@@ -422,21 +423,21 @@ public void handleMessage(Message msg) {
Log_OC.d(TAG, "Stopping after command with id " + msg.arg1);
mService.stopSelf(msg.arg1);
}
-
+
/**
* Performs the next operation in the queue
*/
private void nextOperation() {
-
+
//Log_OC.e(TAG, "nextOperation init" );
-
+
Pair next = null;
synchronized(mPendingOperations) {
next = mPendingOperations.peek();
}
if (next != null) {
-
+
mCurrentOperation = next.second;
RemoteOperationResult result = null;
try {
@@ -453,7 +454,7 @@ private void nextOperation() {
mOwnCloudClient.setOwnCloudVersion(version);
mStorageManager = new FileDataStorageManager(
- mLastTarget.mAccount,
+ mLastTarget.mAccount,
mService.getContentResolver()
);
} else {
@@ -492,7 +493,7 @@ private void nextOperation() {
mLastTarget.mAccount.name, e);
}
result = new RemoteOperationResult(e);
-
+
} catch (IOException e) {
if (mLastTarget.mAccount == null) {
Log_OC.e(TAG, "Error while trying to get authorization for a NULL account",
@@ -509,13 +510,13 @@ private void nextOperation() {
Log_OC.e(TAG, "Unexpected error for " + mLastTarget.mAccount.name, e);
}
result = new RemoteOperationResult(e);
-
+
} finally {
synchronized(mPendingOperations) {
mPendingOperations.poll();
}
}
-
+
//sendBroadcastOperationFinished(mLastTarget, mCurrentOperation, result);
mService.dispatchResultToOperationListeners(mCurrentOperation, result);
}
@@ -525,9 +526,9 @@ private void nextOperation() {
/**
* Creates a new operation, as described by operationIntent.
- *
+ *
* TODO - move to ServiceHandler (probably)
- *
+ *
* @param operationIntent Intent describing a new operation to queue and execute.
* @return Pair with the new operation object and the information about its
* target server.
@@ -536,7 +537,7 @@ private Pair newOperation(Intent operationIntent) {
RemoteOperation operation = null;
Target target = null;
try {
- if (!operationIntent.hasExtra(EXTRA_ACCOUNT) &&
+ if (!operationIntent.hasExtra(EXTRA_ACCOUNT) &&
!operationIntent.hasExtra(EXTRA_SERVER_URL)) {
Log_OC.e(TAG, "Not enough information provided in intent");
@@ -545,11 +546,11 @@ private Pair newOperation(Intent operationIntent) {
String serverUrl = operationIntent.getStringExtra(EXTRA_SERVER_URL);
String cookie = operationIntent.getStringExtra(EXTRA_COOKIE);
target = new Target(
- account,
+ account,
(serverUrl == null) ? null : Uri.parse(serverUrl),
cookie
);
-
+
String action = operationIntent.getAction();
String remotePath;
String password;
@@ -579,6 +580,10 @@ private Pair newOperation(Intent operationIntent) {
long expirationDate = operationIntent.getLongExtra(EXTRA_SHARE_EXPIRATION_DATE_IN_MILLIS, 0);
updateLinkOperation.setExpirationDate(expirationDate);
+ boolean hideFileDownload = operationIntent.getBooleanExtra(EXTRA_SHARE_HIDE_FILE_DOWNLOAD,
+ false);
+ updateLinkOperation.setHideFileDownload(hideFileDownload);
+
if (operationIntent.hasExtra(EXTRA_SHARE_PUBLIC_UPLOAD)) {
updateLinkOperation.setPublicUpload(
operationIntent.getBooleanExtra(EXTRA_SHARE_PUBLIC_UPLOAD, false));
@@ -712,14 +717,14 @@ private Pair newOperation(Intent operationIntent) {
break;
}
}
-
+
} catch (IllegalArgumentException e) {
Log_OC.e(TAG, "Bad information provided in intent: " + e.getMessage());
operation = null;
}
if (operation != null) {
- return new Pair(target, operation);
+ return new Pair(target, operation);
} else {
return null;
}
@@ -740,7 +745,7 @@ protected void dispatchResultToOperationListeners(
while (listeners.hasNext()) {
final OnRemoteOperationListener listener = listeners.next();
final Handler handler = mOperationsBinder.mBoundListeners.get(listener);
- if (handler != null) {
+ if (handler != null) {
handler.post(new Runnable() {
@Override
public void run() {
diff --git a/src/main/java/com/owncloud/android/ui/adapter/UserListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/UserListAdapter.java
index 8440cc64477b..28dc8b14b129 100644
--- a/src/main/java/com/owncloud/android/ui/adapter/UserListAdapter.java
+++ b/src/main/java/com/owncloud/android/ui/adapter/UserListAdapter.java
@@ -413,7 +413,7 @@ int updatePermissionsToShare(OCShare share,
boolean canEditDelete);
void updateNoteToShare(OCShare share, String note);
-
+
/**
* show a snackbar that this feature is not supported by ownCloud.
*/
@@ -434,5 +434,7 @@ int updatePermissionsToShare(OCShare share,
* @param hideFileListing New state of the permission for editing the folder shared via link.
*/
void setHideFileListingPermissionsToShare(OCShare share, boolean hideFileListing);
+
+ void setHideFileDownloadPermissionToShare(OCFile file, boolean hideFileDownload);
}
}
diff --git a/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java b/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java
index 1f52aa81da8a..ef78c1601493 100644
--- a/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java
+++ b/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java
@@ -308,6 +308,8 @@ private void prepareOptionsMenu(Menu menu) {
shareByLinkAllowEditing.isChecked(),
publicShare.getPermissions()
);
+ SharingMenuHelper.setupHideFileDownload(menu.findItem(R.id.action_hide_file_download),
+ publicShare.isHideFileDownload(), file.isFolder());
SharingMenuHelper.setupPasswordMenuItem(
menu.findItem(R.id.action_password),
publicShare.isPasswordProtected()
@@ -333,16 +335,19 @@ private boolean optionsItemSelected(MenuItem item) {
}
return true;
}
+ case R.id.action_hide_file_download:
+ item.setChecked(!item.isChecked());
+ setHideFileDownloadPermissionToShare(file, item.isChecked());
+
+ return true;
case R.id.action_password: {
requestPasswordForShareViaLink(false);
return true;
}
case R.id.action_share_expiration_date: {
ExpirationDatePickerDialogFragment dialog = ExpirationDatePickerDialogFragment.newInstance(file, -1);
- dialog.show(
- getActivity().getSupportFragmentManager(),
- ExpirationDatePickerDialogFragment.DATE_PICKER_DIALOG
- );
+ dialog.show(getActivity().getSupportFragmentManager(),
+ ExpirationDatePickerDialogFragment.DATE_PICKER_DIALOG);
return true;
}
case R.id.action_share_send_link: {
@@ -368,6 +373,12 @@ public void setHideFileListingPermissionsToShare(OCShare share, boolean hideFile
setHideFileListingPermissionsToShare(share, hideFileListing);
}
+ @Override
+ public void setHideFileDownloadPermissionToShare(OCFile file, boolean hideFileDownload) {
+ ((FileActivity) getActivity()).getFileOperationsHelper().
+ setHideFileDownloadPermissionsToShare(file, hideFileDownload);
+ }
+
@Override
public void showNotSupportedByOcMessage() {
if (getView() != null) {
diff --git a/src/main/java/com/owncloud/android/ui/fragment/util/SharingMenuHelper.java b/src/main/java/com/owncloud/android/ui/fragment/util/SharingMenuHelper.java
index c7742595ada1..5c5ad040cf13 100644
--- a/src/main/java/com/owncloud/android/ui/fragment/util/SharingMenuHelper.java
+++ b/src/main/java/com/owncloud/android/ui/fragment/util/SharingMenuHelper.java
@@ -62,6 +62,21 @@ public static void setupHideFileListingMenuItem(MenuItem fileListing,
}
}
+ /**
+ * Sets checked/visibility state on the given {@link MenuItem} based on the given criteria.
+ *
+ * @param fileListing the {@link MenuItem} to be setup
+ * @param isFolder flag if it is a folder
+ */
+ public static void setupHideFileDownload(MenuItem fileListing, boolean hideFileDownload, boolean isFolder) {
+ if (isFolder) {
+ fileListing.setVisible(false);
+ } else {
+ fileListing.setVisible(true);
+ fileListing.setChecked(hideFileDownload);
+ }
+ }
+
/**
* sets up the password {@link MenuItem}'s title based on the fact if a password is present.
*
diff --git a/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java b/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java
index ff4e137b5b0d..fa297058abb3 100755
--- a/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java
+++ b/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java
@@ -535,10 +535,7 @@ public void setPasswordToShareViaLink(OCFile file, String password) {
updateShareIntent.setAction(OperationsService.ACTION_UPDATE_SHARE);
updateShareIntent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
updateShareIntent.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
- updateShareIntent.putExtra(
- OperationsService.EXTRA_SHARE_PASSWORD,
- (password == null) ? "" : password
- );
+ updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_PASSWORD, (password == null) ? "" : password);
queueShareIntent(updateShareIntent);
}
@@ -577,10 +574,7 @@ public void setExpirationDateToShareViaLink(OCFile file, long expirationTimeInMi
updateShareIntent.setAction(OperationsService.ACTION_UPDATE_SHARE);
updateShareIntent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
updateShareIntent.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
- updateShareIntent.putExtra(
- OperationsService.EXTRA_SHARE_EXPIRATION_DATE_IN_MILLIS,
- expirationTimeInMillis
- );
+ updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_EXPIRATION_DATE_IN_MILLIS, expirationTimeInMillis);
queueShareIntent(updateShareIntent);
}
@@ -597,14 +591,8 @@ public void setExpirationDateToShare(OCShare share, long expirationTimeInMillis)
updateShareIntent.setAction(OperationsService.ACTION_UPDATE_SHARE);
updateShareIntent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_ID, share.getId());
- updateShareIntent.putExtra(
- OperationsService.EXTRA_SHARE_EXPIRATION_DATE_IN_MILLIS,
- expirationTimeInMillis
- );
- updateShareIntent.putExtra(
- OperationsService.EXTRA_SHARE_PERMISSIONS,
- 0
- );
+ updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_EXPIRATION_DATE_IN_MILLIS, expirationTimeInMillis);
+ updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_PERMISSIONS, 0);
queueShareIntent(updateShareIntent);
}
@@ -620,10 +608,7 @@ public void setPermissionsToShare(OCShare share, int permissions) {
updateShareIntent.setAction(OperationsService.ACTION_UPDATE_SHARE);
updateShareIntent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_ID, share.getId());
- updateShareIntent.putExtra(
- OperationsService.EXTRA_SHARE_PERMISSIONS,
- permissions
- );
+ updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_PERMISSIONS, permissions);
queueShareIntent(updateShareIntent);
}
@@ -639,10 +624,7 @@ public void setUploadPermissionsToShare(OCFile folder, boolean uploadPermission)
updateShareIntent.setAction(OperationsService.ACTION_UPDATE_SHARE);
updateShareIntent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
updateShareIntent.putExtra(OperationsService.EXTRA_REMOTE_PATH, folder.getRemotePath());
- updateShareIntent.putExtra(
- OperationsService.EXTRA_SHARE_PUBLIC_UPLOAD,
- uploadPermission
- );
+ updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_PUBLIC_UPLOAD, uploadPermission);
queueShareIntent(updateShareIntent);
}
@@ -669,6 +651,16 @@ public void setHideFileListingPermissionsToShare(OCShare share, boolean hideFile
queueShareIntent(updateShareIntent);
}
+ public void setHideFileDownloadPermissionsToShare(OCFile file, boolean hideFileDownload) {
+ Intent updateShareIntent = new Intent(mFileActivity, OperationsService.class);
+ updateShareIntent.setAction(OperationsService.ACTION_UPDATE_SHARE);
+ updateShareIntent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
+ updateShareIntent.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
+ updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_HIDE_FILE_DOWNLOAD, hideFileDownload);
+
+ queueShareIntent(updateShareIntent);
+ }
+
public void updateNoteToShare(OCShare share, String note) {
Intent updateShareIntent = new Intent(mFileActivity, OperationsService.class);
updateShareIntent.setAction(OperationsService.ACTION_UPDATE_SHARE_NOTE);
diff --git a/src/main/res/menu/file_detail_sharing_link_menu.xml b/src/main/res/menu/file_detail_sharing_link_menu.xml
index e44b5cf55510..fea092d99224 100644
--- a/src/main/res/menu/file_detail_sharing_link_menu.xml
+++ b/src/main/res/menu/file_detail_sharing_link_menu.xml
@@ -28,6 +28,12 @@
android:title="@string/share_via_link_hide_file_listing_permission_label"
android:checkable="true"
app:showAsAction="never" />
+
- Note
No app available to handle links
No App available to handle PDF
+ Hide download