diff --git a/app/src/main/java/com/owncloud/android/datamodel/quickPermission/QuickPermissionType.kt b/app/src/main/java/com/owncloud/android/datamodel/quickPermission/QuickPermissionType.kt index d867fb69e0c5..83819443a209 100644 --- a/app/src/main/java/com/owncloud/android/datamodel/quickPermission/QuickPermissionType.kt +++ b/app/src/main/java/com/owncloud/android/datamodel/quickPermission/QuickPermissionType.kt @@ -18,7 +18,7 @@ enum class QuickPermissionType(val iconId: Int, val textId: Int) { VIEW_ONLY(R.drawable.ic_eye, R.string.share_permission_view_only), CAN_EDIT(R.drawable.ic_edit, R.string.share_permission_can_edit), FILE_REQUEST(R.drawable.ic_file_request, R.string.share_permission_file_request), - SECURE_FILE_DROP(R.drawable.ic_file_request, R.string.share_permission_secure_file_drop), + SECURE_FILE_DROP(R.drawable.ic_file_request, R.string.create_end_to_end_encrypted_share), CUSTOM_PERMISSIONS(R.drawable.ic_custom_permissions, R.string.share_custom_permission); fun getText(context: Context): String = context.getString(textId) diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/NewSecureFileDropViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/NewSecureFileDropViewHolder.kt index 0d69f2ca28a8..0e2746288561 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/NewSecureFileDropViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/NewSecureFileDropViewHolder.kt @@ -10,15 +10,24 @@ package com.owncloud.android.ui.adapter import android.view.View import androidx.recyclerview.widget.RecyclerView import com.owncloud.android.databinding.FileDetailsShareSecureFileDropAddNewItemBinding +import com.owncloud.android.utils.theme.ViewThemeUtils -internal class NewSecureFileDropViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { +class NewSecureFileDropViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private var binding: FileDetailsShareSecureFileDropAddNewItemBinding? = null + private var viewThemeUtils: ViewThemeUtils? = null - constructor(binding: FileDetailsShareSecureFileDropAddNewItemBinding) : this(binding.root) { + constructor( + binding: FileDetailsShareSecureFileDropAddNewItemBinding, + viewThemeUtils: ViewThemeUtils + ) : this(binding.root) { this.binding = binding + this.viewThemeUtils = viewThemeUtils } fun bind(listener: ShareeListAdapterListener) { - binding!!.addNewSecureFileDrop.setOnClickListener { v: View? -> listener.createSecureFileDrop() } + binding?.addPublicShare?.let { + it.setOnClickListener { listener.createSecureFileDrop() } + viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(it) + } } } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/ShareeListAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/ShareeListAdapter.kt index f171602f625c..ef449afabfac 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/ShareeListAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/ShareeListAdapter.kt @@ -77,7 +77,7 @@ class ShareeListAdapter( shareType == ShareType.NEW_PUBLIC_LINK -> { if (encrypted) { val binding = FileDetailsShareSecureFileDropAddNewItemBinding.inflate(inflater, parent, false) - NewSecureFileDropViewHolder(binding) + NewSecureFileDropViewHolder(binding, viewThemeUtils) } else { val binding = FileDetailsSharePublicLinkAddNewItemBinding.inflate(inflater, parent, false) NewLinkShareViewHolder(binding) diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java index 48a1ac642937..456a16132a9d 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java @@ -321,6 +321,10 @@ private void setupView() { if (file.canReshare() && !FileDetailSharingFragmentHelper.isPublicShareDisabled(capabilities)) { if (file.isEncrypted() || (parentFile != null && parentFile.isEncrypted())) { + binding.internalShareHeadline.setText(getResources().getString(R.string.internal_share_headline_end_to_end_encrypted)); + binding.internalShareDescription.setVisibility(View.VISIBLE); + binding.externalSharesHeadline.setText(getResources().getString(R.string.create_end_to_end_encrypted_share_title)); + if (file.getE2eCounter() == -1) { // V1 cannot share binding.searchContainer.setVisibility(View.GONE); @@ -613,9 +617,17 @@ public void refreshSharesFromDB() { } private void addExternalAndPublicShares(List externalShares) { - final var publicShares = fileDataStorageManager.getSharesByPathAndType(file.getRemotePath(), ShareType.PUBLIC_LINK, ""); + final var publicShares = fileDataStorageManager.getSharesByPathAndType( + file.getRemotePath(), ShareType.PUBLIC_LINK, ""); externalShareeListAdapter.removeAll(); final var shares = OCShareExtensionsKt.mergeDistinctByToken(externalShares, publicShares); + + if (file.isEncrypted()) { + OCShare placeholder = new OCShare(); + placeholder.setShareType(ShareType.NEW_PUBLIC_LINK); + shares.add(placeholder); + } + externalShareeListAdapter.addShares(shares); } diff --git a/app/src/main/res/layout/file_details_share_secure_file_drop_add_new_item.xml b/app/src/main/res/layout/file_details_share_secure_file_drop_add_new_item.xml index 420633b1987b..2ab14998d1f7 100644 --- a/app/src/main/res/layout/file_details_share_secure_file_drop_add_new_item.xml +++ b/app/src/main/res/layout/file_details_share_secure_file_drop_add_new_item.xml @@ -2,43 +2,18 @@ - - - - - - - - + ~ SPDX-FileCopyrightText: 2026 Alper Ozturk + ~ SPDX-License-Identifier: AGPL-3.0-or-later + --> + diff --git a/app/src/main/res/layout/file_details_sharing_fragment.xml b/app/src/main/res/layout/file_details_sharing_fragment.xml index 4ee05b28248a..14a056da8f5c 100644 --- a/app/src/main/res/layout/file_details_sharing_fragment.xml +++ b/app/src/main/res/layout/file_details_sharing_fragment.xml @@ -144,6 +144,7 @@ android:text="@string/send_copy_to" /> + + + File request View only Can edit - Secure file drop - + End-to-end encrypted link shares + Link share + End-to-end encrypted shares + Share recipients always have access to the full encrypted folder. It is only possible to share with accounts that have already setup end-to-end encryption. Choose what to sync Free up space %1$s is %2$s, but there is only %3$s available on device.