From 13ac2f72c89137b8abfc73b7982632f0cd3565ff Mon Sep 17 00:00:00 2001 From: A117870935 Date: Mon, 2 Jun 2025 18:48:03 +0530 Subject: [PATCH 01/27] Albums functionality. Signed-off-by: A117870935 # Conflicts: # app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java # app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt --- app/src/main/AndroidManifest.xml | 5 +- .../nextcloud/client/di/ComponentsModule.java | 22 +- .../ui/albumItemActions/AlbumItemAction.kt | 29 + .../AlbumItemActionsBottomSheet.kt | 127 +++ .../albums/CopyFileToAlbumOperation.java | 89 ++ .../android/services/OperationsService.java | 33 +- .../ui/activity/AlbumsPickerActivity.kt | 214 ++++ .../android/ui/adapter/OCFileListDelegate.kt | 15 +- .../adapter/albums/AlbumFragmentInterface.kt | 14 + .../adapter/albums/AlbumGridItemViewHolder.kt | 26 + .../ui/adapter/albums/AlbumItemViewHolder.kt | 19 + .../adapter/albums/AlbumListItemViewHolder.kt | 26 + .../ui/adapter/albums/AlbumsAdapter.kt | 109 ++ .../ui/dialog/CreateAlbumDialogFragment.kt | 203 ++++ .../ui/fragment/ExtendedListFragment.kt | 4 +- .../android/ui/fragment/GalleryFragment.java | 73 +- .../ui/fragment/OCFileListFragment.java | 23 +- .../ui/fragment/albums/AlbumItemsFragment.kt | 972 ++++++++++++++++++ .../ui/fragment/albums/AlbumsFragment.kt | 335 ++++++ .../ui/helpers/FileOperationsHelper.java | 51 +- .../res/drawable-xxxhdpi/bg_image_albums.png | Bin 0 -> 926611 bytes app/src/main/res/layout/albums_fragment.xml | 96 ++ app/src/main/res/layout/albums_grid_item.xml | 79 ++ app/src/main/res/layout/albums_list_item.xml | 90 ++ .../main/res/menu/bottom_navigation_menu.xml | 7 + .../main/res/menu/custom_menu_placeholder.xml | 6 + .../main/res/menu/fragment_album_items.xml | 25 + .../main/res/menu/fragment_create_album.xml | 16 + .../main/res/menu/partial_drawer_entries.xml | 6 + app/src/main/res/values/strings.xml | 20 + 30 files changed, 2722 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt create mode 100644 app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt create mode 100644 app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java create mode 100644 app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumFragmentInterface.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt create mode 100644 app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt create mode 100644 app/src/main/res/drawable-xxxhdpi/bg_image_albums.png create mode 100644 app/src/main/res/layout/albums_fragment.xml create mode 100644 app/src/main/res/layout/albums_grid_item.xml create mode 100644 app/src/main/res/layout/albums_list_item.xml create mode 100644 app/src/main/res/menu/fragment_album_items.xml create mode 100644 app/src/main/res/menu/fragment_create_album.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 20c10607b707..a13db5751a13 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ @@ -636,6 +636,9 @@ android:launchMode="singleTop" android:theme="@style/Theme.ownCloud.Dialog.NoTitle" android:windowSoftInputMode="adjustResize" /> + + * SPDX-FileCopyrightText: 2024-2025 TSI-mc * SPDX-FileCopyrightText: 2020 Chris Narkiewicz * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only */ @@ -32,6 +32,7 @@ import com.nextcloud.ui.ImageDetailFragment; import com.nextcloud.ui.SetOnlineStatusBottomSheet; import com.nextcloud.ui.SetStatusMessageBottomSheet; +import com.nextcloud.ui.albumItemActions.AlbumItemActionsBottomSheet; import com.nextcloud.ui.composeActivity.ComposeActivity; import com.nextcloud.ui.fileactions.FileActionsBottomSheet; import com.nextcloud.ui.trashbinFileActions.TrashbinFileActionsBottomSheet; @@ -82,6 +83,7 @@ import com.owncloud.android.ui.dialog.ChooseTemplateDialogFragment; import com.owncloud.android.ui.dialog.ConfirmationDialogFragment; import com.owncloud.android.ui.dialog.ConflictsResolveDialog; +import com.owncloud.android.ui.dialog.CreateAlbumDialogFragment; import com.owncloud.android.ui.dialog.CreateFolderDialogFragment; import com.owncloud.android.ui.dialog.ExpirationDatePickerDialogFragment; import com.owncloud.android.ui.dialog.IndeterminateProgressDialog; @@ -115,6 +117,9 @@ import com.owncloud.android.ui.fragment.OCFileListFragment; import com.owncloud.android.ui.fragment.SharedListFragment; import com.owncloud.android.ui.fragment.UnifiedSearchFragment; +import com.owncloud.android.ui.fragment.albums.AlbumItemsFragment; +import com.owncloud.android.ui.fragment.albums.AlbumsFragment; +import com.owncloud.android.ui.activity.AlbumsPickerActivity; import com.owncloud.android.ui.fragment.contactsbackup.BackupFragment; import com.owncloud.android.ui.fragment.contactsbackup.BackupListFragment; import com.owncloud.android.ui.preview.FileDownloadFragment; @@ -509,4 +514,19 @@ abstract class ComponentsModule { @ContributesAndroidInjector abstract SetStatusMessageBottomSheet setStatusMessageBottomSheet(); + + @ContributesAndroidInjector + abstract AlbumsPickerActivity albumsPickerActivity(); + + @ContributesAndroidInjector + abstract CreateAlbumDialogFragment createAlbumDialogFragment(); + + @ContributesAndroidInjector + abstract AlbumsFragment albumsFragment(); + + @ContributesAndroidInjector + abstract AlbumItemsFragment albumItemsFragment(); + + @ContributesAndroidInjector + abstract AlbumItemActionsBottomSheet albumItemActionsBottomSheet(); } diff --git a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt new file mode 100644 index 000000000000..19e519e5fc02 --- /dev/null +++ b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt @@ -0,0 +1,29 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.nextcloud.ui.albumItemActions + +import androidx.annotation.DrawableRes +import androidx.annotation.IdRes +import androidx.annotation.StringRes +import com.owncloud.android.R + +enum class AlbumItemAction(@IdRes val id: Int, @StringRes val title: Int, @DrawableRes val icon: Int? = null) { + RENAME_ALBUM(R.id.action_rename_file, R.string.album_rename, R.drawable.ic_edit), + DELETE_ALBUM(R.id.action_delete, R.string.album_delete, R.drawable.ic_delete); + + companion object { + /** + * All file actions, in the order they should be displayed + */ + @JvmField + val SORTED_VALUES = listOf( + RENAME_ALBUM, + DELETE_ALBUM, + ) + } +} diff --git a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt new file mode 100644 index 000000000000..0d697077b931 --- /dev/null +++ b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt @@ -0,0 +1,127 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.nextcloud.ui.albumItemActions + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.annotation.IdRes +import androidx.appcompat.content.res.AppCompatResources +import androidx.core.os.bundleOf +import androidx.core.view.isEmpty +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.setFragmentResult +import androidx.lifecycle.LifecycleOwner +import com.google.android.material.bottomsheet.BottomSheetBehavior +import com.google.android.material.bottomsheet.BottomSheetDialog +import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import com.nextcloud.android.common.ui.theme.utils.ColorRole +import com.nextcloud.client.di.Injectable +import com.owncloud.android.databinding.FileActionsBottomSheetBinding +import com.owncloud.android.databinding.FileActionsBottomSheetItemBinding +import com.owncloud.android.utils.theme.ViewThemeUtils +import javax.inject.Inject + +class AlbumItemActionsBottomSheet : BottomSheetDialogFragment(), Injectable { + + @Inject + lateinit var viewThemeUtils: ViewThemeUtils + + private var _binding: FileActionsBottomSheetBinding? = null + val binding + get() = _binding!! + + fun interface ResultListener { + fun onResult(@IdRes actionId: Int) + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + _binding = FileActionsBottomSheetBinding.inflate(inflater, container, false) + + val bottomSheetDialog = dialog as BottomSheetDialog + bottomSheetDialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED + bottomSheetDialog.behavior.skipCollapsed = true + + viewThemeUtils.platform.colorViewBackground(binding.bottomSheet, ColorRole.SURFACE) + + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + binding.bottomSheetHeader.visibility = View.GONE + binding.bottomSheetLoading.visibility = View.GONE + displayActions() + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + + fun setResultListener( + fragmentManager: FragmentManager, + lifecycleOwner: LifecycleOwner, + listener: ResultListener + ): AlbumItemActionsBottomSheet { + fragmentManager.setFragmentResultListener(REQUEST_KEY, lifecycleOwner) { _, result -> + @IdRes val actionId = result.getInt(RESULT_KEY_ACTION_ID, -1) + if (actionId != -1) { + listener.onResult(actionId) + } + } + return this + } + + private fun displayActions() { + if (binding.fileActionsList.isEmpty()) { + AlbumItemAction.SORTED_VALUES.forEach { action -> + val view = inflateActionView(action) + binding.fileActionsList.addView(view) + } + } + } + + private fun inflateActionView(action: AlbumItemAction): View { + val itemBinding = FileActionsBottomSheetItemBinding.inflate(layoutInflater, binding.fileActionsList, false) + .apply { + root.setOnClickListener { + dispatchActionClick(action.id) + } + text.setText(action.title) + if (action.icon != null) { + val drawable = + viewThemeUtils.platform.tintDrawable( + requireContext(), + AppCompatResources.getDrawable(requireContext(), action.icon)!! + ) + icon.setImageDrawable(drawable) + } + } + return itemBinding.root + } + + private fun dispatchActionClick(id: Int?) { + if (id != null) { + setFragmentResult(REQUEST_KEY, bundleOf(RESULT_KEY_ACTION_ID to id)) + parentFragmentManager.clearFragmentResultListener(REQUEST_KEY) + dismiss() + } + } + + companion object { + private const val REQUEST_KEY = "REQUEST_KEY_ACTION" + private const val RESULT_KEY_ACTION_ID = "RESULT_KEY_ACTION_ID" + + @JvmStatic + fun newInstance(): AlbumItemActionsBottomSheet { + return AlbumItemActionsBottomSheet() + } + } +} diff --git a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java new file mode 100644 index 000000000000..f7ff64ee51dd --- /dev/null +++ b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java @@ -0,0 +1,89 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.operations.albums; + +import com.owncloud.android.datamodel.FileDataStorageManager; +import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.lib.resources.albums.CopyFileToAlbumRemoteOperation; +import com.owncloud.android.operations.UploadFileOperation; +import com.owncloud.android.operations.common.SyncOperation; + +/** + * Operation copying an {@link OCFile} to a different folder. + * + * @author David A. Velasco + */ +public class CopyFileToAlbumOperation extends SyncOperation { + + private final String srcPath; + private String targetParentPath; + + /** + * Constructor + * + * @param srcPath Remote path of the {@link OCFile} to move. + * @param targetParentPath Path to the folder where the file will be copied into. + */ + public CopyFileToAlbumOperation(String srcPath, String targetParentPath, FileDataStorageManager storageManager) { + super(storageManager); + + this.srcPath = srcPath; + this.targetParentPath = targetParentPath; + if (!this.targetParentPath.endsWith(OCFile.PATH_SEPARATOR)) { + this.targetParentPath += OCFile.PATH_SEPARATOR; + } + } + + /** + * Performs the operation. + * + * @param client Client object to communicate with the remote ownCloud server. + */ + @Override + protected RemoteOperationResult run(OwnCloudClient client) { + /// 1. check copy validity + if (targetParentPath.startsWith(srcPath)) { + return new RemoteOperationResult(ResultCode.INVALID_COPY_INTO_DESCENDANT); + } + OCFile file = getStorageManager().getFileByPath(srcPath); + if (file == null) { + return new RemoteOperationResult(ResultCode.FILE_NOT_FOUND); + } + + /// 2. remote copy + String targetPath = targetParentPath + file.getFileName(); + if (file.isFolder()) { + targetPath += OCFile.PATH_SEPARATOR; + } + + // auto rename, to allow copy + if (targetPath.equals(srcPath)) { + if (file.isFolder()) { + targetPath = targetParentPath + file.getFileName(); + } + targetPath = UploadFileOperation.getNewAvailableRemotePath(client, targetPath, null, false); + + if (file.isFolder()) { + targetPath += OCFile.PATH_SEPARATOR; + } + } + + RemoteOperationResult result = new CopyFileToAlbumRemoteOperation(srcPath, targetPath).execute(client); + + /// 3. local copy + if (result.isSuccess()) { + getStorageManager().copyLocalFile(file, targetPath); + } + // TODO handle ResultCode.PARTIAL_COPY_DONE in client Activity, for the moment + + return result; + } +} diff --git a/app/src/main/java/com/owncloud/android/services/OperationsService.java b/app/src/main/java/com/owncloud/android/services/OperationsService.java index 6923606819af..6d99e5dd83cf 100644 --- a/app/src/main/java/com/owncloud/android/services/OperationsService.java +++ b/app/src/main/java/com/owncloud/android/services/OperationsService.java @@ -2,7 +2,7 @@ * Nextcloud - Android Client * * SPDX-FileCopyrightText: 2018-2023 Tobias Kaminsky - * SPDX-FileCopyrightText: 2021 TSI-mc + * SPDX-FileCopyrightText: 2021-2025 TSI-mc * SPDX-FileCopyrightText: 2019 Chris Narkiewicz * SPDX-FileCopyrightText: 2017-2018 Andy Scherzinger * SPDX-FileCopyrightText: 2015 ownCloud Inc. @@ -42,6 +42,9 @@ import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; +import com.owncloud.android.lib.resources.albums.CreateNewAlbumRemoteOperation; +import com.owncloud.android.lib.resources.albums.RemoveAlbumRemoteOperation; +import com.owncloud.android.lib.resources.albums.RenameAlbumRemoteOperation; import com.owncloud.android.lib.resources.files.RestoreFileVersionRemoteOperation; import com.owncloud.android.lib.resources.files.model.FileVersion; import com.owncloud.android.lib.resources.shares.OCShare; @@ -64,6 +67,7 @@ import com.owncloud.android.operations.UpdateShareInfoOperation; import com.owncloud.android.operations.UpdateSharePermissionsOperation; import com.owncloud.android.operations.UpdateShareViaLinkOperation; +import com.owncloud.android.operations.albums.CopyFileToAlbumOperation; import java.io.IOException; import java.util.Optional; @@ -125,6 +129,11 @@ public class OperationsService extends Service { public static final String ACTION_CHECK_CURRENT_CREDENTIALS = "CHECK_CURRENT_CREDENTIALS"; public static final String ACTION_RESTORE_VERSION = "RESTORE_VERSION"; public static final String ACTION_UPDATE_FILES_DOWNLOAD_LIMIT = "UPDATE_FILES_DOWNLOAD_LIMIT"; + public static final String ACTION_CREATE_ALBUM = "CREATE_ALBUM"; + public static final String EXTRA_ALBUM_NAME = "ALBUM_NAME"; + public static final String ACTION_ALBUM_COPY_FILE = "ALBUM_COPY_FILE"; + public static final String ACTION_RENAME_ALBUM = "RENAME_ALBUM"; + public static final String ACTION_REMOVE_ALBUM = "REMOVE_ALBUM"; private ServiceHandler mOperationsHandler; private OperationsServiceBinder mOperationsBinder; @@ -774,6 +783,28 @@ private Pair newOperation(Intent operationIntent) { } break; + case ACTION_CREATE_ALBUM: + String albumName = operationIntent.getStringExtra(EXTRA_ALBUM_NAME); + operation = new CreateNewAlbumRemoteOperation(albumName); + break; + + case ACTION_ALBUM_COPY_FILE: + remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); + newParentPath = operationIntent.getStringExtra(EXTRA_NEW_PARENT_PATH); + operation = new CopyFileToAlbumOperation(remotePath, newParentPath, fileDataStorageManager); + break; + + case ACTION_RENAME_ALBUM: + remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH); + String newAlbumName = operationIntent.getStringExtra(EXTRA_NEWNAME); + operation = new RenameAlbumRemoteOperation(remotePath, newAlbumName); + break; + + case ACTION_REMOVE_ALBUM: + String albumNameToRemove = operationIntent.getStringExtra(EXTRA_ALBUM_NAME); + operation = new RemoveAlbumRemoteOperation(albumNameToRemove); + break; + default: // do nothing break; diff --git a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt new file mode 100644 index 000000000000..1e3aebe3b825 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt @@ -0,0 +1,214 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 Your Name + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.activity + +import android.content.Intent +import android.content.res.Resources +import android.os.Bundle +import android.view.MenuItem +import android.view.View +import androidx.fragment.app.FragmentActivity +import com.nextcloud.client.di.Injectable +import com.owncloud.android.R +import com.owncloud.android.databinding.FilesFolderPickerBinding +import com.owncloud.android.datamodel.OCFile +import com.owncloud.android.lib.common.operations.RemoteOperation +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.lib.resources.albums.CreateNewAlbumRemoteOperation +import com.owncloud.android.lib.resources.files.SearchRemoteOperation +import com.owncloud.android.ui.activity.FolderPickerActivity.Companion.TAG_LIST_OF_FOLDERS +import com.owncloud.android.ui.events.SearchEvent +import com.owncloud.android.ui.fragment.FileFragment +import com.owncloud.android.ui.fragment.GalleryFragment +import com.owncloud.android.ui.fragment.OCFileListFragment +import com.owncloud.android.ui.fragment.albums.AlbumsFragment +import com.owncloud.android.utils.DisplayUtils +import com.owncloud.android.utils.ErrorMessageAdapter + +class AlbumsPickerActivity : FileActivity(), FileFragment.ContainerActivity, OnEnforceableRefreshListener, Injectable { + + private var captionText: String? = null + + private var action: String? = null + + private lateinit var folderPickerBinding: FilesFolderPickerBinding + + private fun initBinding() { + folderPickerBinding = FilesFolderPickerBinding.inflate(layoutInflater) + setContentView(folderPickerBinding.root) + } + + override fun onCreate(savedInstanceState: Bundle?) { + Log_OC.d(TAG, "onCreate() start") + + super.onCreate(savedInstanceState) + + initBinding() + setupToolbar() + setupActionBar() + setupAction() + + if (savedInstanceState == null) { + createFragments() + } + + updateActionBarTitleAndHomeButtonByString(captionText) + } + + private fun setupActionBar() { + findViewById(R.id.sort_list_button_group).visibility = + View.GONE + findViewById(R.id.switch_grid_view_button).visibility = + View.GONE + supportActionBar?.setDisplayHomeAsUpEnabled(true) + } + + private fun setupAction() { + action = intent.getStringExtra(EXTRA_ACTION) + setupUIForChooseButton() + } + + private fun setupUIForChooseButton() { + if (action == CHOOSE_ALBUM) { + captionText = resources.getText(R.string.album_picker_toolbar_title).toString() + } else if (action == CHOOSE_MEDIA_FILES) { + captionText = resources.getText(R.string.media_picker_toolbar_title).toString() + } + + folderPickerBinding.folderPickerBtnCopy.visibility = View.GONE + folderPickerBinding.folderPickerBtnMove.visibility = View.GONE + folderPickerBinding.folderPickerBtnChoose.visibility = View.GONE + folderPickerBinding.folderPickerBtnCancel.visibility = View.GONE + folderPickerBinding.chooseButtonSpacer.visibility = View.GONE + folderPickerBinding.moveOrCopyButtonSpacer.visibility = View.GONE + } + + private fun createFragments() { + if (action == CHOOSE_ALBUM) { + val transaction = supportFragmentManager.beginTransaction() + transaction.add( + R.id.fragment_container, + AlbumsFragment.newInstance(isSelectionMode = true), + AlbumsFragment.TAG + ) + transaction.commit() + } else if (action == CHOOSE_MEDIA_FILES) { + createGalleryFragment() + } + } + + private fun createGalleryFragment() { + val photoFragment = GalleryFragment() + val bundle = Bundle() + bundle.putParcelable( + OCFileListFragment.SEARCH_EVENT, + SearchEvent("image/%", SearchRemoteOperation.SearchType.PHOTO_SEARCH) + ) + bundle.putBoolean(EXTRA_FROM_ALBUM, true) + photoFragment.arguments = bundle + + val transaction = supportFragmentManager.beginTransaction() + transaction.add(R.id.fragment_container, photoFragment, TAG_LIST_OF_FOLDERS) + transaction.commit() + } + + private val listOfFilesFragment: AlbumsFragment? + get() { + val listOfFiles = supportFragmentManager.findFragmentByTag(AlbumsFragment.TAG) + + return if (listOfFiles != null) { + return listOfFiles as AlbumsFragment? + } else { + Log_OC.e(TAG, "Access to non existing list of albums fragment!!") + null + } + } + + override fun onRemoteOperationFinish(operation: RemoteOperation<*>?, result: RemoteOperationResult<*>) { + super.onRemoteOperationFinish(operation, result) + if (operation is CreateNewAlbumRemoteOperation) { + onCreateAlbumOperationFinish(operation, result) + } + } + + /** + * Updates the view associated to the activity after the finish of an operation trying to create a new folder. + * + * @param operation Creation operation performed. + * @param result Result of the creation. + */ + private fun onCreateAlbumOperationFinish(operation: CreateNewAlbumRemoteOperation, result: RemoteOperationResult<*>) { + if (result.isSuccess) { + val fileListFragment = listOfFilesFragment + fileListFragment?.refreshAlbums() + } else { + try { + DisplayUtils.showSnackMessage( + this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, resources) + ) + } catch (e: Resources.NotFoundException) { + Log_OC.e(TAG, "Error while trying to show fail message ", e) + } + } + } + + override fun showDetails(file: OCFile?) { + // not used at the moment + } + + override fun showDetails(file: OCFile?, activeTab: Int) { + // not used at the moment + } + + override fun onBrowsedDownTo(folder: OCFile?) { + // not used at the moment + } + + override fun onTransferStateChanged(file: OCFile?, downloading: Boolean, uploading: Boolean) { + // not used at the moment + } + + companion object { + private val EXTRA_ACTION = AlbumsPickerActivity::class.java.canonicalName?.plus(".EXTRA_ACTION") + private val CHOOSE_ALBUM = AlbumsPickerActivity::class.java.canonicalName?.plus(".CHOOSE_ALBUM") + private val CHOOSE_MEDIA_FILES = AlbumsPickerActivity::class.java.canonicalName?.plus(".CHOOSE_MEDIA_FILES") + val EXTRA_FROM_ALBUM = AlbumsPickerActivity::class.java.canonicalName?.plus(".EXTRA_FROM_ALBUM") + val EXTRA_MEDIA_FILES_PATH = AlbumsPickerActivity::class.java.canonicalName?.plus(".EXTRA_MEDIA_FILES_PATH") + + private val TAG = AlbumsPickerActivity::class.java.simpleName + + fun intentForPickingAlbum(context: FragmentActivity): Intent { + return Intent(context, AlbumsPickerActivity::class.java).apply { + putExtra(EXTRA_ACTION, CHOOSE_ALBUM) + } + } + + fun intentForPickingMediaFiles(context: FragmentActivity): Intent { + return Intent(context, AlbumsPickerActivity::class.java).apply { + putExtra(EXTRA_ACTION, CHOOSE_MEDIA_FILES) + } + } + } + + override fun onRefresh(enforced: Boolean) { + // do nothing + } + + override fun onRefresh() { + // do nothing + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + android.R.id.home -> super.onBackPressed() + } + return super.onOptionsItemSelected(item) + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt index 343659e8938a..3e6cd14962d9 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt @@ -1,6 +1,7 @@ /* * Nextcloud - Android Client * + * SPDX-FileCopyrightText: 2025 TSI-mc * SPDX-FileCopyrightText: 2022 Tobias Kaminsky * SPDX-FileCopyrightText: 2022 Nextcloud GmbH * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only @@ -34,6 +35,8 @@ import com.owncloud.android.ui.activity.ComponentsGetter import com.owncloud.android.ui.activity.FolderPickerActivity import com.owncloud.android.ui.fragment.GalleryFragment import com.owncloud.android.ui.fragment.SearchType +import com.owncloud.android.ui.fragment.albums.AlbumItemsFragment +import com.owncloud.android.ui.activity.AlbumsPickerActivity import com.owncloud.android.ui.interfaces.OCFileListFragmentInterface import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.EncryptionUtils @@ -159,8 +162,16 @@ class OCFileListDelegate( GalleryImageGenerationJob.storeJob(job, imageView) imageView.setOnClickListener { - ocFileListFragmentInterface.onItemClicked(file) - GalleryFragment.setLastMediaItemPosition(galleryRowHolder.absoluteAdapterPosition) + // while picking media directly perform long click + if (context is AlbumsPickerActivity) { + ocFileListFragmentInterface.onLongItemClicked( + file + ) + } else { + ocFileListFragmentInterface.onItemClicked(file) + GalleryFragment.setLastMediaItemPosition(galleryRowHolder.absoluteAdapterPosition) + AlbumItemsFragment.lastMediaItemPosition = galleryRowHolder.absoluteAdapterPosition + } } if (!hideItemOptions) { diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumFragmentInterface.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumFragmentInterface.kt new file mode 100644 index 000000000000..080159939165 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumFragmentInterface.kt @@ -0,0 +1,14 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.adapter.albums + +import com.owncloud.android.lib.resources.albums.PhotoAlbumEntry + +interface AlbumFragmentInterface { + fun onItemClick(album: PhotoAlbumEntry) +} \ No newline at end of file diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt new file mode 100644 index 000000000000..6fbfe195865c --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt @@ -0,0 +1,26 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 Your Name + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.adapter.albums + +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.elyeproj.loaderviewlibrary.LoaderImageView +import com.owncloud.android.databinding.AlbumsGridItemBinding + +internal class AlbumGridItemViewHolder(private var binding: AlbumsGridItemBinding) : + RecyclerView.ViewHolder(binding.root), AlbumItemViewHolder { + override val thumbnail: ImageView + get() = binding.thumbnail + override val shimmerThumbnail: LoaderImageView + get() = binding.thumbnailShimmer + override val albumName: TextView + get() = binding.Filename + override val albumInfo: TextView + get() = binding.fileInfo +} \ No newline at end of file diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt new file mode 100644 index 000000000000..2709c78a8b34 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt @@ -0,0 +1,19 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.adapter.albums + +import android.widget.ImageView +import android.widget.TextView +import com.elyeproj.loaderviewlibrary.LoaderImageView + +interface AlbumItemViewHolder { + val thumbnail: ImageView + val shimmerThumbnail: LoaderImageView + val albumName: TextView + val albumInfo: TextView +} \ No newline at end of file diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt new file mode 100644 index 000000000000..8da739dd648f --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt @@ -0,0 +1,26 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 Your Name + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.adapter.albums + +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.elyeproj.loaderviewlibrary.LoaderImageView +import com.owncloud.android.databinding.AlbumsListItemBinding + +internal class AlbumListItemViewHolder(private var binding: AlbumsListItemBinding) : + RecyclerView.ViewHolder(binding.root), AlbumItemViewHolder { + override val thumbnail: ImageView + get() = binding.thumbnail + override val shimmerThumbnail: LoaderImageView + get() = binding.thumbnailShimmer + override val albumName: TextView + get() = binding.Filename + override val albumInfo: TextView + get() = binding.fileInfo +} \ No newline at end of file diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt new file mode 100644 index 000000000000..910be5e8a088 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt @@ -0,0 +1,109 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.adapter.albums + +import android.annotation.SuppressLint +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.nextcloud.client.account.User +import com.nextcloud.client.preferences.AppPreferences +import com.owncloud.android.R +import com.owncloud.android.databinding.AlbumsGridItemBinding +import com.owncloud.android.databinding.AlbumsListItemBinding +import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.datamodel.SyncedFolderProvider +import com.owncloud.android.datamodel.ThumbnailsCacheManager +import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.lib.resources.albums.PhotoAlbumEntry +import com.owncloud.android.utils.DisplayUtils +import com.owncloud.android.utils.theme.ViewThemeUtils + +class AlbumsAdapter( + val context: Context, + private val storageManager: FileDataStorageManager?, + private val user: User, + private val albumFragmentInterface: AlbumFragmentInterface, + private val syncedFolderProvider: SyncedFolderProvider, + private val preferences: AppPreferences, + private val viewThemeUtils: ViewThemeUtils, + private val gridView: Boolean = true +) : + RecyclerView.Adapter() { + private var albumList: MutableList = mutableListOf() + private val asyncTasks: MutableList = ArrayList() + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + return if (gridView) { + AlbumGridItemViewHolder(AlbumsGridItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)) + } else { + AlbumListItemViewHolder(AlbumsListItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)) + } + } + + override fun getItemCount(): Int { + return albumList.size + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + val gridViewHolder = holder as AlbumItemViewHolder + val file: PhotoAlbumEntry = albumList[position] + + gridViewHolder.albumName.text = file.albumName + gridViewHolder.thumbnail.tag = file.lastPhoto + gridViewHolder.albumInfo.text = String.format( + context.resources.getString(R.string.album_items_text), + file.nbItems, file.createdDate + ) + + if (file.lastPhoto > 0) { + val ocLocal = storageManager?.getFileByLocalId(file.lastPhoto) + DisplayUtils.setThumbnail( + ocLocal, + gridViewHolder.thumbnail, + user, + storageManager, + asyncTasks, + gridView, + context, + gridViewHolder.shimmerThumbnail, + preferences, + viewThemeUtils, + syncedFolderProvider + ) + } else { + gridViewHolder.thumbnail.setImageResource(R.drawable.file_image) + gridViewHolder.thumbnail.visibility = View.VISIBLE + gridViewHolder.shimmerThumbnail.visibility = View.GONE + } + + holder.itemView.setOnClickListener { albumFragmentInterface.onItemClick(file) } + } + + fun cancelAllPendingTasks() { + for (task in asyncTasks) { + task.cancel(true) + if (task.getMethod != null) { + Log_OC.d("AlbumsAdapter", "cancel: abort get method directly") + task.getMethod.abort() + } + } + asyncTasks.clear() + } + + @SuppressLint("NotifyDataSetChanged") + fun setAlbumItems(albumItems: List?) { + albumList.clear() + albumItems?.let { + albumList.addAll(it) + } + notifyDataSetChanged() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt new file mode 100644 index 000000000000..eed6a73ca10a --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt @@ -0,0 +1,203 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.dialog + +import android.app.Dialog +import android.content.DialogInterface +import android.os.Bundle +import android.text.Editable +import android.text.TextWatcher +import android.view.View +import android.widget.TextView +import androidx.appcompat.app.AlertDialog +import androidx.core.os.bundleOf +import androidx.fragment.app.DialogFragment +import com.google.android.material.button.MaterialButton +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.nextcloud.client.account.CurrentAccountProvider +import com.nextcloud.client.di.Injectable +import com.nextcloud.client.network.ConnectivityService +import com.nextcloud.utils.extensions.typedActivity +import com.owncloud.android.R +import com.owncloud.android.databinding.EditBoxDialogBinding +import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.lib.resources.status.OCCapability +import com.owncloud.android.ui.activity.ComponentsGetter +import com.owncloud.android.utils.DisplayUtils +import com.owncloud.android.utils.KeyboardUtils +import com.owncloud.android.utils.theme.ViewThemeUtils +import javax.inject.Inject + +/** + * Dialog to input the name for a new folder to create. + * + * + * Triggers the folder creation when name is confirmed. + */ +class CreateAlbumDialogFragment : DialogFragment(), DialogInterface.OnClickListener, Injectable { + + @Inject + lateinit var fileDataStorageManager: FileDataStorageManager + + @Inject + lateinit var viewThemeUtils: ViewThemeUtils + + @Inject + lateinit var keyboardUtils: KeyboardUtils + + @Inject + lateinit var connectivityService: ConnectivityService + + @Inject + lateinit var accountProvider: CurrentAccountProvider + + private var positiveButton: MaterialButton? = null + + private lateinit var binding: EditBoxDialogBinding + + private var albumName: String? = null + + override fun onStart() { + super.onStart() + bindButton() + } + + private fun bindButton() { + val dialog = dialog + + if (dialog is AlertDialog) { + positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton + positiveButton?.let { + it.isEnabled = false + viewThemeUtils.material.colorMaterialButtonPrimaryTonal(it) + } + + val negativeButton = dialog.getButton(AlertDialog.BUTTON_NEGATIVE) as? MaterialButton + negativeButton?.let { + viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(it) + } + } + } + + override fun onResume() { + super.onResume() + bindButton() + keyboardUtils.showKeyboardForEditText(requireDialog().window, binding.userInput) + } + + @Suppress("EmptyFunctionBlock") + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + albumName = arguments?.getString(ARG_ALBUM_NAME) + + val inflater = requireActivity().layoutInflater + binding = EditBoxDialogBinding.inflate(inflater, null, false) + + + binding.userInput.setText(albumName ?: "") + viewThemeUtils.material.colorTextInputLayout(binding.userInputContainer) + albumName?.let { + binding.userInput.setSelection(0, it.length) + } + + binding.userInput.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable) {} + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + checkFileNameAfterEachType() + } + }) + + val builder = buildMaterialAlertDialog(binding.root) + viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.userInputContainer.context, builder) + return builder.create() + } + + private fun getOCCapability(): OCCapability = fileDataStorageManager.getCapability(accountProvider.user.accountName) + + private fun checkFileNameAfterEachType() { + val newAlbumName = binding.userInput.text?.toString() ?: "" + + val errorMessage = when { + newAlbumName.isEmpty() -> getString(R.string.album_name_empty) + else -> null + } + + if (errorMessage != null) { + binding.userInputContainer.error = errorMessage + positiveButton?.isEnabled = false + if (positiveButton == null) { + bindButton() + } + } else { + binding.userInputContainer.error = null + binding.userInputContainer.isErrorEnabled = false + positiveButton?.isEnabled = true + } + } + + private fun buildMaterialAlertDialog(view: View): MaterialAlertDialogBuilder { + return MaterialAlertDialogBuilder(requireActivity()) + .setView(view) + .setPositiveButton( + if (albumName == null) R.string.folder_confirm_create else R.string.rename_dialog_title, + this + ) + .setNegativeButton(R.string.common_cancel, this) + .setTitle(if (albumName == null) R.string.create_album_dialog_title else R.string.rename_album_dialog_title) + .setMessage(R.string.create_album_dialog_message) + } + + override fun onClick(dialog: DialogInterface, which: Int) { + if (which == AlertDialog.BUTTON_POSITIVE) { + val newAlbumName = (getDialog()?.findViewById(R.id.user_input) as TextView) + .text.toString() + + val errorMessage = when { + newAlbumName.isEmpty() -> getString(R.string.album_name_empty) + else -> null + } + + if (errorMessage != null) { + DisplayUtils.showSnackMessage(requireActivity(), errorMessage) + return + } + + connectivityService.isNetworkAndServerAvailable { result -> + if (result) { + if (albumName != null) { + typedActivity()?.fileOperationsHelper?.renameAlbum(albumName, newAlbumName) + } else { + typedActivity()?.fileOperationsHelper?.createAlbum(newAlbumName) + } + } else { + DisplayUtils.showSnackMessage(requireActivity(), getString(R.string.offline_mode)) + } + } + } + } + + companion object { + val TAG: String = CreateAlbumDialogFragment::class.java.simpleName + private const val ARG_ALBUM_NAME = "album_name" + + /** + * Public factory method to create new CreateFolderDialogFragment instances. + * + * @return Dialog ready to show. + */ + @JvmStatic + fun newInstance(albumName: String? = null): CreateAlbumDialogFragment { + return CreateAlbumDialogFragment().apply { + val argsBundle = bundleOf( + ARG_ALBUM_NAME to albumName, + ) + arguments = argsBundle + } + } + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt index 8eec8a5aefa1..5380a350cb45 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt @@ -163,7 +163,9 @@ open class ExtendedListFragment : @Deprecated("Deprecated in Java") override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - val item = menu.findItem(R.id.action_search) + // while picking Media files from Gallery Fragment through AlbumPickerActivity + // there will be no search option so it we have to return it + val item = menu.findItem(R.id.action_search) ?: return searchView = item.actionView as SearchView? viewThemeUtils.androidx.themeToolbarSearchView(searchView!!) closeButton = searchView?.findViewById(androidx.appcompat.R.id.search_close_btn) diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java index 3f6574233840..631127f1a299 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java @@ -1,13 +1,14 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2023 TSI-mc + * SPDX-FileCopyrightText: 2023-2025 TSI-mc * SPDX-FileCopyrightText: 2019 Tobias Kaminsky * SPDX-FileCopyrightText: 2019 Nextcloud GmbH * SPDX-License-Identifier: GPL-3.0-or-later AND AGPL-3.0-or-later */ package com.owncloud.android.ui.fragment; +import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -15,6 +16,7 @@ import android.content.res.Configuration; import android.os.AsyncTask; import android.os.Bundle; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -22,6 +24,7 @@ import android.view.View; import android.view.ViewGroup; +import com.nextcloud.client.network.ConnectivityService; import com.nextcloud.utils.extensions.IntentExtensionsKt; import com.owncloud.android.BuildConfig; import com.owncloud.android.R; @@ -37,9 +40,17 @@ import com.owncloud.android.ui.adapter.GalleryAdapter; import com.owncloud.android.ui.asynctasks.GallerySearchTask; import com.owncloud.android.ui.events.ChangeMenuEvent; +import com.owncloud.android.ui.fragment.albums.AlbumsFragment; +import com.owncloud.android.ui.activity.AlbumsPickerActivity; +import com.owncloud.android.utils.DisplayUtils; + +import java.util.ArrayList; +import java.util.Set; import javax.inject.Inject; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -66,10 +77,15 @@ public class GalleryFragment extends OCFileListFragment implements GalleryFragme private GalleryFragmentBottomSheetDialog galleryFragmentBottomSheetDialog; @Inject FileDataStorageManager fileDataStorageManager; + @Inject ConnectivityService connectivityService; private final static int maxColumnSizeLandscape = 5; private final static int maxColumnSizePortrait = 2; private int columnSize; + // required for Albums + private Set checkedFiles; + private boolean isFromAlbum; // when opened from Albums to add items + protected void setPhotoSearchQueryRunning(boolean value) { this.photoSearchQueryRunning = value; } @@ -83,7 +99,12 @@ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); searchFragment = true; - setHasOptionsMenu(true); + if (getArguments() != null) { + isFromAlbum = getArguments().getBoolean(AlbumsPickerActivity.Companion.getEXTRA_FROM_ALBUM(), false); + } + + // only show menu when not opened from media picker + setHasOptionsMenu(!isFromAlbum); if (galleryFragmentBottomSheetDialog == null) { galleryFragmentBottomSheetDialog = new GalleryFragmentBottomSheetDialog(this); @@ -407,6 +428,11 @@ public void showAllGalleryItems() { } private void updateSubtitle(GalleryFragmentBottomSheetDialog.MediaState mediaState) { + // while picking media don't show subtitle + if (isFromAlbum) { + return; + } + requireActivity().runOnUiThread(() -> { if (!isAdded()) { return; @@ -433,4 +459,47 @@ protected void setGridViewColumns(float scaleFactor) { public void markAsFavorite(String remotePath, boolean favorite) { mAdapter.markAsFavorite(remotePath, favorite); } + + final ActivityResultLauncher activityResult = + registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), intentResult -> { + if (Activity.RESULT_OK == intentResult.getResultCode() && intentResult.getData() != null) { + String albumName = intentResult.getData().getStringExtra(AlbumsFragment.ARG_SELECTED_ALBUM_NAME); + Log_OC.e(TAG, "Selected album name: " + albumName); + addFilesToAlbum(albumName); + } + }); + + public void addImagesToAlbum(Set checkedFiles) { + this.checkedFiles = checkedFiles; + if (isFromAlbum) { + addFilesToAlbum(null); + } else { + activityResult.launch(AlbumsPickerActivity.Companion.intentForPickingAlbum(requireActivity())); + } + } + + private void addFilesToAlbum(@Nullable String albumName) { + connectivityService.isNetworkAndServerAvailable(result -> { + if (result) { + if (checkedFiles == null || checkedFiles.isEmpty()) { + return; + } + final ArrayList paths = new ArrayList<>(checkedFiles.size()); + for (OCFile file : checkedFiles) { + paths.add(file.getRemotePath()); + } + checkedFiles = null; + if (!TextUtils.isEmpty(albumName)) { + mContainerActivity.getFileOperationsHelper().albumCopyFiles(paths, albumName); + } else { + Intent resultIntent = new Intent(); + resultIntent.putStringArrayListExtra(AlbumsPickerActivity.Companion.getEXTRA_MEDIA_FILES_PATH(), paths); + requireActivity().setResult(Activity.RESULT_OK, resultIntent); + requireActivity().finish(); + } + } else { + DisplayUtils.showSnackMessage(requireActivity(), getString(R.string.offline_mode)); + } + }); + } } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 828aca199a55..b80bd23f423c 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2023 TSI-mc + * SPDX-FileCopyrightText: 2023-2025 TSI-mc * SPDX-FileCopyrightText: 2018-2023 Tobias Kaminsky * SPDX-FileCopyrightText: 2022 Álvaro Brey * SPDX-FileCopyrightText: 2020 Joris Bodin @@ -500,7 +500,7 @@ public void registerFabListener() { Log_OC.w(TAG, "currentDir is null cannot open bottom sheet dialog"); return; } - + final OCFileListBottomSheetDialog dialog = new OCFileListBottomSheetDialog(fileActivity, this, deviceInfo, @@ -820,6 +820,11 @@ public boolean onCreateActionMode(ActionMode mode, Menu menu) { // hide FAB in multi selection mode setFabVisible(false); + if (OCFileListFragment.this instanceof GalleryFragment) { + final MenuItem addAlbumItem = menu.findItem(R.id.add_to_album); + addAlbumItem.setVisible(true); + } + getCommonAdapter().setMultiSelect(true); return true; } @@ -856,6 +861,10 @@ public boolean onActionItemClicked(ActionMode mode, MenuItem item) { final Set checkedFiles = getCommonAdapter().getCheckedItems(); if (item.getItemId() == R.id.custom_menu_placeholder_item) { openActionsMenu(getCommonAdapter().getFilesCount(), checkedFiles, false); + } else if (item.getItemId() == R.id.add_to_album){ + if (OCFileListFragment.this instanceof GalleryFragment galleryFragment) { + galleryFragment.addImagesToAlbum(checkedFiles); + } } return true; } @@ -1587,7 +1596,7 @@ private void updateLayout() { invalidateActionMode(); } - + private void updateSortButton() { if (mSortButton != null) { FileSortOrder sortOrder; @@ -2185,6 +2194,14 @@ public void setFabVisible(final boolean visible) { return; } + // to hide the fab if user is on Albums Fragment + if (requireActivity() instanceof FileDisplayActivity fda + && (fda.isAlbumsFragment() + || fda.isAlbumItemsFragment())) { + mFabMain.hide(); + return; + } + final var activity = getActivity(); if (activity == null) { return; diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt new file mode 100644 index 000000000000..aef3dd957667 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -0,0 +1,972 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.fragment.albums + +import android.annotation.SuppressLint +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.content.res.Configuration +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import android.view.ActionMode +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import android.widget.AbsListView +import androidx.activity.result.ActivityResult +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts +import androidx.annotation.DrawableRes +import androidx.annotation.IdRes +import androidx.annotation.StringRes +import androidx.annotation.VisibleForTesting +import androidx.core.content.ContextCompat +import androidx.core.view.MenuHost +import androidx.core.view.MenuProvider +import androidx.drawerlayout.widget.DrawerLayout +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.GridLayoutManager +import com.nextcloud.client.account.User +import com.nextcloud.client.account.UserAccountManager +import com.nextcloud.client.di.Injectable +import com.nextcloud.client.network.ClientFactory +import com.nextcloud.client.network.ClientFactory.CreationException +import com.nextcloud.client.preferences.AppPreferences +import com.nextcloud.client.utils.Throttler +import com.nextcloud.ui.albumItemActions.AlbumItemActionsBottomSheet +import com.nextcloud.ui.fileactions.FileActionsBottomSheet.Companion.newInstance +import com.nextcloud.utils.extensions.getTypedActivity +import com.nextcloud.utils.extensions.isDialogFragmentReady +import com.owncloud.android.R +import com.owncloud.android.databinding.ListFragmentBinding +import com.owncloud.android.datamodel.OCFile +import com.owncloud.android.datamodel.SyncedFolderProvider +import com.owncloud.android.datamodel.ThumbnailsCacheManager +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.lib.resources.albums.ReadAlbumItemsRemoteOperation +import com.owncloud.android.lib.resources.albums.RemoveAlbumFileRemoteOperation +import com.owncloud.android.lib.resources.albums.ToggleAlbumFavoriteRemoteOperation +import com.owncloud.android.ui.activity.AlbumsPickerActivity +import com.owncloud.android.ui.activity.FileActivity +import com.owncloud.android.ui.activity.FileDisplayActivity +import com.owncloud.android.ui.adapter.GalleryAdapter +import com.owncloud.android.ui.dialog.CreateAlbumDialogFragment +import com.owncloud.android.ui.events.FavoriteEvent +import com.owncloud.android.ui.fragment.FileFragment +import com.owncloud.android.ui.activity.AlbumsPickerActivity.Companion.intentForPickingMediaFiles +import com.owncloud.android.ui.interfaces.OCFileListFragmentInterface +import com.owncloud.android.ui.preview.PreviewImageFragment +import com.owncloud.android.ui.preview.PreviewMediaActivity +import com.owncloud.android.utils.DisplayUtils +import com.owncloud.android.utils.ErrorMessageAdapter +import com.owncloud.android.utils.FileStorageUtils +import com.owncloud.android.utils.theme.ViewThemeUtils +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode +import java.util.Optional +import javax.inject.Inject + +class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { + + private var adapter: GalleryAdapter? = null + private var client: OwnCloudClient? = null + private var optionalUser: Optional? = null + + private lateinit var binding: ListFragmentBinding + + @Inject + lateinit var viewThemeUtils: ViewThemeUtils + + @Inject + lateinit var accountManager: UserAccountManager + + @Inject + lateinit var clientFactory: ClientFactory + + @Inject + lateinit var preferences: AppPreferences + + @Inject + lateinit var syncedFolderProvider: SyncedFolderProvider + + @Inject + lateinit var throttler: Throttler + + private var mContainerActivity: FileFragment.ContainerActivity? = null + + private var columnSize = 0 + + private lateinit var albumName: String + private var isNewAlbum: Boolean = false + + private var mMultiChoiceModeListener: MultiChoiceModeListener? = null + + override fun onAttach(context: Context) { + super.onAttach(context) + try { + mContainerActivity = context as FileFragment.ContainerActivity + } catch (e: ClassCastException) { + throw IllegalArgumentException( + context.toString() + " must implement " + + FileFragment.ContainerActivity::class.java.simpleName, e + ) + } + arguments?.let { + albumName = it.getString(ARG_ALBUM_NAME) ?: "" + isNewAlbum = it.getBoolean(ARG_IS_NEW_ALBUM) + } + } + + override fun onDetach() { + mContainerActivity = null + super.onDetach() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + columnSize = if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { + MAX_COLUMN_SIZE_LANDSCAPE + } else { + MAX_COLUMN_SIZE_PORTRAIT + } + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + binding = ListFragmentBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + optionalUser = Optional.of(accountManager.user) + createMenu() + setupContainingList() + setupContent() + + // if fragment is opened when new albums is created + // then open gallery to choose media to add + if (isNewAlbum) { + openGalleryToAddMedia() + } + } + + private fun setUpActionMode() { + if (mMultiChoiceModeListener != null) return + + mMultiChoiceModeListener = MultiChoiceModeListener( + requireActivity(), + adapter, + viewThemeUtils + ) { filesCount, checkedFiles -> openActionsMenu(filesCount, checkedFiles) } + (requireActivity() as FileDisplayActivity).addDrawerListener(mMultiChoiceModeListener) + } + + private fun createMenu() { + val menuHost: MenuHost = requireActivity() + menuHost.addMenuProvider(object : MenuProvider { + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menu.clear() // important: clears any existing activity menu + menuInflater.inflate(R.menu.fragment_album_items, menu) + } + + override fun onMenuItemSelected(menuItem: MenuItem): Boolean { + return when (menuItem.itemId) { + R.id.action_three_dot_icon -> { + openAlbumActionsMenu() + true + } + + R.id.action_add_more_photos -> { + // open Gallery fragment as selection then add items to current album + openGalleryToAddMedia() + true + } + + else -> false + } + } + + override fun onPrepareMenu(menu: Menu) { + super.onPrepareMenu(menu) + val moreMenu = menu.findItem(R.id.action_three_dot_icon) + moreMenu.icon?.let { + moreMenu.setIcon( + viewThemeUtils.platform.colorDrawable( + it, + ContextCompat.getColor(requireActivity(), R.color.black) + ) + ) + } + val add = menu.findItem(R.id.action_add_more_photos) + add.icon?.let { + add.setIcon( + viewThemeUtils.platform.colorDrawable( + it, + ContextCompat.getColor(requireActivity(), R.color.black) + ) + ) + } + } + }, viewLifecycleOwner, Lifecycle.State.RESUMED) + } + + private fun openAlbumActionsMenu() { + throttler.run("overflowClick") { + val supportFragmentManager = requireActivity().supportFragmentManager + + AlbumItemActionsBottomSheet.newInstance() + .setResultListener( + supportFragmentManager, + this + ) { id: Int -> + onAlbumActionChosen(id) + } + .show(supportFragmentManager, "album_actions") + } + } + + private fun onAlbumActionChosen(@IdRes itemId: Int): Boolean { + return when (itemId) { + // action to rename album + R.id.action_rename_file -> { + CreateAlbumDialogFragment.newInstance(albumName) + .show( + requireActivity().supportFragmentManager, + CreateAlbumDialogFragment.TAG + ) + true + } + + // action to delete album + R.id.action_delete -> { + mContainerActivity?.getFileOperationsHelper()?.removeAlbum(albumName); + true + } + + else -> false + } + } + + private fun setupContent() { + binding.listRoot.setEmptyView(binding.emptyList.emptyListView) + val layoutManager = GridLayoutManager(requireContext(), 1) + binding.listRoot.layoutManager = layoutManager + fetchAndSetData() + } + + private fun setupContainingList() { + viewThemeUtils.androidx.themeSwipeRefreshLayout(binding.swipeContainingList) + binding.swipeContainingList.setOnRefreshListener { + binding.swipeContainingList.isRefreshing = true + fetchAndSetData() + } + } + + @VisibleForTesting + fun populateList(albums: List) { + // exit action mode on data refresh + mMultiChoiceModeListener?.exitSelectionMode() + + if (requireActivity() is FileDisplayActivity) { + (requireActivity() as FileDisplayActivity).setMainFabVisible(false) + } + initializeAdapter() + adapter?.showAlbumItems(albums) + } + + private fun fetchAndSetData() { + mMultiChoiceModeListener?.exitSelectionMode() + initializeAdapter() + setEmptyListLoadingMessage() + lifecycleScope.launch(Dispatchers.IO) { + val getRemoteNotificationOperation = ReadAlbumItemsRemoteOperation(albumName) + val result = client?.let { getRemoteNotificationOperation.execute(it) } + val ocFileList = mutableListOf() + + if (result?.isSuccess == true && result.resultData != null) { + for (remoteFile in result.getResultData()) { + var ocFile = mContainerActivity?.storageManager?.getFileByLocalId(remoteFile.localId) + if (ocFile == null) { + ocFile = FileStorageUtils.fillOCFile(remoteFile) + } else { + // required: as OCFile will only contains file_name.png not with /albums/album_name/file_name + // to fix this we have to get the remote path from remote file and assign to OCFile + ocFile.remotePath = remoteFile.remotePath + ocFile.decryptedRemotePath = remoteFile.remotePath + } + ocFileList.add(ocFile!!) + } + } + withContext(Dispatchers.Main) { + if (result?.isSuccess == true && result.resultData != null) { + if (result.resultData.isEmpty()) { + setMessageForEmptyList( + R.string.file_list_empty_headline_server_search, + resources.getString(R.string.file_list_empty_gallery), + R.drawable.file_image, + false + ) + } + populateList(ocFileList) + } else { + Log_OC.d(TAG, result?.logMessage) + // show error + setMessageForEmptyList( + R.string.file_list_empty_headline_server_search, + resources.getString(R.string.file_list_empty_gallery), + R.drawable.file_image, + false + ) + } + hideRefreshLayoutLoader() + } + } + } + + private fun hideRefreshLayoutLoader() { + binding.swipeContainingList.isRefreshing = false + } + + private fun setEmptyListLoadingMessage() { + val fileActivity = this.getTypedActivity(FileActivity::class.java) + fileActivity?.connectivityService?.isNetworkAndServerAvailable { result: Boolean? -> + if (!result!!) return@isNetworkAndServerAvailable + binding.emptyList.emptyListViewHeadline.setText(R.string.file_list_loading) + binding.emptyList.emptyListViewText.text = "" + binding.emptyList.emptyListIcon.visibility = View.GONE + } + } + + private fun initializeClient() { + if (client == null && optionalUser?.isPresent == true) { + try { + val user = optionalUser?.get() + client = clientFactory.create(user) + } catch (e: CreationException) { + Log_OC.e(TAG, "Error initializing client", e) + } + } + } + + private fun initializeAdapter() { + initializeClient() + if (adapter == null) { + adapter = GalleryAdapter( + requireContext(), + accountManager.user, + this, + preferences, + mContainerActivity!!, + viewThemeUtils, + columnSize, + ThumbnailsCacheManager.getThumbnailDimension() + ) + adapter?.setHasStableIds(true) + setUpActionMode() + } + binding.listRoot.adapter = adapter + + lastMediaItemPosition?.let { + binding.listRoot.layoutManager?.scrollToPosition(it) + } + } + + private fun setMessageForEmptyList( + @StringRes headline: Int, message: String, + @DrawableRes icon: Int, tintIcon: Boolean + ) { + binding.emptyList.emptyListViewHeadline.setText(headline) + binding.emptyList.emptyListViewText.text = message + + if (tintIcon) { + if (context != null) { + binding.emptyList.emptyListIcon.setImageDrawable( + viewThemeUtils.platform.tintPrimaryDrawable(requireContext(), icon) + ) + } + } else { + binding.emptyList.emptyListIcon.setImageResource(icon) + } + + binding.emptyList.emptyListIcon.visibility = View.VISIBLE + binding.emptyList.emptyListViewText.visibility = View.VISIBLE + } + + override fun onResume() { + super.onResume() + if (requireActivity() is FileDisplayActivity) { + (requireActivity() as FileDisplayActivity).setupToolbar() + (requireActivity() as FileDisplayActivity).supportActionBar?.let { actionBar -> + viewThemeUtils.files.themeActionBar(requireContext(), actionBar, albumName) + } + (requireActivity() as FileDisplayActivity).showSortListGroup(false) + (requireActivity() as FileDisplayActivity).setMainFabVisible(false) + + // clear the subtitle while navigating to any other screen from Media screen + (requireActivity() as FileDisplayActivity).clearToolbarSubtitle() + } + } + + override fun onPause() { + super.onPause() + adapter?.cancelAllPendingTasks() + } + + @SuppressLint("NotifyDataSetChanged") + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + + if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { + columnSize = MAX_COLUMN_SIZE_LANDSCAPE + } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { + columnSize = MAX_COLUMN_SIZE_PORTRAIT + } + adapter?.changeColumn(columnSize) + adapter?.notifyDataSetChanged() + } + + override fun onDestroyView() { + super.onDestroyView() + lastMediaItemPosition = 0 + } + + override fun getColumnsCount(): Int { + return columnSize + } + + override fun onShareIconClick(file: OCFile?) { + // nothing to do here + } + + override fun showShareDetailView(file: OCFile?) { + // nothing to do here + } + + override fun showActivityDetailView(file: OCFile?) { + // nothing to do here + } + + override fun onOverflowIconClicked(file: OCFile?, view: View?) { + // nothing to do here + } + + override fun onItemClicked(file: OCFile) { + if (adapter?.isMultiSelect() == true) { + toggleItemToCheckedList(file) + } else { + if (PreviewImageFragment.canBePreviewed(file)) { + (mContainerActivity as FileDisplayActivity).startImagePreview(file, !file.isDown) + } else if (file.isDown) { + if (PreviewMediaActivity.canBePreviewed(file)) { + (mContainerActivity as FileDisplayActivity).startMediaPreview(file, 0, true, true, false, true) + } else { + mContainerActivity?.getFileOperationsHelper()?.openFile(file) + } + } else { + Log_OC.d(TAG, "Couldn't handle item click") + } + } + } + + override fun onLongItemClicked(file: OCFile): Boolean { + // Create only once instance of action mode + if (mMultiChoiceModeListener?.mActiveActionMode != null) { + toggleItemToCheckedList(file) + } else { + requireActivity().startActionMode(mMultiChoiceModeListener) + adapter?.addCheckedFile(file) + } + mMultiChoiceModeListener?.updateActionModeFile(file) + return true + } + + /** + * Will toggle a file selection status from the action mode + * + * @param file The concerned OCFile by the selection/deselection + */ + private fun toggleItemToCheckedList(file: OCFile) { + adapter?.run { + if (isCheckedFile(file)) { + removeCheckedFile(file) + } else { + addCheckedFile(file) + } + } + mMultiChoiceModeListener?.updateActionModeFile(file) + } + + override fun isLoading(): Boolean { + return false + } + + override fun onHeaderClicked() { + // nothing to do here + } + + fun onAlbumRenamed(newAlbumName: String) { + albumName = newAlbumName + if (requireActivity() is FileDisplayActivity) { + (requireActivity() as FileDisplayActivity).updateActionBarTitleAndHomeButtonByString(albumName) + } + } + + fun onAlbumDeleted() { + requireActivity().supportFragmentManager.popBackStack() + } + + private fun openActionsMenu(filesCount: Int, checkedFiles: Set) { + throttler.run("overflowClick") { + var toHide: MutableList? = ArrayList() + for (file in checkedFiles) { + if (file.isOfflineOperation) { + toHide = ArrayList( + listOf( + R.id.action_favorite, + R.id.action_move_or_copy, + R.id.action_sync_file, + R.id.action_encrypted, + R.id.action_unset_encrypted, + R.id.action_edit, + R.id.action_download_file, + R.id.action_export_file, + R.id.action_set_as_wallpaper + ) + ) + break + } + } + + toHide?.apply { + addAll( + listOf( + R.id.action_move_or_copy, + R.id.action_sync_file, + R.id.action_encrypted, + R.id.action_unset_encrypted, + R.id.action_edit, + R.id.action_download_file, + R.id.action_export_file, + R.id.action_set_as_wallpaper, + R.id.action_send_file, + R.id.action_send_share_file, + R.id.action_see_details, + R.id.action_rename_file, + R.id.action_pin_to_homescreen + ) + ) + } + + val childFragmentManager = childFragmentManager + val actionBottomSheet = newInstance(filesCount, checkedFiles, true, toHide) + .setResultListener( + childFragmentManager, this + ) { id: Int -> onFileActionChosen(id, checkedFiles) } + if (this.isDialogFragmentReady()) { + actionBottomSheet.show(childFragmentManager, "actions") + } + } + } + + private fun onFileActionChosen(@IdRes itemId: Int, checkedFiles: Set): Boolean { + if (checkedFiles.isEmpty()) { + return false + } + + when (itemId) { + R.id.action_remove_file -> { + onRemoveFileOperation(checkedFiles) + return true + } + + R.id.action_favorite -> { + mContainerActivity?.fileOperationsHelper?.toggleFavoriteFiles(checkedFiles, true) + return true + } + + R.id.action_unset_favorite -> { + mContainerActivity?.fileOperationsHelper?.toggleFavoriteFiles(checkedFiles, false) + return true + } + + R.id.action_select_all_action_menu -> { + selectAllFiles(true) + return true + } + + R.id.action_deselect_all_action_menu -> { + selectAllFiles(false) + return true + } + + else -> return true + } + } + + /** + * De-/select all elements in the current list view. + * + * @param select `true` to select all, `false` to deselect all + */ + @SuppressLint("NotifyDataSetChanged") + private fun selectAllFiles(select: Boolean) { + adapter?.let { + it.selectAll(select) + it.notifyDataSetChanged() + mMultiChoiceModeListener?.invalidateActionMode() + } + } + + @Subscribe(threadMode = ThreadMode.BACKGROUND) + fun onMessageEvent(event: FavoriteEvent) { + try { + val user = accountManager.user + val client = clientFactory.create(user) + val toggleFavoriteOperation = ToggleAlbumFavoriteRemoteOperation( + event.shouldFavorite, event.remotePath + ) + val remoteOperationResult = toggleFavoriteOperation.execute(client) + + if (remoteOperationResult.isSuccess) { + Handler(Looper.getMainLooper()).post { + mMultiChoiceModeListener?.exitSelectionMode() + } + adapter?.markAsFavorite(event.remotePath, event.shouldFavorite) + } + } catch (e: CreationException) { + Log_OC.e(TAG, "Error processing event", e) + } + } + + private fun onRemoveFileOperation(files: Collection) { + lifecycleScope.launch(Dispatchers.IO) { + val removeFailedFiles = mutableListOf() + try { + val user = accountManager.user + val client = clientFactory.create(user) + withContext(Dispatchers.Main) { + showDialog(true) + } + if (files.size == 1) { + val removeAlbumFileRemoteOperation = RemoveAlbumFileRemoteOperation( + files.first().remotePath + ) + val remoteOperationResult = removeAlbumFileRemoteOperation.execute(client) + + if (!remoteOperationResult.isSuccess) { + withContext(Dispatchers.Main) { + DisplayUtils.showSnackMessage( + requireActivity(), ErrorMessageAdapter.getErrorCauseMessage( + remoteOperationResult, removeAlbumFileRemoteOperation, + resources + ) + ) + } + } + } else { + for (file in files) { + val removeAlbumFileRemoteOperation = RemoveAlbumFileRemoteOperation( + file.remotePath + ) + val remoteOperationResult = removeAlbumFileRemoteOperation.execute(client) + + if (!remoteOperationResult.isSuccess) { + removeFailedFiles.add(file) + } + } + } + } catch (e: CreationException) { + Log_OC.e(TAG, "Error processing event", e) + } + + Log_OC.d(TAG, "Files removed: ${removeFailedFiles.size}") + + withContext(Dispatchers.Main) { + if (removeFailedFiles.isNotEmpty()) { + DisplayUtils.showSnackMessage( + requireActivity(), requireContext().resources.getString(R.string.album_delete_failed_message) + ) + } + showDialog(false) + + // refresh data + fetchAndSetData() + } + } + } + + private fun showDialog(isShow: Boolean) { + if (requireActivity() is FileDisplayActivity) { + if (isShow) (requireActivity() as FileDisplayActivity).showLoadingDialog( + requireContext().resources.getString( + R.string.wait_a_moment + ) + ) + else (requireActivity() as FileDisplayActivity).dismissLoadingDialog() + } + } + + override fun onStart() { + super.onStart() + EventBus.getDefault().register(this) + } + + override fun onStop() { + EventBus.getDefault().unregister(this) + super.onStop() + } + + /** + * Handler for multiple selection mode. + * + * + * Manages input from the user when one or more files or folders are selected in the list. + * + * + * Also listens to changes in navigation drawer to hide and recover multiple selection when it's opened and closed. + */ + internal class MultiChoiceModeListener( + val activity: FragmentActivity, + val adapter: GalleryAdapter?, + val viewThemeUtils: ViewThemeUtils, + val openActionsMenu: (Int, Set) -> Unit + ) : AbsListView.MultiChoiceModeListener, DrawerLayout.DrawerListener { + + var mActiveActionMode: ActionMode? = null + private var mIsActionModeNew = false + + /** + * True when action mode is finished because the drawer was opened + */ + private var mActionModeClosedByDrawer = false + + /** + * Selected items in list when action mode is closed by drawer + */ + private val mSelectionWhenActionModeClosedByDrawer: MutableSet = HashSet() + + override fun onDrawerSlide(drawerView: View, slideOffset: Float) { + // nothing to do + } + + override fun onDrawerOpened(drawerView: View) { + // nothing to do + } + + /** + * When the navigation drawer is closed, action mode is recovered in the same state as was when the drawer was + * (started to be) opened. + * + * @param drawerView Navigation drawer just closed. + */ + override fun onDrawerClosed(drawerView: View) { + if (mActionModeClosedByDrawer && mSelectionWhenActionModeClosedByDrawer.size > 0) { + activity.startActionMode(this) + + adapter?.setCheckedItem(mSelectionWhenActionModeClosedByDrawer) + + mActiveActionMode?.invalidate() + + mSelectionWhenActionModeClosedByDrawer.clear() + } + } + + /** + * If the action mode is active when the navigation drawer starts to move, the action mode is closed and the + * selection stored to be recovered when the drawer is closed. + * + * @param newState One of STATE_IDLE, STATE_DRAGGING or STATE_SETTLING. + */ + override fun onDrawerStateChanged(newState: Int) { + if (DrawerLayout.STATE_DRAGGING == newState && mActiveActionMode != null) { + adapter?.let { + mSelectionWhenActionModeClosedByDrawer.addAll( + it.getCheckedItems() + ) + } + + mActiveActionMode?.finish() + mActionModeClosedByDrawer = true + } + } + + /** + * Update action mode bar when an item is selected / unselected in the list + */ + override fun onItemCheckedStateChanged(mode: ActionMode, position: Int, id: Long, checked: Boolean) { + // nothing to do here + } + + /** + * Load menu and customize UI when action mode is started. + */ + override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean { + mActiveActionMode = mode + // Determine if actionMode is "new" or not (already affected by item-selection) + mIsActionModeNew = true + + // fake menu to be able to use bottom sheet instead + val inflater: MenuInflater = activity.menuInflater + inflater.inflate(R.menu.custom_menu_placeholder, menu) + val item = menu.findItem(R.id.custom_menu_placeholder_item) + item.icon?.let { + item.setIcon( + viewThemeUtils.platform.colorDrawable( + it, + ContextCompat.getColor(activity, R.color.white) + ) + ) + } + + mode.invalidate() + + // set actionMode color + viewThemeUtils.platform.colorStatusBar( + activity, + ContextCompat.getColor(activity, R.color.action_mode_background) + ) + + adapter?.setMultiSelect(true) + return true + } + + /** + * Updates available action in menu depending on current selection. + */ + override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean { + val checkedFiles: Set = adapter?.getCheckedItems() ?: emptySet() + val checkedCount = checkedFiles.size + val title: String = + activity.resources.getQuantityString(R.plurals.items_selected_count, checkedCount, checkedCount) + mode.title = title + + // Determine if we need to finish the action mode because there are no items selected + if (checkedCount == 0 && !mIsActionModeNew) { + exitSelectionMode() + } + + return true + } + + /** + * Exits the multi file selection mode. + */ + fun exitSelectionMode() { + mActiveActionMode?.run { + finish() + } + } + + /** + * Will update (invalidate) the action mode adapter/mode to refresh an item selection change + * + * @param file The concerned OCFile to refresh in adapter + */ + fun updateActionModeFile(file: OCFile) { + mIsActionModeNew = false + mActiveActionMode?.let { + it.invalidate() + adapter?.notifyItemChanged(file) + } + } + + fun invalidateActionMode() { + mActiveActionMode?.invalidate() + } + + /** + * Starts the corresponding action when a menu item is tapped by the user. + */ + override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean { + adapter?.let { + val checkedFiles: Set = it.getCheckedItems() + if (item.itemId == R.id.custom_menu_placeholder_item) { + openActionsMenu(it.getFilesCount(), checkedFiles) + } + return true + } + return false + } + + /** + * Restores UI. + */ + override fun onDestroyActionMode(mode: ActionMode) { + mActiveActionMode = null + + viewThemeUtils.platform.resetStatusBar(activity) + + adapter?.setMultiSelect(false) + adapter?.clearCheckedItems() + } + } + + private val activityResult: ActivityResultLauncher = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { intentResult: ActivityResult -> + if (Activity.RESULT_OK == intentResult.resultCode) { + intentResult.data?.let { + val paths = it.getStringArrayListExtra(AlbumsPickerActivity.EXTRA_MEDIA_FILES_PATH) + paths?.let { p -> + addMediaToAlbum(p.toMutableList()) + } + } + } + } + + private fun openGalleryToAddMedia() { + activityResult.launch(intentForPickingMediaFiles(requireActivity())) + } + + private fun addMediaToAlbum(filePaths: MutableList) { + viewLifecycleOwner.lifecycleScope.launch { + // short delay to let other transactions finish + // else showLoadingDialog will throw exception + delay(100) + mContainerActivity?.fileOperationsHelper?.albumCopyFiles(filePaths, albumName) + } + } + + fun refreshData() { + fetchAndSetData() + } + + companion object { + val TAG: String = AlbumItemsFragment::class.java.simpleName + private const val ARG_ALBUM_NAME = "album_name" + private const val ARG_IS_NEW_ALBUM = "is_new_album" + var lastMediaItemPosition: Int? = null + + private const val MAX_COLUMN_SIZE_LANDSCAPE: Int = 5 + private const val MAX_COLUMN_SIZE_PORTRAIT: Int = 2 + + fun newInstance(albumName: String, isNewAlbum: Boolean = false): AlbumItemsFragment { + val args = Bundle() + + val fragment = AlbumItemsFragment() + fragment.arguments = args + args.putString(ARG_ALBUM_NAME, albumName) + args.putBoolean(ARG_IS_NEW_ALBUM, isNewAlbum) + return fragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt new file mode 100644 index 000000000000..4f0ec82a9386 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt @@ -0,0 +1,335 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.ui.fragment.albums + +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.content.res.Configuration +import android.os.Bundle +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import androidx.annotation.VisibleForTesting +import androidx.core.content.res.ResourcesCompat +import androidx.core.view.MenuHost +import androidx.core.view.MenuProvider +import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import com.nextcloud.client.account.User +import com.nextcloud.client.account.UserAccountManager +import com.nextcloud.client.di.Injectable +import com.nextcloud.client.network.ClientFactory +import com.nextcloud.client.network.ClientFactory.CreationException +import com.nextcloud.client.preferences.AppPreferences +import com.owncloud.android.R +import com.owncloud.android.databinding.AlbumsFragmentBinding +import com.owncloud.android.datamodel.SyncedFolderProvider +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.lib.resources.albums.PhotoAlbumEntry +import com.owncloud.android.lib.resources.albums.ReadAlbumsRemoteOperation +import com.owncloud.android.ui.activity.FileDisplayActivity +import com.owncloud.android.ui.adapter.albums.AlbumFragmentInterface +import com.owncloud.android.ui.adapter.albums.AlbumsAdapter +import com.owncloud.android.ui.dialog.CreateAlbumDialogFragment +import com.owncloud.android.ui.fragment.FileFragment +import com.owncloud.android.utils.theme.ViewThemeUtils +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.util.Optional +import javax.inject.Inject + +class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { + + private var adapter: AlbumsAdapter? = null + private var client: OwnCloudClient? = null + private var optionalUser: Optional? = null + + private lateinit var binding: AlbumsFragmentBinding + + @Inject + lateinit var viewThemeUtils: ViewThemeUtils + + @Inject + lateinit var accountManager: UserAccountManager + + @Inject + lateinit var clientFactory: ClientFactory + + @Inject + lateinit var preferences: AppPreferences + + @Inject + lateinit var syncedFolderProvider: SyncedFolderProvider + + private var mContainerActivity: FileFragment.ContainerActivity? = null + + private var isGridView = true + private var maxColumnSize = 2 + private var isSelectionMode = false + + override fun onAttach(context: Context) { + super.onAttach(context) + try { + mContainerActivity = context as FileFragment.ContainerActivity + } catch (e: ClassCastException) { + throw IllegalArgumentException( + context.toString() + " must implement " + + FileFragment.ContainerActivity::class.java.simpleName, e + ) + } + arguments?.let { + isSelectionMode = it.getBoolean(ARG_IS_SELECTION_MODE, false) + if (isSelectionMode) { + isGridView = false + } + } + } + + override fun onDetach() { + mContainerActivity = null + super.onDetach() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + maxColumnSize = if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { + 4 + } else { + 2 + } + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + binding = AlbumsFragmentBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + optionalUser = Optional.of(accountManager.user) + createMenu() + setupContainingList() + setupContent() + binding.createAlbum.setOnClickListener { + showCreateAlbumDialog() + } + } + + private fun createMenu() { + val menuHost: MenuHost = requireActivity() + menuHost.addMenuProvider(object : MenuProvider { + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menu.clear() // important: clears any existing activity menu + menuInflater.inflate(R.menu.fragment_create_album, menu) + } + + override fun onMenuItemSelected(menuItem: MenuItem): Boolean { + return when (menuItem.itemId) { + R.id.action_create_new_album -> { + showCreateAlbumDialog() + true + } + + else -> false + } + } + }, viewLifecycleOwner, Lifecycle.State.RESUMED) + } + + private fun showCreateAlbumDialog() { + CreateAlbumDialogFragment.newInstance() + .show( + requireActivity().supportFragmentManager, + CreateAlbumDialogFragment.TAG + ) + } + + private fun setupContent() { + binding.listRoot.setHasFixedSize(true) + if (isGridView) { + val layoutManager = GridLayoutManager(requireContext(), maxColumnSize) + binding.listRoot.layoutManager = layoutManager + } else { + val layoutManager = LinearLayoutManager(requireContext()) + binding.listRoot.layoutManager = layoutManager + } + fetchAndSetData() + } + + private fun setupContainingList() { + viewThemeUtils.androidx.themeSwipeRefreshLayout(binding.swipeContainingList) + binding.swipeContainingList.setOnRefreshListener { + fetchAndSetData() + } + } + + @VisibleForTesting + fun populateList(albums: List?) { + if (requireActivity() is FileDisplayActivity) { + (requireActivity() as FileDisplayActivity).setMainFabVisible(false) + } + initializeAdapter() + adapter?.setAlbumItems(albums) + } + + private fun fetchAndSetData() { + binding.swipeContainingList.isRefreshing = true + initializeAdapter() + updateEmptyView(false) + lifecycleScope.launch(Dispatchers.IO) { + val getRemoteNotificationOperation = ReadAlbumsRemoteOperation() + val result = client?.let { getRemoteNotificationOperation.execute(it) } + withContext(Dispatchers.Main) { + if (result?.isSuccess == true && result.resultData != null) { + if (result.resultData.isEmpty()) { + updateEmptyView(true) + } + populateList(result.resultData) + } else { + Log_OC.d(TAG, result?.logMessage) + // show error + updateEmptyView(true) + } + hideRefreshLayoutLoader() + } + } + } + + private fun hideRefreshLayoutLoader() { + binding.swipeContainingList.isRefreshing = false + } + + private fun initializeClient() { + if (client == null && optionalUser?.isPresent == true) { + try { + val user = optionalUser?.get() + client = clientFactory.create(user) + } catch (e: CreationException) { + Log_OC.e(TAG, "Error initializing client", e) + } + } + } + + private fun initializeAdapter() { + initializeClient() + if (adapter == null) { + adapter = AlbumsAdapter( + requireContext(), + mContainerActivity?.storageManager, + accountManager.user, + this, + syncedFolderProvider, + preferences, + viewThemeUtils, + isGridView + ) + } + binding.listRoot.adapter = adapter + } + + private fun updateEmptyView(isEmpty: Boolean) { + binding.emptyViewLayout.visibility = if (isEmpty) View.VISIBLE else View.GONE + binding.listRoot.visibility = if (isEmpty) View.GONE else View.VISIBLE + } + + override fun onResume() { + super.onResume() + if (isSelectionMode) { + binding.root.setBackgroundColor(ResourcesCompat.getColor(resources, R.color.bg_default, null)) + } + if (requireActivity() is FileDisplayActivity) { + (requireActivity() as FileDisplayActivity).setupToolbar() + (requireActivity() as FileDisplayActivity).supportActionBar?.let { actionBar -> + viewThemeUtils.files.themeActionBar( + requireContext(), + actionBar, + R.string.drawer_item_album, + isMenu = true + ) + } + (requireActivity() as FileDisplayActivity).showSortListGroup(false) + (requireActivity() as FileDisplayActivity).setMainFabVisible(false) + + // clear the subtitle while navigating to any other screen from Media screen + (requireActivity() as FileDisplayActivity).clearToolbarSubtitle() + } + } + + fun navigateToAlbumItemsFragment(albumName: String, isNewAlbum: Boolean = false) { + requireActivity().supportFragmentManager.beginTransaction().apply { + addToBackStack(null) + replace( + R.id.left_fragment_container, + AlbumItemsFragment.newInstance(albumName, isNewAlbum = isNewAlbum), + AlbumItemsFragment.TAG + ) + commit() + } + } + + fun refreshAlbums() { + fetchAndSetData() + } + + override fun onPause() { + super.onPause() + adapter?.cancelAllPendingTasks() + } + + private val isGridEnabled: Boolean + get() { + return binding.listRoot.layoutManager is GridLayoutManager + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + if (isGridEnabled) { + if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { + maxColumnSize = 4 + } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { + maxColumnSize = 2 + } + (binding.listRoot.layoutManager as GridLayoutManager).setSpanCount(maxColumnSize) + } + } + + companion object { + val TAG: String = AlbumsFragment::class.java.simpleName + private const val ARG_IS_SELECTION_MODE = "is_selection_mode" + const val ARG_SELECTED_ALBUM_NAME = "selected_album_name" + + fun newInstance(isSelectionMode: Boolean = false): AlbumsFragment { + val args = Bundle() + args.putBoolean(ARG_IS_SELECTION_MODE, isSelectionMode) + val fragment = AlbumsFragment() + fragment.arguments = args + return fragment + } + } + + override fun onItemClick(album: PhotoAlbumEntry) { + if (isSelectionMode) { + val resultIntent = Intent().apply { + putExtra(ARG_SELECTED_ALBUM_NAME, album.albumName) + } + requireActivity().setResult(Activity.RESULT_OK, resultIntent) + requireActivity().finish() + return + } + navigateToAlbumItemsFragment(album.albumName) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java b/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java index b071a92a9eff..af19f239ba40 100755 --- a/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java +++ b/app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2023 TSI-mc + * SPDX-FileCopyrightText: 2023-2025 TSI-mc * SPDX-FileCopyrightText: 2020 Chris Narkiewicz * SPDX-FileCopyrightText: 2018-2020 Tobias Kaminsky * SPDX-FileCopyrightText: 2018-2020 Andy Scherzinger @@ -1039,6 +1039,55 @@ public void moveOrCopyFiles(String action, final List filePaths, final O fileActivity.showLoadingDialog(fileActivity.getString(R.string.wait_a_moment)); } + public void createAlbum(String albumName) { + // Create Album + Intent service = new Intent(fileActivity, OperationsService.class); + service.setAction(OperationsService.ACTION_CREATE_ALBUM); + service.putExtra(OperationsService.EXTRA_ACCOUNT, fileActivity.getAccount()); + service.putExtra(OperationsService.EXTRA_ALBUM_NAME, albumName); + mWaitingForOpId = fileActivity.getOperationsServiceBinder().queueNewOperation(service); + + fileActivity.showLoadingDialog(fileActivity.getString(R.string.wait_a_moment)); + } + + public void albumCopyFiles(final List filePaths, final String targetFolder) { + if (filePaths == null || filePaths.isEmpty()) { + return; + } + + for (String path : filePaths) { + Intent service = new Intent(fileActivity, OperationsService.class); + service.setAction(OperationsService.ACTION_ALBUM_COPY_FILE); + service.putExtra(OperationsService.EXTRA_NEW_PARENT_PATH, targetFolder); + service.putExtra(OperationsService.EXTRA_REMOTE_PATH, path); + service.putExtra(OperationsService.EXTRA_ACCOUNT, fileActivity.getAccount()); + mWaitingForOpId = fileActivity.getOperationsServiceBinder().queueNewOperation(service); + } + fileActivity.showLoadingDialog(fileActivity.getString(R.string.wait_a_moment)); + } + + public void renameAlbum(String oldAlbumName, String newAlbumName) { + Intent service = new Intent(fileActivity, OperationsService.class); + + service.setAction(OperationsService.ACTION_RENAME_ALBUM); + service.putExtra(OperationsService.EXTRA_ACCOUNT, fileActivity.getAccount()); + service.putExtra(OperationsService.EXTRA_REMOTE_PATH, oldAlbumName); + service.putExtra(OperationsService.EXTRA_NEWNAME, newAlbumName); + mWaitingForOpId = fileActivity.getOperationsServiceBinder().queueNewOperation(service); + + fileActivity.showLoadingDialog(fileActivity.getString(R.string.wait_a_moment)); + } + + public void removeAlbum(String albumName) { + Intent service = new Intent(fileActivity, OperationsService.class); + service.setAction(OperationsService.ACTION_REMOVE_ALBUM); + service.putExtra(OperationsService.EXTRA_ACCOUNT, fileActivity.getAccount()); + service.putExtra(OperationsService.EXTRA_ALBUM_NAME, albumName); + mWaitingForOpId = fileActivity.getOperationsServiceBinder().queueNewOperation(service); + + fileActivity.showLoadingDialog(fileActivity.getString(R.string.wait_a_moment)); + } + public void exportFiles(Collection files, Context context, View view, diff --git a/app/src/main/res/drawable-xxxhdpi/bg_image_albums.png b/app/src/main/res/drawable-xxxhdpi/bg_image_albums.png new file mode 100644 index 0000000000000000000000000000000000000000..a387dc95fe5aef849cc1d09fb2fcf465032b7ae7 GIT binary patch literal 926611 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⁡&!BPFK+&h=Mx{CKJ_Iz_rq*2bK+&IwzL347-*X;KbK2H)sA}8T zW&26jqtKV0m*CNzFu*b+EZb2uqvy^W8+_mcuCyC+LCB)UxaP< z*alIOzk;_E3$_9u28XcQm^gm32P;W_jP`b-zpDpXa>$jay~bn_8**Jl6G<%pY#Ewb zS`ed`jZT#ivnMc44!oM`TD<-4Dr~bw8?`wp-&;+xPn<~7)=CbsflMX44y`jt*CoI!QP%`J-b8>z z5)n}+t)QH6(P$M^JsRRKc?H1nZT6YB@6o9RPj>Nsn$LJA4u#kX zoX_h%nNDbPp1l1hJ}Wt1Iu&12(+L>tAE2Fdx;?#qykDj~<$ct8ykCE)+-q;n2k#r7 zPt!IE&Joi~r3PS?tq1>U{?6%;+ZN{B@b&lBEdS23IoPCkih4c?-SEb zk$rgo{r3Z>Nbrd_2g?^BY=O+l;OL9VjP?EE5;Yg{wD@Tf#F>G93=EAT70n^@(UYhV z9##6jsj(J?2_blk`1yTrW9Q9g;?(^YA#df-(>+Sev{nkXC@GaWafD=Dtz6=Gf&}$Q zRtjd}mF(*tkOkdF`ukAd)P(fN5Qawt(9lMG%*Z@BQ5>=qYd~vT4YC9(M2R^TbCY7) z2t=5a$7eP+HpqO(1bMH7B(x$W4D}D7xw#R2y(6e5C8Cc6!lF4%Skp0zjRZjKy{HK* zSNGzHPX_US2XBL)J^C3gJLeQE+-5t(r!AJ@v-y%L7UtLpc&1IF;l#+VuuWhxGV^o& zJAXcGoz1^Z1|jcpk!N!Qh7lw0PZ(i~%M2CcbD)iPE%;ScZj`;R5>qhIN%MYl(}Xbt zGapOOf#n*9CbQ$?53ZMblD|iLD%t7+@Iybj0_?95q<3DV>u6>mehTKwPmq`-Iu;;7 zCY_bFKE#93f`vFKDPKH$7t--1xcRO>U@dt?bWXenCKgpC{`vFg;7f<@hescK78|>} zv3BK$=;$27K?m?7Qo>*lz3nkk0jC_q~q7dFP#p zo}O-co_0tP*z#(75iC;dJJV%qVJpmSo(>abm?l}DU=HJ1o zijy&rz@Pv4NBr&Xzv1-LPM4md-`;$aEQ~38P z)Y68%+GGMq5MkZ@eLbkIOQ}c)dQ!+TvHy}O^5{uLTG3d^9@Em1 z3a-JcL$fWZ2&<-}5z952qSEM+Thn&e)?(G2T@AkEeXc+l$I%9s4PH+}@tG1hIKlUu zR~(QTWu}bLQ7oDkr2*+FVmdlPpF#nYpPFHTs~Mic?vyL$T=CS-k)m5HP#VGxQ-ob5 zntOyi`f(h$U?BoLhF@GcQ=pdWgIEVm=N|ClI5M4~dtuY zC%vW-@#<@-C@!G*&01!6#(Q z{Oxwajyo*H?!^-O8^}#~`H=$@-9`IQ5K!dQcYx?l-hsPTn#{}d2 zy}@O)sT=wGz=9LB+q`#IDl~1j!HpXYkgL=&McYx5o6(r4&lQs=KaCBK6F4w}bbk*v zuHT5vP(QN6>#%mkrC%-9+OYnZ@;j`pO3wvP5V8zD9klr*FR-kN{oK@hO&~(IY1%MacMj|acN2!$43^O! z-fmz{Ts~o;e6CEoFm-VKd!=!jm#Ne6OXzY%m&VMs(tQr2S3WNO9#htt@2oUWrfsj= zs8n>nlAUPMpV@xc-jTnHV=B$b)SU>MV6#DU62h)Z--)(lQAc8MqUJ(6J&Mu3elmCn zbzSis<|G~T5ObV9yPZDoMonY8ARDwartsJ+pW}hoR^p6qVHz z5YRx3v%0AkBYndXQ5RL-MG>Z$D5gbTweFE37R_uyc4C|aze4|-2H>~pc#5)|16P;`joD$!Q`nfe;>5u`?M>3Tz})!ry-eD$3(lp?gB5h- zp2(uX1^rI|4B}sw4B*UoR@Ob3%1uCce}sUnPuTe2@!zA=bRec}Jsl^Ik=)qSjNzdn zITtzFoC)C>7RAcQAnP6M#Ul?sf*=0yhqNDZIN|7H@#Ir4%0iET$(ViR&171^b+QD@&zO>c zfxh1}@H`q6bkT!7cRK{Hy!tLFd#c}}O$7{q6s=Z#`NXf{@WT$q8E2l3k>ND%y89ov z>c^L3i^W^w?!VtnfMkm_#=S5st<=L*phde;Z+t!tiTPp2@-feuo_noaXxim_SB*ur zt&BcXfdX`7jr`3n7w+0Xm(}Wpm%sq4%hxyjJJr5>^r%bgoOa+vEa*aGC1_8k1_V6$ z<(_b$3TQdt-g6yYp*%HQ7#E?B`c&hJN`S&CiO7{w`Fq4kMVX8Qo8qwufovPlCXOkd z%t-}JM5l;1CJAiTbLAH%wY)LGE#~Rx67xu{C^OR4Gs32iL|r4_a{!bWEoi{SQWYfJ z6951Wr0Dtg$E2$7N7(o7F@^>$g~B0dU%Xn(omS%d`g+mX*@wsP zzYp(y{4RFhZ9lB+!<$(6Q$baB?yd*ubZjs@%!X=%<3}ts5DecCHF)Q zf3HO%DpDw->!-NUNjxG#r$;EUt&B(YtSyUG%20Y+(XXWMi00E4qe1OObD(9323z^1 zX@lqU|3Ak51HhK#st<>MeRG~WIlde>C+%vrT4f1@2m&L6FgZutfNgB}u#GYHAAgukp+p~5{Z)fJ-?&=DsPMz~RNuLAy zR$Gya5|X3NrYJe-D4E!#V>>~$Nk^giwG=>=Kgaa+3gm^TB;35&7AqkM>j2(8#P!}he zJB{7#DyAoMD30YwuBc)_vj5oeSrn%)NVsKs`WS5o0#Qoi7;x?f0wcH_XCkeBmr593 z+0g_6EIek%4Z_0I+J)Ckeg{IX>u>^P)TejXN1DQVkDsdpk+jCo=}J9t9REEg-MrlI zW?M(mp~*>=S(@*u1=u8H|fzfj+ykU_nE%e<~io)=9v6G>iNgfO0~I9 zY|uiVE&6=6_pLe4N1bO;YhjPY|7p-p6mN}sKE!Jg=DqfK_1UV!7>}BJ8)P;6V2<%9 zK55>oKQj#orVjUV?b_!eUkP*Jqb#=OWa!^bqOyrDY7pi^+X5vsPqwJ`dL2{_578p@ zek{I=cYW+Jq+(@!|JRdspM-rlB&4pgJiDlM@6W5MyJ6m*dH*jTk1TO2lw?kSSz|=`j*K5T>=a-@xqgQ<8kA z%Ox_$GH8-@mHW;*1iPM=3I$>|eZ24UE0~|1#Ct#e9KQO#1+1-C2pmabX<-r@+k42S zhnPGzkNtx^+;yUWyXMZ}*FScP#@NAs{-L*F_H+sD*m1I8q$O$G(92}3(OG>+`f<4k zyMsn;czu~Avdqtqy5A&d8N^1KQZsX zfR0^f1=%?w|9~4um%j=8>|Xs?}qudcYD%F88HD3PpF1DCGu039O%vuVm=?gkRQBKc~j36l~=N%tUaRBM``&|V*Kc?(x7rdG^WLHAvoqDs&K2-YZ~k_iI&~+`kY(o9t!4k6iXIZ! z-rB)m{^fh{*kh03+rRN!kS%8Li@*F!q$pJI#m67R@ngqH@mQ16o&r)yKRp_anVu>h zxPYGgL?}Ld=*^+yjkm87BYKJ{_ubsnQT$t3=?B(f>w18yM}tOo@E}G%EHrBuL~nLO zJjxV^wNS3F@VVoP7lRi5bbrk9h0viey#9lpu^+VO1OMvnfuZvMfJd)z1JEh%)l82W zi81vaS97ClbO-!Lt+5&}0||U?rL$=P-Uxcb4gun24wHi`7VBgpjlUCT5XM zW#pY~QBU}D>bdbF780=3J`E}mXnJ(KN+@w(IUhn-T!?vIE-GYYD1baP*urCptMCrb zP$mDwBAS3fM*(kg4P}!**K2I9oz3e5KIW*>v93Ep4?!Z=u&btimo4}yfKc^Ectc zpZX}Ced04j6CM2a@B9xkW{{=1*+8{kBdc}tz%7=%nX#yfQwo#u7g+iFxfQfFy+Ewv|`2|nsE+UK^Sy&y-6Ip(n2 zbofklLx5aZfimaEoHLu>YFg5~*Q7aHo{GogBLcoMQp9}kHNc6aU+D|aL*GTa-;%Rh z_aQ?d!TiYy%%5iOf(Hc*N)j*P+z;K(00-N8QA*cQ z$i>hh;9##-L#ulkvoqrYzTQ}?Vt#H4H!oiiPsD6CCNlM8ZUQYb?lJJn{HIGm!@*9C z`nFHNM-nT`+n8QBBjqzI1Wa^p>|^=zXC!aK#N-MYKsuP1n?;8VcS)y(w!@x2Wisv! zr1WQ|Fporjng9p_EplZf(?uyM&xt4nT$XanF`+F5LcyDV$CF(Y^Aksjm`78t0em{6 z8S}%JBc5t76lIlk*bCJJBAzjxws?`PsGIa_?^#>fjcU*Jz*y&q=geoLfG?ZAOgY|G z&PV0;aDU97M}iBwua=%+k5A8y-KO1V{e6^0-qvaDy=c$3Y4JDPJnD*CJ9FNn{?`3B z+cxDU?eP%RUz<;xV~_Gsh6zoxCH$vP?&Iga_w_h90C7N$zgQ;)zl#oauSsA+YTvMWkP?OIJQ*4@=6nT-cAVbb^;0N*S~%LC49^4??<=R z#%FJ}@uRPthdX%;a$rczS=`Gg9h6YfmPea-qJ%JW-8AZDZ@j2YsM|N!Hj0StcI@}t zhq`%>xuLZJFAAoZx5CJ4Kwo}KfxzqpWeWXGAP0uBis-SMhk_C+ygJy{*mWOuQn^6j zP?kV@F0{o&$Nky!XwHf5?@@q_DadMp++@6gAO-7rgf_inFy)vxPZ$RMGEvT0Oe-_+ zV+;8xN@#0Lzk?=$d|Xp~dwUx{{1ZQh9tjHn`d|J6re|jGvp@UKNtwO{ZSm%+5x?>u ze;xPVcMrbsg)ibi|JVP4U;p*r#LxW9Ka=Vzegd;$T$0;K47~4Buj1m(su5Zd36xRI zu-J0jfpUA*wdGBZ6`r%9rCr_Thd;a!s z@buHqaU77`&LO}o>Z zd()&(f3H|Vfq8bQ=REHo@mNZTLdRntc=f5-%R?u9)WD$tMlyea6cy2U6Xr({5vqKs64F<2ezJA)?oOAth&3I-QfML_k~U zE0fN6>!6iq7iQ83?ZhjdGp#MnPg#wZc3e?vKnT)7}sk|IP_8cQ@NAM7s^WK-i!#MyJq5s-;N+#JabgP!s}THQLp zJ-6S1`|i6RmHlmRrvqbSW2B&E(5H2}_QX^8(_jA?-WIO?@EB-zsHw&)oZ7Pd!5376KtOF-C=z>XgM8=syb9^&Bo zl~pV)ouKFHD3%J61e!}fa~b&Q`9-X+@1j;|Vr;5M2EQh9WPr=1UF_bvF5?-Wn?|oz zrDNtA_6QUykSyLNfOl+qj`~Y{YI2r93x~#&MLbFU$xb3oAcRX}P7Y50dqagH4A7uS`oGB(WDtg&jWvN z+O(w}hF4`J4E~xjzS%$f{ZV@{3bc!o>-Bf$Id2;_?RxyX^pKyJz|QI_(y1&8gy4VvnVb0A$FAcQ=jU*9b02pf zo5vd-y?_QC#`!#3lX?UwbcngdRFX8Zf>t(mMJU}TWq*2>7+kF;7LtXfC3?pp9O_rL zl*i#gO%fb&?gd7DIb(B&4)`>e%p@N2_={`U*>7WFCXdsTWgI`AMZMCZ=jxcBEuwPJ z!qjvQ|Lr|r!4JRf0sPAQpP)V+!~gun@5Sa|0rBZsX}>@8+`Hn@V1T)BCcqP3Gp!tq zUbc{Bu91ms*$1;G(Ek^p;wS{u7W8a}Wik`HzczD>67amgLd<2PFRmMshy&(gxoOL} z5q8a0?S;J;%*|{v;v*Tp@m{kHJ9D}ohl(54O1O$$Rti-Z?6doCGHs3t9!M?*RzAAo zDWw0^=x}c}>Zp^YAV%M_Wj;-ZZgu}9y!*HR9Dn?&FCmw4NH7>me)E~BX?*1?U%@Z_ zn}3V{@?U=wQv}i-9PE3{K7j@av)}hUKS=jHjvx4;Z^wW9mH$f0^_Hg$Dd0ebF!W%? zTF1Sx13%fGv9>09tL8Yghs=n%}XA0{IC%b(mdCAvAB6UJ6jz% z??Km#q1L6*f;D3=09WGddt@CNpKRli`(A@nCoke_zxkc`_{TnqKmD^m5kN-Gy@uMgQa{e;VD!E&&twz)j`x&wu8hl2XtVtB|^4UMxLZQ#?0WsSO{1 z3>v%%=*bgs*xKa|gR*o8T!d8|wNQmVq&2+rEj3*KX z2sE?~|6rr(?wJC%_S6xa!ZG)l0{zsycyaVr4v2uycnUaI17L;M8-r2+gWtn@aS-0O z{Ch0vAnUv2$<9=JVQ07~Jz45!QKI?Qi z$iVo_ltt9I!pfxL7ix|)INbL_VHEvF3#75|o{EJ%hs<~Cq@cPz*=O`vx7U&PGasBG zYwX|r=Gk^Mf*m>?#IB2xw zy?bQ5*snFvYP%Am*`{~0p=0jYG2H#YT|{mfeC{J3qAoP>hS%PWul~kwrFWjgmk2by z{q{S_aFZpvE06)Di1G3Q(QC(FW7AS*3Z=v0Xvs6bIt&63T+u-EId1ML^?MvT+zmL| zKoYD&_?{?PK;1rSP1R$tm7Y;0O0Bc$RVQOI5=YzCzoUe2^BszAMwPrM<<0m0GTI6& zUIBkL*Tv?s`qBWNJ(ni0)t}q*e$+kUU6J(iBrpKWo)TnyXp)TFs8n(D@>LAm6|7vj zg!=9-hK+UEYvW^mr0KaV0r~r6l)G@}Iq^`)q%t@petEcE!ThlaQsiAJ1>b42XJwaU z>PgfOYv>S|Fh=qRdr(eJPhx+2SHeIz5jOuX#U)xD6*kc&K(9w@mdO*n#~txXNaxZ5 z?!~w~Dgkc!+yuHY4!g(#97>X#LZ--NIcbll(?~jL@fM6HGE%-<_){$Ado={-2mHT7 za-JbWiVMAQ&MBT|B=7V7HfhJ)Ls2vnwMU}%OO$MCD))ARUwbb`(Rq~893_+MXJ4-J z;8A*`ty|jfu-`p;mXFHdcE3l!Xemh@mI3tdeA&iv^PRR1WzWx1{XXhGdml#WP<9(p zeYV%-sJ=zfiC#NBS4XXp*?tr)CZZPER{ElpHhUmP5sgh4u2(*e&nOmBxpG6}a39@z z50hhr(qF!U3>~x`Qi4jP;M};iiLZLq8Bvg$#CW*$V`Xa_g`;3Sa>YD8^_5$g7%$_(v2omfA|tL}(=+2}5<|?9 z)vDPoq1LJq<0|9E%}u=Zp^Ny5KlnR5dgc`V`Hy}bHmby|7bg|d8z|w)jRitp6ycbM z+fj#{jn0{CU=yysVzE&-Q=8$KXrv~3lMeKE!6uV$MhM!bC;dGC9(72XOxJG9{7flz z{gFe|{N0=fb3@rez|glT!4ooup29NL?y*MU_`ykmhpnvM9+D6Qmw}ru{UqUx1m?rafz-JdFABFKW1lD&NeOHrnWE473ATTs zJ9MP1V4UVRmf(Ct9Rld4aD91|0KOIqxjb3vipq1wg%`G=V$%bVDCVuBqAe936u43A zkTaP&;aNTC>MA@=wxshOQe*CUJV7Vz)AQ%3&%M2+lk}N;Qt>`VDzfN#(;i~d%a{uF z)5aL* zY2{2+s^PJ4P7B#`2H(*%CBUTs9;24zz?vU;`gpS^|Kl|{*x3QJz}B z^G`j4pZV!;6QC)d&R~4Jh&yjPP4Yq!=kB;4n>&|@r*w(0j$?}yIQE9&NX|<8P(m(T zGPIl}KKsre{72$8J~1^ZrMbWI#8>d{55IuF{@^d*j(g5y{`dv_$}jyUvbhA#ESi05>@u{xpr6{buVI;(kZ`ONUkntFQ$8q^v1?)|3VJtBmP3yqq$C>cfH z7XXgK5!qCqr;0BJ=f=wc{jwIaPX~eW=Zq>(>URYyA7QH*8CMiwpzpJjR7VN({Lc)7 z9Z_mrc;RzO9x?Mm>Gtg8k*1Pn_u1~FIey(%n8wvL@DfM&$uQVK%lCZD7vjXf%2+)8 zD&mW@U*msI&XitvAm!nAH}-J2vx(;3E;5x3JbCF^_3(#fPZ3hmsqj)~HFc=vK2!dus~B zdU5UfmvB3Q_uYOAEi(4)EN{`-O(4boA*#780y_3FH%CU2-MY|Duf2?8=g(qiXMoZq z@#DGMv43!YnUiN}lvx>9x;!r=kszSXaTOn9d!Q5Z!Z6&hEDLQg92j)r$&+y>9=$)@ zQ5XE9Xxd)Gqt@J9Qxi)^Vcvg1(~W$J9-OIW+So zjnce19v5Mc6MG%ZG1;K2`TnE8j-%$qo@0A$?eQKpclI+;bY;?md5`@)UpyB3Ot9NM zYRsYeed?*FTw6dp>WW&ZDD>2R#zd1@FdT@rhtSVf6RpZVwsyBsB<21+fBrv^CSc)> z_Z-6vp_f~0H<2w72tb0-)OZ2aI%kZ*~ zMKNL&Wz-LL&}|KoEf&P>tJkaJaB~}F0tuddX&a}{&R}J2lbBKtciwr57~wYhgk~yXNluc}k!RD1Bw8J^G!%)64oJw$rtmZW?W6elZ+#_7!~p;DbI+oXE#cJ{<}f=M z$Mq{)SUNL>Kl;e?xU$*8cRz9pyY3>s>1!WAeD-0)$8scm#zbILngf(T41}x+=4P{% z=A-7?UNci!uss#bgUN0?YNOa~+XNW&*HoCJV{M~0lS;m39Kx#Mk^94zg}}mRkJ)~= zy(vv3*X){m}Oj$gm}SDV0jNdi4ta;P?L+|KBhFI~A_2m14EF7Cj@5k!t?LNzxcV|$M<~KJMpW(_Md33K8Fu{;IHu7*S#4TDXpn; zI_SiU8qAS3;qjB;1uwLL%Nk}fX*}@2{rHDJ{*(Bw@A(d?J`o52UN+*Pw)lC1FZ#yb zig^_%%=vVDVNd}UfyFqerr`MV#KgtFYC%27n6CG~4nYa_sTQ8&@t9$ew!PY5%wy13 z#{(Eli@m8R!gpDO|GR3>3-58veHwrf9<|6ISjmk!0s61Yw+3$8p3tQ_=Dml@M=Gxc zxC)?J`qMA!XM%ZoW(NKcq8` z!L3r6tY+PY0Lw96t3-<0Pl#t80|}a^nTmeEOI0F0Jr6QRF{Ko#dDZ2Khwwp3xCVfs z0fkXZjrKH9xmE(+1(*O15cV9==TaEdfyL_r{uSP*w>d-Sz3x@z!cMP{}woSgYGG z1xiiW8XO$8$_E}J8dy>L-0|rysJ;^VHY|~hAp(L5EtToNu*a~<%__-HYskM(W#8D_7!UT*;c#jrFCS?aa1BFd^7C0F|A z9Rpl(k8xRs3{6WqL0Z6P^j--nnAm54=6AZyC>bEiU=cj4+J_M`_Hr`w|JAbUsIw~A zPc8xvz;MlaTjsG9O?w=6*}f>n$d)~IsFbbLgyp(mZwo(A%t92F82^hWB%G^5a&_ad ziEgcq^|dv0E9|U61jdyJtl-=xDKZ#3XzbTf zBzeAY zCSzH}8=-(@$qC_|cUt^YNv5IbEav#j8(KTZ!BN_nO^YTy+WXlC{LOoOs&d2U!034} zsskLg=k0c*8BJh^;`fA#H;BGqrBFi}J@O%?PGZx*&K7$)kOi0enRdGP zyO%2X$X9ORTOXRoT^G;dLr=Yku}mIwgv9>V2VTH?f8)o{${a^#;R2kL3XKr=?U>H8 z944G7i~mtX&X>s$Y~p)424SM$Ho=+q+C*n=4Ewz=cbV^wqB(oBh5N1*hT#av063#S zg2&u7yS5o_6mz!cEowvR_uA-b)M0P;$!3zakgb(s?HVa#K+Fr92n$|%(+642mHWHe zYY+<}TQFI1=kk;cGPD|P$zjrK_dV-&3Z!Z z`K$;fH*ej-&;9Jr;&zZL*FesbXZnm8T^z}lJj6#uJ{^6QYC+T~F0?bi6vm zCG-ihI{x18{crriAN(F!P<9ZGO^$n3Kc$>YE^)_GoLnbJM&)Ip*TP+ZKnJn(rgb2Q zbJzSvdmRPw{ee=Y%N_PTZ-;Qar0(lblDsikIz$jN55Eo7c25LO2YO9ZNQ$W}M(sBx zxDPz=#P#>P|9-D>hw@NRmP!Zk?hgPhr7$Y609q**>qSC&`^a3!m3NB=ti)mgz{39q zUP#R*oke3~>`B)qpoq>2PO?Yu&7_NBSxu&6sMl*EkhfcHsVd=0z>!iK3fVNa_o_&y z;sQLe<*k^@VQ+s&Do>1+Cj}4~uqVaPo=X!L({Z_ONbxfT{eag(`lb_g+I$|qn|}cK zM7hn|;CH~|G(a^fl$bnG?qlG~cbPw$=bHWFwPheNOnXt6*+z6i(SZLbz7iJ3hsI|f zd3nkbdx|-p*Olfi+?3D1Jdl_79|IwW)e6ZEz*oKLQJgw|ju|q(_8Yz#-}#;2A^edm z`7}8$o_NERD_5~W29Uq_-QUGwr$(06Ly=pg&ou9;WDGenb`A5A``|1brb>I4J zWQ{$A%Kn}J7Cau#_wv&}^^b6Dri_IpPA0pGiLo*K#(({F%r9OfC9CJHzXG6i&KWf~ z#w?nGu*ZHKM+1>TNQ)_d1ZOIYb6L}%`rFK@6o5iuImf0o`@9Ux3<%M>t*EOn6jG)6 zR}f|pAK52*9`tzyzr<}gbisbcEJGVQ@4bYwwjyQA8)5oaAfkBjIbNn4Cv0U5`sx^a zBwE(9?PtyXY(8thH!PP~?)}CdlJl9pGNc@(3c+9?w$tqs0MQkXg}v1^ z)DJ7D>?~t<RB;!eJNWjD)tx$$Q3f5`f*jV+M)gt zBU_@3o=fZq8O3r_|HlyAf#ary(kDBY3 z8&A};_89DY%qx6`yCa|5&m?T+PX9Cs$ZX^&24#2Dv>NM6KBMnB*11mrLAPB;ixmA- zI*#U*ub@am+TVNRJig}}C-L*Y`%(PRSHBu#G1W$@$hi$_D3^*j+-tx|($+1e#d6#2 zyW#@q46;(jsZ5(YMv6|maVVY*W8-CU%}x>!P}ylBON`^@Mg{3~6Roa;Qn7@&*#g!G zY$#5SqgAaEbI6F&lp*1;S?{1&B2c5PECjPt)54sp2fHZe3)KHCQn4Pkw(7Y1)EK_z z;kV!yfA^F4yX8Lq(KnpL`#=36{^-+J@h89dBj}|{$V{IT2G<*Ugzh1ndM@pQVpNEW zX6jL!`X~a^YhypFe>Z=c>t|P1FxS}z8KOXfsPRR4H$8zVDCAzZC_CFKoQ-(2!R7N7E{5n4-hl<(lG@> zPjO~TdT*f033l}X#ov?VwbmdYZ)QrWu;`wtJ}4o#PL^4|#>-{A``zyrm;a584M~Wa zrTr^0m-OAmix*)gZ&XUKNP)i4uPlE&4sCfHit?iqaGC2W^X0&w51ru4^}!WSA@bec z1MiW*bHY=$hXa2u`28yBBr7c{M}+n=G3k-RDqei0YDv71KKkg~- z+S=hMh+d9{07QYmcLF+d5X4N!M4-_^okxLz!0+X4h{e2+3CHy8am7o7W5wfflZL~< zri;E7kZ83}vn*>}DVmJ#+;L)yFVDDdaQg63EPLb_wJzWHYp{hUoR10_HhR zPLxbO?>NtnG{RP9y0=)GpnDopk%;F$kyJTBIG00_1k?sun0L0f2)Ibm`7};F3xKhq zm!BeF&p~2fUCK4!HI7dkDpX?VfjWUu8d&tng4b(HAq;Q3I$YuXtGioB!wnG>P|O&2lA&aQchsjRB+RmCJvVHxPqh=Cv8X7X%X2nzTx zyo8$CLqjDG^}~T&1noL8kM6Z6i7Kn8fV*CB?$Nk8322RgC;t1ki?6`i<}K{(5`geM z-%W;q*jR7}kIv)`q>VN{5; zw8JcWpzN*URU1fqc`8sn;Jcdlj_#FcP{Q6D6wmf#eRo*Pm~T~^1`F$*}Tj-kK&`|yhXjk+*eW0*!weT zj_min-0w%dBTC;e-(#Pz3H#wF#1YoS*)dw0dD%=^zgYj|&-oBzA*$VN;DFHi9&MKN z?lUCM4AJ5^R$>Mzw}pT4O^--Y$5|%K=`Np_(Pbj@tAgh6g2x+wTV45jrum@+yT^eaG&%{(KL;Y~Zd^R#{nOfR2@6 zrSNtn!}Q6!79@UB^*K;ZTsJJ7?CtG|;xtbCuh$ROnw1I8h%Q2ke z&L87}SG@_-lV$wj@Bbfs^E=)_LP;Gv>ub38{@1{CWoHWw{EX^)%{`tt@MwcAEwomx zR$HtjvAE~W1TW`DO!eQi^f`!ORM=Bsi~2b<(0Zdk{$5aH@=xXhqu=1~iT9wqUrKyPm?R>fMie`>5Ydo~DIo?cL(~G!XPxRg7?5cDo&_@;eXDrUz^c;?C~=1CSR#xuyyCb3)N z5VsoITMc~l^7}C{F^%_s;u-v}Kl}*J%;oR{Km1O7>{B;|7E>e(RY~DGee4uYoLE36 zpF{7kY6+B(aeGuFd&2dUZ_Z5<^D^q&3W!eVsyv>eK>)RvjZgt8!J>GJcD2{JL|l(a z*z!%3Y#DrqknpVy2~20UhlK54>F0id^1RY#5BDXU=OB=COxb8eiHn7WaD9(Yk3gh6 zqW4QwiEzJtBTtQ zu0Q87C-86%Xwu6w=6UH!z9#>K=h^D;PBT==AF-Cc9ErbF2`@^vnXu@o74X`x3sC%qAtYV);b^ z8qOAo=aUYwa16T}>-4Sy?Yrajo+i=^8pIU{luO01Uu7dEhs}|(hWPl_`iA_@`bDbW z#a?Y2jl-Jc^f|b86=RcQsP-Ns!%P7kGB_MI2beoChg4|>?O`0Tbcy;hE+<%~FpD0Y z7b=7*AoE-+!0*@@$HA8ep*bdZKcSZ2=iqov8rtLba?gnfNWsUCIw`;i4q2H0G!VRCMU`c)Tjfzd@? zmxOnKPL%V6ZniK!F@|BYiUBDF92?25TqUyH?hu$UPT)ckO;lShc6V;z_x}14{=@fw z4Zd*cMObASlP^hfKI(K`sz#l%QZ9*siBw4iNx>tVpq<$by&_T9Rb7 zTwmYA>rS5aV#>Ys6U8D>D$RNE1ue%!bDa=iU_KY389kTA=iFIUYI9)Bdq8_Cj419^ zi!ker2WzJfRla-+($LFe;CMif7I562CGZ&~9ud%cJ|D+d9=n9u<9A{4*fG5K-G7W9 z`H>$N%hdSH95U&+xTtIQXeUIQy84BusK%9W&Pg`=U9J_LQtxzCGOvKnf_xBRUJy>k zrIb6@8-D<*1XHTp)C!{oUiz-LVV7bBRB44?d5sK*rgAm9@AZ3?q6RMkqy};jniJ)P zf)JethjIX>!4F#r5(D}m5OiroAYdVx>l<|JU+#|4{EQ)2E&Yyma zh0qk5bcQ52OF4lFLZ41wJc#;Uu7h@`CUe7?)!ECaTdiZ90P5w{>vR@PsOm_rvH~)2 zAf6$v=b7VrXNxzt8t{q50}x29gX<|{UNR@o;x7t9T;;-1{9@n(Q+k~P&l6qcAERan!|Md9`^jT))0vU!A z>#4Q_PZs!rJHc#}y5k~AA_c{eAAR{Tqq%Hu1YPRsi^ z)TXw#CLmUWK;G4jZOlxKVPm&J3Q>=YFC_D@GL=c-ZC~?x#4|;_^&8%Xr@s6&KJlqf z;?tk_41VQ5z7H4gz75~-4c~-MfBNIdBwb9+PNF--v064zDUEgG~k zbK#5#>9XiLX=Y!3njsBZ*fk~?+7pD!2=h5*(vwzDb@Mg|Zz}9&lbS!80K6&KtLIga zp?kzyh6HCIQb3pe=$F8T$8(GWeCYc8ThpH7j4CYVJO<}l_&YPy&6c;K01CZUrc!3h zbLO0wiU$Ad^?E)iz(4tKQwA|X4D&1x%QM3euxQI?rh;Pv?*jyT*H~GYqOIIU|`rk-QAXTQ(xyRBpB%jSRjdz)vNx`^htwhnHtrQNQrkD0u})&b3T znt+DMBh5KYL@k_63{j}aC~<_DjUI%l+)1K2Mh9C>DLup93f1e^@Se}Sh?6t3`2MfE zAC_(W#W)MqJf7%>Rl|i%KkgVQmvNDPgN`h9a zdO+yovuffonJ_OenA^U0U0_{ZP#_4v&{`!HVf&};E^ zuRV)Od{Hb4I;Kv9eTf10tY*$A8fac7Ax0^{`tPXqv6W(*aLvD?Hk{utCrpH}`fF}L zvpxHLX1|rIVNg=dRCdhq0D(o>KIGKzu@M?QiXlX8qN8Zp-c;tebzih%>-fr7@Vy%f ze^E-Ha{u<2=TIxYjv;`XppN5VP=VqeT#oM=%$HaiJ&8VuZPu=cs?q^W=E+Kjr?k~7 z`;vT#a}BUZf+QGZO)RdMze*+;3ki^FOw820SW!>Xlz zYZ=XM3dfHx;*hL?F3nZF*(Bj2qjmd`a2+T)GSx`L)OsiQ13xbWJWCox$&4eYWZ}EB z$Gn7(2)pnGVM}WK8Zgst^rjbs1|&jt<2`Gwrb_`Z94~i43`#lo;$`(d1Oi3R7GO1a zpm@FuU6M{{XxR6GqTw*uv-%!A7wUdjfaRfI9VTY2qX!xx$e*F+(F9Mlg`AZqFQ(a5 zA!+>+)OMrE=avdLft)o%QCt|9>X8!3$%Lg0=TLd>WT+nuGB6-DHa1P? zQIp!}&{rx#iBu@Kvo%godia%iUKRnhJ!Z;(`?0H&CfGY}W;iODj)^;_P7Z~Vq@ zz!x9;BA$QY36gg*_?CBm8~);t{(#yha3baU`AdScNLOMxDik5$iBW<+qou=s-(NSC z7&T__WaHfTu}}56fH9;LraVuEeqV=A3=P3H$g5PX`0meCgAg|kku|0^AG>v+zpZh>(6z6&9hO-0RcFw&qzq@v zc%}?!uA6>Fzf*r_f(f>P!~EQocg#NMa1oOa*u24(7o%h>31g8%C;Se3JVAb@z;n{U zsB$R0VZaF>J0hp|T$MzbdH>?l6#aJ+r*1z<-@Q^!Tu!t*B%WP8sG)UO$Ij*^c9yRo zRjcE(&%S^j?aBG^Br=II-uvE9;lA6Bqffd=jSP;3u_9Ktt4j77u!r(K5+v_0&EzFX z{L1ns#>Y!4oQi>HxNsU$A@@9#MF5!p-{$IEA#1vWyZXaOf7H3{oEzd3aUwK=FcddL;W5A)i#aU zV3i4A1^meI`Iv1~v~?o0y(szK-Z!=`Vbh}77qd@M?>b87I7&A&KhuD^J;zZcM{PaQ zZrdD-eSefrXO6)H6r#XR-G0JU)B>g+wl+s)!?hWS*@nNlhe7f={>QGN(zOlz;&;6fA9?B;e(?`Kiu+H`;4KfGr_DeNtJB57UXu{QaqR8ZQJ$QTL`MTI zxz!@XHA9x5!wOufXPXmLPpmoz2ZRh1Nyv*~XJ;3Me3lfjCib=objakS-h7%i_|nN4 zNt(2E*uu=*6dIL7aiNwl4nfotQYwtS7C4)JlG=~cf!<_hlFy;j>k^|;@uevOC%PRH z6sS+LlVj+uwegGZ`WU|B(fjc=Z+{fqtr=t%3u56Kcou0D4<00AGw05pQ*&W$WZJyU zY|J+L7qwm{!Rg=icXlE#S<^vK$-pK;`?3=>*_*P?`narOoYEF!@eZLm$|#IRIo3#(oqU1Boe!CIJhjeG(zKStB+Z@?sVtgoKK zfT`<))zLr|3sF)^Oanp+@dy}j(6;=lK>_+MF{Fblp2OJmn1B)D@emJ^umy^3-0zF( z1B|&CtoEcWSQrTEYK{V6L@AZpDy@J4FR_y7e!&5$tb9tr z>w9@a9B6Bd2QK)v?9J*l{FA^ABm$b$xhmj#V4k8;b_2gjKsblxWph~+N+oa3yG(?1 zE@a_5aj`cAfpR@kC~x@9ePhjGMFcm8S!Lb>$uDz14MD{;vdkyte#Oy zHwckX;X{Gd)b;kM$Ipf;NvFzr(DwzMV4vASoF_O*ehd?YH5FBpH|w&%lKCNh2E7=OvPyb?g}X?yR5zS#SJk}r=54Weww3-R#H2v7%oJsR0 zjmgY>YPFVx z&Mhv@qOyB{YJ7lKz53PIWj&_TM7dZ%gW6>oc5lx`wZ4V;@siMDx7|T$VqAE9t4Tl! z{p-6aDTA3#(>xP@<`D7S^<_+^C(zt$pfS8eU_uW2hc(PBP0HEXr88=$-lcnUaK~mP z_Z^qnPEVX5&?AOqVNUIL4gpW5i*jOJnAy{ zxjoL88=Luj0Md@?g7$spW$rbbH-z?+p?4-s<;$End+`bz(z5w(W!Vg)lBT63>fLrbdd{?vVG0IOppFgH2{U4AMIif+tf>;pRZPEjfer)< zR#cd3dtP>C)8Yazt~cnH+K(F4@PxSmTU--3xV1v-nZfkb6b8LkAXo$bT&nlN5~>2L zwuySH1IAN1{c*roY?P%NzHq6&4_i`fCKs%STHi43#9;ABza7(!OTSYqH?FINRj>cv zsAWDi5XC%#_|f6sJ}Gl4oIG(78)Q|e<_mc1+y5RaBupsOAJExBwFiOY=vfR~4t4*u zBBZPXj!(9(3xB>))SwPO7g*>gC46lv{npTL5icq0s)J^{@gOp+z3!db$2 zzL*CQSXXQJFgH0ZrAK++vI1G{_9b6Xi%@do=4(Yrpa)L+_T9X7=_2`VNwg*zz zVu!5RtWZo%koCz)W zIVQdwF-KXi2BC7Y#$Jj+RkHCw@j#K*$ut86U+p=i5IJ$zpv6Fu3(FN=Sc{|jqiHlq zn&%p{0pIIO_fyk>R_b+?mVl-ec%bP~gSrx@Ebr5K2jI_((17a!6Yi)Np5DLmK7Vfo zpxMw%j4PffNP2s4;Ex~v*p&yE@_0yL{rU?iWs}GgPll5rdTWr>5GN%fF2)TG>B*MJ zh(Ya6%uf<%MZgz(b;eWb{WQ?)*KcBNWgWZwJNSiv_3v@z#TW4EH-8-&S85?wbu(Nl z*ni>kNAEY+Q<@ovQ$T_1@5`VpZdkU^O1k4{e(3n`)HzK6eJ%vv55YW+mNpImRwpE@ znEXohg=6)#VZinIv#so!=f8uP0dfRu90t@C2(Edo=7A=C=xP!^zyvFV!CQa*Zd2B> z^Gori&oF(S9VO65$?{=hnn149=ap8%_&(bp z7TRN;TxZK&e2+O-=D0!%AEE)BU@b9n9{YR53u_&ANVkah<+E(sA;6Cen&Sn`k&*Jg z*WWMs4;V;gkIzoKkNwSEG^+<#y}5>AV;}968`vQb;b3bMNv8w1{SrM>k_t0t2~_5C z#q5!`wZ4P7*;y>Ft&^^jlUxsjeiK_eHB8QCQ753H&Bo4TLOd5bohpHn1=`nj$07bn1QROFWg4+;UggS&C4|4p{BzhQdw25; zdijjxG>wJxxtKH%$Y)`_!!cwXxM97=)H6+5)omZOAMDS=>u>bOaeT2nO5d{e0<(Ry z-J@vDey_=M&1cPhW74wu(;TBcANu=Xzm6t(HT!1jXZASkIkNYl*$+R-WB5=AfQ7JN z9)77kK{oOk2&b-BBCk%HZjXpAiCp_832RC8S)u6F(CV?9G4Q&3XK54dqg2YHPKRMW zPaC7zK{^+gBroh{*yngLBJ|eb0d0n?LaXC)G@wc7VrFa_nL-RVU);s?;+$mlZtwLm zULfm0wTg6h49AX@&}`PlC4BDq6n0iurR~-sp^pS`IP96wWk8}x!XBY}T~fG6IOOe+ zqIu}HD`H_t#Ik6#n{@b3I%~eP(UkDn9%@nK#sp(Q~A<@kQSJa znj>>A94B@(BZxy1tC>td|L(iEd#>yLvjZImtz4-GFfB9zGc#j31FP@QtDZn@h*fnc z`>vlVh*iF_*AfL=xv09nupS5+F>79YHVj*_j(OG|T_#N58)xCuQy#S9tc6&69yACL zDBNNGq=i7;wpM~nW@=h(`CgrWBJf`D_8}C|!A+{;Zz!4ki-jVA3hRhx%Xsh=_uxPN z>M!DsJ0Hfq_uVarIJe7gzKOU}OjX5$AdJMc>dTt@z(xQF$?t|o3__j?L1=?+Q|}Lx zmh{{U-LSUn1lCA3y;`wU?=!7yx^2IYfFZb>``b0fxM)cu-wn;YNEQCH#4cCnSxevfRt_aep2qUjm;KELan$kS3nY3OKuI zb1n{6gc)S!HS7_n&Dr*q*Tet^m0ffXcCbQc((>9SUh&B5i2pm-B!HTgHco2FVKT#Z zSLlpE^s%W~RI4Q1(YUww4lp}2OMtSOlJF0|X^J6<;;!T@#%TIJz;IvA!nw<#hqt0nrs2R=D$LImfPxTD_1^;zP%$cB zY311DzosIs75AuQi)KC%TW+xp9J=kOd-8!QMHyZmkpeJcSmWAGxtKw$}D>=e;MeyFJYCel2J*@f>v8NaekUW^C9|Gl^3YdxJe+xI4YZ)0-9zD z1aRida=xZH&jfo~>_&2}$JNUW>UV+!%Jt-Z$^ujVulR(w$D2r>S-9e$4rTe=mmJ4F_X_AmNHeFI~ zrEEzfARy&rNnnhtq;>5YZFUD^bGO#&R|j^{CKx%lJH zzl6_U&*R(Q_!_+Hb6-K70F6KV)t|=lb_|)t84zsgSuB(Qqy>I^&PIiyXo9oX%q9qv zpiJR1>cF&#-Mq&JnZkW^LrO;!>ZLbFRKE-u37HQ-gv>Zjvm6geIA<@bZihs3#$HnxwaR8%nm8R z9Jfd#9%z9rE{cKz9>N|Z3Nh9(>E3*^vQ6FTlA<&EuF)^;$~-XE zV_>+t#+6VCPr%f<2s{gZ-}9tkFCZ1qr@^05BozoVe7=-0Hkvm^E2$>4)xwCT+n`;| zjCCG~VTiW8T{U5k>y@K!kzK7^gK7b#>B7$|&OAeS2LEYaA z`VKuuT7ZRM0JOY80wx`|t`13+J3uM!K^TMMD~~Y+B6#x>iy3G+S32mi>vYPe>!GWY zA|mLU6Sn4QB}#uEtVLMJGillDkhpLv@0YkwH{z+v^vnHr18_px;pd3Pl1X^$=_sYt zdxn=Lmn#Y=z=^z4sf5IkawdKD3S*a41_W43>GfM^bsC~zCFsHZy-jgBWrZp}XyB#m zE0U0LDqqBv^=$$U4shF@7tuLvVsmw!0O=)C>~dH1gNdc{q56U zAmdG=?q`*cdkH}uA6jyu!5V+g9d)jTGlZ+q0k}c+4l(XvXeo2rI1rqfs*OHWUXMX= zo=JP2GVTW69f6Xl5_rQq_goL;HrG>Mre&OePl#7l0Mwd1&ky^+XeM-h#+r(yHYDi3 z%}|)5@>eLn8k*LS>=Ta#?ZXKYw3++KRHV&wE=op>Qbg=`@?|Rywv2Bp9ky&^D|e>i zEwpGQb2QsA#~7wJeMXPUEGD=RD3C*c&HMen--ZT`%!H7p!W8AY9;KA&pSE?@9FO_C zd7t7PuAJ$EP7nPq(|y~Yvjpv}*~K#Ej&ZodZIbj|Lfbf0gSyuuou|6Hi~a2#Y~5TX z{bGao!X7SN-$x<0g!ldRmoPtDz|zvBl-RsQ=M(RJ2A3T=TW(yvg+#VUzyzHu&K{i@ z38_xh?MtoAFN=aQh`RfZ>(kK6H#7Ov=cng=MIAQqBKgjc(!AtYv; zQMUXS)?;j%HWg``R_y&}>sTfrWzx7UyV`nJlpbdG!#q>XXI>6eH0juU#s*o;_u20@ z_mBM^eVK_R&G!rNX?DWynAs`5OeHT$QMCu7Ha=N{XoGdh!goN5JPSjO1NTuUq92<+#>X~Umk1b`E#r`srat{!JU&Gmhd_t%NwO@_GmVxUKB-)Wki;!y zvKg}AHbh_>NGY=x{@^cfVtS^G+vmq|YL*1UK^&Ex10+frH0jWuC*Yt-{pEySzwtwF z#=Adp8NW`O|Jxp%!?8EM0`+zu$>|Gl(tI$dREBd;833XY)R&w8C_*}l@XX)s&1GKp znyZZ)JZloM*}p(J3#{38zXBm)c;ta-_A&fi5DH-?cQOxx;Mq~+T0WN#;VWjrcTm=Q zF(G@g=1vex8MV=(=F#kP)L6{R9Jk4ULWlX#+(%yLjd22I2}f_9cr30G#62SX#2)yIHOUGDiy3};1l`Xzc=Ufp0Caw}` zD#3)U={;4xZ5V_$u!7}EY$kBpcmaUBmOwK8MAH1!Rk9>~3%2OP~1y9(?p662NYdV3No5sYS8= zKKuAHSeP2aZl#6&Mg#d&fp~mQK;@^OzJdoIx(BP2y*&7vhqSfvcV*1$ZfuV0W;; zBPEnMBqX0JKznMbg;n7rj^pt{Ii9p|ra`Qp_tO<1(=~Wf*pfdQJ8mjw0j~~#22C%D zmIJ}id`3H|YK6^~H(bvv&{TxYTsS5VQP1nXc|6jy+?xq3W$(CQ;WK6=dklg9-o_5@ zb$y=Xcmq|RJ3dcVQPh%~Y z#|5y+aLx{*dmevJfaLILU|)7AV`BtwsqW8XieHsV+{ar^#=Rv>QRC;YiNy{DP zrQ83%<;=1b6#bn(OXRF~!(IjEn%Eu(x}Q2RtbM<3SAS;9XWHvS_sRAG0RkCl)YHZd z$r!eRY2Ksf*PK67?z7k5G1fZ-!UG|Bug@N7-M&;Y(jE|O>=~afU~;yE+h1`T7@g;^ zC`JyuodLd<^oqmXDt0z*qIs~39Xh*ul~vMBwot9R^!p~V*%eHT6OSOhxfrK2 z7O3v*6HqWEp%}A^WZXTh$@#dyO$JorPZRkRisNNEvkKT>+eWUG#o>M()AKU~a#Tnk z%gdf>RC{#h!#EUprUJJKgT9yR+`x~1`#;+2;O3U6# zla9wmfn+9*iN#|$I0OOVG@lvL@d*5P<0Z){g?ECe__i(w#R+o_Y zW`z(sqMhLm290fWNznSyZ@ibRGY$OmpMMb#T{wepBM`v#>X@gpNh#6AX9{Od&W?|f zFq;yjU$WuHv-EeC5I7~E_S-dN$7bZvJv^vlW?>c^v_U3H1ZWU}wAtDf%VUzj1tvVs z`Z~L?BsFc>585Rw9}Bo#CW_r?Z){ibh6nG$o#%4+_!q7qn@C|SMF#=(Elw7pM5cv~ z=So;e#_@?Szl57)1^eaix)1;UPcGpX-Z%-jbQ1VVe=?e`zmfBO*Ap9SrQiGL(lL`=Ed+st0+ z=B}X}IpGb=f{p9NCo68_Go6s-Oi4gW+4Jr(b3bTib`)9|HRn;*gU}p!LcWv~;seul z{fZ`0doBb*cypplC7K7n2r=SL=LR+TP=bjR* zndU$#T88zqT*j~y?BYN2>0VZ{-=L}<>eJG&QJp{CW@W#1=?Wj@RJk< zhl7a#a}Dc+vYL9)BtrA-6(NFEJTx~Z{ir|HLyiyhc!H=`1;U^b^?t|mGf3#9osc{^ zyr;ROmU@P>yLW}}x+DlSJ8j8rGZ=QI)E9@bv0&UJOMHf`CzCT1!V}k4t|Lx=*U8E; zJzXLT|2C58v?Q?17bi%u&Z15d&-F_$N$!J8hQrqyn3*LYczqAYPaVVjLQ<+ElqMH& z*L_*3-jFHgaAtN9H*OxH+b2P!a2)5(&SQ_jgf#*pj-Nb3ZO4!v){u*(apv4PYL~3S zl?Lv8_!UUS`>?d^II@8a|V_DHd&IMN2yR0 zD|J@@ffxy7)CPeI4$T?I)6N}RLWitG+tl{L{2Xh$Bw!{akHdgn4{6R=4{neIwv*fw zAi@MxW$!Tf)$6h?R_HDf>q@Q&v3xhH$d@K0%wkAD7WadNvQ#1?Z3Gn`Tt#QThl-g` zMTHcI2T~&DE6gS@GWVPBn_F-H48CS@7?$&JF*jm0U-X~Kt zbI1(~SlK7*Uy|LU;{wc1kUX(NAXBDLB4IsG{34Au8ACWJwN&`=$D|Z}vkHQ_HhPY= z2bzpE7RVx|qGnq1)w~X6ZJf}#=^AIC_9|3sqbuLABH%i9VlY6L@RfIPzdVnHV7=kJ zFIa#5KD&B>UUySo3Ftt%V{;N@_I!dtzv25luLM^3hN_y9>QdPA$^>IH@b5te5%d_A zEo=oM;f1W|c|QugFu?^gT*3qf^gjl1lU{`mTM5w0mAQ6$9_>BE_v#X&CXiv?!cKe?R7?}LRmTxqFGUwa$j?i9H0Z1MXjm6{>rjlg7OM5*8VEm|DrWH}K%6i@r z=DoIZW#%Tcl{|C&u6JI`-tfMYF?a+&?6PMShh}&Db>?eqDv9#!Me!gK86=SsZ}CpE zgD&Yrty&#hw^nhuw}yD*5I0_WiNN+IYCCj}Y^)Lhk-*CGGX!RiV|Qx{XXw0rVYPzE zu{0_EJ<`3}1Tv%r1jzBZc(_mWG(es!S=3r`#wH0YNW}(p_Oo7-l3aJ3|6$PU(0nE& zF9i3mS+62SfW^$h6zX;AL*+o;5vS){dvyXnZXlZ{UiZQ#0UFc}@jC|0^Q0rP*Iu{J zfJBjuxm7w3r!cWFhkk5Kay!J*CE2erPP9yY;C;l&n8iQYQQ^5UCynIsu#Dl@S$sB|mrNFt-ilMowdEwaQr%y!LZFEGSE3mb0^F>1Bb7JwV zRGYGB|KE4N7Ei70;^+VO7x2&D`3NyHm0U%+1S;!nmaIR$zCzUFgq(ED= z;^JbLgys{or?9k?!5{tg6C_h5u}^&&o6Cv^#15f$V-rOZ)?AF`6J*J%NMfz8zO#hy z|E|oDO^vIHI_|jb4!m?@8B@d~-ZM z;vzbrGk^gN_7!iEB0W1djg#pU*x4tG4Ox4098O2C-)8~mur0YY*4H;ML6(>D#1xJ# z&ST})21;WSxPEh8;_g54zK`RPM<2vZ64ds#ui@0$v*^T0)-% zI8qk7`v<5J5Hd}Db*ZDAw0LG_8r2GcBYV4ae_Dm=yJmG90Wh%o$hxyaw zPquYZ@dndFOnFVXuFtaIx-i;v5w0$wc$mpzHE%VAJ@YcFDJi}mBrDX3oAp@|2u)!? zLbdM(C0oVQEv)RA+4E)2V(K&BDkbyh$aO)PPZNLW2vMKFs}~J`2Jy&2=%)bz7O%^AsiUoA1^@OVn9u_EUdm zo>8_;7S3xF&RY-#9!0T6|&ItJpb&Zf#w=$MatX{ zQS)v-Ys!s$>38V&N6CIs)?k}o`6T8zmRu8fW5AOU%>AX;)~8c8;eZIRwptskIGI@0d7RXTgtaB1Tviesm6`RX;K<3l>n zZ(zJUfw5eS!16t`I;78a*Mc4C9qNBks&%yL4dQont`k`1 zvd2TNhl3YZut&y(^4ts=m8q?RT}&N2MxaOxwSHVY@X|%DEI2FSCyBxsVyPnOVrcecx#C*L%N`6Ta6y=C;me&aYIF`pN?>LTE-*cMKsv&^{JrcAX64bJ^8TRRCPBBqJ zwwMpJIq4z^)*TY~Qv@owBvi4d!0y(eB;?|FKX}nv7uy&WmIpkG87l! zQesF*VHGEiE#N=D_X+H^lK7*4_6|%OE2E!1Lz^ohs)veXW%uLJPyv&n>p6}R)U>C7 zNdPv=ZGL8>!bd5=>N9;fT9#dd0L^vxX+aP|cuJ=i+iKB~zSlm8OrnhHoBgcGT;+KL zE>M1d^zZ5e@lw!#o9)PGJ%rfafOdPqXMuZf=DhCE%ZC zuIl~#>;RfRG;NvQ9P026tf5@VBr4X+>#&M@_JsW)n|L6gnatD_YJ<;}(xT@~GS+(n zY+NJNj^isdtVnCCnig6a`8R1#?L|+ia+K!d%4cLnb`m&${$Bj%Z~huK30z3T)cd$i zj`dfG6umj2`AQ|@!Y^21OC*zCn1drz$sST13YJI=BzB%b7FGfqbZ`s$&q{Qsj&8e& z{lhIfm|N6_gN^M&q=|>chbkY{S~WC*ZV8!oWW9*;l;oO_-fO ziG%$^Ns8NR^E+L1x(#%zZJfK~99i$5LA&K(yi}q27~+LalazcG6liXooOqIr(R*@v zE}z)N41od+9vvRCTYo|Nf9lj}Y?FY|Ac27^@9gf@aPKSbL5zTo7V*^G-Cg1T8M2ym zyFC%syUmX9jui3g+1V+~EzINcwd*LA$FOvK5$oIA=x`!NT9+nS_<0_CbT%w3F3{gC zso29I0H6Q-=drM`NFcy1;oDcQ-oPAzWSmE5XM0!5Yi(}tNlqUDiD*tIsNbw)^O_EN z4$j_r9>Y!x54`d|vhHjX@KHvK&WRJJ&tQD2Ed4Hwr?Gx*1;qz`|iITfBe6G z9sNWRzx40^D;5b1*gB*&X$^7z*=hXE|M?J{-uv*-qYvPo*L^ElW0nY*t`eBD?}0si zEE2%LNkdcF81i%$axycHMV%p~e`9-xgsdFu)hd!SiVn?fx6nbG0C7(K*NydrHoLA$ zM9E=MoCLYgWlpmxQCRy!PGm{v+&;CzrO2p#_F{7T92V6j0H;J}**^U~r1No1DFsr_ z&*N|2-dFDM%JasFIR@WR+{F~aO}-aCcT65RF!){=#5O^Ju#lw%^U-tAM2OAvR0O)A z0z9>cm3Ffia4;70-{)7v5DX&Vy_#)lP!cfv;}|^B>wjN+0C*<%A*A9J&tEKNc%AtD z9Uw=0zeVd>B*A<0);bo8X}oZ4o%Uo7m)FVq=NVFJWc5o^zf;9A$>2UgG7Vd)S-Rjn zHd??9%0MdqmG3)Vi^d&)SXl7{m?zNZ&!`?7CwJc&Yi z1~@*0bN5|Tm6eFT`vgF^B&RkGn>g6nMRj)rjs0D;4i3rCutr9xO&kzNFyMSgWPB)= zlO!|d&?WGn6RL_qiDaq->1}%ldjv>05~`O-k?g<;^+~Rg@JQO9Q{&S>)|H$^g-K2n z*~TFOstysHI*1Xdfde|T%j+a|xM<#_bC2Yz2GL28&fysGqGWj*LjoOK0v(dsBFR2EF@7ZY zCo9IxH)#^%0*ns4ic|0bWnnjQeMSbl$Wc182~gO3&X$i&z0KC$qQHjHJrO=1k2;%m zzoPPt*t(zDmVKH1wRuj$-ee&~%^8htwiR6SzF;EBqQ>3}WNGSI+)&7+g>kg16+sN81SNgX0%fsO6k%RUA4&Wv zEj|hJ+p9Z-Zjs>CB5Td=CRwG5NMyNc16%A!u%$z8X10jh<`#03Q-t2t*nyh_FtUoZ z2V$w?asbvHU*-|I18 zxj32|PVVr9v0(gBo6~P`XykqH4oy+|5m=q{I!IgaV%)9qY2jSGLopcb+83;g0v^l* z9md}(?}Qo`hLdeS}pA@W$y0bgs%Q z&zE@^bG*6Ag}{QV&T*iX4{k%dCp(@eh!oKCOjw$k>;5Ff{a7VGbERrVlK6odM_gG4 zxuO6cDv~-vXQA(t0-O*Y!=<7A44ln zs1Ul}M1CxV{hbXocL*fNa`l-uHVM$Y_uhN)%vY|VJXHew!@u<63NGG#TKdc0Swm7f z)_1BH%a-uO(^qlwMl?Cq$$B?MGw zX6Vf55@0boPIJ)2LvMJ51f4Bhxq2P9-+fljuH_qR7@MZ^>ef{$Q3hJFt1oPm;!fao zqK_!Ha514X_s=b@@t5F6p0`rOlez+;HU`R7`E$&t{Im=~sCCU+Bo zJ{I%%g|Hf5IOIm{+&(JdU`*wQalJRW@cFV*6ur+7_pOVezG5H%EkC=lx-6AT7LSdS zY>~r|Gd8-O2URTQRghqV2Gey-0Ljd7hXm&?76~M4HHd%Y3#c6Ki}z8E6Ppq+IY;}x zMr&Q17#G2L=#>~9*kN7JZ#l&3ZUK z0L|d8c_VK}V8eBPA#`3k%SM?E<;XrsqydsUe4v~y_aD@qnLmH8l?*r+1w6wtmbL{q9nRIN9Z*;DrK_T;ZlV)@q<`{yt3*<_ZHuM~-d|7lq z>1e|82u$Z^^?0)d0tQMmaL>%h-|P`5U_2WJ$avAJHAy!+#2$h1d)w>iR0)J2Kw^&o z{Z#Cb0Ej9&{T9guWEl3CZYDb}0ET#I5D(kkA$^TK4*5Koh>NE?Cn>JbImdaO8a2`x z#|olDIzyJv2+ZKKjzJ7Q_ZkhjWF5P{yoTea=CQT9CI;Pldq1|B7>X=CRM>%*9ja9c+<|LPqXP4o#BR*myEVdSNU-4oT7tFBG2Uq2(qOk0$UT z&N>bmx&?rUduu!(BU0P|6+LhDKvuxR8uO!~0(Z*$+;Ad`O1+&f3U;3_B;Xl9k3v`ZU@nf$)OTt|Y zfAz#J{@r)H8vp096;#^e`0iJoLbG&CJRAnH(c^whyNmZ9I+^8h~DchLV#N?re?=!FE*f+baTAQF~EVUDq->f)kpI{4utYi z_bqK5lk$R6O4JLDfKpiENi|>m9lL!?VplIgV=|>O$#bq1ZFNegm2k@nS%wrq_5$b- z|6tc*mxSAHzaj2$FDkHfrqGM;74A z*S1lmIlAlg1X+QHxct&SF0atzY`gfg~#V#q&@f<1IPu|3t3#YKTvxS+l3EcV02eCywF2#8Yg#Qk4`qTs|#W}L% zJ6Ky?C#1fGbLTj8>lj{q;W^xM_uUe!oy{ch;DdJ(pV}eCx{n)IZ{qxIrvx0he&q(L z)hFfNEgBP7W4Lu~19QjElhwRP{o2Brvlp?kc8JsGE?{SK1&4GCQX1&wSFiGJUQ&4K>U{l zkUG&81H%~_r%TFLpY{ZMF>qqXY&M4qfyx{T!OGSA?2;rbEE9dQAdpD0Vq2G7Is%oE zAaL8o^YpF)E}XfDr=EHe&pvaBfQB_R3BZ^e&(m0!aq2kD5dpqi1VZeS;F2MrAzLmG zSUrUTDR8GxoTNUF;ef!SFMaldL@Ps47npXx5SM)CQe%4he2-#mSN7$qU>OW~3EC z#|aA=fpskiH8{$OX@U`oUnPVOD*g}HIe$VtGhl=WTL_)d?{TRLG0JbuXT+)>kBN}W z$u?DAEH6!0c~)`KNA1C3@-APA_7qAfiJS|ADuhG8f5f7?2`>3p5!MAk#L_D}m!uF6$QnspSapkSNim`5z zF(j2qNf=wHSW@9`0vg$#B1)ki3{=>d3U3RChnNDUdFBSm0iit2jCnAXDt*=jZ9vHn zh9`iw-mCtYrErIlLTk7>i0)4;blxg?Apj6`Xb)V|GbRqlag8ynTnbW_R481B%!TPY zI75x|)78l=6=iNDWSU1=sO`1W^kB-@w$f0yCrGW2%2_%+>vcN9*hr zH|z&t!5q?(BSS?tJBI0{32Ng`;pt97RRQA=jM`xx`*hYe4z|(QIUpU7WUU&3>eU)L zwN3HB%;xJDqcfB}8=7qfI=bS0z#;AvGi8yX7~G$rbGbwOctFOl>gEAbC9do=js3l4 zl1IkTT-_sCC51x*$W?H#OXux44)$&#mnFcWK}H%fxSTz|h#S{eaPs^q$z{_dnS|${ zI5vrHjn4HhjcsjI7c#J4F{)Q1(J81 z#3Ya@37{;V99+AD&TRIkmn4+DFQjtYFj7CT^+0=Ho9m_jK8mhQx;4*2`!jRDyc}OK z=`E_?`e#&bmV`;@`a}D`F$vZrWb-`m{A{IMlM_DMJ-z=0JYiA@G)9!=uP zODmY3nk0fC0&Wh-DptlgE&A1KYnYuG7i(Ful*JYa(OlN4)ofEcX;EC*jLU!mCy>mf zIF_|d2p$Q){kHtwtT&J=WF&hlm#O^zH(bE2!yf*_2QK4n51qn0=-+R={~6qW@ecgZ zcRz~V_99Xww6bJ4bUimi9q$)A+S;xcNY@m#nUHyZ6hk$?*Nn<00&~4=RBYfWibI2N z&2_g00h>0W#$*o9vaFO)PZ(;J?d}@&$Av=G)QLl zQ@tmKu!8T5Fl@VT_93Bu>iAZ5nCi=Poszy9a~QV(6mwnOmziroTMtwo2GAZ9waR|)1Ej+8Iv z#4~{3(IaJ*-RB&afq@n&rcK0pHR1~`9M%p=@#oTeq#TnXy|cMRz+PJtxiW;^p?SS^ zbq(cm3CGWj<3sQJJnp*vHUbW}@r5UsQ6XjV^kNZ{6Di!dae%FAoZ1=)y)T_2bh=W< zg$rY(ly|XvNLKq&QYvap5y`0>zP3t>$vP{;B3Z}-Vlp;)RB*w-uQ=SywUtXFb>upByLIPOW zBEn;1P&pAN5F(wGv8=3J!^sopv9xf8z=|doPAm~X(8DJ_@Ig@s9(wo@QY`woev{r$ zfJ8B0mT(CM+9pYmIDf}^52FB>h2|b9@9ll$>3v_? zBJio5qIS{(b{tl^vR7^%b}&x>I;T#YArOIdMwIBDz4bP3pDB_s1^nPQ-jDzNiL3a~ zAO8V9`RBil*|QJh8^8M>qe}hVB)UGV?u&r5x3`PA>1ml)mjs;>?H2|F7!2Xc73VLW zC9tdmmG49y>fF~c0?9cnQF-*JiX&_RKiJxsAVmyS8X}%T2#Jir$c2EM=7Vtw#w8A1r&RO5uN#8fSJt@2Tg{QtuYhOTl z?gE~>bRBCe8xZdho;S{y!gD!Lc|~~NXUJ0ag{$k-qo$0FmEs)9At~xVhh0g29Xj{A zy?xrxbM#C?EOf(O*PBe`ZN__FDa4A;>wH!WZbVr`wIXhoMUMF)2QYpQ&#kG9MJq_2 ztb$?aIW@2FX=YRz3(FbyISJ^n3Vn~!Z?Ce74r5WDd&w+W4q|22O8^HiuaHhEs=eOA z=lVdrulh2lgK!9rNBb&~r6P`443VG>Ux7tDW*G4lFywnocyZyToX3~#%CGxpCMYx& z<0!e_zQ;5s+VZ@)9(o^`3aV{oH~SRGV?%$hnBVI))j*{NBJ5<9=KZ=4w(@1tN!XGf zmW{NBlLiFM@1iWi=3LoIye(JiKH0e{%yo&9tIhH0bug{g<~z-Cm}@h-kAr(Pt@8P- z>BI(9%=rsm8f8pVIVgNO>JP;TGa$&@Z7JZ6$B-sN%<*%JboUbJZ!s_DK}=*W#sHg* z76A=p(AwTZyK#WZ#v0bIUB-aUww=8;Qe^DmM8#)LkK@*jJ!DB&izhO4w$BT%tdRjE z7H1E37x&(GOsZor$iN&tPY3Px+6JcQX0W!rNxEQG^6`yLju9U&OETo@VH3L~FD=YZ zlRUX8dv0oaM#^?_Xm7vIr*MN*!xU-<4H|z|z=Z@Eui7Mc-nw=T=gzk!v@k~CNAI9O z=kI}pukyqlF#jb(PAWesZBL%MKn8*W@>8eKV_q$14I-%XBs{`(p1C+hf6|75VI$XP$A*jchX)^JO+MnoLRG!wNFH&bDd?*xlMDMju0G z^@}LST0|s$)VJ126C%9&}l%GM=LhyjV(!66Bk zWfH=ve_gU@kkDD4%o6H#K*Y?6lX}AR8Hww6X%0vLF6KEI*&dvpD+tvTA#4BhG35n$PJ2&1}Qo5av6>^X(uO zi%v`_zYnFx0<`dC?wjzshXD(35T2KTZqL*0jrPK~Ixx$9g+V@5!cOl+NwzBCMIDKq zXN8Zgmd!>-8jBNsrZX{I`qaCyU75nK{qg_8KGC_2=Bp|3tcRYUChpgUyK0m`5C{tp zVVTRS{mGyG7C!T#_o2jKA)&zzZQiF|+K_UY(=!=Dx`&d7z-8to%B3q7yu0t7#Z);d z$?3K?+gRK0v*8YBF3#cPe3tfHlYqh^PM#UVpZ(EivAO{f=D+hh@5iMlt`k!3O1^;> zwO1z)G%I-rlQ?~{gwA0XH`eR)%mHS{3iO@~Qe#Q%GOr-z``pPqKJ@7ooLZPgljdW6 zV~;?Kl2pW~R2syifCn$kVRo*7L+apD&#sbkm&N{ml@6~l0$0fjPjmIs%09}49Hu75 zP@@Bt6Bs4waAYO#ZEw6AR|%0{xphEFr%Q)YOcKm8a4|bKL6+(^sui+&6ViVA)G2zl zK#Kg1C@ZtmQ^=7;vp|;lApy33@@M~tfR^(Tn$@g#Bxxag8O+Yj5?@>tptjj*U~+s` zyal-ARG#|PAilj$2mb+kEzrrG_L2+oJN8LYWo5BLz=t|)NTDX)$l)V%3&-f5w#;`X zl@rTnirSnaWjjS0*B&RVqi5UA4uL^5M+D@KPnR$~QI>>0H<%uxCa*R&KxZcHD8_ZFuRq7cfqM%}jYhVm{wZdthnl1o8h0 z2AwW0J@Xid{Ub%=eQB#ppi%}e&^odg#`wfI0Z2^(vYI$PQKWNgh)2#%;^);Nm_fEXydw-0;?~}NG^(q=Im4K6z zQsrrW%0z#?CJ8?b#8eLO%2&UNz@awnk*4Hq=#%v&Bl7_P6%dXduE>xm8>p@1Io3JVTb!QHx!ee=Fcq0r#T@N)l#&Z?1fSa^NF zqdAO9-^Z7X+XD|cndj!(Hoo`!zY`P16!xoK{MCEkF954f$i^NJS=z_@725ZgZ{lx$ z=a;bGib-s8rR!jYj4SNL!^R4p-PxH5+QOxS=xcED^j$R0 zqOG2W#CE>%ic z_00rhq6BVJ4$ygo^mM!WzkVAC&5POQQF3HJ_hA?7C|U5R%WgC3SzF$-|Mouh_HlI5 z@~G#c#$rErlq_lLFXq^zWNA}IH2*ebsVG@E3Un~n!W_fPjn{lf)VrhFj-sWgHL<~9 z^L~3ykD8w-#n;pe^|SU^&G*@J8OXJ24+_6v?*|5<>G0xVuxQyL8MRfdW1oPBgUv(i zZ{0+K3_aEDRZNeU@WhwCh=ql$c=6`*Ma<6T#VFCJcS%1ipwk;jC`F&-AkM*%FXROP z9CGCfk_XtR(i@OoN`~rGj>~_hlw8s4h@qLiMw?vqkYrFU*?G8sfb!G?8Dg4}(}_JP zYgP7CO^b&k%NS{?m{mb(YJrRjt0+-FlLV}A7)FoYv$ejC<9E*E#2fz!^}7JOf|0$( z=K9$*eiSX4yun^Ga~0Zit?CPYBHHPHc8N*B8whpJkMph(nL&Rfot^cRN4{bnFX)? z-9yYSE>OSrMBrdcoS<##9FkdncUNLlV@W2k1X+(%Qj!#*Ae=aBNJ3=0-V&jgJv6@b z;tj+zCH#|bx*xyzuBY++?|2CP!fi+pV8W#~CD$GU((y2p(wE5~qc*FaU;EOZ+u!N- zqEO{1fx=!xeXq?Vbvq^#i|RuZSQ0fJ-8cJ?h?k5aQHL2k3j+`!>_;6E zrT`Hr0HZ)$zx|_#wSLw_tnK-*=gYMOt*E`{_ZRj)MC3ENziOR^lH5lbh*YVkeqVtO z-F8Q4T@(fZ3tSNSZH(;MR}K9^7`1_ zZOGxkF6;HifcCY6x4h+E0x3zUE++8sD^3x*Ucm(Mn(a*z*a-lrw|dwoWt?3GIW%B- zncj2zaa73C%*oit@omqR@gcHA?=}g zM~xI%&RpDRwDH1~D}tc!?$rrQxgAT#$LZg^9J*W*vq}Bj-D!xI(F>QZiSotEbZ}5n zRZbj7!WfFhDN@>FxO(N5gdcF8gT;j3lQ^+BDPYIS ztu<pRgplwUF2EI5vf_dlc?5qg!3|R5s3&&4NhWiORgg4gqv9fZ54&Mo|qS|gZ zq(mjJJ(slP96EVYtY_wDP$uD^kS9Q?QT4ne*mI5J&c{eO+oyTmm+Cw_yQ|pQIh4E+ zy`D<&%k;#aXU$ekesY%>;8~nHHi5Z`9LA;+`0@)o zWceWBgTcMR6yk#>zWj-Iqv*bbB+=~2bNAEPLm&#lD-AlYx^(t*NI|aB{7p|!6U~;8 zrv1QSJi}gJfW8a?RcxIRPZK_`*pkM%7ij!Nn&%FO2GPCAcv9}+Dt$e+YWc@3o3fMc`rahO#V^812`#$h7{MrBh3w+=&{*Y+#67h@~ES|VPe7qweW(-#7 zGc2$gd!UK~KkP$S&j|!t4`}j|dzw7mJl}QO`lmrAfMLDX!}Wm?JG2L3x;NIqBSv{n z;4X zr@vACZj{#tmo4YoAV!oNALWfLe8AgVQmKoR6tj%VUU`GA7;V_wvrJ&>!kGn}x#uoi zc-5(F!y17MFFkdOWSTn39u65L zDkT4mN#!ffiRTXD*xKH~`U+W}oFo|p=o}{AJRn&ppU+7ZL9VEj$rh1F7qCqL@fe-C z>$g_PC_N^*j5d~cMULS)W5c%>`5<|!IFU9ds%9ge03`(WvQ9a3;=FjW&ff7l8gBr` z9yQnIS{}7G%z2Mm%c#%H%ce7%KJ912{C;$wMO^|gm;;EqqBf{`>4{*1W4FsrgHR_z zeR8QDwx9bvzWLR+;dejuMSSv!UA+F`yUCEn3(D?+BpjhHLNHrc)5*A4ff>!>tfE{p zPF!79H!(9eE6IXb>E{?nuBqNU+!MjFPF5feeP|HEG<*64u3THi39|ZexWmls7%3oo zC{N6ifL4(<*lNg`$QiA2Q)v{5NGb;eT#)suPXaL~lZ+8_@AD+m`=%%J0#I=6_8wtL^!`Rq{#(NWLX1Qd06MBQtD9;J+%V~-jyfS3K|ih44kDGXHBvx7FFue# zHMZn&Ot0)&ap$AH5B72S%U{85+BTY7c#jdG3K6lJF!KN!A6crPLs0BN?EYgJ-Zgsm$KuL@k zcwdrK(u^aQCT8C4ilW86I&p$5=MGn+>0x7|DbGw3z;NfCCnc9chu*cjT_NN-hw5Pq zZJMjf)*gWbr2Lk$c>bjg5f<;gZH~C)5La#-VrndfVkU<>?p?z1r2=Ng$LPK_yyI){ z!4~nmw|~Pu`1F^SNpU5VJf9|>(U7rA0wB`pTCE}W4{PAOEL=fnW@a2Q5{SFRGfymz zp+JWk>tXZL92!DM#W@e7~ zPfV2kb7#-f0ZCm?Ik=ZBrEy5H%YGYk^GjG;yCz@_=WAd(-QHdo0I6Q9(iy;KLW33u`2 zBHsGYGe2T-2P;QXEUVSH*%LQML!cgLqDWzR3n%}Gg7i7odG zs}e@h>ZpAg^UA>uRH8=?iQ>JK&G6pnN`8ZQIk(e}B>#Nki%;P3FFi*4%Ec=mcnDwn z_HPpJg$#kHF_K*hrLw#~L&lb8KK&8Ix_c5MyhF0gUZbt{0_|<~+DH>9$oXmB_Rep` zBagfu-}e*$5O03d8*%>wuOLg?G;VJ0@{T?T!CHy263%O&A>Aq=(>2{+tt)jxGsnsgnOUEud808ql<3Wt&HtUgCp(=qxZ z3!R-*gBW^^qUKC1;O6?=jo5*WO%f`+1uV?C;I~>Gwqe z3iiF)GtHd4C>hr7Cts$QgZ3~p*C*yE&!C=o>=8dCSz|~bM2_UEe33xc)5o!R;T+Dq z;sKm_==C`D;2Uw*SN}aM-StL{pS>UHxw~-KB;cWyBqMc4!VcL3cF<*gb12@2nJkCJ zD(}DD?JBZ`jL6QMkea>xRArYqQrQ$4nfoFq4Tnw9IoZp7d~y=kZ*0>!Iuvk(y)ii) zgmX&OYXdSW3~U>GFml2xm+zbnZSyW1~f0&R(1dG+}jOpoXAH;-Mzy~oRv ze}Rd`Q(csc47JJ0tQz$?Aw*+jwIM~o<#J|uIzY)QVBFz zXdV)xPc|DuqcdWyE0yx}vq{#3gw%$uRf#C5-6m&C?{y^ua*Q)GlQ3H*D`}euBOz7o z+1l17%TGq?Q75VG!-F;vR8C?T`LO?k&)k&ca=-M0e;@r+0`bW^=`2WrGmyHDlGI}H zQ6h?B7Ez4NW|B68k6J66D9ko(Vzhs^-)AxwbM0;7ifY^ZjPExq9YiryQ#de7LE3X; zABOh49yO09W3&$l^I4nbj}mswxsIyvq3)9&jLe0-?qQVKOLl1WW#n?)2xg$B%^e1b zR(0|u9WKGvH?DlZUPgm%SCR>GRke6$4>wqiSK$ziq?FNRRD7QRNlrd^ zaw&rsuk6ub)xtI(8pMk#WC5R>E#vtY*9kBng@BYyhZO8&K8aHcWwOLK=^g@h2;IKp z)Cq~@-P+T>6rYqhT?DfEhG6S*O+l;E0=l~>8gVy)N`4c#P>NtIt$L{8q9GIN2k&{JA{u5F- zd&7Ys`$c+hr(MO1&pwBJQqt$==c&I30_O7161B_g%V7!Zrd~PVu(Ju=T3)7uby>V3 zsx-#Ai4snqJ&CzFvdYt;%~`5BVdT{8EYV3H3kwrOpLKlf{U4L^!o6Vy&yeyJBOrzO za*g`ZBqf~dTGN6E5K!l2Otk*&MN#AG3EjR_!D!IIAD7JWe4umL&lpgGt)|?6(~e1h>oKbvcbq_iZ|(M59YHP3(!dc zwe`@nyt?8>>sSg|z(X;@H(eJNK%#lBiv3pd$55qvi0Qlx(MrWpN|kw5h!-U7NtR7m zF8ZV2{qID7n?y5Z+;(9BSFb*W&wuvA`0^J%i7S`Bgsof8V(r>2 zh;I)&XgkV_hzF74Bx*#1oV(`4soTV5m#fNfPMqnfDcpD8-FWoTNAX|&%WsM-G%-1g z|MVaJ1Agn*{xi-IA2@%t4|VZ@o>3!|ZwW?(tms5pk1=xg zn&0bpM4h#!;A-9YUKhpPY?InTY4h%SQj z-LBwZ_tR_}h9{*S8-r{&udU&||K%6Z++D`(nTrI7XQfOY;Eo9U`n_iRFDLNpD@uVi ze?O`nTaJmkKWaT}8BNQxUT+YDWR1$RCjZgbQI>PNpXON2cFhu!`g85&X?t{-ZJM&L zIT!XkMC~W@GUvhk+y36}hyML2BVAPcrZTVRE^5B?6*Yf+*_AYGj}m*$jv9-pLztg& zo2HU%_AeHTh5qU9BwUUG>7h#K?a-M+q62{hDM{QscYGeF?z#)NJ@Ojd{+ie0{Hx!J zm%K`P{_K6B zY0MnEdG?qzYwKYqKw;`QFGojFS5%w!6-7g~j>n%TOoB3hH#bz&M3{#v|76Pm3x9R8 zcr{3H%EcP!)VCzIt=Dz2PnN8+C+2ZC9kT5%Ef$xhq^`XZmGPv>l zHl`M4sl5Y)|Yqaz@C(t z)*=aKKmV6c;g`SXO?dwDF51-R6cMPynM2tfaWE8jJNW27d^yTyc=l$qH}X-7ZZB$7 zlAb6+G8f-uBK(Zm24A`z^YbXev=0S4{*o`98^UI0_69NIeD$+Og>={ltx5RySi*uL z{5g(F)M$^%8zsW7qv0euQ5!jCSUvPOY@~g3{k?G^b-!FMv72T>@Y;9% zkc9wIcKmz{GG{{t2yh&;6IW#iS!wBWbroU-rHQh~y0W>;;FvF9*=1X+DKyr4u( zyjtVW+pgpGdl&FcZ#{#{Hx7_3 zk70Fn4`+`Tu|}5ZgGxgHl0BLWc5zR~G9=`aGEMWczu%CAiurV$4lQ;oPr)UHj4K8X z$V$!1T&F|8Lo82&sbP7uiXZ>MNAURL*9nBE;h_hYB!57?M%M2pjg2h2ha7&w%K*hI z4i1`V(LA&VZHc)*b8JSG6s`=gK!+pOgI?~uh}S)Q7F>{SYjcA@lW|O)n8ns=9S!1( zcVAq>&O(mf)x_edlZ40@=+Ili=`$x$E{vg)Jpcorm5o&_E-j#XSjGNs6)(N?A{LJ= z;PUe?(xJL5<$UL6r}4l86L|gWUq|zFoj{OzJpRS!aL3&jMZsUYwN47o5?*-WD&`ia zC6r=(qJS&`wcEQJxN`L}l1?3`FFc4cA^g>PjzEJg0wf5;=*IEFlh5M>y|bKk@VSqC zP7?V(^Y~X#{^~JNrnu~Hl@4)U|H^O+h2n&qA#AZ|5NLDe^a;t(pD(7-B)V<&d9Tns zRw}5s8&W}G>C9P-?e5@-tuJHcpe|L4PMugHTI*qLc^$Vud=GkcvJh{rOD6xy_9ps` z3XNwHb19+)I$zj}C6iVmJy{Z5wrXuvUa<#kZ0_N~+sXtw#qpUZZsOQ{8Lxiy0w$)1 zc;X9P^c(_^4pX$geOlK({XW3)NubTiRdVjg7%3<<(+o$nx3@dwqge}wBJHSO$-FTBf+5&lS zDW0kB3z8u+PZO_+VGxR;EJQl_T1@yLf5%oMZE5fKg9`#co3vN_)RL@99o z`RwJV(6^YLl**%n=O!qRY@W9&*4QXT379?({u~A}k6I7M8I?0kV}U7q+CY#1V1C%7 zqB+%+KC9s&T7fr=8Cqe#&p*%P7T2dGQEVK?AJ1r*5O5SArRLZPX2VtcfPvS`Pks*X z{E2^tiN!fI4py*r^C_gJ7RktVoc3x~0C*T-p|5M9 zeRNuqV!Cd?U(K<<+#WX9+SU{8IX886TStj{mwCT^w%hwxUuHENJ?~}-SfBU&*pL0# zFW8&M+#vrqB#yrm3n{zGwi;yJqRA)A;uD|y5Y9|yF*#Gl_R1FWgeG-+T@rx0%H@+L zy1;RxBA}!t%z!3kCw%1)8rG$6}Mn&B-;~ehq_IPOPH@ z8i^;w)XX>uf-7X@86zShC2K&Iqil+-oLz4`NfKI#ph!R~kuZ5cs8z9$me0AgWr3_z zX*x7HN5nE&>=qX0hz)k|@#j|YV{dyU{^Pqpi$@-LHEuh93>d$_Mb^ox6c=zoEHE*T z$}y^(oBzzkwKtDVV46upF&$HxwwbZ{F7q=JY%sHun(wuRDx3M(_eL@FC`CPr@kTLa z^Idj1w43@rnd(tH;2Zcg)jjG zG%dLB!7R0xl+eq9w&Y*vb|twgGr}P!J!9(*%~5;zSv>Q^I{y9-|FF1t>4P?0suq!S zpoB{P-9=!r)cvzUV;o5QGVjMf{lh<_Pm==n^++ku2Mc>av9iRVLW0W)W@2Pn-p9ZE zXOH5Er#Iz29qK>lMY!j-d8{5(F-?l>?m7 z{-tf2t2k!LX|k$2SezdxFkwhacmWB5y*oWu_AQt0bmA&Rqgrj#oDDHce5_JyVR@T? z(4-^D1t-Q?$yKrKlVd4V>OEXvCRDqe!LwI(@T&Xf3B=gN!>>GrT@H;P1*lo=;p~Mu z;+Mn+IkPhzQd7kYHb?<2rX9(bz@P<}ChU*`ou~J>G#9mlZG7sp&!NRhkoKFHpUTqn zF6QSa2u07LJWXSux!&I8N(4Df%+8@*uZvU89k;fd;?*`riut)yS+Wwl zs5N^;UmcvEEn$t$g4f@FoX)x~DQg*&Xsw%vb(&)bPkecq`a@?4Ez)!;jRRW49>;-7 zWrqY7Cz819e43!87@oRWBRb6C)La1*V@WyNn7-OI0U@ufj~aGuVdo$U%f z^tT_!W1smXe)PxwF##$J8pS2X-Vp(*EBPw;{FJ@O`*0YS60|&DUCz}YS@YF?><`qr zJyD*JvW(_sD2(#Apo`7MJk9 ze(!gQu5;MkS;bqv>TB??f8k%^Tfg=1X-s67i~F%w8IWG{bhwI$p2X}~dn z^(Z+=^BEZ5+5NF)7*nW^QqI^Lf`O?UFW$tR7YQ6Z+``I}U&3R5{l77O{5V-i$!ONx zlPW!YkS0k%5^q`G!(?0GW(K1z|%^AXi=^ZmALcT^wr zGcUIe<{X$mhr{8>*tP6qerER59*-^0n%|i`)V9_~&7(Ot_IKuG_CIRfZJFGbi|u>t zd59Wk)LfeP*|cciXRe(|TT#YAeV@I5k6MSQerq7qywBHtc-|Obmh*BTMrL-55dMrlR;~4hI1n&C8VNAhJ)PPy+)#1glNoMBYVxF#%Ior{@onAO$SG<*HQCnu49zG zX=4TEczh54h1j zaw$&JDKXe$L6vxMR~DBAIu?LjcH1V)PLHf|eMXWj5u+&?FI?%JvkUMxtzQ^L4stJ ztY0Ovh}G*|adF8}A6sNOWblGrNw4g7@UbUWaObf}35WaDzj+e>;L!*1^>2Fs&BRH> z3PrJIx=?k>hn{srWx#erhqigy48vX=`+(AOZ*TZ;LaVUF+-8cvD9UIm?omWzGnJ?| zZTc|3i#nj9o()?*M$0_eu0!U#%>s`BU8Edkr7RvR>kKHe z!l%c{00YlMjrR7rGh`{x4RP*l8K3{+8crRbA`l`Y$tt%uJGgqSiiNoxDV$AlYj1NY zBvSkjh}lm}axxxOiGUUI9HG}++r&HQovXKY$kLd=#&#P8QjFQlYJPD{_IRA;=KT37 z;u!<6&ar_qLm&j_P+-H=^u!qPpc)>$cM|)RF7|2)XmFTk3=#sMPGtrJbh4+!7G81h zX?*&#FM(Y*CP}ee-8d9b0tCiZYc)&~0LwsUEEUJf`T?frXK}z~n|7O0g05QaAV%o; z#(IU6)EPYf_zSqXx{Y*snk@e0h9=x4??%?>$Jn~~Xq@?ua0QDNRy|;}QZZ=UOW$P+| z3p;cMd?Bm;>mDGK*jyHlVveGkkW*E1P(m4OrQsY zc`k#~Tt3SY`q{6v$YMekUGOZQiM4@8xIA0YdTcftxg2*Uf4|vDm1RqWNRw zdFt`z;9d<>1ZRctAXlHO>Nzu^o9!MQ#oOUoTwy4(s$T>7o0EH0_76DKE-roLGFI1C z2#DLozyEi?C{=VMo|ixf{>RC}xC|SYoxS;y-@!fS7O*f;z$@=qL^(^msMo|&IZO1P zK$==?R~rJ*W=myUT|U5X{g>atpZxysMMsSW`70N8O1Fkk+8)gY85 zOwVP2l$&R%EkK)PzenjX3~ZR+>1T9R4Mi{T=0gEq>SuV}wbfhEvmU#>FGiIiJwH)` zxp{w<`0{7p`#yZ}FMbadIx`Z*V>tJ!ufyEwyCqjnwlE>V6$6sBTaA5^gB!>aPll5b zFF>>E#!<4`{|k)=YkRaJX&R?SPAxBfPHWIHJaE zw-Gfz=D1B6+8l>Xhh`t`&&`mTqvT6l_tKXhqv>gT)OwinX0~U`(&jux$>4T>%=V-9 znyDw6v|+D}-H!cy)H!0#x$W5y)ffKTES;$5L;r1i9^2rHO-C{ok-;4aDdyOR7=z4? zDplPqSeHPnmcGO;uT2GT^?LBH%3iV6Pm-2RkCPz1 zCCSjL2W07?LzTlL7=VbA@RiPUDYpiG_rsUyFekya$Q#)ap_~j;)JIRqq_)`w`L^S; zc=J6=_-`M42HSNPKl#R!Si0i@B#ZM%PM)GOJ?=S3#zcT}e8FQhB;lyJjv|~WWjl%i zn42kz5Nv`m-({oe=J!VtPE=p@JvLAQL?2T2yY+aF$}UIJlAgFO~zEjOhcpN%!g9c(8 zZyd^6sWPm`Nzs4ryZ?+7;h4nrJJ5L|`XcPIHI}^yI<%jUA1~wl*%Dc?4{=Bq_D3H% zgDW>SB`bcl+81l}YaS((nE;5r8i9nZhP2lk#3lTyPhe!7l+f+n775!qvRtRIveFjC zZ0E3#yKkQr0CR;D$@zszveH*bS*7`*&T_?ulPAV-Hz(k0)NpI7BdRZtVV{)Q$=Mv5 z1T5@uoW8@#5i6cOLBglTbNKQL`xqx+lk?52ld^t%evuT(rev6B-pR_;xf4Y()mExq zG@3n$!RBO^RkEzl9h;_S(=5F*sv1f7h`J1Q`Z~WVjJ&txSO~`#+@)#5eNao5rTw0j> zd+XLRZrs?z)@}`18pn;5ZKSvwNTZ3p{VFNUWc{C;#&~i_7J~`NgTpS}913^s#w{#P z&q~Zsz~|{BbUaI1cIq?9-XUXVe}6(}i@L#$3bw7ms0OtBQ;BIRZ_{ zvfS%nX*!2jzG9Xvigf~-vT*t|@1!I?{@gyc8v~g;u#(>GiN{5el**Nz1Ke@^gyg!& zrU`)P6)=|1FEqz4Brr5Kb+5RldpV7=RMB}d7R{KyZ}JTw*X zK=i?7w%DyxdEc~%RvY38)NFNRu8M^M{cO|u78CF+=9QK$m$}rl3Zde1Vet6}B10n_ zN0&N`i>Cy;;PcNYVMFtBcAr<)Ba^2is6^wvGw|5LkwR6Vth#GI(*u|4LNi_C~S3ZdA*KT5db_yq!=J8cu_l=U*ioso- zk3dhcO2nxYeF1);s2bZG_L{@Z7=&0s;%==$Yy`rWHBtlC5cm zbv5;;rib92=B2$&)bALPgMxMSYPrW$*og9GNcih3{csRUuBeo~FyLVek0J2r)T-u#U?`S6>`ayltxhX+KjnIzFgWleY)mu8Q(cCr1;CvoF* z??WoKi^=0>kjl@9N1WLQ4TkjlDon^sQX0N5EZapXJ5ghck`qk;(3YcsXzQo_nFa;4 zVyM^8{5(o&GWV;wCMIo|UL-FEJRFtO(p+c0qC92IHq6Tgc%qa$`!c_`b4Td@MSW)W z*#;lX@oQsLlzw8)tsal=i|(7*roAWhJ!ZS+`)%OG-19b2V9t-(CvzU{_0&Aa^!yHh z!qIhqxiOggLq99;W7(CTcuMpf zn`5-+EQ&VF`=a!wuwD|r%rV>T+xz;c&&+v@x+i8Yx?U8sbGi|8!Xag)hN84|nhjKT z_lOb3(A>Nv+1AOnf|cbpeD~Mfjki5~T;i8mfoOGI0TPtu)s=W-UZf5QtDM!I8Dgu+ z@y!GTWZBh_1i!5flC#nzXi{H?9W-ifqzhRB7II{r%ZL!>)(#~EgOi$752!CLCyY!; zHu^CVeA~@K5qufJclzv>-NpUqmT>9XIzI6E4N}4!I@tSUDd0GrfuwqD5YgmG2&9hT z4?gxZzUJZE@Xhzn;KMg_q^ywOTRMheLLJELdhPmdcIrSjC*NEIJ(uD641aDeR1|Z2 zIVNDQo4GNfmP zfSXd;X#)XuXt^k=Qn z6_nuR$mjYHgWqp{heqkuoS8y@Fz2j%b2~%&mrBx}9jY)QU9+66(rOMJ5w`dcV7F0D zzQohJ)y24^qMkhQLXjn!Qlf4^Oq8pxbrmP;OWy92c9Jv7Pc ze0WH6F-&4_Z-6(y;VicI+L$O7@x`as@Zdvp_`z?#K#K4#QklGjdv#i@%+WvU?`NL8 zDOC*aK2^rz%orxe^t2kMopSZGvk9_t9^*4|E zAD*Q-VX)(nEaF)L5t@XIw{eQV*lMkTxrGVr>{UnsJ|w}iD0yWPgC@r3N>UZ0NQc&I zi3c6*bR-cu#|vI2MdI0~p2w5VKZ7S9f1Uu2DrV>MxZ}<<1fsMFWzV5~7X*?UFcqW)WAe?_g)A ziRM77CfdUU(aRxjKbFPwWG&uaYZBm4BBj0|iv1mD$8q`ARRSGc zys)w-HL@o-&yR#7G02o5FeQeUw(A5WEfRpSje0MJDK33lt>Y%GHCsbwi=6avPeO4H z$wJM^g_8tubGgEWat3GSrldkdjDQpd20IeMqe>=nxlB#~I628l|BAF{2#|_r1@ulx z!oj3en&9~sPrxC2@G-EL@yabK3$mb0u6WfW$eDnUV5|9+Dr*>%icw~0U6|*`JnOgy z*kOR}@_+#tD1bF4sf)s%XtrV)0IST8T+v`%-|8KBZz-NEpLk;!4TrPOp-~}z6mWI~ zAW-rP1BuFUWaz(N-KThdHk%jkqAteZ((J2gqb zTnl*uq&Pp6L+i-iDa;SKgeWHfj5BT1v+T7qzc7V2y#96gXFvT@`0xMyH;5m!37jip zionNj{(IkqdX@MH?MJb0I|^vw+%5|6QRkWB;e%iu9M@C4hyHoQV==9$>TJ-~=;4ua zjFJOjodp;%y0|dC{ve>2EpNy~^Lo4bObx&TyZt~OP^X_-erIHz6@3L~w))uBCU#Fo z4J(w0y`Lo9pB?FuEXUl2kSoEduGskDT`s?TUpO(S&oSF1#>UXwsZ-Py_ zy(oEFKWFD;v-@Yu);4%x?p1r=>b`3lFz3`f3-srDolKo3O13w@v+2$5mpKL#*wF3q zrM>LTzO!e(-XCnZV}m)LP3(at&v@jzsv%Pi~<%u!W_o|X55 zOHINdB_(-?<8x*DtROLu9Dl>|OD2<+5DiC6)ef$%9^mb-z7rq*@{72ev zdzwIwk|;@iS9}*l0Q8n6w4v?a_2k>cVK1sV=TT^R)B#}^ z_t}g}_bu2%8i{vwGoBn{#wO}9BQ$0^k&1TRbTJA5nU~C?6BeeR|HXzX8#cR#k^;s` z+wqI1Xzz5zJ)1p@Sa_E_Y))Wh(V-A*wT#CDcTqovRace}D`z5PZHRe-Id_vSMn$sJ zPR&f>7J&nuPTLc@RT()sEa}FnGFg+!;@|J5QL7H6w9xV6X{qc`-Rt2EuRVdrg)-*K zIjpT#v9L&1@9SOENEu6|AaQVg0uB#|4>0i9tq*bKRuz*|1#x*heLROZpPs;9zV8Z7 zEt2v*NkC+yheD}D3T8(_241?fPk=}oJ(~Z615RMe7WO>e{Q3!e{>wW!zEr|I6$yZY4gnQe>O&Em8(zr9T7`HY z1ZW+S#qqGx!#43uuFR7kOW^Wz4a}b!#~dl}s~ZPs6W?r9NogchyhHuH>%OzN^ul!l zaCh*vU-vdyht?p6-EFdV?Oez0cV3Xvx)&}S1Lv=~d3~GsAkgacq*UH|(xo{b8!KXW_W%>6G`?`{7Vf*}JOMg8 zbT)LvTZX}g)sNPAbF4AX1%uSACKnl>S?z;moEmOOb1vq0RY}~p@b3Z_Nl9VF? zh*OEIBwymth?8Y{2e3}S~}0l7P*m~5|Ykbs@QL4A+tnC9<`H<2u6 z#1dHB-H}qDTRXc#kEv`1jXf^o*As!@-ZN#~cE=0>C$}WW#mQqiJoyaG3B-cf&^{B0}lHeq=~NTQbp;@ zFV&>#MKTo=z^}yubgzYDM0+o+cj+7=y5qe=`>NfK6FAm{dsrhpDMfP~6A!&UyKA~( zZzkapv_Hp+C89+F)`(`d>zgQ&)%=ja_af&tiK+9A_b4aelyb~og#hINpj<+g!Wr;G zwcoYEu7FkkRSUbquVP_KiB{^h@~V?4I)2EPo#ow2RO^PVHK)i*xk6b3Tv0EXUtr3t{An@~0JeGKT?aq+)>_C8{1o0PsCQrbqlvee4 zGApi2$ByCF&0Bck#TRhy%slD@4o(p0G&MIPKvc{F12{qUXl@1Vbr*!^=`%*3Md7sy zyf`#~1lYhra5n2U`aZZ}f#CZ5;(zYY0O|t;NUC@7zTmz~(n+P%>oZZGF+sZufY3=o zCGOdiDO{@>1ADVMgT8Ow_s`y#@?g;K36I}aTwQ2oUeSt=Q>gRU9YT9dIGlTk^^buv zH1Jq1zw{DLoj*o=^UwoMcmmSWZ_dRsBp|^hn#mN#X&={7yKx1-|2uz*$Ddxtx4q*n z#NYR@@gf1zcn|UmiV`I*T> zjml}iCWvA8G0G#voI6dECN0@|sW~=t zZS}q8{Ok8gNhls4R}~wG8A%){U0jBet+gy1vLM7R+j&Cfha4MDhXE`0T)Ul< zI;PWcwCT|8(C6jJGFbW^68Mmtm{7a|K*HQNsNAP->fwks!*sAo>iTxSZ`?)k9^A>u-Pf35@4* z_^RwQCg3OrVlz`yu!>^(QAA)W$fj_1 z6mdqOwx;4A#dP(%?01?BF2q&&-`lyH4m3?S(B!C~WHErlIOB|A)R}P{b<9~YBA_3l2m+$y&@|mm=X7%p z=iHNX~Wsf!pW&tmO`V}xn0R5^QE;v4yw3awpDTUM3I_#CIQ`!PfpLKJb$_b6(Hj zi{G2Xa~BIZvrxxl$4gkrw~!^U9S*nih{z@gobTRfvaL1HbDP)@m4S8lZej-`i}13u;zXTjIeWpTzoASh$b(;GitExyy;%IV543CbgM6_cQgX$RqHbi)jl!?uY=TW7k+P!dj4lB8=%4oiK z&wk~#pi6Q#l>*<*PvC-6b+x8?ZZx3MYW4y~itn|@p!b}~|IB|TKeMgU?*27o6WxAu zqlZaH7Ij?yqS|(Pd2v_%@Iiy&t|6ey^YwUIde8VwSNs5MLyh{qGe;YRaZ@HT6`=0k z(|{Q|9(~RBS!%U`DIJR~USPAcQ{*Ar-JB>YlqI0NS0s-|jX-GwWh4SMWS{sHKJlaP z#6SMVU*f6L)A;rO_tTV@BRG8YI_$jVdJNz2GVZ4VtV~|O^fUj4YbU-!J{BY$i+1J; ztyT|UXr2>o1V%+Ny8vPgkaKEc&z2pla^J%@jFvj%+2|Hm;clJ}(_h13$L>Z0=E84mN47m)>E^ z>0U-avyb*zJ8Ne>%U;_qc!{2Q0A@g$zckm#mS^?L%X`7r6-=PU?3?*K{n_+Lw&|3) zrkl;PUQ7ErulY6aHTx}}OY1bC5#(z%LmeKYUtao~Id-qLG1t-D7$^nd6>ANrNo~DJFeSGoxY)jC22kq4J+%MX7-Zdx}j!5FvRMYNXFc7im+P(OB4{Xo*mdR zgkf3*{^m<3X?^R*Fs-TIe0CDqd>se24In3p&B&ZX?9X{x-oA5c9zXY{>v3#0gqv>M z!h!5YAlZ**yF6dZ=L#NXQYv#E?S-)y%p^1>@$q78_I)pQ?`F?7UpDcxzc&w~O<

gRCGXh}u!#?QdySvNn9=S5$y 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 z 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
pbH^c=piCv0X#H0{~Wky9q1zwY! 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%0D$f>J$U_#c25aMa{*GZTZ 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 DQgMEUK>_}If0vdRuKICh)8Z}ub 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%0A51LH?s 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

&-a@*p8U^7=W=HKVRrfNKSHxN4!o; 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 >FfGm9>o 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

Xs3 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 + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/albums_grid_item.xml b/app/src/main/res/layout/albums_grid_item.xml new file mode 100644 index 000000000000..446422e56c3b --- /dev/null +++ b/app/src/main/res/layout/albums_grid_item.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/albums_list_item.xml b/app/src/main/res/layout/albums_list_item.xml new file mode 100644 index 000000000000..d5e11e2994a8 --- /dev/null +++ b/app/src/main/res/layout/albums_list_item.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/bottom_navigation_menu.xml b/app/src/main/res/menu/bottom_navigation_menu.xml index 74abc6dbc257..3943106dfed5 100644 --- a/app/src/main/res/menu/bottom_navigation_menu.xml +++ b/app/src/main/res/menu/bottom_navigation_menu.xml @@ -1,6 +1,7 @@ @@ -30,4 +31,10 @@ android:icon="@drawable/selector_media" android:title="@string/bottom_navigation_menu_media_label"/> + + diff --git a/app/src/main/res/menu/custom_menu_placeholder.xml b/app/src/main/res/menu/custom_menu_placeholder.xml index f84383a573de..0e85e2230553 100644 --- a/app/src/main/res/menu/custom_menu_placeholder.xml +++ b/app/src/main/res/menu/custom_menu_placeholder.xml @@ -2,12 +2,18 @@

+ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/fragment_create_album.xml b/app/src/main/res/menu/fragment_create_album.xml new file mode 100644 index 000000000000..c1397b8d652c --- /dev/null +++ b/app/src/main/res/menu/fragment_create_album.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/partial_drawer_entries.xml b/app/src/main/res/menu/partial_drawer_entries.xml index 8cb3bb93b88f..a2d73c181abc 100644 --- a/app/src/main/res/menu/partial_drawer_entries.xml +++ b/app/src/main/res/menu/partial_drawer_entries.xml @@ -3,6 +3,7 @@ ~ Nextcloud - Android Client ~ ~ SPDX-FileCopyrightText: 2016-2025 Andy Scherzinger + ~ SPDX-FileCopyrightText: 2025 TSI-mc ~ SPDX-FileCopyrightText: 2018-2024 Tobias Kaminsky ~ SPDX-FileCopyrightText: 2024 Alper Ozturk ~ SPDX-FileCopyrightText: 2024 Bhavesh Kumawat @@ -62,6 +63,11 @@ android:icon="@drawable/selector_media" android:orderInCategory="1" android:title="@string/drawer_item_gallery" /> + ~ SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors ~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only --> @@ -1505,4 +1506,23 @@ File upload conflicts Upload conflicts detected. Open uploads to resolve. Resolve conflicts + Album + Create album + New album + Rename album + Enter your new Album name + Album name cannot be empty + Album name cannot start with invalid char + Add more + Rename Album + Delete Album + Failed to delete few of the files. + %d Items — %s + Album already exists + Pick Album + Pick Media Files + Create Albums for your Photos + You can organize all your photos in as many albums as you like. You haven\'t created an album yet. + Add to Album + File added successfully From 5f7bcbb998368307473caf1e303c205063927a0d Mon Sep 17 00:00:00 2001 From: A117870935 Date: Fri, 6 Jun 2025 17:26:13 +0530 Subject: [PATCH 02/27] Rename .java to .kt Signed-off-by: Surinder Kumar --- ...{CopyFileToAlbumOperation.java => CopyFileToAlbumOperation.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app/src/main/java/com/owncloud/android/operations/albums/{CopyFileToAlbumOperation.java => CopyFileToAlbumOperation.kt} (100%) diff --git a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt similarity index 100% rename from app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java rename to app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt From 15bdc3298f9a0ccc705112b8269be310549286d5 Mon Sep 17 00:00:00 2001 From: A117870935 Date: Fri, 6 Jun 2025 17:26:14 +0530 Subject: [PATCH 03/27] Code refactoring and operation migrated to kotlin Signed-off-by: Surinder Kumar --- .../ui/albumItemActions/AlbumItemAction.kt | 2 +- .../albums/CopyFileToAlbumOperation.kt | 117 ++++++++-------- .../ui/activity/AlbumsPickerActivity.kt | 6 +- .../adapter/albums/AlbumFragmentInterface.kt | 2 +- .../adapter/albums/AlbumGridItemViewHolder.kt | 2 +- .../ui/adapter/albums/AlbumItemViewHolder.kt | 2 +- .../adapter/albums/AlbumListItemViewHolder.kt | 2 +- .../ui/adapter/albums/AlbumsAdapter.kt | 6 +- .../ui/dialog/CreateAlbumDialogFragment.kt | 3 +- .../ui/fragment/albums/AlbumItemsFragment.kt | 125 ++++++++++-------- .../ui/fragment/albums/AlbumsFragment.kt | 48 ++++--- 11 files changed, 170 insertions(+), 145 deletions(-) diff --git a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt index 19e519e5fc02..9d31afca3def 100644 --- a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt +++ b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt @@ -23,7 +23,7 @@ enum class AlbumItemAction(@IdRes val id: Int, @StringRes val title: Int, @Drawa @JvmField val SORTED_VALUES = listOf( RENAME_ALBUM, - DELETE_ALBUM, + DELETE_ALBUM ) } } diff --git a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt index f7ff64ee51dd..bb9ef37b873c 100644 --- a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt +++ b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt @@ -4,41 +4,32 @@ * SPDX-FileCopyrightText: 2025 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later */ +package com.owncloud.android.operations.albums -package com.owncloud.android.operations.albums; - -import com.owncloud.android.datamodel.FileDataStorageManager; -import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.lib.common.OwnCloudClient; -import com.owncloud.android.lib.common.operations.RemoteOperationResult; -import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; -import com.owncloud.android.lib.resources.albums.CopyFileToAlbumRemoteOperation; -import com.owncloud.android.operations.UploadFileOperation; -import com.owncloud.android.operations.common.SyncOperation; +import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.datamodel.OCFile +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode +import com.owncloud.android.lib.resources.albums.CopyFileToAlbumRemoteOperation +import com.owncloud.android.operations.UploadFileOperation +import com.owncloud.android.operations.common.SyncOperation /** - * Operation copying an {@link OCFile} to a different folder. + * Constructor * - * @author David A. Velasco + * @param srcPath Remote path of the [OCFile] to move. + * @param targetParentPath Path to the folder where the file will be copied into. */ -public class CopyFileToAlbumOperation extends SyncOperation { - - private final String srcPath; - private String targetParentPath; - - /** - * Constructor - * - * @param srcPath Remote path of the {@link OCFile} to move. - * @param targetParentPath Path to the folder where the file will be copied into. - */ - public CopyFileToAlbumOperation(String srcPath, String targetParentPath, FileDataStorageManager storageManager) { - super(storageManager); - - this.srcPath = srcPath; - this.targetParentPath = targetParentPath; - if (!this.targetParentPath.endsWith(OCFile.PATH_SEPARATOR)) { - this.targetParentPath += OCFile.PATH_SEPARATOR; +class CopyFileToAlbumOperation( + private val srcPath: String, + private var targetParentPath: String, + storageManager: FileDataStorageManager +) : + SyncOperation(storageManager) { + init { + if (!targetParentPath.endsWith(OCFile.PATH_SEPARATOR)) { + this.targetParentPath += OCFile.PATH_SEPARATOR } } @@ -47,43 +38,45 @@ public class CopyFileToAlbumOperation extends SyncOperation { * * @param client Client object to communicate with the remote ownCloud server. */ - @Override - protected RemoteOperationResult run(OwnCloudClient client) { - /// 1. check copy validity - if (targetParentPath.startsWith(srcPath)) { - return new RemoteOperationResult(ResultCode.INVALID_COPY_INTO_DESCENDANT); - } - OCFile file = getStorageManager().getFileByPath(srcPath); - if (file == null) { - return new RemoteOperationResult(ResultCode.FILE_NOT_FOUND); - } + @Deprecated("Deprecated in Java") + @Suppress("NestedBlockDepth") + override fun run(client: OwnCloudClient): RemoteOperationResult { + /** 1. check copy validity */ + val result: RemoteOperationResult - /// 2. remote copy - String targetPath = targetParentPath + file.getFileName(); - if (file.isFolder()) { - targetPath += OCFile.PATH_SEPARATOR; - } + if (targetParentPath.startsWith(srcPath)) { + result = RemoteOperationResult(ResultCode.INVALID_COPY_INTO_DESCENDANT) + } else { + val file = storageManager.getFileByPath(srcPath) + if (file == null) { + result = RemoteOperationResult(ResultCode.FILE_NOT_FOUND) + } else { + /** 2. remote copy */ + var targetPath = "$targetParentPath${file.fileName}" + if (file.isFolder) { + targetPath += OCFile.PATH_SEPARATOR + } - // auto rename, to allow copy - if (targetPath.equals(srcPath)) { - if (file.isFolder()) { - targetPath = targetParentPath + file.getFileName(); - } - targetPath = UploadFileOperation.getNewAvailableRemotePath(client, targetPath, null, false); + // auto rename, to allow copy + if (targetPath == srcPath) { + if (file.isFolder) { + targetPath = "$targetParentPath${file.fileName}" + } + targetPath = UploadFileOperation.getNewAvailableRemotePath(client, targetPath, null, false) - if (file.isFolder()) { - targetPath += OCFile.PATH_SEPARATOR; - } - } + if (file.isFolder) { + targetPath += OCFile.PATH_SEPARATOR + } + } - RemoteOperationResult result = new CopyFileToAlbumRemoteOperation(srcPath, targetPath).execute(client); + result = CopyFileToAlbumRemoteOperation(srcPath, targetPath).execute(client) - /// 3. local copy - if (result.isSuccess()) { - getStorageManager().copyLocalFile(file, targetPath); + /** 3. local copy */ + if (result.isSuccess) { + storageManager.copyLocalFile(file, targetPath) + } + } } - // TODO handle ResultCode.PARTIAL_COPY_DONE in client Activity, for the moment - - return result; + return result } } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt index 1e3aebe3b825..670133f1dd69 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt @@ -143,7 +143,11 @@ class AlbumsPickerActivity : FileActivity(), FileFragment.ContainerActivity, OnE * @param operation Creation operation performed. * @param result Result of the creation. */ - private fun onCreateAlbumOperationFinish(operation: CreateNewAlbumRemoteOperation, result: RemoteOperationResult<*>) { + @Suppress("MaxLineLength") + private fun onCreateAlbumOperationFinish( + operation: CreateNewAlbumRemoteOperation, + result: RemoteOperationResult<*> + ) { if (result.isSuccess) { val fileListFragment = listOfFilesFragment fileListFragment?.refreshAlbums() diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumFragmentInterface.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumFragmentInterface.kt index 080159939165..652295388c68 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumFragmentInterface.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumFragmentInterface.kt @@ -11,4 +11,4 @@ import com.owncloud.android.lib.resources.albums.PhotoAlbumEntry interface AlbumFragmentInterface { fun onItemClick(album: PhotoAlbumEntry) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt index 6fbfe195865c..4d7e5c6ca5d0 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt @@ -23,4 +23,4 @@ internal class AlbumGridItemViewHolder(private var binding: AlbumsGridItemBindin get() = binding.Filename override val albumInfo: TextView get() = binding.fileInfo -} \ No newline at end of file +} diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt index 2709c78a8b34..a531404e8e99 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt @@ -16,4 +16,4 @@ interface AlbumItemViewHolder { val shimmerThumbnail: LoaderImageView val albumName: TextView val albumInfo: TextView -} \ No newline at end of file +} diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt index 8da739dd648f..99ff63eb9a01 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt @@ -23,4 +23,4 @@ internal class AlbumListItemViewHolder(private var binding: AlbumsListItemBindin get() = binding.Filename override val albumInfo: TextView get() = binding.fileInfo -} \ No newline at end of file +} diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt index 910be5e8a088..21f7322a659d 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt @@ -26,6 +26,7 @@ import com.owncloud.android.lib.resources.albums.PhotoAlbumEntry import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.theme.ViewThemeUtils +@Suppress("LongParameterList") class AlbumsAdapter( val context: Context, private val storageManager: FileDataStorageManager?, @@ -60,7 +61,8 @@ class AlbumsAdapter( gridViewHolder.thumbnail.tag = file.lastPhoto gridViewHolder.albumInfo.text = String.format( context.resources.getString(R.string.album_items_text), - file.nbItems, file.createdDate + file.nbItems, + file.createdDate ) if (file.lastPhoto > 0) { @@ -106,4 +108,4 @@ class AlbumsAdapter( } notifyDataSetChanged() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt index eed6a73ca10a..e394a5d3e918 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt @@ -97,7 +97,6 @@ class CreateAlbumDialogFragment : DialogFragment(), DialogInterface.OnClickListe val inflater = requireActivity().layoutInflater binding = EditBoxDialogBinding.inflate(inflater, null, false) - binding.userInput.setText(albumName ?: "") viewThemeUtils.material.colorTextInputLayout(binding.userInputContainer) albumName?.let { @@ -194,7 +193,7 @@ class CreateAlbumDialogFragment : DialogFragment(), DialogInterface.OnClickListe fun newInstance(albumName: String? = null): CreateAlbumDialogFragment { return CreateAlbumDialogFragment().apply { val argsBundle = bundleOf( - ARG_ALBUM_NAME to albumName, + ARG_ALBUM_NAME to albumName ) arguments = argsBundle } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index aef3dd957667..c39c2158c075 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -85,6 +85,7 @@ import org.greenrobot.eventbus.ThreadMode import java.util.Optional import javax.inject.Inject +@Suppress("TooManyFunctions") class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { private var adapter: GalleryAdapter? = null @@ -127,7 +128,8 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { } catch (e: ClassCastException) { throw IllegalArgumentException( context.toString() + " must implement " + - FileFragment.ContainerActivity::class.java.simpleName, e + FileFragment.ContainerActivity::class.java.simpleName, + e ) } arguments?.let { @@ -182,51 +184,55 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { private fun createMenu() { val menuHost: MenuHost = requireActivity() - menuHost.addMenuProvider(object : MenuProvider { - override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { - menu.clear() // important: clears any existing activity menu - menuInflater.inflate(R.menu.fragment_album_items, menu) - } + menuHost.addMenuProvider( + object : MenuProvider { + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menu.clear() // important: clears any existing activity menu + menuInflater.inflate(R.menu.fragment_album_items, menu) + } - override fun onMenuItemSelected(menuItem: MenuItem): Boolean { - return when (menuItem.itemId) { - R.id.action_three_dot_icon -> { - openAlbumActionsMenu() - true - } + override fun onMenuItemSelected(menuItem: MenuItem): Boolean { + return when (menuItem.itemId) { + R.id.action_three_dot_icon -> { + openAlbumActionsMenu() + true + } - R.id.action_add_more_photos -> { - // open Gallery fragment as selection then add items to current album - openGalleryToAddMedia() - true - } + R.id.action_add_more_photos -> { + // open Gallery fragment as selection then add items to current album + openGalleryToAddMedia() + true + } - else -> false + else -> false + } } - } - override fun onPrepareMenu(menu: Menu) { - super.onPrepareMenu(menu) - val moreMenu = menu.findItem(R.id.action_three_dot_icon) - moreMenu.icon?.let { - moreMenu.setIcon( - viewThemeUtils.platform.colorDrawable( - it, - ContextCompat.getColor(requireActivity(), R.color.black) + override fun onPrepareMenu(menu: Menu) { + super.onPrepareMenu(menu) + val moreMenu = menu.findItem(R.id.action_three_dot_icon) + moreMenu.icon?.let { + moreMenu.setIcon( + viewThemeUtils.platform.colorDrawable( + it, + ContextCompat.getColor(requireActivity(), R.color.black) + ) ) - ) - } - val add = menu.findItem(R.id.action_add_more_photos) - add.icon?.let { - add.setIcon( - viewThemeUtils.platform.colorDrawable( - it, - ContextCompat.getColor(requireActivity(), R.color.black) + } + val add = menu.findItem(R.id.action_add_more_photos) + add.icon?.let { + add.setIcon( + viewThemeUtils.platform.colorDrawable( + it, + ContextCompat.getColor(requireActivity(), R.color.black) + ) ) - ) + } } - } - }, viewLifecycleOwner, Lifecycle.State.RESUMED) + }, + viewLifecycleOwner, + Lifecycle.State.RESUMED + ) } private fun openAlbumActionsMenu() { @@ -258,7 +264,7 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { // action to delete album R.id.action_delete -> { - mContainerActivity?.getFileOperationsHelper()?.removeAlbum(albumName); + mContainerActivity?.getFileOperationsHelper()?.removeAlbum(albumName) true } @@ -391,8 +397,10 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { } private fun setMessageForEmptyList( - @StringRes headline: Int, message: String, - @DrawableRes icon: Int, tintIcon: Boolean + @StringRes headline: Int, + message: String, + @DrawableRes icon: Int, + tintIcon: Boolean ) { binding.emptyList.emptyListViewHeadline.setText(headline) binding.emptyList.emptyListViewText.text = message @@ -579,7 +587,8 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { val childFragmentManager = childFragmentManager val actionBottomSheet = newInstance(filesCount, checkedFiles, true, toHide) .setResultListener( - childFragmentManager, this + childFragmentManager, + this ) { id: Int -> onFileActionChosen(id, checkedFiles) } if (this.isDialogFragmentReady()) { actionBottomSheet.show(childFragmentManager, "actions") @@ -587,6 +596,7 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { } } + @Suppress("ReturnCount") private fun onFileActionChosen(@IdRes itemId: Int, checkedFiles: Set): Boolean { if (checkedFiles.isEmpty()) { return false @@ -642,7 +652,8 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { val user = accountManager.user val client = clientFactory.create(user) val toggleFavoriteOperation = ToggleAlbumFavoriteRemoteOperation( - event.shouldFavorite, event.remotePath + event.shouldFavorite, + event.remotePath ) val remoteOperationResult = toggleFavoriteOperation.execute(client) @@ -675,8 +686,10 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { if (!remoteOperationResult.isSuccess) { withContext(Dispatchers.Main) { DisplayUtils.showSnackMessage( - requireActivity(), ErrorMessageAdapter.getErrorCauseMessage( - remoteOperationResult, removeAlbumFileRemoteOperation, + requireActivity(), + ErrorMessageAdapter.getErrorCauseMessage( + remoteOperationResult, + removeAlbumFileRemoteOperation, resources ) ) @@ -703,7 +716,8 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { withContext(Dispatchers.Main) { if (removeFailedFiles.isNotEmpty()) { DisplayUtils.showSnackMessage( - requireActivity(), requireContext().resources.getString(R.string.album_delete_failed_message) + requireActivity(), + requireContext().resources.getString(R.string.album_delete_failed_message) ) } showDialog(false) @@ -716,12 +730,15 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { private fun showDialog(isShow: Boolean) { if (requireActivity() is FileDisplayActivity) { - if (isShow) (requireActivity() as FileDisplayActivity).showLoadingDialog( - requireContext().resources.getString( - R.string.wait_a_moment + if (isShow) { + (requireActivity() as FileDisplayActivity).showLoadingDialog( + requireContext().resources.getString( + R.string.wait_a_moment + ) ) - ) - else (requireActivity() as FileDisplayActivity).dismissLoadingDialog() + } else { + (requireActivity() as FileDisplayActivity).dismissLoadingDialog() + } } } @@ -941,7 +958,7 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { viewLifecycleOwner.lifecycleScope.launch { // short delay to let other transactions finish // else showLoadingDialog will throw exception - delay(100) + delay(SLEEP_DELAY) mContainerActivity?.fileOperationsHelper?.albumCopyFiles(filePaths, albumName) } } @@ -959,6 +976,8 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { private const val MAX_COLUMN_SIZE_LANDSCAPE: Int = 5 private const val MAX_COLUMN_SIZE_PORTRAIT: Int = 2 + private const val SLEEP_DELAY = 100L + fun newInstance(albumName: String, isNewAlbum: Boolean = false): AlbumItemsFragment { val args = Bundle() @@ -969,4 +988,4 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { return fragment } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt index 4f0ec82a9386..a48bf0ba8024 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt @@ -88,7 +88,8 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { } catch (e: ClassCastException) { throw IllegalArgumentException( context.toString() + " must implement " + - FileFragment.ContainerActivity::class.java.simpleName, e + FileFragment.ContainerActivity::class.java.simpleName, + e ) } arguments?.let { @@ -107,9 +108,9 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) maxColumnSize = if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { - 4 + MAX_COLUMN_SIZE_LANDSCAPE } else { - 2 + MAX_COLUMN_SIZE_PORTRAIT } } @@ -131,23 +132,27 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { private fun createMenu() { val menuHost: MenuHost = requireActivity() - menuHost.addMenuProvider(object : MenuProvider { - override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { - menu.clear() // important: clears any existing activity menu - menuInflater.inflate(R.menu.fragment_create_album, menu) - } + menuHost.addMenuProvider( + object : MenuProvider { + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menu.clear() // important: clears any existing activity menu + menuInflater.inflate(R.menu.fragment_create_album, menu) + } - override fun onMenuItemSelected(menuItem: MenuItem): Boolean { - return when (menuItem.itemId) { - R.id.action_create_new_album -> { - showCreateAlbumDialog() - true - } + override fun onMenuItemSelected(menuItem: MenuItem): Boolean { + return when (menuItem.itemId) { + R.id.action_create_new_album -> { + showCreateAlbumDialog() + true + } - else -> false + else -> false + } } - } - }, viewLifecycleOwner, Lifecycle.State.RESUMED) + }, + viewLifecycleOwner, + Lifecycle.State.RESUMED + ) } private fun showCreateAlbumDialog() { @@ -299,9 +304,9 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { super.onConfigurationChanged(newConfig) if (isGridEnabled) { if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { - maxColumnSize = 4 + maxColumnSize = MAX_COLUMN_SIZE_LANDSCAPE } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { - maxColumnSize = 2 + maxColumnSize = MAX_COLUMN_SIZE_PORTRAIT } (binding.listRoot.layoutManager as GridLayoutManager).setSpanCount(maxColumnSize) } @@ -312,6 +317,9 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { private const val ARG_IS_SELECTION_MODE = "is_selection_mode" const val ARG_SELECTED_ALBUM_NAME = "selected_album_name" + private const val MAX_COLUMN_SIZE_LANDSCAPE: Int = 4 + private const val MAX_COLUMN_SIZE_PORTRAIT: Int = 2 + fun newInstance(isSelectionMode: Boolean = false): AlbumsFragment { val args = Bundle() args.putBoolean(ARG_IS_SELECTION_MODE, isSelectionMode) @@ -332,4 +340,4 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { } navigateToAlbumItemsFragment(album.albumName) } -} \ No newline at end of file +} From be6664f38d7d465738e2bf46914a0261667bcc32 Mon Sep 17 00:00:00 2001 From: A117870935 Date: Fri, 6 Jun 2025 19:02:21 +0530 Subject: [PATCH 04/27] Fix -> video click event, overflow menu item hide and theming add menu Signed-off-by: Surinder Kumar --- .../android/ui/activity/AlbumsPickerActivity.kt | 2 +- .../ui/adapter/albums/AlbumGridItemViewHolder.kt | 2 +- .../ui/adapter/albums/AlbumListItemViewHolder.kt | 2 +- .../android/ui/fragment/ExtendedListFragment.kt | 1 + .../android/ui/fragment/OCFileListFragment.java | 7 +++++++ .../ui/fragment/albums/AlbumItemsFragment.kt | 12 ++++++++---- .../android/ui/fragment/albums/AlbumsFragment.kt | 15 +++++++++++++++ 7 files changed, 34 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt index 670133f1dd69..e124c9639f81 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2025 Your Name + * SPDX-FileCopyrightText: 2025 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later */ diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt index 4d7e5c6ca5d0..51eef93cf22d 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2025 Your Name + * SPDX-FileCopyrightText: 2025 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later */ diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt index 99ff63eb9a01..12892f6a424c 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2025 Your Name + * SPDX-FileCopyrightText: 2025 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later */ diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt index 5380a350cb45..814fa5d1a219 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.kt @@ -1,6 +1,7 @@ /* * Nextcloud - Android Client * + * SPDX-FileCopyrightText: 2025 TSI-mc * SPDX-FileCopyrightText: 2025 Alper Ozturk * SPDX-FileCopyrightText: 2022 Álvaro Brey * SPDX-FileCopyrightText: 2018-2021 Tobias Kaminsky diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index b80bd23f423c..43b63fc60eb7 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -82,6 +82,7 @@ import com.owncloud.android.lib.resources.status.E2EVersion; import com.owncloud.android.lib.resources.status.OCCapability; import com.owncloud.android.lib.resources.status.Type; +import com.owncloud.android.ui.activity.AlbumsPickerActivity; import com.owncloud.android.ui.activity.DrawerActivity; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; @@ -822,7 +823,13 @@ public boolean onCreateActionMode(ActionMode mode, Menu menu) { if (OCFileListFragment.this instanceof GalleryFragment) { final MenuItem addAlbumItem = menu.findItem(R.id.add_to_album); + // show add to album button for gallery to add media to Album addAlbumItem.setVisible(true); + + // hide the 3 dot menu icon while picking media for Albums + if (requireActivity() instanceof AlbumsPickerActivity) { + item.setVisible(false); + } } getCommonAdapter().setMultiSelect(true); diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index c39c2158c075..537540d94218 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -61,16 +61,16 @@ import com.owncloud.android.lib.resources.albums.ReadAlbumItemsRemoteOperation import com.owncloud.android.lib.resources.albums.RemoveAlbumFileRemoteOperation import com.owncloud.android.lib.resources.albums.ToggleAlbumFavoriteRemoteOperation import com.owncloud.android.ui.activity.AlbumsPickerActivity +import com.owncloud.android.ui.activity.AlbumsPickerActivity.Companion.intentForPickingMediaFiles import com.owncloud.android.ui.activity.FileActivity import com.owncloud.android.ui.activity.FileDisplayActivity import com.owncloud.android.ui.adapter.GalleryAdapter import com.owncloud.android.ui.dialog.CreateAlbumDialogFragment import com.owncloud.android.ui.events.FavoriteEvent import com.owncloud.android.ui.fragment.FileFragment -import com.owncloud.android.ui.activity.AlbumsPickerActivity.Companion.intentForPickingMediaFiles import com.owncloud.android.ui.interfaces.OCFileListFragmentInterface import com.owncloud.android.ui.preview.PreviewImageFragment -import com.owncloud.android.ui.preview.PreviewMediaActivity +import com.owncloud.android.ui.preview.PreviewMediaActivity.Companion.canBePreviewed import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.ErrorMessageAdapter import com.owncloud.android.utils.FileStorageUtils @@ -484,13 +484,17 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { if (PreviewImageFragment.canBePreviewed(file)) { (mContainerActivity as FileDisplayActivity).startImagePreview(file, !file.isDown) } else if (file.isDown) { - if (PreviewMediaActivity.canBePreviewed(file)) { + if (canBePreviewed(file)) { (mContainerActivity as FileDisplayActivity).startMediaPreview(file, 0, true, true, false, true) } else { mContainerActivity?.getFileOperationsHelper()?.openFile(file) } } else { - Log_OC.d(TAG, "Couldn't handle item click") + if (canBePreviewed(file) && !file.isEncrypted) { + (mContainerActivity as FileDisplayActivity).startMediaPreview(file, 0, true, true, true, true) + } else { + Log_OC.d(TAG, "Couldn't handle item click") + } } } } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt index a48bf0ba8024..931df1ad605d 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt @@ -12,6 +12,9 @@ import android.content.Context import android.content.Intent import android.content.res.Configuration import android.os.Bundle +import android.text.Spannable +import android.text.SpannableString +import android.text.style.ForegroundColorSpan import android.view.LayoutInflater import android.view.Menu import android.view.MenuInflater @@ -19,6 +22,7 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import androidx.annotation.VisibleForTesting +import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat import androidx.core.view.MenuHost import androidx.core.view.MenuProvider @@ -137,6 +141,17 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { menu.clear() // important: clears any existing activity menu menuInflater.inflate(R.menu.fragment_create_album, menu) + + val addItem = menu.findItem(R.id.action_create_new_album) + val coloredTitle = SpannableString(addItem.title).apply { + setSpan( + ForegroundColorSpan(ContextCompat.getColor(requireContext(), R.color.primary)), + 0, + length, + Spannable.SPAN_INCLUSIVE_INCLUSIVE + ) + } + addItem.title = coloredTitle } override fun onMenuItemSelected(menuItem: MenuItem): Boolean { From ae187bcdf59905a152687a02e929965b39beaeff Mon Sep 17 00:00:00 2001 From: Surinder Kumar Date: Fri, 11 Jul 2025 18:37:00 +0530 Subject: [PATCH 05/27] Fix: preview album items Signed-off-by: Surinder Kumar --- .../android/datamodel/VirtualFolderType.java | 3 ++- .../albums/CopyFileToAlbumOperation.kt | 5 ----- .../ui/fragment/albums/AlbumItemsFragment.kt | 22 +++++++++++++++++-- .../ui/preview/PreviewImagePagerAdapter.kt | 4 ++++ 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/datamodel/VirtualFolderType.java b/app/src/main/java/com/owncloud/android/datamodel/VirtualFolderType.java index 1259b706a2b1..e1fa9db746ff 100644 --- a/app/src/main/java/com/owncloud/android/datamodel/VirtualFolderType.java +++ b/app/src/main/java/com/owncloud/android/datamodel/VirtualFolderType.java @@ -1,6 +1,7 @@ /* * Nextcloud - Android Client * + * SPDX-FileCopyrightText: 2025 TSI-mc * SPDX-FileCopyrightText: 2017 Tobias Kaminsky * SPDX-FileCopyrightText: 2017 Nextcloud GmbH * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only @@ -12,5 +13,5 @@ * Type for virtual folders */ public enum VirtualFolderType { - FAVORITE, GALLERY, NONE + FAVORITE, GALLERY, ALBUM, NONE } diff --git a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt index bb9ef37b873c..1752a9b63db7 100644 --- a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt +++ b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt @@ -70,11 +70,6 @@ class CopyFileToAlbumOperation( } result = CopyFileToAlbumRemoteOperation(srcPath, targetPath).execute(client) - - /** 3. local copy */ - if (result.isSuccess) { - storageManager.copyLocalFile(file, targetPath) - } } } return result diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index 537540d94218..ef18694346b1 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -9,6 +9,7 @@ package com.owncloud.android.ui.fragment.albums import android.annotation.SuppressLint import android.app.Activity +import android.content.ContentValues import android.content.Context import android.content.Intent import android.content.res.Configuration @@ -55,6 +56,8 @@ import com.owncloud.android.databinding.ListFragmentBinding import com.owncloud.android.datamodel.OCFile import com.owncloud.android.datamodel.SyncedFolderProvider import com.owncloud.android.datamodel.ThumbnailsCacheManager +import com.owncloud.android.datamodel.VirtualFolderType +import com.owncloud.android.db.ProviderMeta import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.albums.ReadAlbumItemsRemoteOperation @@ -309,7 +312,10 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { val ocFileList = mutableListOf() if (result?.isSuccess == true && result.resultData != null) { - for (remoteFile in result.getResultData()) { + mContainerActivity?.storageManager?.deleteVirtuals(VirtualFolderType.ALBUM) + val contentValues = mutableListOf() + + for (remoteFile in result.resultData) { var ocFile = mContainerActivity?.storageManager?.getFileByLocalId(remoteFile.localId) if (ocFile == null) { ocFile = FileStorageUtils.fillOCFile(remoteFile) @@ -320,7 +326,15 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { ocFile.decryptedRemotePath = remoteFile.remotePath } ocFileList.add(ocFile!!) + + val cv = ContentValues() + cv.put(ProviderMeta.ProviderTableMeta.VIRTUAL_TYPE, VirtualFolderType.ALBUM.toString()) + cv.put(ProviderMeta.ProviderTableMeta.VIRTUAL_OCFILE_ID, ocFile.fileId) + + contentValues.add(cv) } + + mContainerActivity?.storageManager?.saveVirtuals(contentValues) } withContext(Dispatchers.Main) { if (result?.isSuccess == true && result.resultData != null) { @@ -482,7 +496,11 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { toggleItemToCheckedList(file) } else { if (PreviewImageFragment.canBePreviewed(file)) { - (mContainerActivity as FileDisplayActivity).startImagePreview(file, !file.isDown) + (mContainerActivity as FileDisplayActivity).startImagePreview( + file, + VirtualFolderType.ALBUM, + !file.isDown + ) } else if (file.isDown) { if (canBePreviewed(file)) { (mContainerActivity as FileDisplayActivity).startMediaPreview(file, 0, true, true, false, true) diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.kt b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.kt index 9f75a6972e05..2217afb2c69d 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImagePagerAdapter.kt @@ -1,6 +1,7 @@ /* * Nextcloud - Android Client * + * SPDX-FileCopyrightText: 2025 TSI-mc * SPDX-FileCopyrightText: 2023 Alper Ozturk * SPDX-FileCopyrightText: 2018 Tobias Kaminsky * SPDX-FileCopyrightText: 2020 Chris Narkiewicz @@ -97,6 +98,9 @@ class PreviewImagePagerAdapter : FragmentStateAdapter { if (type == VirtualFolderType.GALLERY) { imageFiles = mStorageManager.allGalleryItems imageFiles = FileStorageUtils.sortOcFolderDescDateModifiedWithoutFavoritesFirst(imageFiles) + } else if (type == VirtualFolderType.ALBUM) { + imageFiles = mStorageManager.getVirtualFolderContent(type, false) + imageFiles = FileStorageUtils.sortOcFolderDescDateModifiedWithoutFavoritesFirst(imageFiles) } else { imageFiles = mStorageManager.getVirtualFolderContent(type, true) } From c7879869d4f7d75380ca0ef5d2b37bc3022b9827 Mon Sep 17 00:00:00 2001 From: Surinder Kumar Date: Thu, 22 Jan 2026 21:21:17 +0530 Subject: [PATCH 06/27] upload files to album, hide video overlay icon, minor ui and bug fixes Signed-off-by: Surinder Kumar --- .../client/jobs/BackgroundJobFactory.kt | 17 + .../client/jobs/BackgroundJobManager.kt | 7 + .../client/jobs/BackgroundJobManagerImpl.kt | 67 +++ .../jobs/upload/AlbumFileUploadWorker.kt | 429 ++++++++++++++++++ .../client/jobs/upload/FileUploadHelper.kt | 41 +- .../AlbumItemActionsBottomSheet.kt | 8 +- .../datamodel/ThumbnailsCacheManager.java | 10 +- .../operations/FetchRemoteFileOperation.kt | 112 +++++ .../albums/CopyFileToAlbumOperation.kt | 3 +- .../albums/ReadAlbumItemsOperation.kt | 80 ++++ .../ui/activity/AlbumsPickerActivity.kt | 28 +- .../android/ui/activity/FileActivity.java | 23 +- .../ui/activity/FileDisplayActivity.kt | 143 +++++- .../adapter/albums/AlbumGridItemViewHolder.kt | 3 +- .../adapter/albums/AlbumListItemViewHolder.kt | 3 +- .../ui/adapter/albums/AlbumsAdapter.kt | 39 +- .../CopyAndUploadContentUrisTask.java | 43 +- .../ui/dialog/CreateAlbumDialogFragment.kt | 35 +- .../android/ui/fragment/GalleryFragment.java | 1 + .../ui/fragment/albums/AlbumItemsFragment.kt | 364 +++++++++++---- .../ui/fragment/albums/AlbumsFragment.kt | 61 ++- .../android/ui/helpers/UriUploader.kt | 67 ++- .../ui/preview/PreviewImageFragment.kt | 72 ++- .../ui/preview/PreviewMediaActivity.kt | 50 +- .../ui/preview/PreviewMediaFragment.kt | 64 ++- .../owncloud/android/utils/DisplayUtils.java | 58 ++- .../android/utils/ErrorMessageAdapter.java | 25 +- app/src/main/res/layout/albums_grid_item.xml | 4 +- app/src/main/res/layout/albums_list_item.xml | 4 +- .../main/res/menu/fragment_album_items.xml | 13 +- app/src/main/res/values/strings.xml | 6 + 31 files changed, 1642 insertions(+), 238 deletions(-) create mode 100644 app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt create mode 100644 app/src/main/java/com/owncloud/android/operations/FetchRemoteFileOperation.kt create mode 100644 app/src/main/java/com/owncloud/android/operations/albums/ReadAlbumItemsOperation.kt diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobFactory.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobFactory.kt index 8b6012c0e8db..0b4d89182940 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobFactory.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobFactory.kt @@ -2,6 +2,7 @@ * Nextcloud - Android Client * * SPDX-FileCopyrightText: 2020 Chris Narkiewicz + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only */ package com.nextcloud.client.jobs @@ -28,6 +29,7 @@ import com.nextcloud.client.jobs.download.FileDownloadWorker import com.nextcloud.client.jobs.folderDownload.FolderDownloadWorker import com.nextcloud.client.jobs.metadata.MetadataWorker import com.nextcloud.client.jobs.offlineOperations.OfflineOperationsWorker +import com.nextcloud.client.jobs.upload.AlbumFileUploadWorker import com.nextcloud.client.jobs.upload.FileUploadWorker import com.nextcloud.client.logger.Logger import com.nextcloud.client.network.ConnectivityService @@ -96,6 +98,7 @@ class BackgroundJobFactory @Inject constructor( CalendarImportWork::class -> createCalendarImportWork(context, workerParameters) FilesExportWork::class -> createFilesExportWork(context, workerParameters) FileUploadWorker::class -> createFilesUploadWorker(context, workerParameters) + AlbumFileUploadWorker::class -> createAlbumsFilesUploadWorker(context, workerParameters) FileDownloadWorker::class -> createFilesDownloadWorker(context, workerParameters) GeneratePdfFromImagesWork::class -> createPDFGenerateWork(context, workerParameters) HealthStatusWork::class -> createHealthStatusWork(context, workerParameters) @@ -251,6 +254,20 @@ class BackgroundJobFactory @Inject constructor( params ) + private fun createAlbumsFilesUploadWorker(context: Context, params: WorkerParameters): AlbumFileUploadWorker = + AlbumFileUploadWorker( + uploadsStorageManager, + connectivityService, + powerManagementService, + accountManager, + viewThemeUtils.get(), + localBroadcastManager.get(), + backgroundJobManager.get(), + preferences, + context, + params + ) + private fun createPDFGenerateWork(context: Context, params: WorkerParameters): GeneratePdfFromImagesWork = GeneratePdfFromImagesWork( appContext = context, diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt index 0dfef42aba27..10cb329ed9f3 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt @@ -2,6 +2,7 @@ * Nextcloud - Android Client * * SPDX-FileCopyrightText: 2020 Chris Narkiewicz + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only */ package com.nextcloud.client.jobs @@ -136,6 +137,12 @@ interface BackgroundJobManager { fun startNotificationJob(subject: String, signature: String) fun startAccountRemovalJob(accountName: String, remoteWipe: Boolean) fun startFilesUploadJob(user: User, uploadIds: LongArray, showSameFileAlreadyExistsNotification: Boolean) + fun startAlbumFilesUploadJob( + user: User, + uploadIds: LongArray, + albumName: String, + showSameFileAlreadyExistsNotification: Boolean + ) fun getFileUploads(user: User): LiveData> fun cancelFilesUploadJob(user: User) fun isStartFileUploadJobScheduled(accountName: String): Boolean diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt index 8a8647e53d5f..1de63e8e1f00 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt @@ -2,6 +2,7 @@ * Nextcloud - Android Client * * SPDX-FileCopyrightText: 2020 Chris Narkiewicz + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only */ package com.nextcloud.client.jobs @@ -32,6 +33,7 @@ import com.nextcloud.client.jobs.download.FileDownloadWorker import com.nextcloud.client.jobs.folderDownload.FolderDownloadWorker import com.nextcloud.client.jobs.metadata.MetadataWorker import com.nextcloud.client.jobs.offlineOperations.OfflineOperationsWorker +import com.nextcloud.client.jobs.upload.AlbumFileUploadWorker import com.nextcloud.client.jobs.upload.FileUploadHelper import com.nextcloud.client.jobs.upload.FileUploadWorker import com.nextcloud.client.preferences.AppPreferences @@ -87,6 +89,7 @@ internal class BackgroundJobManagerImpl( const val JOB_NOTIFICATION = "notification" const val JOB_ACCOUNT_REMOVAL = "account_removal" const val JOB_FILES_UPLOAD = "files_upload" + const val ALBUM_JOB_FILES_UPLOAD = "album_files_upload" const val JOB_FOLDER_DOWNLOAD = "folder_download" const val JOB_FILES_DOWNLOAD = "files_download" const val JOB_PDF_GENERATION = "pdf_generation" @@ -608,6 +611,8 @@ internal class BackgroundJobManagerImpl( private fun startFileUploadJobTag(accountName: String): String = JOB_FILES_UPLOAD + accountName + private fun startAlbumsFileUploadJobTag(accountName: String): String = ALBUM_JOB_FILES_UPLOAD + accountName + override fun isStartFileUploadJobScheduled(accountName: String): Boolean = workManager.isWorkScheduled(startFileUploadJobTag(accountName)) @@ -671,6 +676,68 @@ internal class BackgroundJobManagerImpl( } } + /** + * This method supports uploading and copying selected files to Album + * + * @param user The user for whom the upload job is being created. + * @param uploadIds Array of upload IDs to be processed. These IDs originate from multiple sources + * and cannot be determined directly from the account name or a single function + * within the worker. + * @param albumName Album on which selected files should be copy after upload + */ + override fun startAlbumFilesUploadJob( + user: User, + uploadIds: LongArray, + albumName: String, + showSameFileAlreadyExistsNotification: Boolean + ) { + defaultDispatcherScope.launch { + val batchSize = FileUploadHelper.MAX_FILE_COUNT + val batches = uploadIds.toList().chunked(batchSize) + val tag = startAlbumsFileUploadJobTag(user.accountName) + + val constraints = Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build() + + val dataBuilder = Data.Builder() + .putBoolean( + FileUploadWorker.SHOW_SAME_FILE_ALREADY_EXISTS_NOTIFICATION, + showSameFileAlreadyExistsNotification + ) + .putString(FileUploadWorker.ACCOUNT, user.accountName) + .putInt(FileUploadWorker.TOTAL_UPLOAD_SIZE, uploadIds.size) + .putString(AlbumFileUploadWorker.ALBUM_NAME, albumName) + + val workRequests = batches.mapIndexed { index, batch -> + dataBuilder + .putLongArray(FileUploadWorker.UPLOAD_IDS, batch.toLongArray()) + .putInt(FileUploadWorker.CURRENT_BATCH_INDEX, index) + + oneTimeRequestBuilder(AlbumFileUploadWorker::class, ALBUM_JOB_FILES_UPLOAD, user) + .addTag(tag) + .setInputData(dataBuilder.build()) + .setConstraints(constraints) + .build() + } + + // Chain the work requests sequentially + if (workRequests.isNotEmpty()) { + var workChain = workManager.beginUniqueWork( + tag, + ExistingWorkPolicy.APPEND_OR_REPLACE, + workRequests.first() + ) + + workRequests.drop(1).forEach { request -> + workChain = workChain.then(request) + } + + workChain.enqueue() + } + } + } + private fun startFileDownloadJobTag(user: User, fileId: Long): String = JOB_FOLDER_DOWNLOAD + user.accountName + fileId diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt new file mode 100644 index 000000000000..832ef80d5ed2 --- /dev/null +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt @@ -0,0 +1,429 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.nextcloud.client.jobs.upload + +import android.app.Notification +import android.content.Context +import androidx.core.app.NotificationCompat +import androidx.localbroadcastmanager.content.LocalBroadcastManager +import androidx.work.CoroutineWorker +import androidx.work.ForegroundInfo +import androidx.work.WorkerParameters +import com.nextcloud.client.account.User +import com.nextcloud.client.account.UserAccountManager +import com.nextcloud.client.device.PowerManagementService +import com.nextcloud.client.jobs.BackgroundJobManager +import com.nextcloud.client.jobs.BackgroundJobManagerImpl +import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.ACCOUNT +import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.CURRENT_BATCH_INDEX +import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.SHOW_SAME_FILE_ALREADY_EXISTS_NOTIFICATION +import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.TOTAL_UPLOAD_SIZE +import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.UPLOAD_IDS +import com.nextcloud.client.jobs.utils.UploadErrorNotificationManager +import com.nextcloud.client.network.ConnectivityService +import com.nextcloud.client.preferences.AppPreferences +import com.nextcloud.model.WorkerState +import com.nextcloud.model.WorkerStateObserver +import com.nextcloud.utils.ForegroundServiceHelper +import com.nextcloud.utils.extensions.getPercent +import com.nextcloud.utils.extensions.updateStatus +import com.owncloud.android.R +import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.datamodel.ForegroundServiceType +import com.owncloud.android.datamodel.ThumbnailsCacheManager +import com.owncloud.android.datamodel.UploadsStorageManager +import com.owncloud.android.db.OCUpload +import com.owncloud.android.lib.common.OwnCloudAccount +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.OwnCloudClientManagerFactory +import com.owncloud.android.lib.common.network.OnDatatransferProgressListener +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode +import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.operations.UploadFileOperation +import com.owncloud.android.operations.albums.CopyFileToAlbumOperation +import com.owncloud.android.ui.notifications.NotificationUtils +import com.owncloud.android.utils.theme.ViewThemeUtils +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ensureActive +import kotlinx.coroutines.withContext +import java.io.File +import kotlin.random.Random + +/** + * this worker is a replica of FileUploadWorker + * this worker will take care of upload and then copying the uploaded files to selected Album + */ +@Suppress("LongParameterList", "TooGenericExceptionCaught") +class AlbumFileUploadWorker( + val uploadsStorageManager: UploadsStorageManager, + val connectivityService: ConnectivityService, + val powerManagementService: PowerManagementService, + val userAccountManager: UserAccountManager, + val viewThemeUtils: ViewThemeUtils, + val localBroadcastManager: LocalBroadcastManager, + private val backgroundJobManager: BackgroundJobManager, + val preferences: AppPreferences, + val context: Context, + params: WorkerParameters +) : CoroutineWorker(context, params), + OnDatatransferProgressListener { + + companion object { + val TAG: String = AlbumFileUploadWorker::class.java.simpleName + + var currentUploadFileOperation: UploadFileOperation? = null + + private const val BATCH_SIZE = 100 + + const val ALBUM_NAME = "album_name" + } + + private var lastPercent = 0 + private val notificationId = Random.nextInt() + private val notificationManager = UploadNotificationManager(context, viewThemeUtils, notificationId) + private val intents = FileUploaderIntents(context) + private val fileUploaderDelegate = FileUploaderDelegate() + + override suspend fun doWork(): Result = try { + Log_OC.d(TAG, "AlbumFileUploadWorker started") + val workerName = BackgroundJobManagerImpl.formatClassTag(this::class) + backgroundJobManager.logStartOfWorker(workerName) + + trySetForeground() + + val result = uploadFiles() + backgroundJobManager.logEndOfWorker(workerName, result) + notificationManager.dismissNotification() + if (result == Result.success()) { + setIdleWorkerState() + } + result + } catch (t: Throwable) { + Log_OC.e(TAG, "Error caught at AlbumFileUploadWorker $t") + cleanup() + Result.failure() + } + + private suspend fun trySetForeground() { + try { + val notificationTitle = notificationManager.currentOperationTitle + ?: context.getString(R.string.foreground_service_upload) + val notification = createNotification(notificationTitle) + updateForegroundInfo(notification) + } catch (e: Exception) { + // Continue without foreground service - uploads will still work + Log_OC.w(TAG, "Could not set foreground service: ${e.message}") + } + } + + override suspend fun getForegroundInfo(): ForegroundInfo { + val notificationTitle = notificationManager.currentOperationTitle + ?: context.getString(R.string.foreground_service_upload) + val notification = createNotification(notificationTitle) + + return ForegroundServiceHelper.createWorkerForegroundInfo( + notificationId, + notification, + ForegroundServiceType.DataSync + ) + } + + private suspend fun updateForegroundInfo(notification: Notification) { + val foregroundInfo = ForegroundServiceHelper.createWorkerForegroundInfo( + notificationId, + notification, + ForegroundServiceType.DataSync + ) + setForeground(foregroundInfo) + } + + private fun createNotification(title: String): Notification = + NotificationCompat.Builder(context, NotificationUtils.NOTIFICATION_CHANNEL_UPLOAD) + .setContentTitle(title) + .setSmallIcon(R.drawable.uploads) + .setOngoing(true) + .setSound(null) + .setVibrate(null) + .setOnlyAlertOnce(true) + .setPriority(NotificationCompat.PRIORITY_LOW) + .setSilent(true) + .build() + + private fun cleanup() { + Log_OC.e(TAG, "AlbumFileUploadWorker stopped") + + setIdleWorkerState() + currentUploadFileOperation?.cancel(null) + notificationManager.dismissNotification() + } + + private fun setWorkerState(user: User?) { + WorkerStateObserver.send(WorkerState.FileUploadStarted(user)) + } + + private fun setIdleWorkerState() { + WorkerStateObserver.send(WorkerState.FileUploadCompleted(currentUploadFileOperation?.file)) + } + + @Suppress("ReturnCount", "LongMethod", "DEPRECATION") + private suspend fun uploadFiles(): Result = withContext(Dispatchers.IO) { + val accountName = inputData.getString(ACCOUNT) + if (accountName == null) { + Log_OC.e(TAG, "accountName is null") + return@withContext Result.failure() + } + + val uploadIds = inputData.getLongArray(UPLOAD_IDS) + if (uploadIds == null) { + Log_OC.e(TAG, "uploadIds is null") + return@withContext Result.failure() + } + + val currentBatchIndex = inputData.getInt(CURRENT_BATCH_INDEX, -1) + if (currentBatchIndex == -1) { + Log_OC.e(TAG, "currentBatchIndex is -1, cancelling") + return@withContext Result.failure() + } + + val totalUploadSize = inputData.getInt(TOTAL_UPLOAD_SIZE, -1) + if (totalUploadSize == -1) { + Log_OC.e(TAG, "totalUploadSize is -1, cancelling") + return@withContext Result.failure() + } + + // since worker's policy is append or replace and account name comes from there no need check in the loop + val optionalUser = userAccountManager.getUser(accountName) + if (!optionalUser.isPresent) { + Log_OC.e(TAG, "User not found for account: $accountName") + return@withContext Result.failure() + } + + val albumName = inputData.getString(ALBUM_NAME) + if (albumName == null) { + Log_OC.e(TAG, "album name is null") + return@withContext Result.failure() + } + + val user = optionalUser.get() + val previouslyUploadedFileSize = currentBatchIndex * FileUploadHelper.MAX_FILE_COUNT + val uploads = uploadsStorageManager.getUploadsByIds(uploadIds, accountName) + val ocAccount = OwnCloudAccount(user.toPlatformAccount(), context) + val client = OwnCloudClientManagerFactory.getDefaultSingleton().getClientFor(ocAccount, context) + + for ((index, upload) in uploads.withIndex()) { + ensureActive() + + if (preferences.isGlobalUploadPaused) { + Log_OC.d(TAG, "Upload is paused, skip uploading files!") + notificationManager.notifyPaused( + intents.openUploadListIntent(null) + ) + return@withContext Result.success() + } + + if (canExitEarly()) { + notificationManager.showConnectionErrorNotification() + return@withContext Result.failure() + } + + setWorkerState(user) + val operation = createUploadFileOperation(upload, user) + currentUploadFileOperation = operation + + val currentIndex = (index + 1) + val currentUploadIndex = (currentIndex + previouslyUploadedFileSize) + notificationManager.prepareForStart( + operation, + startIntent = intents.openUploadListIntent(operation), + currentUploadIndex = currentUploadIndex, + totalUploadSize = totalUploadSize + ) + + val result = withContext(Dispatchers.IO) { + upload(operation, albumName, user, client) + } + val entity = uploadsStorageManager.uploadDao.getUploadById(upload.uploadId, accountName) + uploadsStorageManager.updateStatus(entity, result.isSuccess) + currentUploadFileOperation = null + + if (result.code == ResultCode.QUOTA_EXCEEDED) { + Log_OC.w(TAG, "Quota exceeded, stopping uploads") + notificationManager.showQuotaExceedNotification(operation) + break + } + + sendUploadFinishEvent(totalUploadSize, currentUploadIndex, operation, result) + } + + return@withContext Result.success() + } + + private fun sendUploadFinishEvent( + totalUploadSize: Int, + currentUploadIndex: Int, + operation: UploadFileOperation, + result: RemoteOperationResult<*> + ) { + val shouldBroadcast = + (totalUploadSize > BATCH_SIZE && currentUploadIndex > 0) && currentUploadIndex % BATCH_SIZE == 0 + + if (shouldBroadcast) { + // delay broadcast + fileUploaderDelegate.sendBroadcastUploadFinished( + operation, + result, + operation.oldFile?.storagePath, + context, + localBroadcastManager + ) + } + } + + private fun canExitEarly(): Boolean { + val result = !connectivityService.isConnected || + connectivityService.isInternetWalled || + isStopped + + if (result) { + Log_OC.d(TAG, "No internet connection, stopping worker.") + } else { + notificationManager.dismissErrorNotification() + } + + return result + } + + private fun createUploadFileOperation(upload: OCUpload, user: User): UploadFileOperation = UploadFileOperation( + uploadsStorageManager, + connectivityService, + powerManagementService, + user, + null, + upload, + upload.nameCollisionPolicy, + upload.localAction, + context, + upload.isUseWifiOnly, + upload.isWhileChargingOnly, + true, + FileDataStorageManager(user, context.contentResolver) + ).apply { + addDataTransferProgressListener(this@AlbumFileUploadWorker) + } + + @Suppress("TooGenericExceptionCaught", "DEPRECATION") + private suspend fun upload( + operation: UploadFileOperation, + albumName: String, + user: User, + client: OwnCloudClient + ): RemoteOperationResult = withContext(Dispatchers.IO) { + lateinit var result: RemoteOperationResult + + try { + val storageManager = operation.storageManager + result = operation.execute(client) + val task = ThumbnailsCacheManager.ThumbnailGenerationTask(storageManager, user) + val file = File(operation.originalStoragePath) + val remoteId: String? = operation.file.remoteId + task.execute(ThumbnailsCacheManager.ThumbnailGenerationTaskObject(file, remoteId)) + val copyAlbumFileOperation = + CopyFileToAlbumOperation(operation.remotePath, albumName, storageManager) + val copyResult = copyAlbumFileOperation.execute(client) + if (copyResult.isSuccess) { + Log_OC.e(TAG, "Successful copied file to Album: $albumName") + } else { + Log_OC.e(TAG, "Failed to copy file to Album: $albumName due to ${copyResult.logMessage}") + } + } catch (e: Exception) { + Log_OC.e(TAG, "Error uploading", e) + result = RemoteOperationResult(e) + } finally { + if (!isStopped) { + uploadsStorageManager.updateDatabaseUploadResult(result, operation) + // NMC: resolving file conflict will trigger normal file upload and shows two upload process + // one for normal and one for Album upload + // as customizing conflict can break normal upload + // so we are removing the upload if it's a conflict + // Note: this is fallback logic because default policy while uploading is RENAME + // if in some case code reach here it will remove the upload + // so we are checking it first and removing the upload + if (result.code == ResultCode.SYNC_CONFLICT) { + uploadsStorageManager.removeUpload( + operation.user.accountName, + operation.remotePath + ) + } else { + UploadErrorNotificationManager.handleResult( + context, + notificationManager, + operation, + result, + showSameFileAlreadyExistsNotification = { + withContext(Dispatchers.Main) { + val showSameFileAlreadyExistsNotification = + inputData.getBoolean(SHOW_SAME_FILE_ALREADY_EXISTS_NOTIFICATION, false) + if (showSameFileAlreadyExistsNotification) { + notificationManager.showSameFileAlreadyExistsNotification(operation.fileName) + } + } + } + ) + } + } + } + + return@withContext result + } + + @Suppress("MagicNumber") + private val minProgressUpdateInterval = 750 + private var lastUpdateTime = 0L + + /** + * Receives from [com.owncloud.android.operations.UploadFileOperation.normalUpload] + */ + @Suppress("MagicNumber") + override fun onTransferProgress( + progressRate: Long, + totalTransferredSoFar: Long, + totalToTransfer: Long, + fileAbsoluteName: String + ) { + val percent = getPercent(totalTransferredSoFar, totalToTransfer) + val currentTime = System.currentTimeMillis() + + if (percent != lastPercent && (currentTime - lastUpdateTime) >= minProgressUpdateInterval) { + notificationManager.run { + val accountName = currentUploadFileOperation?.user?.accountName + val remotePath = currentUploadFileOperation?.remotePath + + updateUploadProgress(percent, currentUploadFileOperation) + + if (accountName != null && remotePath != null) { + val key: String = FileUploadHelper.buildRemoteName(accountName, remotePath) + val boundListener = FileUploadHelper.mBoundListeners[key] + val filename = currentUploadFileOperation?.fileName ?: "" + + boundListener?.onTransferProgress( + progressRate, + totalTransferredSoFar, + totalToTransfer, + filename + ) + } + + dismissOldErrorNotification(currentUploadFileOperation) + } + lastUpdateTime = currentTime + } + + lastPercent = percent + } +} diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt index 5bb40b30969d..430d1ea25187 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt @@ -3,6 +3,7 @@ * * SPDX-FileCopyrightText: 2023 Alper Ozturk * SPDX-FileCopyrightText: 2023 Nextcloud GmbH + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only */ package com.nextcloud.client.jobs.upload @@ -260,6 +261,44 @@ class FileUploadHelper { backgroundJobManager.startFilesUploadJob(user, uploads.getUploadIds(), showSameFileAlreadyExistsNotification) } + @JvmOverloads + @Suppress("LongParameterList") + fun uploadAndCopyNewFilesForAlbum( + user: User, + localPaths: Array, + remotePaths: Array, + albumName: String, + localBehavior: Int, + createRemoteFolder: Boolean, + createdBy: Int, + requiresWifi: Boolean, + requiresCharging: Boolean, + nameCollisionPolicy: NameCollisionPolicy, + showSameFileAlreadyExistsNotification: Boolean = true + ) { + val uploads = localPaths.mapIndexed { index, localPath -> + val result = OCUpload(localPath, remotePaths[index], user.accountName).apply { + this.nameCollisionPolicy = nameCollisionPolicy + isUseWifiOnly = requiresWifi + isWhileChargingOnly = requiresCharging + uploadStatus = UploadStatus.UPLOAD_IN_PROGRESS + this.createdBy = createdBy + isCreateRemoteFolder = createRemoteFolder + localAction = localBehavior + } + + val id = uploadsStorageManager.uploadDao.insertOrReplace(result.toUploadEntity()) + result.uploadId = id + result + } + backgroundJobManager.startAlbumFilesUploadJob( + user, + uploads.getUploadIds(), + albumName, + showSameFileAlreadyExistsNotification + ) + } + fun removeFileUpload(remotePath: String, accountName: String) { uploadsStorageManager.uploadDao.deleteByRemotePathAndAccountName(remotePath, accountName) } @@ -371,7 +410,7 @@ class FileUploadHelper { @Suppress("ReturnCount") fun isUploadingNow(upload: OCUpload?): Boolean { - val currentUploadFileOperation = currentUploadFileOperation + val currentUploadFileOperation = currentUploadFileOperation ?: AlbumFileUploadWorker.currentUploadFileOperation if (currentUploadFileOperation == null || currentUploadFileOperation.user == null) return false if (upload == null || upload.accountName != currentUploadFileOperation.user.accountName) return false diff --git a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt index 0d697077b931..7c3c7e6d7572 100644 --- a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt +++ b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt @@ -28,7 +28,9 @@ import com.owncloud.android.databinding.FileActionsBottomSheetItemBinding import com.owncloud.android.utils.theme.ViewThemeUtils import javax.inject.Inject -class AlbumItemActionsBottomSheet : BottomSheetDialogFragment(), Injectable { +class AlbumItemActionsBottomSheet : + BottomSheetDialogFragment(), + Injectable { @Inject lateinit var viewThemeUtils: ViewThemeUtils @@ -120,8 +122,6 @@ class AlbumItemActionsBottomSheet : BottomSheetDialogFragment(), Injectable { private const val RESULT_KEY_ACTION_ID = "RESULT_KEY_ACTION_ID" @JvmStatic - fun newInstance(): AlbumItemActionsBottomSheet { - return AlbumItemActionsBottomSheet() - } + fun newInstance(): AlbumItemActionsBottomSheet = AlbumItemActionsBottomSheet() } } diff --git a/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index 72cfadc35f03..cd3df25971e9 100644 --- a/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -7,6 +7,7 @@ * SPDX-FileCopyrightText: 2019 Chris Narkiewicz * SPDX-FileCopyrightText: 2015 ownCloud Inc. * SPDX-FileCopyrightText: 2014 David A. Velasco + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: GPL-2.0-only AND (AGPL-3.0-or-later OR GPL-2.0-only) */ package com.owncloud.android.datamodel; @@ -434,6 +435,7 @@ public static class ThumbnailGenerationTask extends AsyncTask asyncTasks, boolean gridViewEnabled, - String imageKey) + String imageKey, + boolean hideVideoOverlay) throws IllegalArgumentException { this(imageView, storageManager, user, asyncTasks); this.gridViewEnabled = gridViewEnabled; mImageKey = imageKey; + this.hideVideoOverlay = hideVideoOverlay; } public GetMethod getGetMethod() { @@ -505,7 +509,7 @@ protected Bitmap doInBackground(ThumbnailGenerationTaskObject... params) { if (mFile instanceof ServerFileInterface) { thumbnail = doThumbnailFromOCFileInBackground(); - if (MimeTypeUtil.isVideo((ServerFileInterface) mFile) && thumbnail != null) { + if (MimeTypeUtil.isVideo((ServerFileInterface) mFile) && thumbnail != null && !hideVideoOverlay) { thumbnail = addVideoOverlay(thumbnail, MainApp.getAppContext()); } } else if (mFile instanceof File) { @@ -514,7 +518,7 @@ protected Bitmap doInBackground(ThumbnailGenerationTaskObject... params) { String url = ((File) mFile).getAbsolutePath(); String mMimeType = FileStorageUtils.getMimeTypeFromName(url); - if (MimeTypeUtil.isVideo(mMimeType) && thumbnail != null) { + if (MimeTypeUtil.isVideo(mMimeType) && thumbnail != null && !hideVideoOverlay) { thumbnail = addVideoOverlay(thumbnail, MainApp.getAppContext()); } //} else { do nothing diff --git a/app/src/main/java/com/owncloud/android/operations/FetchRemoteFileOperation.kt b/app/src/main/java/com/owncloud/android/operations/FetchRemoteFileOperation.kt new file mode 100644 index 000000000000..e4bd58a55764 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/operations/FetchRemoteFileOperation.kt @@ -0,0 +1,112 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only + */ +package com.owncloud.android.operations + +import android.content.Context +import com.nextcloud.client.account.User +import com.owncloud.android.MainApp +import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.datamodel.OCFile +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.operations.RemoteOperation +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.lib.resources.files.ReadFileRemoteOperation +import com.owncloud.android.lib.resources.files.SearchRemoteOperation +import com.owncloud.android.lib.resources.files.model.RemoteFile +import com.owncloud.android.operations.common.SyncOperation +import com.owncloud.android.utils.FileStorageUtils + +/** + * fetch OCFile meta data if not present in local db + * + * @see com.owncloud.android.ui.asynctasks.FetchRemoteFileTask reference for this operation + * + * @param ocFile file for which metadata has to retrieve + * @param removeFileFromDb if you want to remove ocFile from local db to avoid duplicate entries for same fileId + */ +class FetchRemoteFileOperation( + private val context: Context, + private val user: User, + private val ocFile: OCFile, + private val removeFileFromDb: Boolean = false, + storageManager: FileDataStorageManager +) : SyncOperation(storageManager) { + + @Deprecated("Deprecated in Java") + @Suppress("ReturnCount") + override fun run(client: OwnCloudClient?): RemoteOperationResult<*>? { + val searchRemoteOperation = SearchRemoteOperation( + ocFile.localId.toString(), + SearchRemoteOperation.SearchType.FILE_ID_SEARCH, + false, + storageManager.getCapability(user) + ) + val remoteOperationResult: RemoteOperationResult> = + searchRemoteOperation.execute(user, context) + + if (remoteOperationResult.isSuccess && remoteOperationResult.resultData != null) { + if (remoteOperationResult.resultData.isEmpty()) { + Log_OC.e(TAG, "No remote file found with id: ${ocFile.localId}.") + return remoteOperationResult + } + val remotePath = (remoteOperationResult.resultData[0]).remotePath + + val operation = ReadFileRemoteOperation(remotePath) + val result = operation.execute(user, context) + + if (!result.isSuccess) { + val exception = result.exception + val message = + "Fetching file " + remotePath + " fails with: " + result.getLogMessage(MainApp.getAppContext()) + Log_OC.e(TAG, exception?.message ?: message) + + return result + } + + val remoteFile = result.data[0] as RemoteFile + + // remove file from local db + if (removeFileFromDb) { + storageManager.removeFile(ocFile, true, true) + } + + var ocFile = FileStorageUtils.fillOCFile(remoteFile) + FileStorageUtils.searchForLocalFileInDefaultPath(ocFile, user.accountName) + ocFile = storageManager.saveFileWithParent(ocFile, context) + + // also sync folder content + val toSync: OCFile? = if (ocFile?.isFolder == true) { + ocFile + } else { + ocFile?.parentId?.let { storageManager.getFileById(it) } + } + + val currentSyncTime = System.currentTimeMillis() + val refreshFolderOperation: RemoteOperation = RefreshFolderOperation( + toSync, + currentSyncTime, + true, + true, + storageManager, + user, + context + ) + val refreshOperationResult = refreshFolderOperation.execute(user, context) + + // set the fetched ocFile to resultData to be handled at ui end + refreshOperationResult.resultData = ocFile + + return refreshOperationResult + } + return remoteOperationResult + } + + companion object { + private val TAG = FetchRemoteFileOperation::class.java.simpleName + } +} diff --git a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt index 1752a9b63db7..c4d35628f6a5 100644 --- a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt +++ b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.kt @@ -25,8 +25,7 @@ class CopyFileToAlbumOperation( private val srcPath: String, private var targetParentPath: String, storageManager: FileDataStorageManager -) : - SyncOperation(storageManager) { +) : SyncOperation(storageManager) { init { if (!targetParentPath.endsWith(OCFile.PATH_SEPARATOR)) { this.targetParentPath += OCFile.PATH_SEPARATOR diff --git a/app/src/main/java/com/owncloud/android/operations/albums/ReadAlbumItemsOperation.kt b/app/src/main/java/com/owncloud/android/operations/albums/ReadAlbumItemsOperation.kt new file mode 100644 index 000000000000..f4f031d3f3da --- /dev/null +++ b/app/src/main/java/com/owncloud/android/operations/albums/ReadAlbumItemsOperation.kt @@ -0,0 +1,80 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +package com.owncloud.android.operations.albums + +import com.nextcloud.common.SessionTimeOut +import com.nextcloud.common.defaultSessionTimeOut +import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.lib.common.OwnCloudClient +import com.owncloud.android.lib.common.operations.RemoteOperation +import com.owncloud.android.lib.common.operations.RemoteOperationResult +import com.owncloud.android.lib.resources.albums.ReadAlbumItemsRemoteOperation +import com.owncloud.android.lib.resources.files.model.RemoteFile +import com.owncloud.android.utils.FileStorageUtils + +class ReadAlbumItemsOperation +@JvmOverloads +constructor( + private val mRemotePath: String, + private val storageManager: FileDataStorageManager?, + private val sessionTimeOut: SessionTimeOut = defaultSessionTimeOut +) : RemoteOperation>() { + @Deprecated("Deprecated in Java") + @Suppress("TooGenericExceptionCaught") + override fun run(client: OwnCloudClient): RemoteOperationResult> { + var result: RemoteOperationResult>? = null + try { + result = ReadAlbumItemsRemoteOperation(mRemotePath, sessionTimeOut).execute(client) + if (result.isSuccess) { + // get data from remote folder + val mFolderAndFiles = saveAlbumData(result.resultData, storageManager) + + // Result of the operation + result.apply { + // Add data to the result + resultData = mFolderAndFiles + } + } + } catch (e: Exception) { + result = RemoteOperationResult(e) + } + + return result + } + + companion object { + private val TAG: String = ReadAlbumItemsRemoteOperation::class.java.simpleName + + private fun saveAlbumData( + remoteFiles: List, + storageManager: FileDataStorageManager? + ): List { + val files = mutableListOf() + + for (remoteFile in remoteFiles) { + // if no fileId received then skip adding + if (remoteFile.localId <= 0) { + continue + } + // check if file already exit in db or not + // if not then store it in db to show thumbnail and image preview + var ocFile = storageManager?.getFileByLocalId(remoteFile.localId) + if (ocFile == null) { + ocFile = FileStorageUtils.fillOCFile(remoteFile) + // no remote id is received from response + // so localId will be remoteId else thumb will not generated + ocFile.remoteId = remoteFile.localId.toString() + ocFile.lastSyncDateForProperties = System.currentTimeMillis() + storageManager?.saveFile(ocFile) + } + files.add(remoteFile) + } + + return files + } + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt index e124c9639f81..cc810f6790c7 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later */ @@ -31,7 +31,11 @@ import com.owncloud.android.ui.fragment.albums.AlbumsFragment import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.ErrorMessageAdapter -class AlbumsPickerActivity : FileActivity(), FileFragment.ContainerActivity, OnEnforceableRefreshListener, Injectable { +class AlbumsPickerActivity : + FileActivity(), + FileFragment.ContainerActivity, + OnEnforceableRefreshListener, + Injectable { private var captionText: String? = null @@ -51,8 +55,8 @@ class AlbumsPickerActivity : FileActivity(), FileFragment.ContainerActivity, OnE initBinding() setupToolbar() - setupActionBar() setupAction() + setupActionBar() if (savedInstanceState == null) { createFragments() @@ -66,7 +70,13 @@ class AlbumsPickerActivity : FileActivity(), FileFragment.ContainerActivity, OnE View.GONE findViewById(R.id.switch_grid_view_button).visibility = View.GONE - supportActionBar?.setDisplayHomeAsUpEnabled(true) + supportActionBar?.let { actionBar -> + actionBar.setDisplayHomeAsUpEnabled(true) + actionBar.setHomeButtonEnabled(true) + captionText?.let { + viewThemeUtils.files.themeActionBar(this, actionBar, it) + } + } } private fun setupAction() { @@ -188,17 +198,15 @@ class AlbumsPickerActivity : FileActivity(), FileFragment.ContainerActivity, OnE private val TAG = AlbumsPickerActivity::class.java.simpleName - fun intentForPickingAlbum(context: FragmentActivity): Intent { - return Intent(context, AlbumsPickerActivity::class.java).apply { + fun intentForPickingAlbum(context: FragmentActivity): Intent = + Intent(context, AlbumsPickerActivity::class.java).apply { putExtra(EXTRA_ACTION, CHOOSE_ALBUM) } - } - fun intentForPickingMediaFiles(context: FragmentActivity): Intent { - return Intent(context, AlbumsPickerActivity::class.java).apply { + fun intentForPickingMediaFiles(context: FragmentActivity): Intent = + Intent(context, AlbumsPickerActivity::class.java).apply { putExtra(EXTRA_ACTION, CHOOSE_MEDIA_FILES) } - } } override fun onRefresh(enforced: Boolean) { diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java index 47e079c1f67e..669812ea48fe 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2021 TSI-mc + * SPDX-FileCopyrightText: 2021-2026 TSI-mc * SPDX-FileCopyrightText: 2022 Álvaro Brey * SPDX-FileCopyrightText: 2017-2023 Tobias Kaminsky * SPDX-FileCopyrightText: 2019 Chris Narkiewicz @@ -88,10 +88,11 @@ import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; import com.owncloud.android.ui.events.DialogEvent; import com.owncloud.android.ui.events.DialogEventType; -import com.owncloud.android.ui.events.FavoriteEvent; import com.owncloud.android.ui.fragment.FileDetailFragment; import com.owncloud.android.ui.fragment.FileDetailSharingFragment; import com.owncloud.android.ui.fragment.OCFileListFragment; +import com.owncloud.android.ui.fragment.albums.AlbumItemsFragment; +import com.owncloud.android.ui.fragment.albums.AlbumsFragment; import com.owncloud.android.ui.fragment.filesRepository.FilesRepository; import com.owncloud.android.ui.fragment.filesRepository.RemoteFilesRepository; import com.owncloud.android.ui.helpers.FileOperationsHelper; @@ -108,6 +109,7 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; +import java.util.Objects; import javax.inject.Inject; @@ -839,11 +841,18 @@ private void onUpdateShareInformation(RemoteOperationResult result, @StringRes i } public void refreshList() { - final Fragment fragment = getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_LIST_OF_FILES); - if (fragment instanceof OCFileListFragment listFragment) { - listFragment.onRefresh(); - } else if (fragment instanceof FileDetailFragment detailFragment) { - detailFragment.goBackToOCFileListFragment(); + // first check for album fragments + if (isAlbumsFragment()) { + ((AlbumsFragment) Objects.requireNonNull(getSupportFragmentManager().findFragmentByTag(AlbumsFragment.Companion.getTAG()))).refreshAlbums(); + } else if (isAlbumItemsFragment()) { + ((AlbumItemsFragment) Objects.requireNonNull(getSupportFragmentManager().findFragmentByTag(AlbumItemsFragment.Companion.getTAG()))).refreshData(); + } else { + final Fragment fragment = getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_LIST_OF_FILES); + if (fragment instanceof OCFileListFragment listFragment) { + listFragment.onRefresh(); + } else if (fragment instanceof FileDetailFragment detailFragment) { + detailFragment.goBackToOCFileListFragment(); + } } } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index 2b22bdb8f58f..34df5ef835c9 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -2,7 +2,7 @@ * Nextcloud - Android Client * * SPDX-FileCopyrightText: 2025 Alper Ozturk - * SPDX-FileCopyrightText: 2023-2024 TSI-mc + * SPDX-FileCopyrightText: 2023-2026 TSI-mc * SPDX-FileCopyrightText: 2023 Archontis E. Kostis * SPDX-FileCopyrightText: 2019 Chris Narkiewicz * SPDX-FileCopyrightText: 2018-2022 Tobias Kaminsky @@ -96,6 +96,9 @@ import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.operations.RemoteOperation import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.lib.resources.albums.CreateNewAlbumRemoteOperation +import com.owncloud.android.lib.resources.albums.RemoveAlbumRemoteOperation +import com.owncloud.android.lib.resources.albums.RenameAlbumRemoteOperation import com.owncloud.android.lib.resources.files.RestoreFileVersionRemoteOperation import com.owncloud.android.lib.resources.files.SearchRemoteOperation import com.owncloud.android.lib.resources.notifications.GetNotificationsRemoteOperation @@ -108,6 +111,7 @@ import com.owncloud.android.operations.RemoveFileOperation import com.owncloud.android.operations.RenameFileOperation import com.owncloud.android.operations.SynchronizeFileOperation import com.owncloud.android.operations.UploadFileOperation +import com.owncloud.android.operations.albums.CopyFileToAlbumOperation import com.owncloud.android.syncadapter.FileSyncAdapter import com.owncloud.android.ui.CompletionCallback import com.owncloud.android.ui.asynctasks.CheckAvailableSpaceTask @@ -133,6 +137,8 @@ import com.owncloud.android.ui.fragment.SearchType import com.owncloud.android.ui.fragment.SharedListFragment import com.owncloud.android.ui.fragment.TaskRetainerFragment import com.owncloud.android.ui.fragment.UnifiedSearchFragment +import com.owncloud.android.ui.fragment.albums.AlbumItemsFragment +import com.owncloud.android.ui.fragment.albums.AlbumsFragment import com.owncloud.android.ui.helpers.FileOperationsHelper import com.owncloud.android.ui.helpers.UriUploader import com.owncloud.android.ui.interfaces.TransactionInterface @@ -578,7 +584,9 @@ class FileDisplayActivity : // Using `is OCFileListFragment` would also match subclasses, // its needed because reinitializing OCFileListFragment itself causes an empty screen leftFragment?.let { - if (it::class != OCFileListFragment::class) { + // check for albums fragment to load All Files + // when user is on AlbumsFragment and click on All Files + if (it::class != OCFileListFragment::class || isAlbumsFragment()) { leftFragment = OCFileListFragment() supportFragmentManager.executePendingTransactions() } @@ -592,6 +600,12 @@ class FileDisplayActivity : leftFragment = GroupfolderListFragment() supportFragmentManager.executePendingTransactions() } + ALBUMS == action -> { + Log_OC.d(this, "Switch to list albums fragment") + menuItemId = R.id.nav_album + replaceAlbumFragment() + supportFragmentManager.executePendingTransactions() + } ON_DEVICE == action -> { refreshOrInitOCFileListFragment() @@ -958,7 +972,8 @@ class FileDisplayActivity : private fun shouldOpenDrawer(): Boolean = !isDrawerOpen && !isSearchOpen() && isRoot(getCurrentDir()) && - this.leftFragment is OCFileListFragment + this.leftFragment is OCFileListFragment && + !isAlbumItemsFragment() /** * Called, when the user selected something for uploading @@ -1194,6 +1209,13 @@ class FileDisplayActivity : after() } + // pop back if current fragment is AlbumItemsFragment + isAlbumItemsFragment() -> { + before() + popBack() + after() + } + leftFragment is OCFileListFragment -> { before() handleOCFileListFragmentBackPress() @@ -1724,6 +1746,13 @@ class FileDisplayActivity : } } } + + // notify when upload is finished and user is on albums screen + if (isAlbumsFragment()) { + (supportFragmentManager.findFragmentByTag(AlbumsFragment.TAG) as AlbumsFragment).refreshAlbums() + } else if (isAlbumItemsFragment()) { + (supportFragmentManager.findFragmentByTag(AlbumItemsFragment.TAG) as AlbumItemsFragment).refreshData() + } } // TODO refactor this receiver, and maybe DownloadFinishReceiver; this method is duplicated :S @@ -2055,6 +2084,22 @@ class FileDisplayActivity : is RestoreFileVersionRemoteOperation -> { onRestoreFileVersionOperationFinish(result) } + + is CreateNewAlbumRemoteOperation -> { + onCreateAlbumOperationFinish(operation, result) + } + + is CopyFileToAlbumOperation -> { + onCopyAlbumFileOperationFinish(operation, result) + } + + is RenameAlbumRemoteOperation -> { + onRenameAlbumOperationFinish(operation, result) + } + + is RemoveAlbumRemoteOperation -> { + onRemoveAlbumOperationFinish(operation, result) + } } } @@ -2303,6 +2348,92 @@ class FileDisplayActivity : } } + private fun onRemoveAlbumOperationFinish(operation: RemoveAlbumRemoteOperation, result: RemoteOperationResult<*>) { + if (result.isSuccess) { + val fragment = supportFragmentManager.findFragmentByTag(AlbumItemsFragment.TAG) + if (fragment is AlbumItemsFragment) { + fragment.onAlbumDeleted() + } + } else { + DisplayUtils.showSnackMessage( + this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()) + ) + + if (result.isSslRecoverableException) { + mLastSslUntrustedServerResult = result + showUntrustedCertDialog(mLastSslUntrustedServerResult) + } + } + } + + private fun onCopyAlbumFileOperationFinish(operation: CopyFileToAlbumOperation, result: RemoteOperationResult<*>) { + if (result.isSuccess) { + // when item added from inside of Album + val fragment = supportFragmentManager.findFragmentByTag(AlbumItemsFragment.TAG) + if (fragment is AlbumItemsFragment) { + fragment.refreshData() + } else { + // files added directly from Media tab + DisplayUtils.showSnackMessage(this, getResources().getString(R.string.album_file_added_message)) + } + Log_OC.e(TAG, "Files copied successfully") + } else { + try { + DisplayUtils.showSnackMessage( + this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()) + ) + } catch (e: Resources.NotFoundException) { + Log_OC.e(TAG, "Error while trying to show fail message ", e) + } + } + } + + private fun onRenameAlbumOperationFinish(operation: RenameAlbumRemoteOperation, result: RemoteOperationResult<*>) { + if (result.isSuccess) { + val fragment = supportFragmentManager.findFragmentByTag(AlbumItemsFragment.TAG) + if (fragment is AlbumItemsFragment) { + fragment.onAlbumRenamed(operation.newAlbumName) + } + } else { + DisplayUtils.showSnackMessage( + this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()) + ) + + if (result.isSslRecoverableException) { + mLastSslUntrustedServerResult = result + showUntrustedCertDialog(mLastSslUntrustedServerResult) + } + } + } + + private fun onCreateAlbumOperationFinish( + operation: CreateNewAlbumRemoteOperation, + result: RemoteOperationResult<*> + ) { + if (result.isSuccess) { + val fragment = supportFragmentManager.findFragmentByTag(AlbumsFragment.TAG) + if (fragment is AlbumsFragment) { + fragment.navigateToAlbumItemsFragment(operation.newAlbumName, true) + } + } else { + try { + if (RemoteOperationResult.ResultCode.FOLDER_ALREADY_EXISTS == result.code) { + DisplayUtils.showSnackMessage(this, R.string.album_already_exists) + } else { + DisplayUtils.showSnackMessage( + this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()) + ) + } + } catch (e: Resources.NotFoundException) { + Log_OC.e(TAG, "Error while trying to show fail message ", e) + } + } + } + /** * {@inheritDoc} */ @@ -2698,7 +2829,10 @@ class FileDisplayActivity : val ocFileListFragment = this.listOfFilesFragment if (ocFileListFragment != null && (ocFileListFragment !is GalleryFragment) && - (ocFileListFragment !is SharedListFragment) + (ocFileListFragment !is SharedListFragment) && + // album fragment check will help in showing offline files screen + // when navigating from Albums to Offline Files + !isAlbumsFragment && !isAlbumItemsFragment ) { ocFileListFragment.refreshDirectory() } else { @@ -3062,6 +3196,7 @@ class FileDisplayActivity : const val RESTART: String = "RESTART" const val ALL_FILES: String = "ALL_FILES" const val LIST_GROUPFOLDERS: String = "LIST_GROUPFOLDERS" + const val ALBUMS: String = "ALBUMS" const val SINGLE_USER_SIZE: Int = 1 const val OPEN_FILE: String = "NC_OPEN_FILE" const val ON_DEVICE = "ON_DEVICE" diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt index 51eef93cf22d..c2dea316e85e 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt @@ -14,7 +14,8 @@ import com.elyeproj.loaderviewlibrary.LoaderImageView import com.owncloud.android.databinding.AlbumsGridItemBinding internal class AlbumGridItemViewHolder(private var binding: AlbumsGridItemBinding) : - RecyclerView.ViewHolder(binding.root), AlbumItemViewHolder { + RecyclerView.ViewHolder(binding.root), + AlbumItemViewHolder { override val thumbnail: ImageView get() = binding.thumbnail override val shimmerThumbnail: LoaderImageView diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt index 12892f6a424c..a1bfa865942b 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt @@ -14,7 +14,8 @@ import com.elyeproj.loaderviewlibrary.LoaderImageView import com.owncloud.android.databinding.AlbumsListItemBinding internal class AlbumListItemViewHolder(private var binding: AlbumsListItemBinding) : - RecyclerView.ViewHolder(binding.root), AlbumItemViewHolder { + RecyclerView.ViewHolder(binding.root), + AlbumItemViewHolder { override val thumbnail: ImageView get() = binding.thumbnail override val shimmerThumbnail: LoaderImageView diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt index 21f7322a659d..fa4be74ae6be 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later */ @@ -19,6 +19,7 @@ import com.owncloud.android.R import com.owncloud.android.databinding.AlbumsGridItemBinding import com.owncloud.android.databinding.AlbumsListItemBinding import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.datamodel.OCFile import com.owncloud.android.datamodel.SyncedFolderProvider import com.owncloud.android.datamodel.ThumbnailsCacheManager import com.owncloud.android.lib.common.utils.Log_OC @@ -36,22 +37,17 @@ class AlbumsAdapter( private val preferences: AppPreferences, private val viewThemeUtils: ViewThemeUtils, private val gridView: Boolean = true -) : - RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var albumList: MutableList = mutableListOf() private val asyncTasks: MutableList = ArrayList() - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - return if (gridView) { - AlbumGridItemViewHolder(AlbumsGridItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)) - } else { - AlbumListItemViewHolder(AlbumsListItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)) - } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder = if (gridView) { + AlbumGridItemViewHolder(AlbumsGridItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)) + } else { + AlbumListItemViewHolder(AlbumsListItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)) } - override fun getItemCount(): Int { - return albumList.size - } + override fun getItemCount(): Int = albumList.size override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { val gridViewHolder = holder as AlbumItemViewHolder @@ -62,11 +58,20 @@ class AlbumsAdapter( gridViewHolder.albumInfo.text = String.format( context.resources.getString(R.string.album_items_text), file.nbItems, - file.createdDate + DisplayUtils.getDateByPattern(file.createdDate, "MMM yyyy") ) if (file.lastPhoto > 0) { - val ocLocal = storageManager?.getFileByLocalId(file.lastPhoto) + var ocLocal = storageManager?.getFileByLocalId(file.lastPhoto) + if (ocLocal == null) { + // if local file is not present make dummy file with fake remotePath + // without remotePath it won't work + // lastPhoto is file id which we can set it to localId and remoteId for thumbnail generation + val nFile = OCFile("/" + file.albumName) + nFile.localId = file.lastPhoto + nFile.remoteId = file.lastPhoto.toString() + ocLocal = nFile + } DisplayUtils.setThumbnail( ocLocal, gridViewHolder.thumbnail, @@ -78,7 +83,8 @@ class AlbumsAdapter( gridViewHolder.shimmerThumbnail, preferences, viewThemeUtils, - syncedFolderProvider + syncedFolderProvider, + true ) } else { gridViewHolder.thumbnail.setImageResource(R.drawable.file_image) @@ -104,7 +110,8 @@ class AlbumsAdapter( fun setAlbumItems(albumItems: List?) { albumList.clear() albumItems?.let { - albumList.addAll(it) + // alphabetically sorting + albumList.addAll(it.sortedBy { album -> album.albumName.lowercase() }) } notifyDataSetChanged() } diff --git a/app/src/main/java/com/owncloud/android/ui/asynctasks/CopyAndUploadContentUrisTask.java b/app/src/main/java/com/owncloud/android/ui/asynctasks/CopyAndUploadContentUrisTask.java index 01d683a71b1e..9dbeb1f2ff81 100644 --- a/app/src/main/java/com/owncloud/android/ui/asynctasks/CopyAndUploadContentUrisTask.java +++ b/app/src/main/java/com/owncloud/android/ui/asynctasks/CopyAndUploadContentUrisTask.java @@ -8,6 +8,7 @@ * SPDX-FileCopyrightText: 2016 Juan Carlos González Cabrero * SPDX-FileCopyrightText: 2015 María Asensio Valverde * SPDX-FileCopyrightText: 2014 David A. Velasco + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: GPL-2.0-only AND (AGPL-3.0-or-later OR GPL-2.0-only) */ package com.owncloud.android.ui.asynctasks; @@ -18,6 +19,7 @@ import android.net.Uri; import android.os.AsyncTask; import android.provider.DocumentsContract; +import android.text.TextUtils; import android.widget.Toast; import com.nextcloud.client.account.User; @@ -55,6 +57,9 @@ public class CopyAndUploadContentUrisTask extends AsyncTask @@ -98,9 +103,10 @@ public static Object[] makeParamsToExecute( }; } - public CopyAndUploadContentUrisTask(OnCopyTmpFilesTaskListener listener, Context context) { + public CopyAndUploadContentUrisTask(OnCopyTmpFilesTaskListener listener, Context context, String albumName) { mListener = new WeakReference<>(listener); mAppContext = context.getApplicationContext(); + mAlbumName = albumName; } /** @@ -180,16 +186,31 @@ protected ResultCode doInBackground(Object[] params) { } } - FileUploadHelper.Companion.instance().uploadNewFiles( - user, - localPaths, - currentRemotePaths, - behaviour, - false, // do not create parent folder if not existent - UploadFileOperation.CREATED_BY_USER, - false, - false, - NameCollisionPolicy.ASK_USER); + if (TextUtils.isEmpty(mAlbumName)) { + FileUploadHelper.Companion.instance().uploadNewFiles( + user, + localPaths, + currentRemotePaths, + behaviour, + false, // do not create parent folder if not existent + UploadFileOperation.CREATED_BY_USER, + false, + false, + NameCollisionPolicy.ASK_USER); + } else { + FileUploadHelper.Companion.instance().uploadAndCopyNewFilesForAlbum( + user, + localPaths, + currentRemotePaths, + mAlbumName, + behaviour, + true, // create parent folder if not existent + UploadFileOperation.CREATED_BY_USER, + false, + false, + // use RENAME policy to make sure all files are uploaded + NameCollisionPolicy.RENAME); + } result = ResultCode.OK; diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt index e394a5d3e918..77c2876d605a 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later */ @@ -26,7 +26,6 @@ import com.nextcloud.utils.extensions.typedActivity import com.owncloud.android.R import com.owncloud.android.databinding.EditBoxDialogBinding import com.owncloud.android.datamodel.FileDataStorageManager -import com.owncloud.android.lib.resources.status.OCCapability import com.owncloud.android.ui.activity.ComponentsGetter import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.KeyboardUtils @@ -39,7 +38,10 @@ import javax.inject.Inject * * Triggers the folder creation when name is confirmed. */ -class CreateAlbumDialogFragment : DialogFragment(), DialogInterface.OnClickListener, Injectable { +class CreateAlbumDialogFragment : + DialogFragment(), + DialogInterface.OnClickListener, + Injectable { @Inject lateinit var fileDataStorageManager: FileDataStorageManager @@ -116,13 +118,11 @@ class CreateAlbumDialogFragment : DialogFragment(), DialogInterface.OnClickListe return builder.create() } - private fun getOCCapability(): OCCapability = fileDataStorageManager.getCapability(accountProvider.user.accountName) - private fun checkFileNameAfterEachType() { val newAlbumName = binding.userInput.text?.toString() ?: "" val errorMessage = when { - newAlbumName.isEmpty() -> getString(R.string.album_name_empty) + newAlbumName.isBlank() -> getString(R.string.album_name_empty) else -> null } @@ -139,25 +139,24 @@ class CreateAlbumDialogFragment : DialogFragment(), DialogInterface.OnClickListe } } - private fun buildMaterialAlertDialog(view: View): MaterialAlertDialogBuilder { - return MaterialAlertDialogBuilder(requireActivity()) + private fun buildMaterialAlertDialog(view: View): MaterialAlertDialogBuilder = + MaterialAlertDialogBuilder(requireActivity()) .setView(view) .setPositiveButton( - if (albumName == null) R.string.folder_confirm_create else R.string.rename_dialog_title, + if (albumName == null) R.string.folder_confirm_create else R.string.rename_dialog_button, this ) .setNegativeButton(R.string.common_cancel, this) .setTitle(if (albumName == null) R.string.create_album_dialog_title else R.string.rename_album_dialog_title) .setMessage(R.string.create_album_dialog_message) - } override fun onClick(dialog: DialogInterface, which: Int) { if (which == AlertDialog.BUTTON_POSITIVE) { val newAlbumName = (getDialog()?.findViewById(R.id.user_input) as TextView) - .text.toString() + .text.toString().trim() val errorMessage = when { - newAlbumName.isEmpty() -> getString(R.string.album_name_empty) + newAlbumName.isBlank() -> getString(R.string.album_name_empty) else -> null } @@ -190,13 +189,11 @@ class CreateAlbumDialogFragment : DialogFragment(), DialogInterface.OnClickListe * @return Dialog ready to show. */ @JvmStatic - fun newInstance(albumName: String? = null): CreateAlbumDialogFragment { - return CreateAlbumDialogFragment().apply { - val argsBundle = bundleOf( - ARG_ALBUM_NAME to albumName - ) - arguments = argsBundle - } + fun newInstance(albumName: String? = null): CreateAlbumDialogFragment = CreateAlbumDialogFragment().apply { + val argsBundle = bundleOf( + ARG_ALBUM_NAME to albumName + ) + arguments = argsBundle } } } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java index 631127f1a299..4d802c76f1fe 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java @@ -489,6 +489,7 @@ private void addFilesToAlbum(@Nullable String albumName) { paths.add(file.getRemotePath()); } checkedFiles = null; + exitSelectionMode(); if (!TextUtils.isEmpty(albumName)) { mContainerActivity.getFileOperationsHelper().albumCopyFiles(paths, albumName); } else { diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index ef18694346b1..078d0270b45a 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later */ @@ -9,13 +9,16 @@ package com.owncloud.android.ui.fragment.albums import android.annotation.SuppressLint import android.app.Activity +import android.app.Activity.RESULT_OK import android.content.ContentValues import android.content.Context import android.content.Intent import android.content.res.Configuration +import android.net.Uri import android.os.Bundle import android.os.Handler import android.os.Looper +import android.os.Parcelable import android.view.ActionMode import android.view.LayoutInflater import android.view.Menu @@ -34,21 +37,26 @@ import androidx.annotation.VisibleForTesting import androidx.core.content.ContextCompat import androidx.core.view.MenuHost import androidx.core.view.MenuProvider +import androidx.core.view.get +import androidx.core.view.size import androidx.drawerlayout.widget.DrawerLayout import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle import androidx.recyclerview.widget.GridLayoutManager +import com.google.android.material.appbar.AppBarLayout import com.nextcloud.client.account.User import com.nextcloud.client.account.UserAccountManager import com.nextcloud.client.di.Injectable +import com.nextcloud.client.jobs.upload.FileUploadWorker import com.nextcloud.client.network.ClientFactory import com.nextcloud.client.network.ClientFactory.CreationException import com.nextcloud.client.preferences.AppPreferences import com.nextcloud.client.utils.Throttler import com.nextcloud.ui.albumItemActions.AlbumItemActionsBottomSheet -import com.nextcloud.ui.fileactions.FileActionsBottomSheet.Companion.newInstance +import com.nextcloud.ui.fileactions.FileActionsBottomSheet import com.nextcloud.utils.extensions.getTypedActivity import com.nextcloud.utils.extensions.isDialogFragmentReady import com.owncloud.android.R @@ -60,36 +68,50 @@ import com.owncloud.android.datamodel.VirtualFolderType import com.owncloud.android.db.ProviderMeta import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.utils.Log_OC -import com.owncloud.android.lib.resources.albums.ReadAlbumItemsRemoteOperation import com.owncloud.android.lib.resources.albums.RemoveAlbumFileRemoteOperation import com.owncloud.android.lib.resources.albums.ToggleAlbumFavoriteRemoteOperation +import com.owncloud.android.lib.resources.files.model.RemoteFile +import com.owncloud.android.lib.resources.status.Type +import com.owncloud.android.operations.albums.ReadAlbumItemsOperation import com.owncloud.android.ui.activity.AlbumsPickerActivity import com.owncloud.android.ui.activity.AlbumsPickerActivity.Companion.intentForPickingMediaFiles import com.owncloud.android.ui.activity.FileActivity +import com.owncloud.android.ui.activity.FileActivity.REQUEST_CODE__LAST_SHARED import com.owncloud.android.ui.activity.FileDisplayActivity import com.owncloud.android.ui.adapter.GalleryAdapter +import com.owncloud.android.ui.dialog.ConfirmationDialogFragment +import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener import com.owncloud.android.ui.dialog.CreateAlbumDialogFragment import com.owncloud.android.ui.events.FavoriteEvent import com.owncloud.android.ui.fragment.FileFragment +import com.owncloud.android.ui.helpers.UriUploader import com.owncloud.android.ui.interfaces.OCFileListFragmentInterface import com.owncloud.android.ui.preview.PreviewImageFragment import com.owncloud.android.ui.preview.PreviewMediaActivity.Companion.canBePreviewed import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.ErrorMessageAdapter -import com.owncloud.android.utils.FileStorageUtils import com.owncloud.android.utils.theme.ViewThemeUtils import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import java.util.Optional +import java.util.function.Supplier import javax.inject.Inject -@Suppress("TooManyFunctions") -class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { +@Suppress("TooManyFunctions", "LargeClass") +class AlbumItemsFragment : + Fragment(), + OCFileListFragmentInterface, + Injectable { private var adapter: GalleryAdapter? = null private var client: OwnCloudClient? = null @@ -124,6 +146,10 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { private var mMultiChoiceModeListener: MultiChoiceModeListener? = null + private var albumRemoteFileList = listOf() + + private val refreshFlow = MutableSharedFlow(extraBufferCapacity = 1) + override fun onAttach(context: Context) { super.onAttach(context) try { @@ -160,9 +186,11 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { return binding.root } + @OptIn(FlowPreview::class) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) optionalUser = Optional.of(accountManager.user) + showAppBar() createMenu() setupContainingList() setupContent() @@ -172,6 +200,24 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { if (isNewAlbum) { openGalleryToAddMedia() } + + viewLifecycleOwner.lifecycleScope.launch { + viewLifecycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) { + refreshFlow.onStart { emit(Unit) } // default fetch + .onEach { binding.swipeContainingList.isRefreshing = true } // show progress on each call + .debounce(DEBOUNCE_DELAY) // debounce background triggers + .collect { + fetchAndSetData() + } + } + } + } + + private fun showAppBar() { + if (requireActivity() is FileDisplayActivity) { + val appBarLayout = requireActivity().findViewById(R.id.appbar) + appBarLayout?.setExpanded(true, false) + } } private fun setUpActionMode() { @@ -194,42 +240,49 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { menuInflater.inflate(R.menu.fragment_album_items, menu) } - override fun onMenuItemSelected(menuItem: MenuItem): Boolean { - return when (menuItem.itemId) { - R.id.action_three_dot_icon -> { - openAlbumActionsMenu() - true - } + override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) { + R.id.action_three_dot_icon -> { + openAlbumActionsMenu() + true + } - R.id.action_add_more_photos -> { - // open Gallery fragment as selection then add items to current album - openGalleryToAddMedia() - true + R.id.action_add_from_camera_roll -> { + // we don't want quick media access bottom sheet for Android 13+ devices + // to avoid that we are not using image/* and video/* mime types + // we are validating mime types when selection is made + val intent = Intent(Intent.ACTION_GET_CONTENT).apply { + type = "*/*" + putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) + addCategory(Intent.CATEGORY_OPENABLE) } + startActivityForResult( + Intent.createChooser(intent, getString(R.string.upload_chooser_title)), + REQUEST_CODE__SELECT_MEDIA_FROM_APPS + ) + true + } - else -> false + R.id.action_add_from_account -> { + // open Gallery fragment as selection then add items to current album + openGalleryToAddMedia() + true } + + else -> false } override fun onPrepareMenu(menu: Menu) { super.onPrepareMenu(menu) - val moreMenu = menu.findItem(R.id.action_three_dot_icon) - moreMenu.icon?.let { - moreMenu.setIcon( - viewThemeUtils.platform.colorDrawable( - it, - ContextCompat.getColor(requireActivity(), R.color.black) - ) - ) - } - val add = menu.findItem(R.id.action_add_more_photos) - add.icon?.let { - add.setIcon( - viewThemeUtils.platform.colorDrawable( - it, - ContextCompat.getColor(requireActivity(), R.color.black) + for (i in 0 until menu.size) { + val item = menu[i] + item.icon?.let { + item.setIcon( + viewThemeUtils.platform.colorDrawable( + it, + ContextCompat.getColor(requireContext(), R.color.fontAppbar) + ) ) - ) + } } } }, @@ -253,40 +306,37 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { } } - private fun onAlbumActionChosen(@IdRes itemId: Int): Boolean { - return when (itemId) { - // action to rename album - R.id.action_rename_file -> { - CreateAlbumDialogFragment.newInstance(albumName) - .show( - requireActivity().supportFragmentManager, - CreateAlbumDialogFragment.TAG - ) - true - } - - // action to delete album - R.id.action_delete -> { - mContainerActivity?.getFileOperationsHelper()?.removeAlbum(albumName) - true - } + private fun onAlbumActionChosen(@IdRes itemId: Int): Boolean = when (itemId) { + // action to rename album + R.id.action_rename_file -> { + CreateAlbumDialogFragment.newInstance(albumName) + .show( + requireActivity().supportFragmentManager, + CreateAlbumDialogFragment.TAG + ) + true + } - else -> false + // action to delete album + R.id.action_delete -> { + showConfirmationDialog(true, null) + true } + + else -> false } private fun setupContent() { binding.listRoot.setEmptyView(binding.emptyList.emptyListView) val layoutManager = GridLayoutManager(requireContext(), 1) binding.listRoot.layoutManager = layoutManager - fetchAndSetData() } private fun setupContainingList() { viewThemeUtils.androidx.themeSwipeRefreshLayout(binding.swipeContainingList) binding.swipeContainingList.setOnRefreshListener { binding.swipeContainingList.isRefreshing = true - fetchAndSetData() + refreshData() } } @@ -303,42 +353,38 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { } private fun fetchAndSetData() { + binding.swipeContainingList.isRefreshing = true mMultiChoiceModeListener?.exitSelectionMode() initializeAdapter() setEmptyListLoadingMessage() lifecycleScope.launch(Dispatchers.IO) { - val getRemoteNotificationOperation = ReadAlbumItemsRemoteOperation(albumName) - val result = client?.let { getRemoteNotificationOperation.execute(it) } + val readAlbumItemsRemoteOperation = ReadAlbumItemsOperation(albumName, mContainerActivity?.storageManager) + val result = client?.let { readAlbumItemsRemoteOperation.execute(it) } val ocFileList = mutableListOf() if (result?.isSuccess == true && result.resultData != null) { mContainerActivity?.storageManager?.deleteVirtuals(VirtualFolderType.ALBUM) val contentValues = mutableListOf() + albumRemoteFileList = result.resultData.toMutableList() - for (remoteFile in result.resultData) { - var ocFile = mContainerActivity?.storageManager?.getFileByLocalId(remoteFile.localId) - if (ocFile == null) { - ocFile = FileStorageUtils.fillOCFile(remoteFile) - } else { - // required: as OCFile will only contains file_name.png not with /albums/album_name/file_name - // to fix this we have to get the remote path from remote file and assign to OCFile - ocFile.remotePath = remoteFile.remotePath - ocFile.decryptedRemotePath = remoteFile.remotePath - } - ocFileList.add(ocFile!!) + for (remoteFile in albumRemoteFileList) { + val ocFile = mContainerActivity?.storageManager?.getFileByLocalId(remoteFile.localId) + ocFile?.let { + ocFileList.add(it) - val cv = ContentValues() - cv.put(ProviderMeta.ProviderTableMeta.VIRTUAL_TYPE, VirtualFolderType.ALBUM.toString()) - cv.put(ProviderMeta.ProviderTableMeta.VIRTUAL_OCFILE_ID, ocFile.fileId) + val cv = ContentValues() + cv.put(ProviderMeta.ProviderTableMeta.VIRTUAL_TYPE, VirtualFolderType.ALBUM.toString()) + cv.put(ProviderMeta.ProviderTableMeta.VIRTUAL_OCFILE_ID, it.fileId) - contentValues.add(cv) + contentValues.add(cv) + } } mContainerActivity?.storageManager?.saveVirtuals(contentValues) } withContext(Dispatchers.Main) { if (result?.isSuccess == true && result.resultData != null) { - if (result.resultData.isEmpty()) { + if (result.resultData.isEmpty() || ocFileList.isEmpty()) { setMessageForEmptyList( R.string.file_list_empty_headline_server_search, resources.getString(R.string.file_list_empty_gallery), @@ -467,13 +513,11 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { } override fun onDestroyView() { - super.onDestroyView() lastMediaItemPosition = 0 + super.onDestroyView() } - override fun getColumnsCount(): Int { - return columnSize - } + override fun getColumnsCount(): Int = columnSize override fun onShareIconClick(file: OCFile?) { // nothing to do here @@ -545,9 +589,7 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { mMultiChoiceModeListener?.updateActionModeFile(file) } - override fun isLoading(): Boolean { - return false - } + override fun isLoading(): Boolean = false override fun onHeaderClicked() { // nothing to do here @@ -564,6 +606,7 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { requireActivity().supportFragmentManager.popBackStack() } + @Suppress("LongMethod") private fun openActionsMenu(filesCount: Int, checkedFiles: Set) { throttler.run("overflowClick") { var toHide: MutableList? = ArrayList() @@ -607,7 +650,21 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { } val childFragmentManager = childFragmentManager - val actionBottomSheet = newInstance(filesCount, checkedFiles, true, toHide) + val endpoints = mContainerActivity?.storageManager?.getCapability( + optionalUser?.get() + )?.getClientIntegrationEndpoints( + Type.CONTEXT_MENU, + checkedFiles.iterator().next().mimeType + ) + + val actionBottomSheet = FileActionsBottomSheet.newInstance( + filesCount, + checkedFiles, + true, + toHide, + false, + endpoints!! + ) .setResultListener( childFragmentManager, this @@ -626,7 +683,7 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { when (itemId) { R.id.action_remove_file -> { - onRemoveFileOperation(checkedFiles) + showConfirmationDialog(false, checkedFiles) return true } @@ -640,6 +697,18 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { return true } + R.id.action_open_file_with -> { + // use only first element as this option will only be shown for single file selection + mContainerActivity?.fileOperationsHelper?.openFile(checkedFiles.first()) + return true + } + + R.id.action_stream_media -> { + // use only first element as this option will only be shown for single file selection + mContainerActivity?.fileOperationsHelper?.streamMediaFile(checkedFiles.first()) + return true + } + R.id.action_select_all_action_menu -> { selectAllFiles(true) return true @@ -701,7 +770,7 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { } if (files.size == 1) { val removeAlbumFileRemoteOperation = RemoveAlbumFileRemoteOperation( - files.first().remotePath + getAlbumRemotePathForRemoval(files.first()) ) val remoteOperationResult = removeAlbumFileRemoteOperation.execute(client) @@ -720,7 +789,7 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { } else { for (file in files) { val removeAlbumFileRemoteOperation = RemoveAlbumFileRemoteOperation( - file.remotePath + getAlbumRemotePathForRemoval(file) ) val remoteOperationResult = removeAlbumFileRemoteOperation.execute(client) @@ -745,11 +814,68 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { showDialog(false) // refresh data - fetchAndSetData() + refreshData() } } } + // since after files data are fetched in media the file remote path will be actual instead of Albums prefixed + // to remove the file properly form the albums we have to provide the correct album path + private fun getAlbumRemotePathForRemoval(ocFile: OCFile): String { + if (!ocFile.remotePath.startsWith("/albums/$albumName")) { + return albumRemoteFileList.find { it.etag == ocFile.etag || it.etag == ocFile.etagOnServer }?.remotePath + ?: ocFile.remotePath + } + return ocFile.remotePath + } + + private fun showConfirmationDialog(isAlbum: Boolean, files: Collection?) { + val messagePair = getConfirmationDialogMessage(isAlbum, files) + val errorDialog = ConfirmationDialogFragment.newInstance( + messageResId = messagePair.first, + messageArguments = arrayOf(messagePair.second), + titleResId = -1, + positiveButtonTextId = R.string.file_delete, + negativeButtonTextId = R.string.file_keep, + neutralButtonTextId = -1 + ) + errorDialog.setCancelable(false) + errorDialog.setOnConfirmationListener( + object : ConfirmationDialogFragmentListener { + override fun onConfirmation(callerTag: String?) { + if (isAlbum) { + mContainerActivity?.getFileOperationsHelper()?.removeAlbum(albumName) + } else { + files?.let { + onRemoveFileOperation(it) + } + } + } + + override fun onNeutral(callerTag: String?) { + // not used at the moment + } + + override fun onCancel(callerTag: String?) { + // not used at the moment + } + } + ) + errorDialog.show(requireActivity().supportFragmentManager, ConfirmationDialogFragment.FTAG_CONFIRMATION) + } + + private fun getConfirmationDialogMessage(isAlbum: Boolean, files: Collection?): Pair { + if (isAlbum) { + return Pair(R.string.confirmation_remove_folder_alert, albumName) + } + + return if (files?.size == SINGLE_SELECTION) { + Pair(R.string.confirmation_remove_file_alert, files.first().fileName) + } else { + Pair(R.string.confirmation_remove_files_alert, null) + } + } + private fun showDialog(isShow: Boolean) { if (requireActivity() is FileDisplayActivity) { if (isShow) { @@ -788,7 +914,8 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { val adapter: GalleryAdapter?, val viewThemeUtils: ViewThemeUtils, val openActionsMenu: (Int, Set) -> Unit - ) : AbsListView.MultiChoiceModeListener, DrawerLayout.DrawerListener { + ) : AbsListView.MultiChoiceModeListener, + DrawerLayout.DrawerListener { var mActiveActionMode: ActionMode? = null private var mIsActionModeNew = false @@ -818,7 +945,7 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { * @param drawerView Navigation drawer just closed. */ override fun onDrawerClosed(drawerView: View) { - if (mActionModeClosedByDrawer && mSelectionWhenActionModeClosedByDrawer.size > 0) { + if (mActionModeClosedByDrawer && mSelectionWhenActionModeClosedByDrawer.isNotEmpty()) { activity.startActionMode(this) adapter?.setCheckedItem(mSelectionWhenActionModeClosedByDrawer) @@ -986,11 +1113,75 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { } fun refreshData() { - fetchAndSetData() + refreshFlow.tryEmit(Unit) + } + + @Deprecated("Deprecated in Java") + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + if (data != null && + requestCode == REQUEST_CODE__SELECT_MEDIA_FROM_APPS && resultCode == RESULT_OK + ) { + requestUploadOfContentFromApps(data) + } + super.onActivityResult(requestCode, resultCode, data) + } + + // method referenced from FileDisplayActivity#requestUploadOfContentFromApps + private fun requestUploadOfContentFromApps(contentIntent: Intent) { + val clipData = contentIntent.clipData + val uris = mutableListOf() + + if (clipData != null) { + for (i in 0 until clipData.itemCount) { + uris.add(clipData.getItemAt(i).uri) + } + } else { + contentIntent.data?.let { uris.add(it) } + } + + // only accept images and videos mime type + val validUris = uris.filter { uri -> + val type = requireActivity().contentResolver.getType(uri) + type?.startsWith("image/") == true || type?.startsWith("video/") == true + } + + if (validUris.isEmpty()) { + DisplayUtils.showSnackMessage(requireActivity(), R.string.album_unsupported_file) + return + } + + val streamsToUpload = ArrayList() + streamsToUpload.addAll(validUris) + + // albums remote path for uploading + val remotePath = + "${resources.getString(R.string.instant_upload_path)}/${resources.getString(R.string.drawer_item_album)}/" + + if (requireActivity() is FileDisplayActivity) { + val uploader = UriUploader( + requireActivity() as FileDisplayActivity, + streamsToUpload, + remotePath, + albumName, + (requireActivity() as FileDisplayActivity).user.orElseThrow( + Supplier { RuntimeException() } + ), + FileUploadWorker.LOCAL_BEHAVIOUR_COPY, + false, // Not show waiting dialog while file is being copied from private storage + null // Not needed copy temp task listener + ) + + uploader.uploadUris() + } } companion object { val TAG: String = AlbumItemsFragment::class.java.simpleName + + const val REQUEST_CODE__SELECT_MEDIA_FROM_APPS: Int = REQUEST_CODE__LAST_SHARED + 10 + + private const val SINGLE_SELECTION = 1 + private const val ARG_ALBUM_NAME = "album_name" private const val ARG_IS_NEW_ALBUM = "is_new_album" var lastMediaItemPosition: Int? = null @@ -999,6 +1190,7 @@ class AlbumItemsFragment : Fragment(), OCFileListFragmentInterface, Injectable { private const val MAX_COLUMN_SIZE_PORTRAIT: Int = 2 private const val SLEEP_DELAY = 100L + private const val DEBOUNCE_DELAY = 500L fun newInstance(albumName: String, isNewAlbum: Boolean = false): AlbumItemsFragment { val args = Bundle() diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt index 931df1ad605d..fe705566ddec 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: AGPL-3.0-or-later */ @@ -12,6 +12,7 @@ import android.content.Context import android.content.Intent import android.content.res.Configuration import android.os.Bundle +import android.os.Parcelable import android.text.Spannable import android.text.SpannableString import android.text.style.ForegroundColorSpan @@ -31,12 +32,14 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.appbar.AppBarLayout import com.nextcloud.client.account.User import com.nextcloud.client.account.UserAccountManager import com.nextcloud.client.di.Injectable import com.nextcloud.client.network.ClientFactory import com.nextcloud.client.network.ClientFactory.CreationException import com.nextcloud.client.preferences.AppPreferences +import com.nextcloud.client.utils.Throttler import com.owncloud.android.R import com.owncloud.android.databinding.AlbumsFragmentBinding import com.owncloud.android.datamodel.SyncedFolderProvider @@ -56,7 +59,10 @@ import kotlinx.coroutines.withContext import java.util.Optional import javax.inject.Inject -class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { +class AlbumsFragment : + Fragment(), + AlbumFragmentInterface, + Injectable { private var adapter: AlbumsAdapter? = null private var client: OwnCloudClient? = null @@ -79,11 +85,15 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { @Inject lateinit var syncedFolderProvider: SyncedFolderProvider + @Inject + lateinit var throttler: Throttler + private var mContainerActivity: FileFragment.ContainerActivity? = null private var isGridView = true private var maxColumnSize = 2 private var isSelectionMode = false + private var listState: Parcelable? = null override fun onAttach(context: Context) { super.onAttach(context) @@ -126,6 +136,7 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) optionalUser = Optional.of(accountManager.user) + showAppBar() createMenu() setupContainingList() setupContent() @@ -134,6 +145,13 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { } } + private fun showAppBar() { + if (requireActivity() is FileDisplayActivity) { + val appBarLayout = requireActivity().findViewById(R.id.appbar) + appBarLayout?.setExpanded(true, false) + } + } + private fun createMenu() { val menuHost: MenuHost = requireActivity() menuHost.addMenuProvider( @@ -154,15 +172,13 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { addItem.title = coloredTitle } - override fun onMenuItemSelected(menuItem: MenuItem): Boolean { - return when (menuItem.itemId) { - R.id.action_create_new_album -> { - showCreateAlbumDialog() - true - } - - else -> false + override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) { + R.id.action_create_new_album -> { + showCreateAlbumDialog() + true } + + else -> false } }, viewLifecycleOwner, @@ -171,11 +187,16 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { } private fun showCreateAlbumDialog() { - CreateAlbumDialogFragment.newInstance() - .show( - requireActivity().supportFragmentManager, - CreateAlbumDialogFragment.TAG - ) + throttler.run("onCreateAlbumClick") { + val fragment = requireActivity().supportFragmentManager.findFragmentByTag(CreateAlbumDialogFragment.TAG) + if (fragment == null) { + CreateAlbumDialogFragment.newInstance() + .show( + requireActivity().supportFragmentManager, + CreateAlbumDialogFragment.TAG + ) + } + } } private fun setupContent() { @@ -211,8 +232,8 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { initializeAdapter() updateEmptyView(false) lifecycleScope.launch(Dispatchers.IO) { - val getRemoteNotificationOperation = ReadAlbumsRemoteOperation() - val result = client?.let { getRemoteNotificationOperation.execute(it) } + val albumsRemoteOperation = ReadAlbumsRemoteOperation() + val result = client?.let { albumsRemoteOperation.execute(it) } withContext(Dispatchers.Main) { if (result?.isSuccess == true && result.resultData != null) { if (result.resultData.isEmpty()) { @@ -259,6 +280,11 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { ) } binding.listRoot.adapter = adapter + + // Restore scroll state + listState?.let { + binding.listRoot.layoutManager?.onRestoreInstanceState(it) + } } private fun updateEmptyView(isEmpty: Boolean) { @@ -308,6 +334,7 @@ class AlbumsFragment : Fragment(), AlbumFragmentInterface, Injectable { override fun onPause() { super.onPause() adapter?.cancelAllPendingTasks() + listState = binding.listRoot.layoutManager?.onSaveInstanceState() } private val isGridEnabled: Boolean diff --git a/app/src/main/java/com/owncloud/android/ui/helpers/UriUploader.kt b/app/src/main/java/com/owncloud/android/ui/helpers/UriUploader.kt index 9f08ad99bbce..09a984103a7e 100644 --- a/app/src/main/java/com/owncloud/android/ui/helpers/UriUploader.kt +++ b/app/src/main/java/com/owncloud/android/ui/helpers/UriUploader.kt @@ -4,6 +4,7 @@ * SPDX-FileCopyrightText: 2024 Alper Ozturk * SPDX-FileCopyrightText: 2022 Álvaro Brey * SPDX-FileCopyrightText: 2018-2021 Tobias Kaminsky + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-FileCopyrightText: 2022 Nextcloud GmbH * SPDX-FileCopyrightText: 2016 ownCloud Inc. * SPDX-License-Identifier: GPL-2.0-only AND (AGPL-3.0-or-later OR GPL-2.0-only) @@ -51,6 +52,29 @@ class UriUploader( private val mShowWaitingDialog: Boolean, private val mCopyTmpTaskListener: OnCopyTmpFilesTaskListener? ) { + // used when uploading from Albums + var albumName: String? = null + + constructor( + activity: FileActivity, + urisToUpload: List, + uploadPath: String, + albumName: String?, + user: User, + behaviour: Int, + showWaitingDialog: Boolean, + copyTmpTaskListener: OnCopyTmpFilesTaskListener? + ) : this( + activity, + urisToUpload, + uploadPath, + user, + behaviour, + showWaitingDialog, + copyTmpTaskListener + ) { + this.albumName = albumName + } enum class UriUploaderResultCode { OK, @@ -132,18 +156,35 @@ class UriUploader( * @param remotePaths Absolute paths in the current OC account to set to the uploaded file. */ private fun requestUpload(localPaths: Array, remotePaths: Array) { - FileUploadHelper.instance().uploadNewFiles( - user, - localPaths, - remotePaths, - mBehaviour, - // do not create parent folder if not existent - false, - UploadFileOperation.CREATED_BY_USER, - requiresWifi = false, - requiresCharging = false, - nameCollisionPolicy = NameCollisionPolicy.ASK_USER - ) + if (albumName.isNullOrEmpty()) { + FileUploadHelper.instance().uploadNewFiles( + user, + localPaths, + remotePaths, + mBehaviour, + // do not create parent folder if not existent + false, + UploadFileOperation.CREATED_BY_USER, + requiresWifi = false, + requiresCharging = false, + nameCollisionPolicy = NameCollisionPolicy.ASK_USER + ) + } else { + FileUploadHelper.instance().uploadAndCopyNewFilesForAlbum( + user, + localPaths, + remotePaths, + albumName!!, + mBehaviour, + // create parent folder if not existent + true, + UploadFileOperation.CREATED_BY_USER, + requiresWifi = false, + requiresCharging = false, + // use RENAME policy to make sure all files are uploaded + nameCollisionPolicy = NameCollisionPolicy.RENAME + ) + } } /** @@ -155,7 +196,7 @@ class UriUploader( if (mShowWaitingDialog) { mActivity.showLoadingDialog(mActivity.resources.getString(R.string.wait_for_tmp_copy_from_private_storage)) } - val copyTask = CopyAndUploadContentUrisTask(mCopyTmpTaskListener, mActivity) + val copyTask = CopyAndUploadContentUrisTask(mCopyTmpTaskListener, mActivity, albumName) val fm = mActivity.supportFragmentManager // Init Fragment without UI to retain AsyncTask across configuration changes diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.kt b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.kt index 3fd3acc3874e..1c245528f0b6 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.kt @@ -8,6 +8,7 @@ * SPDX-FileCopyrightText: 2019 Chris Narkiewicz * SPDX-FileCopyrightText: 2015 ownCloud Inc. * SPDX-FileCopyrightText: 2013-2015 David A. Velasco + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: GPL-2.0-only AND (AGPL-3.0-or-later OR GPL-2.0-only) */ package com.owncloud.android.ui.preview @@ -39,6 +40,7 @@ import androidx.core.view.MenuHost import androidx.core.view.MenuProvider import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope import com.caverock.androidsvg.SVG import com.caverock.androidsvg.SVGParseException import com.github.chrisbanes.photoview.PhotoView @@ -59,6 +61,7 @@ import com.owncloud.android.datamodel.ThumbnailsCacheManager import com.owncloud.android.datamodel.ThumbnailsCacheManager.AsyncResizedImageDrawable import com.owncloud.android.datamodel.ThumbnailsCacheManager.ResizedImageGenerationTask import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.operations.FetchRemoteFileOperation import com.owncloud.android.ui.activity.FileActivity import com.owncloud.android.ui.dialog.ConfirmationDialogFragment import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment @@ -69,6 +72,9 @@ import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.MimeTypeUtil import com.owncloud.android.utils.theme.ViewThemeUtils import edu.umd.cs.findbugs.annotations.SuppressFBWarnings +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import pl.droidsonroids.gif.GifDrawable import java.io.FileInputStream import java.io.FileNotFoundException @@ -361,17 +367,7 @@ class PreviewImageFragment : override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) { R.id.custom_menu_placeholder_item -> { - val file = file - if (containerActivity.storageManager != null && file != null) { - // Update the file - val updatedFile = containerActivity.storageManager.getFileById(file.fileId) - setFile(updatedFile) - - val fileNew = getFile() - if (fileNew != null) { - showFileActions(file) - } - } + onOverflowClick() true } @@ -383,6 +379,60 @@ class PreviewImageFragment : ) } + /** + * @param isManualClick if true skip album check to avoid calling api in loop if file fetch fails + */ + private fun onOverflowClick(isManualClick: Boolean = false) { + val file = file + if (containerActivity.storageManager != null && file != null) { + // Update the file + val updatedFile = containerActivity.storageManager.getFileById(file.fileId) + // check for albums file + // for album file both local and remoteId will be same configured at operation level + if (!isManualClick && updatedFile != null && updatedFile.localId.toString() == updatedFile.remoteId) { + fetchFileMetaDataIfAbsent(updatedFile) + } else { + setFile(updatedFile) + + val fileNew = getFile() + if (fileNew != null) { + showFileActions(file) + } + } + } + } + + private fun fetchFileMetaDataIfAbsent(ocFile: OCFile) { + if (requireActivity() is FileActivity) { + (requireActivity() as FileActivity).showLoadingDialog(getString(R.string.wait_a_moment)) + } + lifecycleScope.launch(Dispatchers.IO) { + val fetchRemoteFileOperation = + FetchRemoteFileOperation( + requireActivity(), + accountManager.user, + ocFile, + removeFileFromDb = true, + storageManager = containerActivity.storageManager + ) + val result = fetchRemoteFileOperation.execute(requireActivity()) + withContext(Dispatchers.Main) { + if (requireActivity() is FileActivity) { + (requireActivity() as FileActivity).dismissLoadingDialog() + } + if (result?.isSuccess == true && result.resultData != null) { + file = result.resultData as OCFile + + onOverflowClick(isManualClick = true) + } else { + Log_OC.d(TAG, result?.logMessage) + // show error + DisplayUtils.showSnackMessage(binding.root, result.getLogMessage(requireContext())) + } + } + } + } + private fun showFileActions(file: OCFile) { val additionalFilter = FileAction.getFilePreviewActions(getFile()) val fragmentManager = childFragmentManager diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaActivity.kt b/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaActivity.kt index 6ed9b4297b0f..ca561fbefbed 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaActivity.kt @@ -3,7 +3,7 @@ * * SPDX-FileCopyrightText: 2023 Parneet Singh * SPDX-FileCopyrightText: 2023 Alper Ozturk - * SPDX-FileCopyrightText: 2023 TSI-mc + * SPDX-FileCopyrightText: 2023-2026 TSI-mc * SPDX-FileCopyrightText: 2020 Andy Scherzinger * SPDX-FileCopyrightText: 2019 Chris Narkiewicz * SPDX-FileCopyrightText: 2016 David A. Velasco @@ -85,6 +85,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperation import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.operations.DownloadType +import com.owncloud.android.operations.FetchRemoteFileOperation import com.owncloud.android.operations.RemoveFileOperation import com.owncloud.android.operations.SynchronizeFileOperation import com.owncloud.android.ui.activity.FileActivity @@ -520,17 +521,56 @@ class PreviewMediaActivity : } if (item.itemId == R.id.custom_menu_placeholder_item) { - val file = file + onOverflowClick() + } - if (storageManager != null && file != null) { - val updatedFile = storageManager.getFileById(file.fileId) + return super.onOptionsItemSelected(item) + } + + /** + * @param isManualClick if true skip album check to avoid calling api in loop if file fetch fails + */ + private fun onOverflowClick(isManualClick: Boolean = false) { + val file = file + if (storageManager != null && file != null) { + val updatedFile = storageManager.getFileById(file.fileId) + // check for albums file + // for album file both local and remoteId will be same configured at operation level + if (!isManualClick && updatedFile != null && updatedFile.localId.toString() == updatedFile.remoteId) { + fetchFileMetaDataIfAbsent(updatedFile) + } else { setFile(updatedFile) val fileNew = getFile() fileNew?.let { showFileActions(it) } } } + } - return super.onOptionsItemSelected(item) + private fun fetchFileMetaDataIfAbsent(ocFile: OCFile) { + showLoadingDialog(getString(R.string.wait_a_moment)) + lifecycleScope.launch(Dispatchers.IO) { + val fetchRemoteFileOperation = + FetchRemoteFileOperation( + this@PreviewMediaActivity, + accountManager.user, + ocFile, + removeFileFromDb = true, + storageManager = storageManager + ) + val result = fetchRemoteFileOperation.execute(this@PreviewMediaActivity) + withContext(Dispatchers.Main) { + dismissLoadingDialog() + if (result?.isSuccess == true && result.resultData != null) { + file = result.resultData as OCFile + + onOverflowClick(isManualClick = true) + } else { + Log_OC.d(TAG, result?.logMessage) + // show error + DisplayUtils.showSnackMessage(binding.root, result.getLogMessage(this@PreviewMediaActivity)) + } + } + } } private fun showFileActions(file: OCFile) { diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.kt b/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.kt index 3f68ba5ded0a..557bb8fb970e 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.kt @@ -1,7 +1,7 @@ /* * Nextcloud - Android Client * - * SPDX-FileCopyrightText: 2023 TSI-mc + * SPDX-FileCopyrightText: 2023-2026 TSI-mc * SPDX-FileCopyrightText: 2023 Parneet Singh * SPDX-FileCopyrightText: 2020 Andy Scherzinger * SPDX-FileCopyrightText: 2019 Chris Narkiewicz @@ -37,6 +37,7 @@ import androidx.core.view.MenuHost import androidx.core.view.MenuProvider import androidx.drawerlayout.widget.DrawerLayout import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope import androidx.media3.common.MediaItem import androidx.media3.common.Player import androidx.media3.common.util.UnstableApi @@ -65,12 +66,17 @@ import com.owncloud.android.datamodel.OCFile import com.owncloud.android.files.StreamMediaFileOperation import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.operations.FetchRemoteFileOperation import com.owncloud.android.ui.activity.DrawerActivity import com.owncloud.android.ui.activity.FileActivity import com.owncloud.android.ui.dialog.ConfirmationDialogFragment import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment import com.owncloud.android.ui.fragment.FileFragment +import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.MimeTypeUtil +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.lang.ref.WeakReference import java.util.concurrent.Executors import javax.inject.Inject @@ -311,13 +317,7 @@ class PreviewMediaFragment : return when (menuItem.itemId) { R.id.custom_menu_placeholder_item -> { if (containerActivity.storageManager == null || file == null) return false - - val updatedFile = containerActivity.storageManager.getFileById(file.fileId) - file = updatedFile - file?.let { newFile -> - showFileActions(newFile) - } - + onOverflowClick() true } @@ -330,6 +330,54 @@ class PreviewMediaFragment : ) } + /** + * @param isManualClick if true skip album check to avoid calling api in loop if file fetch fails + */ + private fun onOverflowClick(isManualClick: Boolean = false) { + val updatedFile = containerActivity.storageManager.getFileById(file.fileId) + // check for albums file + // for album file both local and remoteId will be same configured at operation level + if (!isManualClick && updatedFile != null && updatedFile.localId.toString() == updatedFile.remoteId) { + fetchFileMetaDataIfAbsent(updatedFile) + } else { + file = updatedFile + file?.let { newFile -> + showFileActions(newFile) + } + } + } + + private fun fetchFileMetaDataIfAbsent(ocFile: OCFile) { + if (requireActivity() is FileActivity) { + (requireActivity() as FileActivity).showLoadingDialog(getString(R.string.wait_a_moment)) + } + lifecycleScope.launch(Dispatchers.IO) { + val fetchRemoteFileOperation = + FetchRemoteFileOperation( + requireActivity(), + accountManager.user, + ocFile, + removeFileFromDb = true, + storageManager = containerActivity.storageManager + ) + val result = fetchRemoteFileOperation.execute(requireActivity()) + withContext(Dispatchers.Main) { + if (requireActivity() is FileActivity) { + (requireActivity() as FileActivity).dismissLoadingDialog() + } + if (result?.isSuccess == true && result.resultData != null) { + file = result.resultData as OCFile + + onOverflowClick(isManualClick = true) + } else { + Log_OC.d(TAG, result?.logMessage) + // show error + DisplayUtils.showSnackMessage(binding.root, result.getLogMessage(requireContext())) + } + } + } + } + private fun showFileActions(file: OCFile) { val additionalFilter = FileAction.getFilePreviewActions(getFile()) newInstance(file, false, additionalFilter) diff --git a/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java b/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java index 45a2a2831ee8..64dfbbd38035 100644 --- a/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java +++ b/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java @@ -4,7 +4,7 @@ * SPDX-FileCopyrightText: 2024 Alper Ozturk * SPDX-FileCopyrightText: 2023 ZetaTom * SPDX-FileCopyrightText: 2022 Álvaro Brey - * SPDX-FileCopyrightText: 2021 TSI-mc + * SPDX-FileCopyrightText: 2021-2026 TSI-mc * SPDX-FileCopyrightText: 2020 Infomaniak Network SA * SPDX-FileCopyrightText: 2020 Joris Bodin * SPDX-FileCopyrightText: 2020 Kilian Périsset @@ -803,6 +803,33 @@ public static String getDateByPattern(long timestamp, @Nullable Context context, return df.format(timestamp); } + // required to hide video icon overlay for albums + public static void setThumbnail(OCFile file, + ImageView thumbnailView, + User user, + FileDataStorageManager storageManager, + List asyncTasks, + boolean gridView, + Context context, + LoaderImageView shimmerThumbnail, + AppPreferences preferences, + ViewThemeUtils viewThemeUtils, + SyncedFolderProvider syncedFolderProvider + ) { + setThumbnail(file, + thumbnailView, + user, + storageManager, + asyncTasks, + gridView, + context, + shimmerThumbnail, + preferences, + viewThemeUtils, + syncedFolderProvider, + false); + } + /** * Sets a thumbnail for a offline file, file or folder with various display options and states. *

@@ -843,7 +870,8 @@ public static void setThumbnail(OCFile file, LoaderImageView shimmerThumbnail, AppPreferences preferences, ViewThemeUtils viewThemeUtils, - SyncedFolderProvider syncedFolderProvider) { + SyncedFolderProvider syncedFolderProvider, + boolean hideVideoOverlay) { if (file == null || thumbnailView == null || context == null) { return; } @@ -859,16 +887,16 @@ public static void setThumbnail(OCFile file, } if (file.getRemoteId() == null || !file.isPreviewAvailable()) { - setThumbnailFirstTimeForFile(file, thumbnailView, storageManager, asyncTasks, gridView, shimmerThumbnail, user, preferences, context, viewThemeUtils); + setThumbnailFirstTimeForFile(file, thumbnailView, storageManager, asyncTasks, gridView, shimmerThumbnail, user, preferences, context, viewThemeUtils, hideVideoOverlay); return; } - setThumbnailFromCache(file, thumbnailView, storageManager, asyncTasks, gridView, shimmerThumbnail, user, preferences, context, viewThemeUtils); + setThumbnailFromCache(file, thumbnailView, storageManager, asyncTasks, gridView, shimmerThumbnail, user, preferences, context, viewThemeUtils, hideVideoOverlay); } - private static void setThumbnailFirstTimeForFile(OCFile file, ImageView thumbnailView, FileDataStorageManager storageManager, List asyncTasks, boolean gridView, LoaderImageView shimmerThumbnail, User user, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils) { + private static void setThumbnailFirstTimeForFile(OCFile file, ImageView thumbnailView, FileDataStorageManager storageManager, List asyncTasks, boolean gridView, LoaderImageView shimmerThumbnail, User user, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils, boolean hideVideoOverlay) { if (file.getRemoteId() != null) { - generateNewThumbnail(file, thumbnailView, user, storageManager, new ArrayList<>(asyncTasks), gridView, context, shimmerThumbnail, preferences, viewThemeUtils); + generateNewThumbnail(file, thumbnailView, user, storageManager, new ArrayList<>(asyncTasks), gridView, context, shimmerThumbnail, preferences, viewThemeUtils, hideVideoOverlay); return; } @@ -910,10 +938,10 @@ private static void setThumbnailForFolder(OCFile file, ImageView thumbnailView, thumbnailView.setImageDrawable(fileIcon); } - private static void setThumbnailFromCache(OCFile file, ImageView thumbnailView, FileDataStorageManager storageManager, List asyncTasks, boolean gridView, LoaderImageView shimmerThumbnail, User user, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils) { + private static void setThumbnailFromCache(OCFile file, ImageView thumbnailView, FileDataStorageManager storageManager, List asyncTasks, boolean gridView, LoaderImageView shimmerThumbnail, User user, AppPreferences preferences, Context context, ViewThemeUtils viewThemeUtils, boolean hideVideoOverlay) { final var thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(ThumbnailsCacheManager.PREFIX_THUMBNAIL + file.getRemoteId()); if (thumbnail == null || file.isUpdateThumbnailNeeded()) { - generateNewThumbnail(file, thumbnailView, user, storageManager, new ArrayList<>(asyncTasks), gridView, context, shimmerThumbnail, preferences, viewThemeUtils); + generateNewThumbnail(file, thumbnailView, user, storageManager, new ArrayList<>(asyncTasks), gridView, context, shimmerThumbnail, preferences, viewThemeUtils, hideVideoOverlay); setThumbnailBackgroundForPNGFileIfNeeded(file, context, thumbnailView); return; } @@ -921,8 +949,12 @@ private static void setThumbnailFromCache(OCFile file, ImageView thumbnailView, stopShimmer(shimmerThumbnail, thumbnailView); if (MimeTypeUtil.isVideo(file)) { - final var withOverlay = ThumbnailsCacheManager.addVideoOverlay(thumbnail, context); - thumbnailView.setImageBitmap(withOverlay); + if (hideVideoOverlay) { + thumbnailView.setImageBitmap(thumbnail); + } else { + final var withOverlay = ThumbnailsCacheManager.addVideoOverlay(thumbnail, context); + thumbnailView.setImageBitmap(withOverlay); + } } else { BitmapUtils.setRoundedBitmapAccordingToListType(gridView, thumbnail, thumbnailView); } @@ -946,7 +978,8 @@ private static void generateNewThumbnail(OCFile file, Context context, LoaderImageView shimmerThumbnail, AppPreferences preferences, - ViewThemeUtils viewThemeUtils) { + ViewThemeUtils viewThemeUtils, + boolean hideVideoOverlay) { if (!ThumbnailsCacheManager.cancelPotentialThumbnailWork(file, thumbnailView)) { return; } @@ -977,7 +1010,8 @@ private static void generateNewThumbnail(OCFile file, user, asyncTasks, gridView, - file.getRemoteId()); + file.getRemoteId(), + hideVideoOverlay); Drawable drawable = MimeTypeUtil.getFileTypeIcon(file.getMimeType(), file.getFileName(), context, diff --git a/app/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java b/app/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java index a2b028d0ecb7..7927e0df76c0 100644 --- a/app/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java +++ b/app/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java @@ -5,6 +5,7 @@ * SPDX-FileCopyrightText: 2017 Tobias Kaminsky * SPDX-FileCopyrightText: 2016 ownCloud Inc. * SPDX-FileCopyrightText: 2015 María Asensio Valverde + * SPDX-FileCopyrightText: 2026 TSI-mc * SPDX-License-Identifier: GPL-2.0-only AND (AGPL-3.0-or-later OR GPL-2.0-only) */ package com.owncloud.android.utils; @@ -30,6 +31,8 @@ import com.owncloud.android.operations.UpdateSharePermissionsOperation; import com.owncloud.android.operations.UpdateShareViaLinkOperation; import com.owncloud.android.operations.UploadFileOperation; +import com.owncloud.android.operations.albums.CopyFileToAlbumOperation; +import com.owncloud.android.lib.resources.albums.RenameAlbumRemoteOperation; import org.apache.commons.httpclient.ConnectTimeoutException; @@ -149,6 +152,10 @@ String getMessageForResultAndOperation( } else if (operation instanceof CopyFileOperation) { message = getMessageForCopyFileOperation(result, res); + } else if (operation instanceof CopyFileToAlbumOperation) { + message = getMessageForCopyFileToAlbumOperation(result, res); + } else if (operation instanceof RenameAlbumRemoteOperation) { + message = getMessageForRenameAlbumOperation(result, res); } return message; @@ -507,4 +514,20 @@ String getMessageForOperation(RemoteOperation operation, Resources res) { return message; } -} + + private static @Nullable + String getMessageForCopyFileToAlbumOperation(RemoteOperationResult result, Resources res) { + if (result.getCode() == ResultCode.CONFLICT) { + return res.getString(R.string.album_copy_file_conflict); + } + return null; + } + + private static @Nullable + String getMessageForRenameAlbumOperation(RemoteOperationResult result, Resources res) { + if (result.getCode() == ResultCode.INVALID_OVERWRITE) { + return res.getString(R.string.album_rename_conflict); + } + return null; + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/albums_grid_item.xml b/app/src/main/res/layout/albums_grid_item.xml index 446422e56c3b..43978abec0de 100644 --- a/app/src/main/res/layout/albums_grid_item.xml +++ b/app/src/main/res/layout/albums_grid_item.xml @@ -1,7 +1,7 @@

+ app:showAsAction="always"> + + + + + Album name cannot start with invalid char Add more Rename Album + Rename Delete Album Failed to delete few of the files. %d Items — %s @@ -1525,4 +1526,9 @@ You can organize all your photos in as many albums as you like. You haven\'t created an album yet. Add to Album File added successfully + Unsupported media + Upload from cameraroll + Select images from account + This name is already in use. + Already exists. From fba647b2fccf1d851d18906c55e3bf034ceda806 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Fri, 23 Jan 2026 15:19:59 +0100 Subject: [PATCH 07/27] wip Signed-off-by: tobiasKaminsky # Conflicts: # gradle/libs.versions.toml --- gradle/verification-metadata.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 33addc56828f..537af1daa9f0 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -21394,6 +21394,17 @@ + + + + + + + + From 1c681f1283c38ac216ff17a2050d887b96d38907 Mon Sep 17 00:00:00 2001 From: A117870935 Date: Mon, 2 Jun 2025 18:48:03 +0530 Subject: [PATCH 08/27] Albums functionality. Signed-off-by: A117870935 --- .../ui/albumItemActions/AlbumItemAction.kt | 2 +- .../albums/CopyFileToAlbumOperation.java | 89 +++++++++++++++++++ .../ui/activity/AlbumsPickerActivity.kt | 2 + .../ui/dialog/CreateAlbumDialogFragment.kt | 5 ++ .../ui/fragment/albums/AlbumItemsFragment.kt | 6 ++ 5 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java diff --git a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt index 9d31afca3def..19e519e5fc02 100644 --- a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt +++ b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt @@ -23,7 +23,7 @@ enum class AlbumItemAction(@IdRes val id: Int, @StringRes val title: Int, @Drawa @JvmField val SORTED_VALUES = listOf( RENAME_ALBUM, - DELETE_ALBUM + DELETE_ALBUM, ) } } diff --git a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java new file mode 100644 index 000000000000..f7ff64ee51dd --- /dev/null +++ b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java @@ -0,0 +1,89 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2025 TSI-mc + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.owncloud.android.operations.albums; + +import com.owncloud.android.datamodel.FileDataStorageManager; +import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.lib.resources.albums.CopyFileToAlbumRemoteOperation; +import com.owncloud.android.operations.UploadFileOperation; +import com.owncloud.android.operations.common.SyncOperation; + +/** + * Operation copying an {@link OCFile} to a different folder. + * + * @author David A. Velasco + */ +public class CopyFileToAlbumOperation extends SyncOperation { + + private final String srcPath; + private String targetParentPath; + + /** + * Constructor + * + * @param srcPath Remote path of the {@link OCFile} to move. + * @param targetParentPath Path to the folder where the file will be copied into. + */ + public CopyFileToAlbumOperation(String srcPath, String targetParentPath, FileDataStorageManager storageManager) { + super(storageManager); + + this.srcPath = srcPath; + this.targetParentPath = targetParentPath; + if (!this.targetParentPath.endsWith(OCFile.PATH_SEPARATOR)) { + this.targetParentPath += OCFile.PATH_SEPARATOR; + } + } + + /** + * Performs the operation. + * + * @param client Client object to communicate with the remote ownCloud server. + */ + @Override + protected RemoteOperationResult run(OwnCloudClient client) { + /// 1. check copy validity + if (targetParentPath.startsWith(srcPath)) { + return new RemoteOperationResult(ResultCode.INVALID_COPY_INTO_DESCENDANT); + } + OCFile file = getStorageManager().getFileByPath(srcPath); + if (file == null) { + return new RemoteOperationResult(ResultCode.FILE_NOT_FOUND); + } + + /// 2. remote copy + String targetPath = targetParentPath + file.getFileName(); + if (file.isFolder()) { + targetPath += OCFile.PATH_SEPARATOR; + } + + // auto rename, to allow copy + if (targetPath.equals(srcPath)) { + if (file.isFolder()) { + targetPath = targetParentPath + file.getFileName(); + } + targetPath = UploadFileOperation.getNewAvailableRemotePath(client, targetPath, null, false); + + if (file.isFolder()) { + targetPath += OCFile.PATH_SEPARATOR; + } + } + + RemoteOperationResult result = new CopyFileToAlbumRemoteOperation(srcPath, targetPath).execute(client); + + /// 3. local copy + if (result.isSuccess()) { + getStorageManager().copyLocalFile(file, targetPath); + } + // TODO handle ResultCode.PARTIAL_COPY_DONE in client Activity, for the moment + + return result; + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt index cc810f6790c7..b695aa122624 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt @@ -55,6 +55,7 @@ class AlbumsPickerActivity : initBinding() setupToolbar() + setupActionBar() setupAction() setupActionBar() @@ -202,6 +203,7 @@ class AlbumsPickerActivity : Intent(context, AlbumsPickerActivity::class.java).apply { putExtra(EXTRA_ACTION, CHOOSE_ALBUM) } + } fun intentForPickingMediaFiles(context: FragmentActivity): Intent = Intent(context, AlbumsPickerActivity::class.java).apply { diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt index 77c2876d605a..5048b593b665 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt @@ -26,6 +26,7 @@ import com.nextcloud.utils.extensions.typedActivity import com.owncloud.android.R import com.owncloud.android.databinding.EditBoxDialogBinding import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.lib.resources.status.OCCapability import com.owncloud.android.ui.activity.ComponentsGetter import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.KeyboardUtils @@ -99,6 +100,7 @@ class CreateAlbumDialogFragment : val inflater = requireActivity().layoutInflater binding = EditBoxDialogBinding.inflate(inflater, null, false) + binding.userInput.setText(albumName ?: "") viewThemeUtils.material.colorTextInputLayout(binding.userInputContainer) albumName?.let { @@ -118,6 +120,8 @@ class CreateAlbumDialogFragment : return builder.create() } + private fun getOCCapability(): OCCapability = fileDataStorageManager.getCapability(accountProvider.user.accountName) + private fun checkFileNameAfterEachType() { val newAlbumName = binding.userInput.text?.toString() ?: "" @@ -149,6 +153,7 @@ class CreateAlbumDialogFragment : .setNegativeButton(R.string.common_cancel, this) .setTitle(if (albumName == null) R.string.create_album_dialog_title else R.string.rename_album_dialog_title) .setMessage(R.string.create_album_dialog_message) + } override fun onClick(dialog: DialogInterface, which: Int) { if (which == AlertDialog.BUTTON_POSITIVE) { diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index 078d0270b45a..89ea26ca62a8 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -68,6 +68,7 @@ import com.owncloud.android.datamodel.VirtualFolderType import com.owncloud.android.db.ProviderMeta import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.lib.resources.albums.ReadAlbumItemsRemoteOperation import com.owncloud.android.lib.resources.albums.RemoveAlbumFileRemoteOperation import com.owncloud.android.lib.resources.albums.ToggleAlbumFavoriteRemoteOperation import com.owncloud.android.lib.resources.files.model.RemoteFile @@ -90,6 +91,7 @@ import com.owncloud.android.ui.preview.PreviewImageFragment import com.owncloud.android.ui.preview.PreviewMediaActivity.Companion.canBePreviewed import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.ErrorMessageAdapter +import com.owncloud.android.utils.FileStorageUtils import com.owncloud.android.utils.theme.ViewThemeUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.FlowPreview @@ -270,6 +272,7 @@ class AlbumItemsFragment : else -> false } + } override fun onPrepareMenu(menu: Menu) { super.onPrepareMenu(menu) @@ -330,6 +333,7 @@ class AlbumItemsFragment : binding.listRoot.setEmptyView(binding.emptyList.emptyListView) val layoutManager = GridLayoutManager(requireContext(), 1) binding.listRoot.layoutManager = layoutManager + fetchAndSetData() } private fun setupContainingList() { @@ -378,6 +382,7 @@ class AlbumItemsFragment : contentValues.add(cv) } + ocFileList.add(ocFile!!) } mContainerActivity?.storageManager?.saveVirtuals(contentValues) @@ -515,6 +520,7 @@ class AlbumItemsFragment : override fun onDestroyView() { lastMediaItemPosition = 0 super.onDestroyView() + lastMediaItemPosition = 0 } override fun getColumnsCount(): Int = columnSize From 072426557fbc664f9c5de8472cee23bd64504aed Mon Sep 17 00:00:00 2001 From: A117870935 Date: Fri, 6 Jun 2025 17:26:13 +0530 Subject: [PATCH 09/27] Rename .java to .kt Signed-off-by: Surinder Kumar --- .../albums/CopyFileToAlbumOperation.java | 89 ------------------- 1 file changed, 89 deletions(-) delete mode 100644 app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java diff --git a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java b/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java deleted file mode 100644 index f7ff64ee51dd..000000000000 --- a/app/src/main/java/com/owncloud/android/operations/albums/CopyFileToAlbumOperation.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Nextcloud - Android Client - * - * SPDX-FileCopyrightText: 2025 TSI-mc - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -package com.owncloud.android.operations.albums; - -import com.owncloud.android.datamodel.FileDataStorageManager; -import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.lib.common.OwnCloudClient; -import com.owncloud.android.lib.common.operations.RemoteOperationResult; -import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; -import com.owncloud.android.lib.resources.albums.CopyFileToAlbumRemoteOperation; -import com.owncloud.android.operations.UploadFileOperation; -import com.owncloud.android.operations.common.SyncOperation; - -/** - * Operation copying an {@link OCFile} to a different folder. - * - * @author David A. Velasco - */ -public class CopyFileToAlbumOperation extends SyncOperation { - - private final String srcPath; - private String targetParentPath; - - /** - * Constructor - * - * @param srcPath Remote path of the {@link OCFile} to move. - * @param targetParentPath Path to the folder where the file will be copied into. - */ - public CopyFileToAlbumOperation(String srcPath, String targetParentPath, FileDataStorageManager storageManager) { - super(storageManager); - - this.srcPath = srcPath; - this.targetParentPath = targetParentPath; - if (!this.targetParentPath.endsWith(OCFile.PATH_SEPARATOR)) { - this.targetParentPath += OCFile.PATH_SEPARATOR; - } - } - - /** - * Performs the operation. - * - * @param client Client object to communicate with the remote ownCloud server. - */ - @Override - protected RemoteOperationResult run(OwnCloudClient client) { - /// 1. check copy validity - if (targetParentPath.startsWith(srcPath)) { - return new RemoteOperationResult(ResultCode.INVALID_COPY_INTO_DESCENDANT); - } - OCFile file = getStorageManager().getFileByPath(srcPath); - if (file == null) { - return new RemoteOperationResult(ResultCode.FILE_NOT_FOUND); - } - - /// 2. remote copy - String targetPath = targetParentPath + file.getFileName(); - if (file.isFolder()) { - targetPath += OCFile.PATH_SEPARATOR; - } - - // auto rename, to allow copy - if (targetPath.equals(srcPath)) { - if (file.isFolder()) { - targetPath = targetParentPath + file.getFileName(); - } - targetPath = UploadFileOperation.getNewAvailableRemotePath(client, targetPath, null, false); - - if (file.isFolder()) { - targetPath += OCFile.PATH_SEPARATOR; - } - } - - RemoteOperationResult result = new CopyFileToAlbumRemoteOperation(srcPath, targetPath).execute(client); - - /// 3. local copy - if (result.isSuccess()) { - getStorageManager().copyLocalFile(file, targetPath); - } - // TODO handle ResultCode.PARTIAL_COPY_DONE in client Activity, for the moment - - return result; - } -} From 6274a90c71087923402e9f862af6ab4c68865066 Mon Sep 17 00:00:00 2001 From: A117870935 Date: Fri, 6 Jun 2025 17:26:14 +0530 Subject: [PATCH 10/27] Code refactoring and operation migrated to kotlin Signed-off-by: Surinder Kumar --- .../java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt | 2 +- .../owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt index 19e519e5fc02..9d31afca3def 100644 --- a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt +++ b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt @@ -23,7 +23,7 @@ enum class AlbumItemAction(@IdRes val id: Int, @StringRes val title: Int, @Drawa @JvmField val SORTED_VALUES = listOf( RENAME_ALBUM, - DELETE_ALBUM, + DELETE_ALBUM ) } } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index 89ea26ca62a8..fbbf85849ebc 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -270,9 +270,9 @@ class AlbumItemsFragment : true } - else -> false + else -> false + } } - } override fun onPrepareMenu(menu: Menu) { super.onPrepareMenu(menu) From 9c299dd0ab4104152311c2fb3475cf872fddd7b4 Mon Sep 17 00:00:00 2001 From: Surinder Kumar Date: Thu, 22 Jan 2026 21:21:17 +0530 Subject: [PATCH 11/27] upload files to album, hide video overlay icon, minor ui and bug fixes Signed-off-by: Surinder Kumar --- .../com/owncloud/android/ui/activity/AlbumsPickerActivity.kt | 2 -- .../owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt | 4 ---- 2 files changed, 6 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt index b695aa122624..cc810f6790c7 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt @@ -55,7 +55,6 @@ class AlbumsPickerActivity : initBinding() setupToolbar() - setupActionBar() setupAction() setupActionBar() @@ -203,7 +202,6 @@ class AlbumsPickerActivity : Intent(context, AlbumsPickerActivity::class.java).apply { putExtra(EXTRA_ACTION, CHOOSE_ALBUM) } - } fun intentForPickingMediaFiles(context: FragmentActivity): Intent = Intent(context, AlbumsPickerActivity::class.java).apply { diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt index 5048b593b665..a6cffe6b3ab5 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt @@ -26,7 +26,6 @@ import com.nextcloud.utils.extensions.typedActivity import com.owncloud.android.R import com.owncloud.android.databinding.EditBoxDialogBinding import com.owncloud.android.datamodel.FileDataStorageManager -import com.owncloud.android.lib.resources.status.OCCapability import com.owncloud.android.ui.activity.ComponentsGetter import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.KeyboardUtils @@ -120,8 +119,6 @@ class CreateAlbumDialogFragment : return builder.create() } - private fun getOCCapability(): OCCapability = fileDataStorageManager.getCapability(accountProvider.user.accountName) - private fun checkFileNameAfterEachType() { val newAlbumName = binding.userInput.text?.toString() ?: "" @@ -153,7 +150,6 @@ class CreateAlbumDialogFragment : .setNegativeButton(R.string.common_cancel, this) .setTitle(if (albumName == null) R.string.create_album_dialog_title else R.string.rename_album_dialog_title) .setMessage(R.string.create_album_dialog_message) - } override fun onClick(dialog: DialogInterface, which: Int) { if (which == AlertDialog.BUTTON_POSITIVE) { From 3e7382a0e38e9f73f4d513708ea0b1bd3becff19 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Mon, 26 Jan 2026 10:18:26 +0100 Subject: [PATCH 12/27] small fix Signed-off-by: tobiasKaminsky --- .../com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt index 832ef80d5ed2..9cbb3e0730cb 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt @@ -365,7 +365,7 @@ class AlbumFileUploadWorker( notificationManager, operation, result, - showSameFileAlreadyExistsNotification = { + onSameFileConflict = { withContext(Dispatchers.Main) { val showSameFileAlreadyExistsNotification = inputData.getBoolean(SHOW_SAME_FILE_ALREADY_EXISTS_NOTIFICATION, false) From 2963ee6fa3f5e41cb32f3be9d8d46eb3fb5fea06 Mon Sep 17 00:00:00 2001 From: Surinder Kumar Date: Thu, 29 Jan 2026 19:54:50 +0530 Subject: [PATCH 13/27] code fixes Signed-off-by: Surinder Kumar --- .../ui/activity/AlbumsPickerActivity.kt | 66 +++++++++---------- .../ui/fragment/albums/AlbumItemsFragment.kt | 32 +++------ 2 files changed, 38 insertions(+), 60 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt index cc810f6790c7..cb96313644e5 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt @@ -91,12 +91,14 @@ class AlbumsPickerActivity : captionText = resources.getText(R.string.media_picker_toolbar_title).toString() } - folderPickerBinding.folderPickerBtnCopy.visibility = View.GONE - folderPickerBinding.folderPickerBtnMove.visibility = View.GONE - folderPickerBinding.folderPickerBtnChoose.visibility = View.GONE - folderPickerBinding.folderPickerBtnCancel.visibility = View.GONE - folderPickerBinding.chooseButtonSpacer.visibility = View.GONE - folderPickerBinding.moveOrCopyButtonSpacer.visibility = View.GONE + folderPickerBinding.run { + folderPickerBtnCopy.visibility = View.GONE + folderPickerBtnMove.visibility = View.GONE + folderPickerBtnChoose.visibility = View.GONE + folderPickerBtnCancel.visibility = View.GONE + chooseButtonSpacer.visibility = View.GONE + moveOrCopyButtonSpacer.visibility = View.GONE + } } private fun createFragments() { @@ -114,18 +116,22 @@ class AlbumsPickerActivity : } private fun createGalleryFragment() { - val photoFragment = GalleryFragment() - val bundle = Bundle() - bundle.putParcelable( - OCFileListFragment.SEARCH_EVENT, - SearchEvent("image/%", SearchRemoteOperation.SearchType.PHOTO_SEARCH) - ) - bundle.putBoolean(EXTRA_FROM_ALBUM, true) - photoFragment.arguments = bundle - - val transaction = supportFragmentManager.beginTransaction() - transaction.add(R.id.fragment_container, photoFragment, TAG_LIST_OF_FOLDERS) - transaction.commit() + val bundle = Bundle().apply { + putParcelable( + OCFileListFragment.SEARCH_EVENT, + SearchEvent("image/%", SearchRemoteOperation.SearchType.PHOTO_SEARCH) + ) + putBoolean(EXTRA_FROM_ALBUM, true) + } + + val fragment = GalleryFragment().apply { + arguments = bundle + } + + supportFragmentManager.beginTransaction().run { + add(R.id.fragment_container, fragment, TAG_LIST_OF_FOLDERS) + commit() + } } private val listOfFilesFragment: AlbumsFragment? @@ -173,21 +179,13 @@ class AlbumsPickerActivity : } } - override fun showDetails(file: OCFile?) { - // not used at the moment - } + override fun showDetails(file: OCFile?) = Unit - override fun showDetails(file: OCFile?, activeTab: Int) { - // not used at the moment - } + override fun showDetails(file: OCFile?, activeTab: Int) = Unit - override fun onBrowsedDownTo(folder: OCFile?) { - // not used at the moment - } + override fun onBrowsedDownTo(folder: OCFile?) = Unit - override fun onTransferStateChanged(file: OCFile?, downloading: Boolean, uploading: Boolean) { - // not used at the moment - } + override fun onTransferStateChanged(file: OCFile?, downloading: Boolean, uploading: Boolean) = Unit companion object { private val EXTRA_ACTION = AlbumsPickerActivity::class.java.canonicalName?.plus(".EXTRA_ACTION") @@ -209,13 +207,9 @@ class AlbumsPickerActivity : } } - override fun onRefresh(enforced: Boolean) { - // do nothing - } + override fun onRefresh(enforced: Boolean) = Unit - override fun onRefresh() { - // do nothing - } + override fun onRefresh() = Unit override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index fbbf85849ebc..d4ec9ae3af44 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -525,21 +525,13 @@ class AlbumItemsFragment : override fun getColumnsCount(): Int = columnSize - override fun onShareIconClick(file: OCFile?) { - // nothing to do here - } + override fun onShareIconClick(file: OCFile?) = Unit - override fun showShareDetailView(file: OCFile?) { - // nothing to do here - } + override fun showShareDetailView(file: OCFile?) = Unit - override fun showActivityDetailView(file: OCFile?) { - // nothing to do here - } + override fun showActivityDetailView(file: OCFile?) = Unit - override fun onOverflowIconClicked(file: OCFile?, view: View?) { - // nothing to do here - } + override fun onOverflowIconClicked(file: OCFile?, view: View?) = Unit override fun onItemClicked(file: OCFile) { if (adapter?.isMultiSelect() == true) { @@ -597,9 +589,7 @@ class AlbumItemsFragment : override fun isLoading(): Boolean = false - override fun onHeaderClicked() { - // nothing to do here - } + override fun onHeaderClicked() = Unit fun onAlbumRenamed(newAlbumName: String) { albumName = newAlbumName @@ -936,13 +926,9 @@ class AlbumItemsFragment : */ private val mSelectionWhenActionModeClosedByDrawer: MutableSet = HashSet() - override fun onDrawerSlide(drawerView: View, slideOffset: Float) { - // nothing to do - } + override fun onDrawerSlide(drawerView: View, slideOffset: Float) = Unit - override fun onDrawerOpened(drawerView: View) { - // nothing to do - } + override fun onDrawerOpened(drawerView: View) = Unit /** * When the navigation drawer is closed, action mode is recovered in the same state as was when the drawer was @@ -984,9 +970,7 @@ class AlbumItemsFragment : /** * Update action mode bar when an item is selected / unselected in the list */ - override fun onItemCheckedStateChanged(mode: ActionMode, position: Int, id: Long, checked: Boolean) { - // nothing to do here - } + override fun onItemCheckedStateChanged(mode: ActionMode, position: Int, id: Long, checked: Boolean) = Unit /** * Load menu and customize UI when action mode is started. From 01f250460243644d69313fa0b6ca88656c1af651 Mon Sep 17 00:00:00 2001 From: Surinder Kumar Date: Fri, 30 Jan 2026 13:11:53 +0530 Subject: [PATCH 14/27] album upload worker state handled via localbroadcastmanager Signed-off-by: Surinder Kumar --- .../jobs/upload/AlbumFileUploadWorker.kt | 45 +++++++------------ .../ui/dialog/CreateAlbumDialogFragment.kt | 1 - .../ui/fragment/albums/AlbumItemsFragment.kt | 7 +-- 3 files changed, 17 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt index 9cbb3e0730cb..99bd8e6c1fd4 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt @@ -88,7 +88,7 @@ class AlbumFileUploadWorker( private val notificationId = Random.nextInt() private val notificationManager = UploadNotificationManager(context, viewThemeUtils, notificationId) private val intents = FileUploaderIntents(context) - private val fileUploaderDelegate = FileUploaderDelegate() + private val fileUploadBroadcastManager = FileUploadBroadcastManager(localBroadcastManager) override suspend fun doWork(): Result = try { Log_OC.d(TAG, "AlbumFileUploadWorker started") @@ -100,14 +100,15 @@ class AlbumFileUploadWorker( val result = uploadFiles() backgroundJobManager.logEndOfWorker(workerName, result) notificationManager.dismissNotification() - if (result == Result.success()) { - setIdleWorkerState() - } result } catch (t: Throwable) { - Log_OC.e(TAG, "Error caught at AlbumFileUploadWorker $t") - cleanup() + Log_OC.e(TAG, "exception $t") + currentUploadFileOperation?.cancel(null) Result.failure() + } finally { + // Ensure all database operations are complete before signaling completion + uploadsStorageManager.notifyObserversNow() + notificationManager.dismissNotification() } private suspend fun trySetForeground() { @@ -155,22 +156,6 @@ class AlbumFileUploadWorker( .setSilent(true) .build() - private fun cleanup() { - Log_OC.e(TAG, "AlbumFileUploadWorker stopped") - - setIdleWorkerState() - currentUploadFileOperation?.cancel(null) - notificationManager.dismissNotification() - } - - private fun setWorkerState(user: User?) { - WorkerStateObserver.send(WorkerState.FileUploadStarted(user)) - } - - private fun setIdleWorkerState() { - WorkerStateObserver.send(WorkerState.FileUploadCompleted(currentUploadFileOperation?.file)) - } - @Suppress("ReturnCount", "LongMethod", "DEPRECATION") private suspend fun uploadFiles(): Result = withContext(Dispatchers.IO) { val accountName = inputData.getString(ACCOUNT) @@ -232,7 +217,7 @@ class AlbumFileUploadWorker( return@withContext Result.failure() } - setWorkerState(user) + fileUploadBroadcastManager.sendAdded(context) val operation = createUploadFileOperation(upload, user) currentUploadFileOperation = operation @@ -270,17 +255,18 @@ class AlbumFileUploadWorker( operation: UploadFileOperation, result: RemoteOperationResult<*> ) { + val isLastUpload = currentUploadIndex == totalUploadSize + val shouldBroadcast = - (totalUploadSize > BATCH_SIZE && currentUploadIndex > 0) && currentUploadIndex % BATCH_SIZE == 0 + (currentUploadIndex % BATCH_SIZE == 0 && totalUploadSize > BATCH_SIZE) || + isLastUpload if (shouldBroadcast) { - // delay broadcast - fileUploaderDelegate.sendBroadcastUploadFinished( + fileUploadBroadcastManager.sendFinished( operation, result, operation.oldFile?.storagePath, - context, - localBroadcastManager + context ) } } @@ -341,13 +327,14 @@ class AlbumFileUploadWorker( } else { Log_OC.e(TAG, "Failed to copy file to Album: $albumName due to ${copyResult.logMessage}") } + fileUploadBroadcastManager.sendStarted(operation, context) } catch (e: Exception) { Log_OC.e(TAG, "Error uploading", e) result = RemoteOperationResult(e) } finally { if (!isStopped) { uploadsStorageManager.updateDatabaseUploadResult(result, operation) - // NMC: resolving file conflict will trigger normal file upload and shows two upload process + // resolving file conflict will trigger normal file upload and shows two upload process // one for normal and one for Album upload // as customizing conflict can break normal upload // so we are removing the upload if it's a conflict diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt index a6cffe6b3ab5..77c2876d605a 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/CreateAlbumDialogFragment.kt @@ -99,7 +99,6 @@ class CreateAlbumDialogFragment : val inflater = requireActivity().layoutInflater binding = EditBoxDialogBinding.inflate(inflater, null, false) - binding.userInput.setText(albumName ?: "") viewThemeUtils.material.colorTextInputLayout(binding.userInputContainer) albumName?.let { diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index d4ec9ae3af44..20703adbbf49 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -91,7 +91,6 @@ import com.owncloud.android.ui.preview.PreviewImageFragment import com.owncloud.android.ui.preview.PreviewMediaActivity.Companion.canBePreviewed import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.ErrorMessageAdapter -import com.owncloud.android.utils.FileStorageUtils import com.owncloud.android.utils.theme.ViewThemeUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.FlowPreview @@ -270,8 +269,7 @@ class AlbumItemsFragment : true } - else -> false - } + else -> false } override fun onPrepareMenu(menu: Menu) { @@ -333,7 +331,6 @@ class AlbumItemsFragment : binding.listRoot.setEmptyView(binding.emptyList.emptyListView) val layoutManager = GridLayoutManager(requireContext(), 1) binding.listRoot.layoutManager = layoutManager - fetchAndSetData() } private fun setupContainingList() { @@ -382,7 +379,6 @@ class AlbumItemsFragment : contentValues.add(cv) } - ocFileList.add(ocFile!!) } mContainerActivity?.storageManager?.saveVirtuals(contentValues) @@ -520,7 +516,6 @@ class AlbumItemsFragment : override fun onDestroyView() { lastMediaItemPosition = 0 super.onDestroyView() - lastMediaItemPosition = 0 } override fun getColumnsCount(): Int = columnSize From 2023184603a7afc841d7ab8f4eb7044f2a6fe2fb Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Mon, 2 Feb 2026 15:17:42 +0100 Subject: [PATCH 15/27] simplify upload file calls Signed-off-by: alperozturk96 --- .../android/files/services/FileUploaderIT.kt | 14 ++- .../documentscan/DocumentScanViewModel.kt | 14 +-- .../documentscan/GeneratePdfFromImagesWork.kt | 15 +-- .../client/editimage/EditImageActivity.kt | 4 +- .../client/jobs/BackgroundJobManager.kt | 1 - .../client/jobs/BackgroundJobManagerImpl.kt | 5 - .../nextcloud/model/OCUploadLocalPathData.kt | 99 +++++++++++++++++++ .../ui/activity/FileDisplayActivity.kt | 17 ++-- .../ReceiveExternalFilesActivity.java | 21 ++-- .../CopyAndUploadContentUrisTask.java | 29 +----- .../android/ui/helpers/UriUploader.kt | 39 ++------ 11 files changed, 149 insertions(+), 109 deletions(-) create mode 100644 app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt diff --git a/app/src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt b/app/src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt index 00c568d506ad..3f4fd7a3901e 100644 --- a/app/src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/files/services/FileUploaderIT.kt @@ -16,6 +16,7 @@ import com.nextcloud.client.jobs.upload.FileUploadHelper import com.nextcloud.client.jobs.upload.FileUploadWorker import com.nextcloud.client.network.Connectivity import com.nextcloud.client.network.ConnectivityService +import com.nextcloud.model.OCUploadLocalPathData import com.owncloud.android.AbstractOnServerIT import com.owncloud.android.datamodel.OCFile import com.owncloud.android.datamodel.UploadsStorageManager @@ -123,7 +124,7 @@ abstract class FileUploaderIT : AbstractOnServerIT() { fun testKeepLocalAndOverwriteRemoteStatic() { val file = getDummyFile("chunkedFile.txt") - FileUploadHelper().uploadNewFiles( + val data = OCUploadLocalPathData( user, arrayOf(file.absolutePath), arrayOf("/testFile.txt"), @@ -135,6 +136,8 @@ abstract class FileUploaderIT : AbstractOnServerIT() { NameCollisionPolicy.DEFAULT ) + FileUploadHelper().uploadNewFiles(data) + longSleep() val result = ReadFileRemoteOperation("/testFile.txt").execute(client) @@ -239,7 +242,7 @@ abstract class FileUploaderIT : AbstractOnServerIT() { fun testKeepBothStatic() { val file = getDummyFile("nonEmpty.txt") - FileUploadHelper().uploadNewFiles( + val data = OCUploadLocalPathData( user, arrayOf(file.absolutePath), arrayOf("/testFile.txt"), @@ -250,6 +253,7 @@ abstract class FileUploaderIT : AbstractOnServerIT() { false, NameCollisionPolicy.DEFAULT ) + FileUploadHelper().uploadNewFiles(data) longSleep() @@ -347,7 +351,7 @@ abstract class FileUploaderIT : AbstractOnServerIT() { fun testKeepServerStatic() { val file = getDummyFile("chunkedFile.txt") - FileUploadHelper().uploadNewFiles( + val data = OCUploadLocalPathData( user, arrayOf(file.absolutePath), arrayOf("/testFile.txt"), @@ -358,6 +362,7 @@ abstract class FileUploaderIT : AbstractOnServerIT() { false, NameCollisionPolicy.DEFAULT ) + FileUploadHelper().uploadNewFiles(data) longSleep() @@ -451,7 +456,7 @@ abstract class FileUploaderIT : AbstractOnServerIT() { fun testKeepCancelStatic() { val file = getDummyFile("chunkedFile.txt") - FileUploadHelper().uploadNewFiles( + val data = OCUploadLocalPathData( user, arrayOf(file.absolutePath), arrayOf("/testFile.txt"), @@ -462,6 +467,7 @@ abstract class FileUploaderIT : AbstractOnServerIT() { false, NameCollisionPolicy.DEFAULT ) + FileUploadHelper().uploadNewFiles(data) longSleep() diff --git a/app/src/main/java/com/nextcloud/client/documentscan/DocumentScanViewModel.kt b/app/src/main/java/com/nextcloud/client/documentscan/DocumentScanViewModel.kt index 0210ff07e135..72655d3142d1 100644 --- a/app/src/main/java/com/nextcloud/client/documentscan/DocumentScanViewModel.kt +++ b/app/src/main/java/com/nextcloud/client/documentscan/DocumentScanViewModel.kt @@ -18,6 +18,7 @@ import com.nextcloud.client.jobs.BackgroundJobManager import com.nextcloud.client.jobs.upload.FileUploadHelper import com.nextcloud.client.jobs.upload.FileUploadWorker import com.nextcloud.client.logger.Logger +import com.nextcloud.model.OCUploadLocalPathData import com.owncloud.android.datamodel.OCFile import com.owncloud.android.files.services.NameCollisionPolicy import com.owncloud.android.operations.UploadFileOperation @@ -166,17 +167,8 @@ class DocumentScanViewModel @Inject constructor( uploadFolder + OCFile.PATH_SEPARATOR + File(it).name }.toTypedArray() - FileUploadHelper.instance().uploadNewFiles( - currentAccountProvider.user, - pageList.toTypedArray(), - uploadPaths, - FileUploadWorker.LOCAL_BEHAVIOUR_DELETE, - true, - UploadFileOperation.CREATED_BY_USER, - false, - false, - NameCollisionPolicy.ASK_USER - ) + val data = OCUploadLocalPathData.forDocument(currentAccountProvider.user, pageList.toTypedArray(), uploadPaths) + FileUploadHelper.instance().uploadNewFiles(data) } fun onExportCanceled() { diff --git a/app/src/main/java/com/nextcloud/client/documentscan/GeneratePdfFromImagesWork.kt b/app/src/main/java/com/nextcloud/client/documentscan/GeneratePdfFromImagesWork.kt index c1115de62e35..f400bd5392b5 100644 --- a/app/src/main/java/com/nextcloud/client/documentscan/GeneratePdfFromImagesWork.kt +++ b/app/src/main/java/com/nextcloud/client/documentscan/GeneratePdfFromImagesWork.kt @@ -20,6 +20,7 @@ import com.nextcloud.client.account.UserAccountManager import com.nextcloud.client.jobs.upload.FileUploadHelper import com.nextcloud.client.jobs.upload.FileUploadWorker import com.nextcloud.client.logger.Logger +import com.nextcloud.model.OCUploadLocalPathData import com.owncloud.android.R import com.owncloud.android.datamodel.OCFile import com.owncloud.android.files.services.NameCollisionPolicy @@ -108,18 +109,8 @@ class GeneratePdfFromImagesWork( private fun uploadFile(user: User, uploadFolder: String, pdfPath: String) { val uploadPath = uploadFolder + OCFile.PATH_SEPARATOR + File(pdfPath).name - FileUploadHelper().uploadNewFiles( - user, - arrayOf(pdfPath), - arrayOf(uploadPath), - // MIME type will be detected from file name - FileUploadWorker.LOCAL_BEHAVIOUR_DELETE, - true, - UploadFileOperation.CREATED_BY_USER, - false, - false, - NameCollisionPolicy.ASK_USER - ) + val data = OCUploadLocalPathData.forDocument(user, arrayOf(pdfPath), arrayOf(uploadPath)) + FileUploadHelper().uploadNewFiles(data) } companion object { diff --git a/app/src/main/java/com/nextcloud/client/editimage/EditImageActivity.kt b/app/src/main/java/com/nextcloud/client/editimage/EditImageActivity.kt index 48920e1ab858..f6c914f0ba69 100644 --- a/app/src/main/java/com/nextcloud/client/editimage/EditImageActivity.kt +++ b/app/src/main/java/com/nextcloud/client/editimage/EditImageActivity.kt @@ -22,6 +22,7 @@ import com.canhub.cropper.CropImageView import com.nextcloud.client.di.Injectable import com.nextcloud.client.jobs.upload.FileUploadHelper import com.nextcloud.client.jobs.upload.FileUploadWorker +import com.nextcloud.model.OCUploadLocalPathData import com.nextcloud.utils.extensions.getParcelableArgument import com.owncloud.android.R import com.owncloud.android.databinding.ActivityEditImageBinding @@ -95,7 +96,7 @@ class EditImageActivity : resultUri?.substring(resultUri.lastIndexOf('.')) resultUri?.let { - FileUploadHelper().uploadNewFiles( + val data = OCUploadLocalPathData( user = storageManager.user, localPaths = arrayOf(it), remotePaths = arrayOf(file.parentRemotePath + File.separator + newFileName), @@ -106,6 +107,7 @@ class EditImageActivity : nameCollisionPolicy = NameCollisionPolicy.RENAME, localBehavior = FileUploadWorker.LOCAL_BEHAVIOUR_DELETE ) + FileUploadHelper().uploadNewFiles(data) } } diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt index 10cb329ed9f3..7a224e9ea78b 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt @@ -141,7 +141,6 @@ interface BackgroundJobManager { user: User, uploadIds: LongArray, albumName: String, - showSameFileAlreadyExistsNotification: Boolean ) fun getFileUploads(user: User): LiveData> fun cancelFilesUploadJob(user: User) diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt index 1de63e8e1f00..33b79e931032 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt @@ -689,7 +689,6 @@ internal class BackgroundJobManagerImpl( user: User, uploadIds: LongArray, albumName: String, - showSameFileAlreadyExistsNotification: Boolean ) { defaultDispatcherScope.launch { val batchSize = FileUploadHelper.MAX_FILE_COUNT @@ -701,10 +700,6 @@ internal class BackgroundJobManagerImpl( .build() val dataBuilder = Data.Builder() - .putBoolean( - FileUploadWorker.SHOW_SAME_FILE_ALREADY_EXISTS_NOTIFICATION, - showSameFileAlreadyExistsNotification - ) .putString(FileUploadWorker.ACCOUNT, user.accountName) .putInt(FileUploadWorker.TOTAL_UPLOAD_SIZE, uploadIds.size) .putString(AlbumFileUploadWorker.ALBUM_NAME, albumName) diff --git a/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt b/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt new file mode 100644 index 000000000000..a18173735154 --- /dev/null +++ b/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt @@ -0,0 +1,99 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 Alper Ozturk + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.nextcloud.model + +import com.nextcloud.client.account.User +import com.nextcloud.client.jobs.upload.FileUploadWorker +import com.owncloud.android.datamodel.UploadsStorageManager.UploadStatus +import com.owncloud.android.db.OCUpload +import com.owncloud.android.files.services.NameCollisionPolicy +import com.owncloud.android.operations.UploadFileOperation + +data class OCUploadLocalPathData( + val user: User, + val localPaths: Array, + val remotePaths: Array, + val localBehavior: Int, + val createRemoteFolder: Boolean, + val createdBy: Int, + val requiresWifi: Boolean, + val requiresCharging: Boolean, + val nameCollisionPolicy: NameCollisionPolicy, +) { + companion object { + fun forDocument( + user: User, + localPaths: Array, + remotePaths: Array + ): OCUploadLocalPathData { + return OCUploadLocalPathData( + user, + localPaths, + remotePaths, + FileUploadWorker.LOCAL_BEHAVIOUR_DELETE, + createRemoteFolder = true, + UploadFileOperation.CREATED_BY_USER, + requiresWifi = false, + requiresCharging = false, + NameCollisionPolicy.ASK_USER + ) + } + + fun forAlbum( + user: User, + localPaths: Array, + remotePaths: Array, + localBehavior: Int + ): OCUploadLocalPathData { + return OCUploadLocalPathData( + user, + localPaths, + remotePaths, + localBehavior, + createRemoteFolder = true, + UploadFileOperation.CREATED_BY_USER, + requiresWifi = false, + requiresCharging = false, + NameCollisionPolicy.RENAME + ) + } + + @JvmOverloads + fun forFile( + user: User, + localPaths: Array, + remotePaths: Array, + localBehavior: Int, + createRemoteFolder: Boolean = false + ): OCUploadLocalPathData { + return OCUploadLocalPathData( + user, + localPaths, + remotePaths, + localBehavior, + createRemoteFolder = createRemoteFolder, + UploadFileOperation.CREATED_BY_USER, + requiresWifi = false, + requiresCharging = false, + NameCollisionPolicy.ASK_USER + ) + } + } + + fun toOCUpload(localPath: String, index: Int): OCUpload { + return OCUpload(localPath, remotePaths[index], user.accountName).apply { + this.nameCollisionPolicy = nameCollisionPolicy + isUseWifiOnly = requiresWifi + isWhileChargingOnly = requiresCharging + uploadStatus = UploadStatus.UPLOAD_IN_PROGRESS + this.createdBy = createdBy + isCreateRemoteFolder = createRemoteFolder + localAction = localBehavior + } + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index 34df5ef835c9..5f14ef8e9038 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -72,6 +72,7 @@ import com.nextcloud.client.media.PlayerServiceConnection import com.nextcloud.client.network.ClientFactory.CreationException import com.nextcloud.client.preferences.AppPreferences import com.nextcloud.client.utils.IntentUtil +import com.nextcloud.model.OCUploadLocalPathData import com.nextcloud.model.WorkerState import com.nextcloud.model.WorkerState.FileDownloadCompleted import com.nextcloud.model.WorkerState.FileDownloadStarted @@ -91,7 +92,6 @@ import com.owncloud.android.datamodel.FileDataStorageManager import com.owncloud.android.datamodel.OCFile import com.owncloud.android.datamodel.SyncedFolderProvider import com.owncloud.android.datamodel.VirtualFolderType -import com.owncloud.android.files.services.NameCollisionPolicy import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.operations.RemoteOperation import com.owncloud.android.lib.common.operations.RemoteOperationResult @@ -110,7 +110,6 @@ import com.owncloud.android.operations.RefreshFolderOperation import com.owncloud.android.operations.RemoveFileOperation import com.owncloud.android.operations.RenameFileOperation import com.owncloud.android.operations.SynchronizeFileOperation -import com.owncloud.android.operations.UploadFileOperation import com.owncloud.android.operations.albums.CopyFileToAlbumOperation import com.owncloud.android.syncadapter.FileSyncAdapter import com.owncloud.android.ui.CompletionCallback @@ -1094,19 +1093,15 @@ class FileDisplayActivity : return@isNetworkAndServerAvailable } - FileUploadHelper.Companion.instance().uploadNewFiles( - user.orElseThrow( - Supplier { RuntimeException() } - ), + val data = OCUploadLocalPathData.forFile( + user.orElseThrow(Supplier { RuntimeException() }), filePaths, decryptedRemotePaths, behaviour, - true, - UploadFileOperation.CREATED_BY_USER, - false, - false, - NameCollisionPolicy.ASK_USER + createRemoteFolder = true ) + + FileUploadHelper.instance().uploadNewFiles(data) } else { fileDataStorageManager.addCreateFileOfflineOperation(filePaths, decryptedRemotePaths) } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 2e8a6a27cdbf..4337f773fff6 100755 --- a/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -51,6 +51,7 @@ import com.nextcloud.client.jobs.upload.FileUploadHelper; import com.nextcloud.client.jobs.upload.FileUploadWorker; import com.nextcloud.client.preferences.AppPreferences; +import com.nextcloud.model.OCUploadLocalPathData; import com.nextcloud.utils.extensions.BundleExtensionsKt; import com.nextcloud.utils.extensions.FileExtensionsKt; import com.nextcloud.utils.extensions.IntentExtensionsKt; @@ -930,16 +931,16 @@ private boolean somethingToUpload() { } public void uploadFile(String tmpName, String filename) { - FileUploadHelper.Companion.instance().uploadNewFiles( - getUser().orElseThrow(RuntimeException::new), - new String[]{ tmpName }, - new String[]{ mFile.getRemotePath() + filename}, - FileUploadWorker.LOCAL_BEHAVIOUR_COPY, - true, - UploadFileOperation.CREATED_BY_USER, - false, - false, - NameCollisionPolicy.ASK_USER); + final var data = new OCUploadLocalPathData(getUser().orElseThrow(RuntimeException::new), + new String[]{ tmpName }, + new String[]{ mFile.getRemotePath() + filename}, + FileUploadWorker.LOCAL_BEHAVIOUR_COPY, + true, + UploadFileOperation.CREATED_BY_USER, + false, + false, + NameCollisionPolicy.ASK_USER); + FileUploadHelper.Companion.instance().uploadNewFiles(data); finish(); } diff --git a/app/src/main/java/com/owncloud/android/ui/asynctasks/CopyAndUploadContentUrisTask.java b/app/src/main/java/com/owncloud/android/ui/asynctasks/CopyAndUploadContentUrisTask.java index 9dbeb1f2ff81..f20bf524eecf 100644 --- a/app/src/main/java/com/owncloud/android/ui/asynctasks/CopyAndUploadContentUrisTask.java +++ b/app/src/main/java/com/owncloud/android/ui/asynctasks/CopyAndUploadContentUrisTask.java @@ -24,11 +24,10 @@ import com.nextcloud.client.account.User; import com.nextcloud.client.jobs.upload.FileUploadHelper; +import com.nextcloud.model.OCUploadLocalPathData; import com.owncloud.android.R; -import com.owncloud.android.files.services.NameCollisionPolicy; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.common.utils.Log_OC; -import com.owncloud.android.operations.UploadFileOperation; import com.owncloud.android.utils.FileStorageUtils; import java.io.File; @@ -187,29 +186,11 @@ protected ResultCode doInBackground(Object[] params) { } if (TextUtils.isEmpty(mAlbumName)) { - FileUploadHelper.Companion.instance().uploadNewFiles( - user, - localPaths, - currentRemotePaths, - behaviour, - false, // do not create parent folder if not existent - UploadFileOperation.CREATED_BY_USER, - false, - false, - NameCollisionPolicy.ASK_USER); + final var data = OCUploadLocalPathData.Companion.forFile(user, localPaths, currentRemotePaths, behaviour); + FileUploadHelper.Companion.instance().uploadNewFiles(data); } else { - FileUploadHelper.Companion.instance().uploadAndCopyNewFilesForAlbum( - user, - localPaths, - currentRemotePaths, - mAlbumName, - behaviour, - true, // create parent folder if not existent - UploadFileOperation.CREATED_BY_USER, - false, - false, - // use RENAME policy to make sure all files are uploaded - NameCollisionPolicy.RENAME); + final var data = OCUploadLocalPathData.Companion.forAlbum(user, localPaths, currentRemotePaths,behaviour); + FileUploadHelper.Companion.instance().uploadAndCopyNewFilesForAlbum(data, mAlbumName); } result = ResultCode.OK; diff --git a/app/src/main/java/com/owncloud/android/ui/helpers/UriUploader.kt b/app/src/main/java/com/owncloud/android/ui/helpers/UriUploader.kt index 09a984103a7e..b9aefaf35140 100644 --- a/app/src/main/java/com/owncloud/android/ui/helpers/UriUploader.kt +++ b/app/src/main/java/com/owncloud/android/ui/helpers/UriUploader.kt @@ -16,10 +16,9 @@ import android.net.Uri import android.os.Parcelable import com.nextcloud.client.account.User import com.nextcloud.client.jobs.upload.FileUploadHelper +import com.nextcloud.model.OCUploadLocalPathData import com.owncloud.android.R -import com.owncloud.android.files.services.NameCollisionPolicy import com.owncloud.android.lib.common.utils.Log_OC -import com.owncloud.android.operations.UploadFileOperation import com.owncloud.android.ui.activity.FileActivity import com.owncloud.android.ui.asynctasks.CopyAndUploadContentUrisTask import com.owncloud.android.ui.asynctasks.CopyAndUploadContentUrisTask.OnCopyTmpFilesTaskListener @@ -156,34 +155,14 @@ class UriUploader( * @param remotePaths Absolute paths in the current OC account to set to the uploaded file. */ private fun requestUpload(localPaths: Array, remotePaths: Array) { - if (albumName.isNullOrEmpty()) { - FileUploadHelper.instance().uploadNewFiles( - user, - localPaths, - remotePaths, - mBehaviour, - // do not create parent folder if not existent - false, - UploadFileOperation.CREATED_BY_USER, - requiresWifi = false, - requiresCharging = false, - nameCollisionPolicy = NameCollisionPolicy.ASK_USER - ) - } else { - FileUploadHelper.instance().uploadAndCopyNewFilesForAlbum( - user, - localPaths, - remotePaths, - albumName!!, - mBehaviour, - // create parent folder if not existent - true, - UploadFileOperation.CREATED_BY_USER, - requiresWifi = false, - requiresCharging = false, - // use RENAME policy to make sure all files are uploaded - nameCollisionPolicy = NameCollisionPolicy.RENAME - ) + FileUploadHelper.instance().run { + if (albumName.isNullOrEmpty()) { + val data = OCUploadLocalPathData.forFile(user, localPaths, remotePaths, mBehaviour) + uploadNewFiles(data) + } else { + val data = OCUploadLocalPathData.forAlbum(user, localPaths, remotePaths, mBehaviour) + uploadAndCopyNewFilesForAlbum(data, albumName!!) + } } } From bf7d65eeb1b4264a284608bdfaa3e5038bd1363e Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Mon, 2 Feb 2026 15:25:57 +0100 Subject: [PATCH 16/27] separate worker parameters Signed-off-by: alperozturk96 --- .../client/jobs/BackgroundJobManagerImpl.kt | 8 ++-- .../notification/WorkerNotificationManager.kt | 13 +++++++ .../jobs/upload/AlbumFileUploadWorker.kt | 37 +++++-------------- .../client/jobs/upload/FileUploadWorker.kt | 20 ++-------- 4 files changed, 29 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt index 33b79e931032..3a65c78064e5 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt @@ -700,14 +700,14 @@ internal class BackgroundJobManagerImpl( .build() val dataBuilder = Data.Builder() - .putString(FileUploadWorker.ACCOUNT, user.accountName) - .putInt(FileUploadWorker.TOTAL_UPLOAD_SIZE, uploadIds.size) + .putString(AlbumFileUploadWorker.ACCOUNT, user.accountName) + .putInt(AlbumFileUploadWorker.TOTAL_UPLOAD_SIZE, uploadIds.size) .putString(AlbumFileUploadWorker.ALBUM_NAME, albumName) val workRequests = batches.mapIndexed { index, batch -> dataBuilder - .putLongArray(FileUploadWorker.UPLOAD_IDS, batch.toLongArray()) - .putInt(FileUploadWorker.CURRENT_BATCH_INDEX, index) + .putLongArray(AlbumFileUploadWorker.UPLOAD_IDS, batch.toLongArray()) + .putInt(AlbumFileUploadWorker.CURRENT_BATCH_INDEX, index) oneTimeRequestBuilder(AlbumFileUploadWorker::class, ALBUM_JOB_FILES_UPLOAD, user) .addTag(tag) diff --git a/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt b/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt index 195a11b72a34..346f389baf92 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt @@ -89,4 +89,17 @@ open class WorkerNotificationManager( notification, ForegroundServiceType.DataSync ) + + fun createSilentNotification(title: String, iconId: Int): Notification { + return notificationBuilder + .setContentTitle(title) + .setSmallIcon(iconId) + .setOngoing(true) + .setSound(null) + .setVibrate(null) + .setOnlyAlertOnce(true) + .setPriority(NotificationCompat.PRIORITY_LOW) + .setSilent(true) + .build() + } } diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt index 99bd8e6c1fd4..6e13db08df54 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt @@ -9,7 +9,6 @@ package com.nextcloud.client.jobs.upload import android.app.Notification import android.content.Context -import androidx.core.app.NotificationCompat import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.work.CoroutineWorker import androidx.work.ForegroundInfo @@ -19,16 +18,9 @@ import com.nextcloud.client.account.UserAccountManager import com.nextcloud.client.device.PowerManagementService import com.nextcloud.client.jobs.BackgroundJobManager import com.nextcloud.client.jobs.BackgroundJobManagerImpl -import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.ACCOUNT -import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.CURRENT_BATCH_INDEX -import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.SHOW_SAME_FILE_ALREADY_EXISTS_NOTIFICATION -import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.TOTAL_UPLOAD_SIZE -import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.UPLOAD_IDS import com.nextcloud.client.jobs.utils.UploadErrorNotificationManager import com.nextcloud.client.network.ConnectivityService import com.nextcloud.client.preferences.AppPreferences -import com.nextcloud.model.WorkerState -import com.nextcloud.model.WorkerStateObserver import com.nextcloud.utils.ForegroundServiceHelper import com.nextcloud.utils.extensions.getPercent import com.nextcloud.utils.extensions.updateStatus @@ -47,7 +39,6 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCo import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.operations.UploadFileOperation import com.owncloud.android.operations.albums.CopyFileToAlbumOperation -import com.owncloud.android.ui.notifications.NotificationUtils import com.owncloud.android.utils.theme.ViewThemeUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ensureActive @@ -82,6 +73,11 @@ class AlbumFileUploadWorker( private const val BATCH_SIZE = 100 const val ALBUM_NAME = "album_name" + + const val ACCOUNT = "data_account" + const val UPLOAD_IDS = "uploads_ids" + const val CURRENT_BATCH_INDEX = "batch_index" + const val TOTAL_UPLOAD_SIZE = "total_upload_size" } private var lastPercent = 0 @@ -115,7 +111,8 @@ class AlbumFileUploadWorker( try { val notificationTitle = notificationManager.currentOperationTitle ?: context.getString(R.string.foreground_service_upload) - val notification = createNotification(notificationTitle) + + val notification = notificationManager.createSilentNotification(notificationTitle, R.drawable.uploads) updateForegroundInfo(notification) } catch (e: Exception) { // Continue without foreground service - uploads will still work @@ -126,7 +123,7 @@ class AlbumFileUploadWorker( override suspend fun getForegroundInfo(): ForegroundInfo { val notificationTitle = notificationManager.currentOperationTitle ?: context.getString(R.string.foreground_service_upload) - val notification = createNotification(notificationTitle) + val notification = notificationManager.createSilentNotification(notificationTitle, R.drawable.uploads) return ForegroundServiceHelper.createWorkerForegroundInfo( notificationId, @@ -144,18 +141,6 @@ class AlbumFileUploadWorker( setForeground(foregroundInfo) } - private fun createNotification(title: String): Notification = - NotificationCompat.Builder(context, NotificationUtils.NOTIFICATION_CHANNEL_UPLOAD) - .setContentTitle(title) - .setSmallIcon(R.drawable.uploads) - .setOngoing(true) - .setSound(null) - .setVibrate(null) - .setOnlyAlertOnce(true) - .setPriority(NotificationCompat.PRIORITY_LOW) - .setSilent(true) - .build() - @Suppress("ReturnCount", "LongMethod", "DEPRECATION") private suspend fun uploadFiles(): Result = withContext(Dispatchers.IO) { val accountName = inputData.getString(ACCOUNT) @@ -354,11 +339,7 @@ class AlbumFileUploadWorker( result, onSameFileConflict = { withContext(Dispatchers.Main) { - val showSameFileAlreadyExistsNotification = - inputData.getBoolean(SHOW_SAME_FILE_ALREADY_EXISTS_NOTIFICATION, false) - if (showSameFileAlreadyExistsNotification) { - notificationManager.showSameFileAlreadyExistsNotification(operation.fileName) - } + notificationManager.showSameFileAlreadyExistsNotification(operation.fileName) } } ) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt index e64ca25ca296..f42677d776ad 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt @@ -9,7 +9,6 @@ package com.nextcloud.client.jobs.upload import android.app.Notification import android.content.Context -import androidx.core.app.NotificationCompat import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.work.CoroutineWorker import androidx.work.ForegroundInfo @@ -39,7 +38,6 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.operations.UploadFileOperation -import com.owncloud.android.ui.notifications.NotificationUtils import com.owncloud.android.utils.theme.ViewThemeUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ensureActive @@ -146,7 +144,8 @@ class FileUploadWorker( try { val notificationTitle = notificationManager.currentOperationTitle ?: context.getString(R.string.foreground_service_upload) - val notification = createNotification(notificationTitle) + + val notification = notificationManager.createSilentNotification(notificationTitle, R.drawable.uploads) updateForegroundInfo(notification) } catch (e: Exception) { // Continue without foreground service - uploads will still work @@ -157,8 +156,7 @@ class FileUploadWorker( override suspend fun getForegroundInfo(): ForegroundInfo { val notificationTitle = notificationManager.currentOperationTitle ?: context.getString(R.string.foreground_service_upload) - val notification = createNotification(notificationTitle) - + val notification = notificationManager.createSilentNotification(notificationTitle, R.drawable.uploads) return ForegroundServiceHelper.createWorkerForegroundInfo( notificationId, notification, @@ -175,18 +173,6 @@ class FileUploadWorker( setForeground(foregroundInfo) } - private fun createNotification(title: String): Notification = - NotificationCompat.Builder(context, NotificationUtils.NOTIFICATION_CHANNEL_UPLOAD) - .setContentTitle(title) - .setSmallIcon(R.drawable.uploads) - .setOngoing(true) - .setSound(null) - .setVibrate(null) - .setOnlyAlertOnce(true) - .setPriority(NotificationCompat.PRIORITY_LOW) - .setSilent(true) - .build() - @Suppress("ReturnCount", "LongMethod", "DEPRECATION") private suspend fun uploadFiles(): Result = withContext(Dispatchers.IO) { val accountName = inputData.getString(ACCOUNT) From 79d8ce6fbf3dce44b92424a13eef8aa297e46f70 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Mon, 2 Feb 2026 15:38:25 +0100 Subject: [PATCH 17/27] separate params Signed-off-by: alperozturk96 --- .../client/editimage/EditImageActivity.kt | 4 +- .../nextcloud/model/OCUploadLocalPathData.kt | 40 +++++++++++++++++-- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/editimage/EditImageActivity.kt b/app/src/main/java/com/nextcloud/client/editimage/EditImageActivity.kt index f6c914f0ba69..7c09f8b61aaa 100644 --- a/app/src/main/java/com/nextcloud/client/editimage/EditImageActivity.kt +++ b/app/src/main/java/com/nextcloud/client/editimage/EditImageActivity.kt @@ -101,10 +101,10 @@ class EditImageActivity : localPaths = arrayOf(it), remotePaths = arrayOf(file.parentRemotePath + File.separator + newFileName), createRemoteFolder = false, - createdBy = UploadFileOperation.CREATED_BY_USER, + creationType = UploadFileOperation.CREATED_BY_USER, requiresWifi = false, requiresCharging = false, - nameCollisionPolicy = NameCollisionPolicy.RENAME, + collisionPolicy = NameCollisionPolicy.RENAME, localBehavior = FileUploadWorker.LOCAL_BEHAVIOUR_DELETE ) FileUploadHelper().uploadNewFiles(data) diff --git a/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt b/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt index a18173735154..3cb4792593a7 100644 --- a/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt +++ b/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt @@ -20,10 +20,10 @@ data class OCUploadLocalPathData( val remotePaths: Array, val localBehavior: Int, val createRemoteFolder: Boolean, - val createdBy: Int, + val creationType: Int, val requiresWifi: Boolean, val requiresCharging: Boolean, - val nameCollisionPolicy: NameCollisionPolicy, + val collisionPolicy: NameCollisionPolicy, ) { companion object { fun forDocument( @@ -87,13 +87,45 @@ data class OCUploadLocalPathData( fun toOCUpload(localPath: String, index: Int): OCUpload { return OCUpload(localPath, remotePaths[index], user.accountName).apply { - this.nameCollisionPolicy = nameCollisionPolicy + nameCollisionPolicy = collisionPolicy isUseWifiOnly = requiresWifi isWhileChargingOnly = requiresCharging uploadStatus = UploadStatus.UPLOAD_IN_PROGRESS - this.createdBy = createdBy + createdBy = creationType isCreateRemoteFolder = createRemoteFolder localAction = localBehavior } } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as OCUploadLocalPathData + + if (localBehavior != other.localBehavior) return false + if (createRemoteFolder != other.createRemoteFolder) return false + if (creationType != other.creationType) return false + if (requiresWifi != other.requiresWifi) return false + if (requiresCharging != other.requiresCharging) return false + if (user != other.user) return false + if (!localPaths.contentEquals(other.localPaths)) return false + if (!remotePaths.contentEquals(other.remotePaths)) return false + if (collisionPolicy != other.collisionPolicy) return false + + return true + } + + override fun hashCode(): Int { + var result = localBehavior + result = 31 * result + createRemoteFolder.hashCode() + result = 31 * result + creationType + result = 31 * result + requiresWifi.hashCode() + result = 31 * result + requiresCharging.hashCode() + result = 31 * result + user.hashCode() + result = 31 * result + localPaths.contentHashCode() + result = 31 * result + remotePaths.contentHashCode() + result = 31 * result + collisionPolicy.hashCode() + return result + } } From d2ded246720df6d645ef908d7cf2a0b3e959fd5f Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Mon, 2 Feb 2026 16:14:28 +0100 Subject: [PATCH 18/27] simplify album fragment Signed-off-by: alperozturk96 --- .../jobs/upload/AlbumFileUploadWorker.kt | 2 +- .../ui/fragment/albums/AlbumsFragment.kt | 85 ++++++++----------- 2 files changed, 37 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt index 6e13db08df54..48f527588c55 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/AlbumFileUploadWorker.kt @@ -315,7 +315,7 @@ class AlbumFileUploadWorker( fileUploadBroadcastManager.sendStarted(operation, context) } catch (e: Exception) { Log_OC.e(TAG, "Error uploading", e) - result = RemoteOperationResult(e) + result = RemoteOperationResult(e) } finally { if (!isStopped) { uploadsStorageManager.updateDatabaseUploadResult(result, operation) diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt index fe705566ddec..8354c9c33962 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt @@ -22,7 +22,6 @@ import android.view.MenuInflater import android.view.MenuItem import android.view.View import android.view.ViewGroup -import androidx.annotation.VisibleForTesting import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat import androidx.core.view.MenuHost @@ -33,20 +32,17 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.appbar.AppBarLayout -import com.nextcloud.client.account.User import com.nextcloud.client.account.UserAccountManager import com.nextcloud.client.di.Injectable -import com.nextcloud.client.network.ClientFactory -import com.nextcloud.client.network.ClientFactory.CreationException import com.nextcloud.client.preferences.AppPreferences import com.nextcloud.client.utils.Throttler import com.owncloud.android.R import com.owncloud.android.databinding.AlbumsFragmentBinding import com.owncloud.android.datamodel.SyncedFolderProvider -import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.albums.PhotoAlbumEntry import com.owncloud.android.lib.resources.albums.ReadAlbumsRemoteOperation +import com.owncloud.android.ui.activity.BaseActivity import com.owncloud.android.ui.activity.FileDisplayActivity import com.owncloud.android.ui.adapter.albums.AlbumFragmentInterface import com.owncloud.android.ui.adapter.albums.AlbumsAdapter @@ -56,7 +52,6 @@ import com.owncloud.android.utils.theme.ViewThemeUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import java.util.Optional import javax.inject.Inject class AlbumsFragment : @@ -65,8 +60,6 @@ class AlbumsFragment : Injectable { private var adapter: AlbumsAdapter? = null - private var client: OwnCloudClient? = null - private var optionalUser: Optional? = null private lateinit var binding: AlbumsFragmentBinding @@ -76,9 +69,6 @@ class AlbumsFragment : @Inject lateinit var accountManager: UserAccountManager - @Inject - lateinit var clientFactory: ClientFactory - @Inject lateinit var preferences: AppPreferences @@ -88,7 +78,7 @@ class AlbumsFragment : @Inject lateinit var throttler: Throttler - private var mContainerActivity: FileFragment.ContainerActivity? = null + private var containerActivity: FileFragment.ContainerActivity? = null private var isGridView = true private var maxColumnSize = 2 @@ -98,7 +88,7 @@ class AlbumsFragment : override fun onAttach(context: Context) { super.onAttach(context) try { - mContainerActivity = context as FileFragment.ContainerActivity + containerActivity = context as FileFragment.ContainerActivity } catch (e: ClassCastException) { throw IllegalArgumentException( context.toString() + " must implement " + @@ -115,7 +105,7 @@ class AlbumsFragment : } override fun onDetach() { - mContainerActivity = null + containerActivity = null super.onDetach() } @@ -135,7 +125,6 @@ class AlbumsFragment : override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - optionalUser = Optional.of(accountManager.user) showAppBar() createMenu() setupContainingList() @@ -218,11 +207,9 @@ class AlbumsFragment : } } - @VisibleForTesting fun populateList(albums: List?) { - if (requireActivity() is FileDisplayActivity) { - (requireActivity() as FileDisplayActivity).setMainFabVisible(false) - } + Log_OC.d(TAG, "loading album list item size: " + albums?.size) + (activity as? FileDisplayActivity)?.setMainFabVisible(false) initializeAdapter() adapter?.setAlbumItems(albums) } @@ -231,21 +218,31 @@ class AlbumsFragment : binding.swipeContainingList.isRefreshing = true initializeAdapter() updateEmptyView(false) + readAlbums() + } + + private fun readAlbums() { + val activity = activity ?: return + lifecycleScope.launch(Dispatchers.IO) { - val albumsRemoteOperation = ReadAlbumsRemoteOperation() - val result = client?.let { albumsRemoteOperation.execute(it) } - withContext(Dispatchers.Main) { - if (result?.isSuccess == true && result.resultData != null) { - if (result.resultData.isEmpty()) { + if (activity is BaseActivity) { + val client = activity.clientRepository.getOwncloudClient() + val operation = ReadAlbumsRemoteOperation() + val result = operation.execute(client) + + withContext(Dispatchers.Main) { + if (result?.isSuccess == true && result.resultData != null) { + if (result.resultData.isEmpty()) { + updateEmptyView(true) + } + populateList(result.resultData) + } else { + Log_OC.d(TAG, "read album operation failed") updateEmptyView(true) } - populateList(result.resultData) - } else { - Log_OC.d(TAG, result?.logMessage) - // show error - updateEmptyView(true) + + hideRefreshLayoutLoader() } - hideRefreshLayoutLoader() } } } @@ -254,23 +251,11 @@ class AlbumsFragment : binding.swipeContainingList.isRefreshing = false } - private fun initializeClient() { - if (client == null && optionalUser?.isPresent == true) { - try { - val user = optionalUser?.get() - client = clientFactory.create(user) - } catch (e: CreationException) { - Log_OC.e(TAG, "Error initializing client", e) - } - } - } - private fun initializeAdapter() { - initializeClient() if (adapter == null) { adapter = AlbumsAdapter( requireContext(), - mContainerActivity?.storageManager, + containerActivity?.storageManager, accountManager.user, this, syncedFolderProvider, @@ -279,6 +264,7 @@ class AlbumsFragment : isGridView ) } + binding.listRoot.adapter = adapter // Restore scroll state @@ -297,9 +283,10 @@ class AlbumsFragment : if (isSelectionMode) { binding.root.setBackgroundColor(ResourcesCompat.getColor(resources, R.color.bg_default, null)) } - if (requireActivity() is FileDisplayActivity) { - (requireActivity() as FileDisplayActivity).setupToolbar() - (requireActivity() as FileDisplayActivity).supportActionBar?.let { actionBar -> + + (activity as? FileDisplayActivity)?.run { + setupToolbar() + supportActionBar?.let { actionBar -> viewThemeUtils.files.themeActionBar( requireContext(), actionBar, @@ -307,11 +294,11 @@ class AlbumsFragment : isMenu = true ) } - (requireActivity() as FileDisplayActivity).showSortListGroup(false) - (requireActivity() as FileDisplayActivity).setMainFabVisible(false) + showSortListGroup(false) + setMainFabVisible(false) // clear the subtitle while navigating to any other screen from Media screen - (requireActivity() as FileDisplayActivity).clearToolbarSubtitle() + clearToolbarSubtitle() } } From 3387cfc7c01ed659ea2f268be2348741ca6e5fde Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Tue, 3 Feb 2026 09:13:25 +0100 Subject: [PATCH 19/27] use optional generic function to access fragment Signed-off-by: alperozturk96 --- .../android/ui/activity/FileActivity.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java index 669812ea48fe..ad616579e651 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java @@ -109,7 +109,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; -import java.util.Objects; import javax.inject.Inject; @@ -841,18 +840,25 @@ private void onUpdateShareInformation(RemoteOperationResult result, @StringRes i } public void refreshList() { - // first check for album fragments if (isAlbumsFragment()) { - ((AlbumsFragment) Objects.requireNonNull(getSupportFragmentManager().findFragmentByTag(AlbumsFragment.Companion.getTAG()))).refreshAlbums(); - } else if (isAlbumItemsFragment()) { - ((AlbumItemsFragment) Objects.requireNonNull(getSupportFragmentManager().findFragmentByTag(AlbumItemsFragment.Companion.getTAG()))).refreshData(); - } else { - final Fragment fragment = getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_LIST_OF_FILES); - if (fragment instanceof OCFileListFragment listFragment) { - listFragment.onRefresh(); - } else if (fragment instanceof FileDetailFragment detailFragment) { - detailFragment.goBackToOCFileListFragment(); - } + getFragment(AlbumsFragment.Companion.getTAG(), AlbumsFragment.class) + .ifPresent(AlbumsFragment::refreshAlbums); + return; + } + + if (isAlbumItemsFragment()) { + getFragment(AlbumItemsFragment.Companion.getTAG(), AlbumItemsFragment.class) + .ifPresent(AlbumItemsFragment::refreshData); + return; + } + + final var fragment = + getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_LIST_OF_FILES); + + if (fragment instanceof OCFileListFragment listFragment) { + listFragment.onRefresh(); + } else if (fragment instanceof FileDetailFragment detailFragment) { + detailFragment.goBackToOCFileListFragment(); } } From 817e00c55a130db69118ab123a8dbae3f9e0f8d8 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Tue, 3 Feb 2026 10:17:05 +0100 Subject: [PATCH 20/27] fix code analytics, simplify Signed-off-by: alperozturk96 --- .../client/jobs/BackgroundJobManager.kt | 6 +- .../client/jobs/BackgroundJobManagerImpl.kt | 6 +- .../notification/WorkerNotificationManager.kt | 22 +++---- .../nextcloud/model/OCUploadLocalPathData.kt | 64 ++++++++----------- .../ui/fileactions/FileActionsBottomSheet.kt | 3 +- .../TrashbinFileActionsBottomSheet.kt | 3 +- .../ui/activity/FileDisplayActivity.kt | 1 + .../android/ui/adapter/LinkShareViewHolder.kt | 1 + .../android/ui/adapter/OCFileListDelegate.kt | 3 +- .../UnifiedSearchCurrentDirItemViewHolder.kt | 3 +- .../ui/dialog/ConflictsResolveDialog.kt | 3 +- .../ui/dialog/CreateFolderDialogFragment.kt | 4 +- .../android/ui/fragment/GalleryFragment.java | 5 +- .../ui/fragment/OCFileListFragment.java | 8 +-- .../ui/preview/PreviewImageFragment.kt | 34 +++++----- .../ui/preview/PreviewMediaActivity.kt | 20 +++--- .../owncloud/android/utils/DisplayUtils.java | 27 -------- 17 files changed, 84 insertions(+), 129 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt index 7a224e9ea78b..11478417adcc 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt @@ -137,11 +137,7 @@ interface BackgroundJobManager { fun startNotificationJob(subject: String, signature: String) fun startAccountRemovalJob(accountName: String, remoteWipe: Boolean) fun startFilesUploadJob(user: User, uploadIds: LongArray, showSameFileAlreadyExistsNotification: Boolean) - fun startAlbumFilesUploadJob( - user: User, - uploadIds: LongArray, - albumName: String, - ) + fun startAlbumFilesUploadJob(user: User, uploadIds: LongArray, albumName: String) fun getFileUploads(user: User): LiveData> fun cancelFilesUploadJob(user: User) fun isStartFileUploadJobScheduled(accountName: String): Boolean diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt index 3a65c78064e5..14dcec4ee5d7 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt @@ -685,11 +685,7 @@ internal class BackgroundJobManagerImpl( * within the worker. * @param albumName Album on which selected files should be copy after upload */ - override fun startAlbumFilesUploadJob( - user: User, - uploadIds: LongArray, - albumName: String, - ) { + override fun startAlbumFilesUploadJob(user: User, uploadIds: LongArray, albumName: String) { defaultDispatcherScope.launch { val batchSize = FileUploadHelper.MAX_FILE_COUNT val batches = uploadIds.toList().chunked(batchSize) diff --git a/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt b/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt index 346f389baf92..dac16b39f366 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt @@ -90,16 +90,14 @@ open class WorkerNotificationManager( ForegroundServiceType.DataSync ) - fun createSilentNotification(title: String, iconId: Int): Notification { - return notificationBuilder - .setContentTitle(title) - .setSmallIcon(iconId) - .setOngoing(true) - .setSound(null) - .setVibrate(null) - .setOnlyAlertOnce(true) - .setPriority(NotificationCompat.PRIORITY_LOW) - .setSilent(true) - .build() - } + fun createSilentNotification(title: String, iconId: Int): Notification = notificationBuilder + .setContentTitle(title) + .setSmallIcon(iconId) + .setOngoing(true) + .setSound(null) + .setVibrate(null) + .setOnlyAlertOnce(true) + .setPriority(NotificationCompat.PRIORITY_LOW) + .setSilent(true) + .build() } diff --git a/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt b/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt index 3cb4792593a7..4e7f4f8e133e 100644 --- a/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt +++ b/app/src/main/java/com/nextcloud/model/OCUploadLocalPathData.kt @@ -23,15 +23,11 @@ data class OCUploadLocalPathData( val creationType: Int, val requiresWifi: Boolean, val requiresCharging: Boolean, - val collisionPolicy: NameCollisionPolicy, + val collisionPolicy: NameCollisionPolicy ) { companion object { - fun forDocument( - user: User, - localPaths: Array, - remotePaths: Array - ): OCUploadLocalPathData { - return OCUploadLocalPathData( + fun forDocument(user: User, localPaths: Array, remotePaths: Array): OCUploadLocalPathData = + OCUploadLocalPathData( user, localPaths, remotePaths, @@ -42,26 +38,23 @@ data class OCUploadLocalPathData( requiresCharging = false, NameCollisionPolicy.ASK_USER ) - } fun forAlbum( user: User, localPaths: Array, remotePaths: Array, localBehavior: Int - ): OCUploadLocalPathData { - return OCUploadLocalPathData( - user, - localPaths, - remotePaths, - localBehavior, - createRemoteFolder = true, - UploadFileOperation.CREATED_BY_USER, - requiresWifi = false, - requiresCharging = false, - NameCollisionPolicy.RENAME - ) - } + ): OCUploadLocalPathData = OCUploadLocalPathData( + user, + localPaths, + remotePaths, + localBehavior, + createRemoteFolder = true, + UploadFileOperation.CREATED_BY_USER, + requiresWifi = false, + requiresCharging = false, + NameCollisionPolicy.RENAME + ) @JvmOverloads fun forFile( @@ -70,23 +63,21 @@ data class OCUploadLocalPathData( remotePaths: Array, localBehavior: Int, createRemoteFolder: Boolean = false - ): OCUploadLocalPathData { - return OCUploadLocalPathData( - user, - localPaths, - remotePaths, - localBehavior, - createRemoteFolder = createRemoteFolder, - UploadFileOperation.CREATED_BY_USER, - requiresWifi = false, - requiresCharging = false, - NameCollisionPolicy.ASK_USER - ) - } + ): OCUploadLocalPathData = OCUploadLocalPathData( + user, + localPaths, + remotePaths, + localBehavior, + createRemoteFolder = createRemoteFolder, + UploadFileOperation.CREATED_BY_USER, + requiresWifi = false, + requiresCharging = false, + NameCollisionPolicy.ASK_USER + ) } - fun toOCUpload(localPath: String, index: Int): OCUpload { - return OCUpload(localPath, remotePaths[index], user.accountName).apply { + fun toOCUpload(localPath: String, index: Int): OCUpload = + OCUpload(localPath, remotePaths[index], user.accountName).apply { nameCollisionPolicy = collisionPolicy isUseWifiOnly = requiresWifi isWhileChargingOnly = requiresCharging @@ -95,7 +86,6 @@ data class OCUploadLocalPathData( isCreateRemoteFolder = createRemoteFolder localAction = localBehavior } - } override fun equals(other: Any?): Boolean { if (this === other) return true diff --git a/app/src/main/java/com/nextcloud/ui/fileactions/FileActionsBottomSheet.kt b/app/src/main/java/com/nextcloud/ui/fileactions/FileActionsBottomSheet.kt index 28619ed1741f..3758a2f43733 100644 --- a/app/src/main/java/com/nextcloud/ui/fileactions/FileActionsBottomSheet.kt +++ b/app/src/main/java/com/nextcloud/ui/fileactions/FileActionsBottomSheet.kt @@ -153,7 +153,8 @@ class FileActionsBottomSheet : binding.thumbnailLayout.thumbnailShimmer, syncedFolderProvider.preferences, viewThemeUtils, - syncedFolderProvider + syncedFolderProvider, + false ) } } diff --git a/app/src/main/java/com/nextcloud/ui/trashbinFileActions/TrashbinFileActionsBottomSheet.kt b/app/src/main/java/com/nextcloud/ui/trashbinFileActions/TrashbinFileActionsBottomSheet.kt index 82422d9e64ee..83a058bc1186 100644 --- a/app/src/main/java/com/nextcloud/ui/trashbinFileActions/TrashbinFileActionsBottomSheet.kt +++ b/app/src/main/java/com/nextcloud/ui/trashbinFileActions/TrashbinFileActionsBottomSheet.kt @@ -129,7 +129,8 @@ class TrashbinFileActionsBottomSheet : binding.thumbnailLayout.thumbnailShimmer, syncedFolderProvider.preferences, viewThemeUtils, - syncedFolderProvider + syncedFolderProvider, + false ) } } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index 5f14ef8e9038..5da21cfaf08e 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -2901,6 +2901,7 @@ class FileDisplayActivity : initFile() } + @Suppress("LongMethod") private fun initFile() { val userOpt = user if (userOpt.isEmpty) { diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/LinkShareViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/LinkShareViewHolder.kt index 83b9d152a4dd..dd6a506c1036 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/LinkShareViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/LinkShareViewHolder.kt @@ -98,6 +98,7 @@ internal class LinkShareViewHolder(itemView: View) : RecyclerView.ViewHolder(ite } } + @Suppress("ReturnCount") private fun setSubline(binding: FileDetailsShareLinkShareItemBinding?, context: Context?, publicShare: OCShare) { if (binding == null || context == null) { return diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt index 3e6cd14962d9..03580d2b5c0c 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt @@ -198,7 +198,8 @@ class OCFileListDelegate( shimmerThumbnail, preferences, viewThemeUtils, - syncFolderProvider + syncFolderProvider, + false ) } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchCurrentDirItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchCurrentDirItemViewHolder.kt index a355cd5d4d0b..24939735fd77 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchCurrentDirItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/UnifiedSearchCurrentDirItemViewHolder.kt @@ -61,7 +61,8 @@ class UnifiedSearchCurrentDirItemViewHolder( binding.thumbnailShimmer, appPreferences, viewThemeUtils, - syncedFolderProvider + syncedFolderProvider, + false ) binding.more.setOnClickListener { diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.kt b/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.kt index 522626227391..ffb363c37e83 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.kt @@ -232,7 +232,8 @@ class ConflictsResolveDialog : null, syncedFolderProvider.preferences, viewThemeUtils, - syncedFolderProvider + syncedFolderProvider, + false ) } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt index f3078dce73cb..f391768cf4fa 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt @@ -120,8 +120,8 @@ class CreateFolderDialogFragment : } binding.userInput.addTextChangedListener(object : TextWatcher { - override fun afterTextChanged(s: Editable) {} - override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun afterTextChanged(s: Editable) = Unit + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) = Unit override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { checkFileNameAfterEachType(fileNames) } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java index 4d802c76f1fe..45cf4d5299dc 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java @@ -99,8 +99,9 @@ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); searchFragment = true; - if (getArguments() != null) { - isFromAlbum = getArguments().getBoolean(AlbumsPickerActivity.Companion.getEXTRA_FROM_ALBUM(), false); + final var arguments = getArguments(); + if (arguments != null) { + isFromAlbum = arguments.getBoolean(AlbumsPickerActivity.Companion.getEXTRA_FROM_ALBUM(), false); } // only show menu when not opened from media picker diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 43b63fc60eb7..4828eefbc6d6 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -868,10 +868,8 @@ public boolean onActionItemClicked(ActionMode mode, MenuItem item) { final Set checkedFiles = getCommonAdapter().getCheckedItems(); if (item.getItemId() == R.id.custom_menu_placeholder_item) { openActionsMenu(getCommonAdapter().getFilesCount(), checkedFiles, false); - } else if (item.getItemId() == R.id.add_to_album){ - if (OCFileListFragment.this instanceof GalleryFragment galleryFragment) { - galleryFragment.addImagesToAlbum(checkedFiles); - } + } else if (item.getItemId() == R.id.add_to_album && OCFileListFragment.this instanceof GalleryFragment galleryFragment) { + galleryFragment.addImagesToAlbum(checkedFiles); } return true; } @@ -2202,7 +2200,7 @@ public void setFabVisible(final boolean visible) { } // to hide the fab if user is on Albums Fragment - if (requireActivity() instanceof FileDisplayActivity fda + if (getActivity() instanceof FileDisplayActivity fda && (fda.isAlbumsFragment() || fda.isAlbumItemsFragment())) { mFabMain.hide(); diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.kt b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.kt index 1c245528f0b6..ce6444411991 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.kt @@ -53,6 +53,7 @@ import com.nextcloud.ui.fileactions.FileAction import com.nextcloud.ui.fileactions.FileActionsBottomSheet.Companion.newInstance import com.nextcloud.utils.extensions.clickWithDebounce import com.nextcloud.utils.extensions.getParcelableArgument +import com.nextcloud.utils.extensions.typedActivity import com.owncloud.android.MainApp import com.owncloud.android.R import com.owncloud.android.databinding.PreviewImageFragmentBinding @@ -403,31 +404,28 @@ class PreviewImageFragment : } private fun fetchFileMetaDataIfAbsent(ocFile: OCFile) { - if (requireActivity() is FileActivity) { - (requireActivity() as FileActivity).showLoadingDialog(getString(R.string.wait_a_moment)) - } + typedActivity()?.showLoadingDialog(getString(R.string.wait_a_moment)) + val context = context ?: return + lifecycleScope.launch(Dispatchers.IO) { - val fetchRemoteFileOperation = - FetchRemoteFileOperation( - requireActivity(), - accountManager.user, - ocFile, - removeFileFromDb = true, - storageManager = containerActivity.storageManager - ) - val result = fetchRemoteFileOperation.execute(requireActivity()) + val operation = FetchRemoteFileOperation( + context, + accountManager.user, + ocFile, + removeFileFromDb = true, + storageManager = containerActivity.storageManager + ) + val result = operation.execute(context) + withContext(Dispatchers.Main) { - if (requireActivity() is FileActivity) { - (requireActivity() as FileActivity).dismissLoadingDialog() - } + typedActivity()?.dismissLoadingDialog() + if (result?.isSuccess == true && result.resultData != null) { file = result.resultData as OCFile - onOverflowClick(isManualClick = true) } else { Log_OC.d(TAG, result?.logMessage) - // show error - DisplayUtils.showSnackMessage(binding.root, result.getLogMessage(requireContext())) + DisplayUtils.showSnackMessage(binding.root, result.getLogMessage(context)) } } } diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaActivity.kt b/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaActivity.kt index ca561fbefbed..5c014abaeac5 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaActivity.kt @@ -549,24 +549,22 @@ class PreviewMediaActivity : private fun fetchFileMetaDataIfAbsent(ocFile: OCFile) { showLoadingDialog(getString(R.string.wait_a_moment)) lifecycleScope.launch(Dispatchers.IO) { - val fetchRemoteFileOperation = - FetchRemoteFileOperation( - this@PreviewMediaActivity, - accountManager.user, - ocFile, - removeFileFromDb = true, - storageManager = storageManager - ) - val result = fetchRemoteFileOperation.execute(this@PreviewMediaActivity) + val operation = FetchRemoteFileOperation( + this@PreviewMediaActivity, + accountManager.user, + ocFile, + removeFileFromDb = true, + storageManager = storageManager + ) + val result = operation.execute(this@PreviewMediaActivity) + withContext(Dispatchers.Main) { dismissLoadingDialog() if (result?.isSuccess == true && result.resultData != null) { file = result.resultData as OCFile - onOverflowClick(isManualClick = true) } else { Log_OC.d(TAG, result?.logMessage) - // show error DisplayUtils.showSnackMessage(binding.root, result.getLogMessage(this@PreviewMediaActivity)) } } diff --git a/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java b/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java index 64dfbbd38035..96039413991d 100644 --- a/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java +++ b/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java @@ -803,33 +803,6 @@ public static String getDateByPattern(long timestamp, @Nullable Context context, return df.format(timestamp); } - // required to hide video icon overlay for albums - public static void setThumbnail(OCFile file, - ImageView thumbnailView, - User user, - FileDataStorageManager storageManager, - List asyncTasks, - boolean gridView, - Context context, - LoaderImageView shimmerThumbnail, - AppPreferences preferences, - ViewThemeUtils viewThemeUtils, - SyncedFolderProvider syncedFolderProvider - ) { - setThumbnail(file, - thumbnailView, - user, - storageManager, - asyncTasks, - gridView, - context, - shimmerThumbnail, - preferences, - viewThemeUtils, - syncedFolderProvider, - false); - } - /** * Sets a thumbnail for a offline file, file or folder with various display options and states. *

From 94a81e66cc62cd5f9a020eb124cdacc35b47b368 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Thu, 19 Feb 2026 14:35:58 +0100 Subject: [PATCH 21/27] m3 card Signed-off-by: alperozturk96 --- .../client/jobs/upload/FileUploadHelper.kt | 75 +++++-------------- .../android/ui/activity/DrawerActivity.java | 46 ++++++++++-- .../ui/activity/FileDisplayActivity.kt | 1 - .../android/ui/adapter/GalleryAdapter.kt | 10 +++ .../ui/fragment/albums/AlbumItemsFragment.kt | 3 +- app/src/main/res/layout/albums_grid_item.xml | 32 ++++---- gradle/libs.versions.toml | 2 +- gradle/verification-metadata.xml | 27 ++++--- 8 files changed, 103 insertions(+), 93 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt index 430d1ea25187..c4bd3818e590 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt @@ -23,6 +23,7 @@ import com.nextcloud.client.jobs.upload.FileUploadWorker.Companion.currentUpload import com.nextcloud.client.network.Connectivity import com.nextcloud.client.network.ConnectivityService import com.nextcloud.client.notifications.AppWideNotificationManager +import com.nextcloud.model.OCUploadLocalPathData import com.nextcloud.utils.extensions.getUploadIds import com.owncloud.android.MainApp import com.owncloud.android.R @@ -230,72 +231,30 @@ class FileUploadHelper { } @JvmOverloads - @Suppress("LongParameterList") - fun uploadNewFiles( - user: User, - localPaths: Array, - remotePaths: Array, - localBehavior: Int, - createRemoteFolder: Boolean, - createdBy: Int, - requiresWifi: Boolean, - requiresCharging: Boolean, - nameCollisionPolicy: NameCollisionPolicy, - showSameFileAlreadyExistsNotification: Boolean = true - ) { - val uploads = localPaths.mapIndexed { index, localPath -> - val result = OCUpload(localPath, remotePaths[index], user.accountName).apply { - this.nameCollisionPolicy = nameCollisionPolicy - isUseWifiOnly = requiresWifi - isWhileChargingOnly = requiresCharging - uploadStatus = UploadStatus.UPLOAD_IN_PROGRESS - this.createdBy = createdBy - isCreateRemoteFolder = createRemoteFolder - localAction = localBehavior - } + fun uploadNewFiles(data: OCUploadLocalPathData, showSameFileAlreadyExistsNotification: Boolean = true) { + val uploads = getUploadsFromLocalPaths(data) + backgroundJobManager.startFilesUploadJob( + data.user, + uploads.getUploadIds(), + showSameFileAlreadyExistsNotification + ) + } + private fun getUploadsFromLocalPaths(data: OCUploadLocalPathData): List = + data.localPaths.mapIndexed { index, localPath -> + val result = data.toOCUpload(localPath, index) val id = uploadsStorageManager.uploadDao.insertOrReplace(result.toUploadEntity()) result.uploadId = id result } - backgroundJobManager.startFilesUploadJob(user, uploads.getUploadIds(), showSameFileAlreadyExistsNotification) - } - @JvmOverloads @Suppress("LongParameterList") - fun uploadAndCopyNewFilesForAlbum( - user: User, - localPaths: Array, - remotePaths: Array, - albumName: String, - localBehavior: Int, - createRemoteFolder: Boolean, - createdBy: Int, - requiresWifi: Boolean, - requiresCharging: Boolean, - nameCollisionPolicy: NameCollisionPolicy, - showSameFileAlreadyExistsNotification: Boolean = true - ) { - val uploads = localPaths.mapIndexed { index, localPath -> - val result = OCUpload(localPath, remotePaths[index], user.accountName).apply { - this.nameCollisionPolicy = nameCollisionPolicy - isUseWifiOnly = requiresWifi - isWhileChargingOnly = requiresCharging - uploadStatus = UploadStatus.UPLOAD_IN_PROGRESS - this.createdBy = createdBy - isCreateRemoteFolder = createRemoteFolder - localAction = localBehavior - } - - val id = uploadsStorageManager.uploadDao.insertOrReplace(result.toUploadEntity()) - result.uploadId = id - result - } + fun uploadAndCopyNewFilesForAlbum(data: OCUploadLocalPathData, albumName: String) { + val uploads = getUploadsFromLocalPaths(data) backgroundJobManager.startAlbumFilesUploadJob( - user, + data.user, uploads.getUploadIds(), - albumName, - showSameFileAlreadyExistsNotification + albumName ) } @@ -418,7 +377,7 @@ class FileUploadHelper { // For file conflicts check old file remote path upload.remotePath == currentUploadFileOperation.remotePath || upload.remotePath == currentUploadFileOperation.oldFile!! - .remotePath + .remotePath } else { upload.remotePath == currentUploadFileOperation.remotePath } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java index 6fb5f421af7c..4d99674e582d 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java @@ -95,6 +95,8 @@ import com.owncloud.android.ui.events.SearchEvent; import com.owncloud.android.ui.fragment.FileDetailsSharingProcessFragment; import com.owncloud.android.ui.fragment.OCFileListFragment; +import com.owncloud.android.ui.fragment.albums.AlbumItemsFragment; +import com.owncloud.android.ui.fragment.albums.AlbumsFragment; import com.owncloud.android.ui.trashbin.TrashbinActivity; import com.owncloud.android.utils.BitmapUtils; import com.owncloud.android.utils.DisplayUtils; @@ -126,6 +128,7 @@ import androidx.core.view.GravityCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hct.Hct; import kotlin.Unit; @@ -599,6 +602,17 @@ private void onNavigationItemClicked(final MenuItem menuItem) { openFavoritesTab(); } else if (itemId == R.id.nav_gallery) { openMediaTab(menuItem.getItemId()); + } else if (itemId == R.id.nav_album) { + if (this instanceof FileDisplayActivity) { + replaceAlbumFragment(); + } else { + // when user is not on FileDisplayActivity + // if user is on TrashbinActivity then we have to start activity again + Intent intent = new Intent(getApplicationContext(), FileDisplayActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + intent.setAction(FileDisplayActivity.ALBUMS); + startActivity(intent); + } } else if (itemId == R.id.nav_on_device) { showOnDeviceFiles(); } else if (itemId == R.id.nav_uploads) { @@ -671,6 +685,8 @@ private void handleBottomNavigationViewClicks() { startAssistantScreen(); } else if (menuItemId == R.id.nav_gallery) { openMediaTab(menuItem.getItemId()); + } else if (menuItemId == R.id.nav_album) { + replaceAlbumFragment(); } // Remove extra icon from the action bar @@ -1468,13 +1484,29 @@ public boolean isToolbarStyleSearch() { menuItemId == R.id.nav_personal_files; } - public boolean isMenuItemIdBelongsToSearchType() { - int menuItemId = getSelectedMenuItemId(); + public void replaceAlbumFragment() { + if (isAlbumsFragment()) { + return; + } + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.addToBackStack(null); + transaction.replace(R.id.left_fragment_container, AlbumsFragment.Companion.newInstance(false), AlbumsFragment.Companion.getTAG()); + transaction.commit(); + } + + public Optional getFragment(String tag, Class clazz) { + return Optional.ofNullable(getSupportFragmentManager().findFragmentByTag(tag)) + .filter(clazz::isInstance) + .map(clazz::cast); + } + + public boolean isAlbumsFragment() { + final var fragment = getFragment(AlbumsFragment.Companion.getTAG(), AlbumsFragment.class); + return fragment.map(AlbumsFragment::isVisible).orElse(false); + } - return menuItemId == R.id.nav_favorites || - menuItemId == R.id.nav_shared || - menuItemId == R.id.nav_on_device || - menuItemId == R.id.nav_recently_modified || - menuItemId == R.id.nav_gallery; + public boolean isAlbumItemsFragment() { + final var fragment = getFragment(AlbumItemsFragment.Companion.getTAG(), AlbumItemsFragment.class); + return fragment.map(AlbumItemsFragment::isVisible).orElse(false); } } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index 5da21cfaf08e..e47f3680cf74 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -601,7 +601,6 @@ class FileDisplayActivity : } ALBUMS == action -> { Log_OC.d(this, "Switch to list albums fragment") - menuItemId = R.id.nav_album replaceAlbumFragment() supportFragmentManager.executePendingTransactions() } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt index 864e856999c5..4ead38289eab 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/GalleryAdapter.kt @@ -226,6 +226,16 @@ class GalleryAdapter( ) } + @SuppressLint("NotifyDataSetChanged") + fun showAlbumItems(albumItems: List) { + files = albumItems.toGalleryItems() + notifyDataSetChanged() + } + + fun setCheckedItem(files: Set?) { + ocFileListDelegate.setCheckedItem(files) + } + // Set Image/Video List According to Selection of Hide/Show Image/Video @SuppressLint("NotifyDataSetChanged") private fun setMediaFilter( diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index 20703adbbf49..9152e79f8db9 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -68,7 +68,6 @@ import com.owncloud.android.datamodel.VirtualFolderType import com.owncloud.android.db.ProviderMeta import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.utils.Log_OC -import com.owncloud.android.lib.resources.albums.ReadAlbumItemsRemoteOperation import com.owncloud.android.lib.resources.albums.RemoveAlbumFileRemoteOperation import com.owncloud.android.lib.resources.albums.ToggleAlbumFavoriteRemoteOperation import com.owncloud.android.lib.resources.files.model.RemoteFile @@ -535,8 +534,8 @@ class AlbumItemsFragment : if (PreviewImageFragment.canBePreviewed(file)) { (mContainerActivity as FileDisplayActivity).startImagePreview( file, + !file.isDown, VirtualFolderType.ALBUM, - !file.isDown ) } else if (file.isDown) { if (canBePreviewed(file)) { diff --git a/app/src/main/res/layout/albums_grid_item.xml b/app/src/main/res/layout/albums_grid_item.xml index 43978abec0de..fe52311a7788 100644 --- a/app/src/main/res/layout/albums_grid_item.xml +++ b/app/src/main/res/layout/albums_grid_item.xml @@ -4,7 +4,8 @@ ~ SPDX-FileCopyrightText: 2026 TSI-mc ~ SPDX-License-Identifier: AGPL-3.0-or-later --> - + app:cardUseCompatPadding="true" + style="@style/Widget.Material3.CardView.Elevated"> - + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7112ba815312..13ef23ee0628 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ androidCommonLibraryVersion = "0.33.0" androidGifDrawableVersion = "1.2.31" androidImageCropperVersion = "4.7.0" -androidLibraryVersion ="30979181e38950ef61da58b269ac36ca7f6269b4" +androidLibraryVersion ="f10fdf53a0" androidPluginVersion = "9.0.1" androidsvgVersion = "1.4" androidxMediaVersion = "1.5.1" diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 537af1daa9f0..4aefd6cd1135 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -21394,17 +21394,14 @@ - - - - - - - - + + + + + + + + @@ -21794,6 +21791,14 @@ + + + + + + + + From 99317216a72e00a6cabdfefbd3b16f8ee1d2fbb3 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Thu, 19 Feb 2026 15:05:22 +0100 Subject: [PATCH 22/27] m3 card Signed-off-by: alperozturk96 --- .../adapter/albums/AlbumGridItemViewHolder.kt | 2 - .../ui/adapter/albums/AlbumItemViewHolder.kt | 1 - .../adapter/albums/AlbumListItemViewHolder.kt | 2 - .../ui/adapter/albums/AlbumsAdapter.kt | 3 +- app/src/main/res/layout/albums_grid_item.xml | 97 +++++++++---------- app/src/main/res/values/dims.xml | 6 +- app/src/main/res/values/strings.xml | 4 +- app/src/main/res/values/styles.xml | 8 ++ 8 files changed, 61 insertions(+), 62 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt index c2dea316e85e..152a3d3137ac 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumGridItemViewHolder.kt @@ -18,8 +18,6 @@ internal class AlbumGridItemViewHolder(private var binding: AlbumsGridItemBindin AlbumItemViewHolder { override val thumbnail: ImageView get() = binding.thumbnail - override val shimmerThumbnail: LoaderImageView - get() = binding.thumbnailShimmer override val albumName: TextView get() = binding.Filename override val albumInfo: TextView diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt index a531404e8e99..19c8e7114d38 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumItemViewHolder.kt @@ -13,7 +13,6 @@ import com.elyeproj.loaderviewlibrary.LoaderImageView interface AlbumItemViewHolder { val thumbnail: ImageView - val shimmerThumbnail: LoaderImageView val albumName: TextView val albumInfo: TextView } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt index a1bfa865942b..8797bf3aa9ef 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumListItemViewHolder.kt @@ -18,8 +18,6 @@ internal class AlbumListItemViewHolder(private var binding: AlbumsListItemBindin AlbumItemViewHolder { override val thumbnail: ImageView get() = binding.thumbnail - override val shimmerThumbnail: LoaderImageView - get() = binding.thumbnailShimmer override val albumName: TextView get() = binding.Filename override val albumInfo: TextView diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt index fa4be74ae6be..498ff26e3274 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt @@ -80,7 +80,7 @@ class AlbumsAdapter( asyncTasks, gridView, context, - gridViewHolder.shimmerThumbnail, + null, preferences, viewThemeUtils, syncedFolderProvider, @@ -89,7 +89,6 @@ class AlbumsAdapter( } else { gridViewHolder.thumbnail.setImageResource(R.drawable.file_image) gridViewHolder.thumbnail.visibility = View.VISIBLE - gridViewHolder.shimmerThumbnail.visibility = View.GONE } holder.itemView.setOnClickListener { albumFragmentInterface.onItemClick(file) } diff --git a/app/src/main/res/layout/albums_grid_item.xml b/app/src/main/res/layout/albums_grid_item.xml index fe52311a7788..fc8575953758 100644 --- a/app/src/main/res/layout/albums_grid_item.xml +++ b/app/src/main/res/layout/albums_grid_item.xml @@ -10,75 +10,68 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/ListItemLayout" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="@dimen/grid_container_margin" + android:layout_height="@dimen/album_container_height" + android:layout_marginStart="@dimen/grid_container_margin" android:layout_marginEnd="@dimen/grid_container_margin" - app:cardUseCompatPadding="true" + android:layout_marginTop="@dimen/grid_container_margin" + android:layout_margin="@dimen/grid_container_margin" + app:cardElevation="6dp" + app:cardUseCompatPadding="false" + android:backgroundTint="@color/bg_default" style="@style/Widget.Material3.CardView.Elevated"> - - + android:layout_height="match_parent"> - + app:layout_constraintHeight_percent="0.72" + app:shapeAppearanceOverlay="@style/ImageBottomRoundedShape"/> - - - + app:layout_constraintEnd_toEndOf="parent"> + + + + + + diff --git a/app/src/main/res/values/dims.xml b/app/src/main/res/values/dims.xml index d021ac9ac1c1..d8ff983bfef2 100644 --- a/app/src/main/res/values/dims.xml +++ b/app/src/main/res/values/dims.xml @@ -46,7 +46,7 @@ 10dp 2dp 22sp - 2dp + 16dp 4dp 18dp 6dp @@ -54,6 +54,10 @@ 120dp 80dp + 300dp + 100dp + + 140dp 180dp 2dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 469820e7c1df..e3e0af57c406 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1506,7 +1506,7 @@ File upload conflicts Upload conflicts detected. Open uploads to resolve. Resolve conflicts - Album + Albums Create album New album Rename album @@ -1527,7 +1527,7 @@ Add to Album File added successfully Unsupported media - Upload from cameraroll + Upload from camera roll Select images from account This name is already in use. Already exists. diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 17cdbaabca4a..b46fc5f264ad 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -473,4 +473,12 @@ @style/Theme.ownCloud.Launcher + + From b7ee07a96ae4301eff34a7655f3c64e3297fd7ba Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Thu, 19 Feb 2026 15:16:39 +0100 Subject: [PATCH 23/27] use fab Signed-off-by: alperozturk96 --- .../ui/fragment/albums/AlbumsFragment.kt | 47 +------------------ app/src/main/res/layout/albums_fragment.xml | 45 ++++++++---------- .../main/res/menu/fragment_create_album.xml | 16 ------- 3 files changed, 22 insertions(+), 86 deletions(-) delete mode 100644 app/src/main/res/menu/fragment_create_album.xml diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt index 8354c9c33962..f092269e3a8d 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt @@ -13,21 +13,11 @@ import android.content.Intent import android.content.res.Configuration import android.os.Bundle import android.os.Parcelable -import android.text.Spannable -import android.text.SpannableString -import android.text.style.ForegroundColorSpan import android.view.LayoutInflater -import android.view.Menu -import android.view.MenuInflater -import android.view.MenuItem import android.view.View import android.view.ViewGroup -import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat -import androidx.core.view.MenuHost -import androidx.core.view.MenuProvider import androidx.fragment.app.Fragment -import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager @@ -126,9 +116,10 @@ class AlbumsFragment : override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) showAppBar() - createMenu() setupContainingList() setupContent() + + viewThemeUtils.material.themeFAB(binding.createAlbum) binding.createAlbum.setOnClickListener { showCreateAlbumDialog() } @@ -141,40 +132,6 @@ class AlbumsFragment : } } - private fun createMenu() { - val menuHost: MenuHost = requireActivity() - menuHost.addMenuProvider( - object : MenuProvider { - override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { - menu.clear() // important: clears any existing activity menu - menuInflater.inflate(R.menu.fragment_create_album, menu) - - val addItem = menu.findItem(R.id.action_create_new_album) - val coloredTitle = SpannableString(addItem.title).apply { - setSpan( - ForegroundColorSpan(ContextCompat.getColor(requireContext(), R.color.primary)), - 0, - length, - Spannable.SPAN_INCLUSIVE_INCLUSIVE - ) - } - addItem.title = coloredTitle - } - - override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) { - R.id.action_create_new_album -> { - showCreateAlbumDialog() - true - } - - else -> false - } - }, - viewLifecycleOwner, - Lifecycle.State.RESUMED - ) - } - private fun showCreateAlbumDialog() { throttler.run("onCreateAlbumClick") { val fragment = requireActivity().supportFragmentManager.findFragmentByTag(CreateAlbumDialogFragment.TAG) diff --git a/app/src/main/res/layout/albums_fragment.xml b/app/src/main/res/layout/albums_fragment.xml index 14469cf62188..45a37bef2ac7 100644 --- a/app/src/main/res/layout/albums_fragment.xml +++ b/app/src/main/res/layout/albums_fragment.xml @@ -40,11 +40,12 @@ android:contentDescription="@string/create_album" android:scaleType="centerCrop" android:src="@drawable/bg_image_albums" - app:layout_constraintBottom_toTopOf="@+id/empty_album_label" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHeight_percent="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/albums_bg_image" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/empty_album_label" /> - + + + diff --git a/app/src/main/res/menu/fragment_create_album.xml b/app/src/main/res/menu/fragment_create_album.xml deleted file mode 100644 index c1397b8d652c..000000000000 --- a/app/src/main/res/menu/fragment_create_album.xml +++ /dev/null @@ -1,16 +0,0 @@ - -

- - - - \ No newline at end of file From 6edfad294d3661c4179a90faea00b90dd699dae7 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Thu, 19 Feb 2026 16:18:41 +0100 Subject: [PATCH 24/27] use action bottom sheet for album item actions Signed-off-by: alperozturk96 --- .../nextcloud/client/di/ComponentsModule.java | 4 + .../ui/bottomSheet/ActionBottomSheetData.kt | 13 +++ .../ui/bottomSheet/ActionsBottomSheet.kt | 73 +++++++++++++++++ .../ui/fragment/albums/AlbumItemsFragment.kt | 81 ++++++++----------- .../ui/fragment/albums/AlbumsFragment.kt | 27 ++++++- app/src/main/res/layout/albums_fragment.xml | 4 +- .../main/res/layout/bottom_sheet_actions.xml | 18 +++++ app/src/main/res/layout/item_action_list.xml | 15 ++++ app/src/main/res/layout/list_fragment.xml | 12 +++ .../main/res/menu/fragment_album_items.xml | 34 -------- app/src/main/res/values/strings.xml | 1 + 11 files changed, 195 insertions(+), 87 deletions(-) create mode 100644 app/src/main/java/com/nextcloud/ui/bottomSheet/ActionBottomSheetData.kt create mode 100644 app/src/main/java/com/nextcloud/ui/bottomSheet/ActionsBottomSheet.kt create mode 100644 app/src/main/res/layout/bottom_sheet_actions.xml create mode 100644 app/src/main/res/layout/item_action_list.xml delete mode 100644 app/src/main/res/menu/fragment_album_items.xml diff --git a/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java b/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java index c8a34f8e174a..192629da481a 100644 --- a/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java +++ b/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java @@ -33,6 +33,7 @@ import com.nextcloud.ui.SetOnlineStatusBottomSheet; import com.nextcloud.ui.SetStatusMessageBottomSheet; import com.nextcloud.ui.albumItemActions.AlbumItemActionsBottomSheet; +import com.nextcloud.ui.bottomSheet.ActionsBottomSheet; import com.nextcloud.ui.composeActivity.ComposeActivity; import com.nextcloud.ui.fileactions.FileActionsBottomSheet; import com.nextcloud.ui.trashbinFileActions.TrashbinFileActionsBottomSheet; @@ -474,6 +475,9 @@ abstract class ComponentsModule { @ContributesAndroidInjector abstract FileActionsBottomSheet fileActionsBottomSheet(); + @ContributesAndroidInjector + abstract ActionsBottomSheet actionsBottomSheet(); + @ContributesAndroidInjector abstract SendFilesDialog sendFilesDialog(); diff --git a/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionBottomSheetData.kt b/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionBottomSheetData.kt new file mode 100644 index 000000000000..5e5a0e7a679d --- /dev/null +++ b/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionBottomSheetData.kt @@ -0,0 +1,13 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 Alper Ozturk + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.nextcloud.ui.bottomSheet + +data class ActionBottomSheetData( + val title: String, + val onClick: () -> Unit +) diff --git a/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionsBottomSheet.kt b/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionsBottomSheet.kt new file mode 100644 index 000000000000..6467c972ce7d --- /dev/null +++ b/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionsBottomSheet.kt @@ -0,0 +1,73 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 Alper Ozturk + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.nextcloud.ui.bottomSheet + +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import com.nextcloud.android.common.ui.theme.utils.ColorRole +import com.nextcloud.client.di.Injectable +import com.owncloud.android.R +import com.owncloud.android.utils.theme.ViewThemeUtils +import javax.inject.Inject + +class ActionsBottomSheet( + private val actions: List, +) : BottomSheetDialogFragment(), Injectable { + + @Inject + lateinit var viewThemeUtils: ViewThemeUtils + + private var recyclerView: RecyclerView? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + val view = inflater.inflate(R.layout.bottom_sheet_actions, container, false) + recyclerView = view.findViewById(R.id.actions_list) + recyclerView?.layoutManager = LinearLayoutManager(context) + recyclerView?.adapter = ActionsAdapter(requireContext(), actions) + viewThemeUtils.platform.colorViewBackground(view, ColorRole.SURFACE) + return view + } + + private inner class ActionsAdapter( + val context: Context, + val actions: List, + ) : RecyclerView.Adapter() { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ActionViewHolder { + val view = LayoutInflater.from(context) + .inflate(R.layout.item_action_list, parent, false) + return ActionViewHolder(view) + } + + override fun onBindViewHolder(holder: ActionViewHolder, position: Int) { + val action = actions[position] + holder.textView.text = action.title + holder.itemView.setOnClickListener { + action.onClick.invoke() + dismiss() + } + } + + override fun getItemCount(): Int = actions.size + + inner class ActionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val textView: TextView = itemView.findViewById(R.id.action_text) + } + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index 9152e79f8db9..180d4531c20a 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -37,8 +37,6 @@ import androidx.annotation.VisibleForTesting import androidx.core.content.ContextCompat import androidx.core.view.MenuHost import androidx.core.view.MenuProvider -import androidx.core.view.get -import androidx.core.view.size import androidx.drawerlayout.widget.DrawerLayout import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity @@ -56,6 +54,8 @@ import com.nextcloud.client.network.ClientFactory.CreationException import com.nextcloud.client.preferences.AppPreferences import com.nextcloud.client.utils.Throttler import com.nextcloud.ui.albumItemActions.AlbumItemActionsBottomSheet +import com.nextcloud.ui.bottomSheet.ActionBottomSheetData +import com.nextcloud.ui.bottomSheet.ActionsBottomSheet import com.nextcloud.ui.fileactions.FileActionsBottomSheet import com.nextcloud.utils.extensions.getTypedActivity import com.nextcloud.utils.extensions.isDialogFragmentReady @@ -195,6 +195,11 @@ class AlbumItemsFragment : setupContainingList() setupContent() + viewThemeUtils.material.themeFAB(binding.addMedia) + binding.addMedia.setOnClickListener { + showActionsBottomSheet() + } + // if fragment is opened when new albums is created // then open gallery to choose media to add if (isNewAlbum) { @@ -231,60 +236,38 @@ class AlbumItemsFragment : (requireActivity() as FileDisplayActivity).addDrawerListener(mMultiChoiceModeListener) } + private fun showActionsBottomSheet() { + val actions = listOf( + ActionBottomSheetData(getString(R.string.album_upload_from_camera_roll), { openGalleryToAddMedia() }), + ActionBottomSheetData(getString(R.string.album_upload_from_account), { addFromCameraRoll() }), + ActionBottomSheetData(getString(R.string.more), { openAlbumActionsMenu() }) + ) + + ActionsBottomSheet(actions).show(parentFragmentManager, "actions_bottom_sheet") + } + + + private fun addFromCameraRoll() { + val intent = Intent(Intent.ACTION_GET_CONTENT).apply { + type = "*/*" + putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) + addCategory(Intent.CATEGORY_OPENABLE) + } + startActivityForResult( + Intent.createChooser(intent, getString(R.string.upload_chooser_title)), + REQUEST_CODE__SELECT_MEDIA_FROM_APPS + ) + } + private fun createMenu() { val menuHost: MenuHost = requireActivity() menuHost.addMenuProvider( object : MenuProvider { override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { - menu.clear() // important: clears any existing activity menu - menuInflater.inflate(R.menu.fragment_album_items, menu) - } - - override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) { - R.id.action_three_dot_icon -> { - openAlbumActionsMenu() - true - } - - R.id.action_add_from_camera_roll -> { - // we don't want quick media access bottom sheet for Android 13+ devices - // to avoid that we are not using image/* and video/* mime types - // we are validating mime types when selection is made - val intent = Intent(Intent.ACTION_GET_CONTENT).apply { - type = "*/*" - putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true) - addCategory(Intent.CATEGORY_OPENABLE) - } - startActivityForResult( - Intent.createChooser(intent, getString(R.string.upload_chooser_title)), - REQUEST_CODE__SELECT_MEDIA_FROM_APPS - ) - true - } - - R.id.action_add_from_account -> { - // open Gallery fragment as selection then add items to current album - openGalleryToAddMedia() - true - } - - else -> false + menu.clear() } - override fun onPrepareMenu(menu: Menu) { - super.onPrepareMenu(menu) - for (i in 0 until menu.size) { - val item = menu[i] - item.icon?.let { - item.setIcon( - viewThemeUtils.platform.colorDrawable( - it, - ContextCompat.getColor(requireContext(), R.color.fontAppbar) - ) - ) - } - } - } + override fun onMenuItemSelected(menuItem: MenuItem): Boolean = true }, viewLifecycleOwner, Lifecycle.State.RESUMED diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt index f092269e3a8d..038e7f476bf9 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt @@ -14,10 +14,16 @@ import android.content.res.Configuration import android.os.Bundle import android.os.Parcelable import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem import android.view.View import android.view.ViewGroup import androidx.core.content.res.ResourcesCompat +import androidx.core.view.MenuHost +import androidx.core.view.MenuProvider import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager @@ -118,9 +124,10 @@ class AlbumsFragment : showAppBar() setupContainingList() setupContent() + createMenu() - viewThemeUtils.material.themeFAB(binding.createAlbum) - binding.createAlbum.setOnClickListener { + viewThemeUtils.material.themeFAB(binding.addMediaFab) + binding.addMediaFab.setOnClickListener { showCreateAlbumDialog() } } @@ -204,6 +211,22 @@ class AlbumsFragment : } } + private fun createMenu() { + val menuHost: MenuHost = requireActivity() + menuHost.addMenuProvider( + object : MenuProvider { + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menu.clear() + } + + override fun onMenuItemSelected(menuItem: MenuItem): Boolean = true + }, + viewLifecycleOwner, + Lifecycle.State.RESUMED + ) + } + + private fun hideRefreshLayoutLoader() { binding.swipeContainingList.isRefreshing = false } diff --git a/app/src/main/res/layout/albums_fragment.xml b/app/src/main/res/layout/albums_fragment.xml index 45a37bef2ac7..448b20ab0773 100644 --- a/app/src/main/res/layout/albums_fragment.xml +++ b/app/src/main/res/layout/albums_fragment.xml @@ -77,14 +77,14 @@ diff --git a/app/src/main/res/layout/bottom_sheet_actions.xml b/app/src/main/res/layout/bottom_sheet_actions.xml new file mode 100644 index 000000000000..921abf178f45 --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_actions.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/app/src/main/res/layout/item_action_list.xml b/app/src/main/res/layout/item_action_list.xml new file mode 100644 index 000000000000..a777c7933282 --- /dev/null +++ b/app/src/main/res/layout/item_action_list.xml @@ -0,0 +1,15 @@ + + diff --git a/app/src/main/res/layout/list_fragment.xml b/app/src/main/res/layout/list_fragment.xml index decc1b16b676..519e90c4694a 100644 --- a/app/src/main/res/layout/list_fragment.xml +++ b/app/src/main/res/layout/list_fragment.xml @@ -35,4 +35,16 @@ layout="@layout/empty_list" /> + + diff --git a/app/src/main/res/menu/fragment_album_items.xml b/app/src/main/res/menu/fragment_album_items.xml deleted file mode 100644 index 004327bb63ed..000000000000 --- a/app/src/main/res/menu/fragment_album_items.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e3e0af57c406..f7047f706e25 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1508,6 +1508,7 @@ Resolve conflicts Albums Create album + Add media New album Rename album Enter your new Album name From 04168cf39c5fe0147057ecbb0803c63851039467 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Thu, 19 Feb 2026 16:39:55 +0100 Subject: [PATCH 25/27] use action bottom sheet for album item actions Signed-off-by: alperozturk96 --- .../nextcloud/client/di/ComponentsModule.java | 4 - .../client/jobs/upload/FileUploadHelper.kt | 2 +- .../ui/albumItemActions/AlbumItemAction.kt | 20 +++-- .../AlbumItemActionsBottomSheet.kt | 16 ++-- .../ui/bottomSheet/ActionBottomSheetData.kt | 13 ---- .../ui/bottomSheet/ActionsBottomSheet.kt | 73 ------------------- .../ui/activity/AlbumsPickerActivity.kt | 1 + .../ui/activity/FileDisplayActivity.kt | 1 + .../ui/adapter/albums/AlbumsAdapter.kt | 2 +- .../ui/fragment/albums/AlbumItemsFragment.kt | 29 +++----- .../ui/fragment/albums/AlbumsFragment.kt | 1 - app/src/main/res/values/ids.xml | 2 + app/src/main/res/values/strings.xml | 8 +- 13 files changed, 42 insertions(+), 130 deletions(-) delete mode 100644 app/src/main/java/com/nextcloud/ui/bottomSheet/ActionBottomSheetData.kt delete mode 100644 app/src/main/java/com/nextcloud/ui/bottomSheet/ActionsBottomSheet.kt diff --git a/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java b/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java index 192629da481a..c8a34f8e174a 100644 --- a/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java +++ b/app/src/main/java/com/nextcloud/client/di/ComponentsModule.java @@ -33,7 +33,6 @@ import com.nextcloud.ui.SetOnlineStatusBottomSheet; import com.nextcloud.ui.SetStatusMessageBottomSheet; import com.nextcloud.ui.albumItemActions.AlbumItemActionsBottomSheet; -import com.nextcloud.ui.bottomSheet.ActionsBottomSheet; import com.nextcloud.ui.composeActivity.ComposeActivity; import com.nextcloud.ui.fileactions.FileActionsBottomSheet; import com.nextcloud.ui.trashbinFileActions.TrashbinFileActionsBottomSheet; @@ -475,9 +474,6 @@ abstract class ComponentsModule { @ContributesAndroidInjector abstract FileActionsBottomSheet fileActionsBottomSheet(); - @ContributesAndroidInjector - abstract ActionsBottomSheet actionsBottomSheet(); - @ContributesAndroidInjector abstract SendFilesDialog sendFilesDialog(); diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt index c4bd3818e590..4cbe258b5873 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt @@ -377,7 +377,7 @@ class FileUploadHelper { // For file conflicts check old file remote path upload.remotePath == currentUploadFileOperation.remotePath || upload.remotePath == currentUploadFileOperation.oldFile!! - .remotePath + .remotePath } else { upload.remotePath == currentUploadFileOperation.remotePath } diff --git a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt index 9d31afca3def..b5b313f895ac 100644 --- a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt +++ b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemAction.kt @@ -7,21 +7,27 @@ package com.nextcloud.ui.albumItemActions -import androidx.annotation.DrawableRes -import androidx.annotation.IdRes -import androidx.annotation.StringRes import com.owncloud.android.R -enum class AlbumItemAction(@IdRes val id: Int, @StringRes val title: Int, @DrawableRes val icon: Int? = null) { +enum class AlbumItemAction(val id: Int, val titleId: Int, val iconId: Int) { + UPLOAD_FROM_CAMERA_ROLL( + R.id.action_upload_from_camera_roll, + R.string.upload_direct_camera_upload, + R.drawable.ic_camera + ), + SELECT_IMAGES_FROM_ACCOUNT( + R.id.action_select_images_from_account, + R.string.album_upload_from_account, + R.drawable.file_image + ), RENAME_ALBUM(R.id.action_rename_file, R.string.album_rename, R.drawable.ic_edit), DELETE_ALBUM(R.id.action_delete, R.string.album_delete, R.drawable.ic_delete); companion object { - /** - * All file actions, in the order they should be displayed - */ @JvmField val SORTED_VALUES = listOf( + UPLOAD_FROM_CAMERA_ROLL, + SELECT_IMAGES_FROM_ACCOUNT, RENAME_ALBUM, DELETE_ALBUM ) diff --git a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt index 7c3c7e6d7572..8a31fd89355f 100644 --- a/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt +++ b/app/src/main/java/com/nextcloud/ui/albumItemActions/AlbumItemActionsBottomSheet.kt @@ -96,15 +96,13 @@ class AlbumItemActionsBottomSheet : root.setOnClickListener { dispatchActionClick(action.id) } - text.setText(action.title) - if (action.icon != null) { - val drawable = - viewThemeUtils.platform.tintDrawable( - requireContext(), - AppCompatResources.getDrawable(requireContext(), action.icon)!! - ) - icon.setImageDrawable(drawable) - } + text.setText(action.titleId) + val drawable = + viewThemeUtils.platform.tintDrawable( + requireContext(), + AppCompatResources.getDrawable(requireContext(), action.iconId)!! + ) + icon.setImageDrawable(drawable) } return itemBinding.root } diff --git a/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionBottomSheetData.kt b/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionBottomSheetData.kt deleted file mode 100644 index 5e5a0e7a679d..000000000000 --- a/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionBottomSheetData.kt +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Nextcloud - Android Client - * - * SPDX-FileCopyrightText: 2026 Alper Ozturk - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -package com.nextcloud.ui.bottomSheet - -data class ActionBottomSheetData( - val title: String, - val onClick: () -> Unit -) diff --git a/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionsBottomSheet.kt b/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionsBottomSheet.kt deleted file mode 100644 index 6467c972ce7d..000000000000 --- a/app/src/main/java/com/nextcloud/ui/bottomSheet/ActionsBottomSheet.kt +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Nextcloud - Android Client - * - * SPDX-FileCopyrightText: 2026 Alper Ozturk - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -package com.nextcloud.ui.bottomSheet - -import android.content.Context -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.google.android.material.bottomsheet.BottomSheetDialogFragment -import com.nextcloud.android.common.ui.theme.utils.ColorRole -import com.nextcloud.client.di.Injectable -import com.owncloud.android.R -import com.owncloud.android.utils.theme.ViewThemeUtils -import javax.inject.Inject - -class ActionsBottomSheet( - private val actions: List, -) : BottomSheetDialogFragment(), Injectable { - - @Inject - lateinit var viewThemeUtils: ViewThemeUtils - - private var recyclerView: RecyclerView? = null - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - val view = inflater.inflate(R.layout.bottom_sheet_actions, container, false) - recyclerView = view.findViewById(R.id.actions_list) - recyclerView?.layoutManager = LinearLayoutManager(context) - recyclerView?.adapter = ActionsAdapter(requireContext(), actions) - viewThemeUtils.platform.colorViewBackground(view, ColorRole.SURFACE) - return view - } - - private inner class ActionsAdapter( - val context: Context, - val actions: List, - ) : RecyclerView.Adapter() { - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ActionViewHolder { - val view = LayoutInflater.from(context) - .inflate(R.layout.item_action_list, parent, false) - return ActionViewHolder(view) - } - - override fun onBindViewHolder(holder: ActionViewHolder, position: Int) { - val action = actions[position] - holder.textView.text = action.title - holder.itemView.setOnClickListener { - action.onClick.invoke() - dismiss() - } - } - - override fun getItemCount(): Int = actions.size - - inner class ActionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val textView: TextView = itemView.findViewById(R.id.action_text) - } - } -} diff --git a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt index cb96313644e5..31ac71189202 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/AlbumsPickerActivity.kt @@ -88,6 +88,7 @@ class AlbumsPickerActivity : if (action == CHOOSE_ALBUM) { captionText = resources.getText(R.string.album_picker_toolbar_title).toString() } else if (action == CHOOSE_MEDIA_FILES) { + // FIXME: hide fab button captionText = resources.getText(R.string.media_picker_toolbar_title).toString() } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index e47f3680cf74..8b0d74417abf 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -599,6 +599,7 @@ class FileDisplayActivity : leftFragment = GroupfolderListFragment() supportFragmentManager.executePendingTransactions() } + ALBUMS == action -> { Log_OC.d(this, "Switch to list albums fragment") replaceAlbumFragment() diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt index 498ff26e3274..a7e9b2313185 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/albums/AlbumsAdapter.kt @@ -80,7 +80,7 @@ class AlbumsAdapter( asyncTasks, gridView, context, - null, + null, preferences, viewThemeUtils, syncedFolderProvider, diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index 180d4531c20a..80618019c57d 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -54,8 +54,6 @@ import com.nextcloud.client.network.ClientFactory.CreationException import com.nextcloud.client.preferences.AppPreferences import com.nextcloud.client.utils.Throttler import com.nextcloud.ui.albumItemActions.AlbumItemActionsBottomSheet -import com.nextcloud.ui.bottomSheet.ActionBottomSheetData -import com.nextcloud.ui.bottomSheet.ActionsBottomSheet import com.nextcloud.ui.fileactions.FileActionsBottomSheet import com.nextcloud.utils.extensions.getTypedActivity import com.nextcloud.utils.extensions.isDialogFragmentReady @@ -197,7 +195,7 @@ class AlbumItemsFragment : viewThemeUtils.material.themeFAB(binding.addMedia) binding.addMedia.setOnClickListener { - showActionsBottomSheet() + openAlbumActionsMenu() } // if fragment is opened when new albums is created @@ -236,17 +234,6 @@ class AlbumItemsFragment : (requireActivity() as FileDisplayActivity).addDrawerListener(mMultiChoiceModeListener) } - private fun showActionsBottomSheet() { - val actions = listOf( - ActionBottomSheetData(getString(R.string.album_upload_from_camera_roll), { openGalleryToAddMedia() }), - ActionBottomSheetData(getString(R.string.album_upload_from_account), { addFromCameraRoll() }), - ActionBottomSheetData(getString(R.string.more), { openAlbumActionsMenu() }) - ) - - ActionsBottomSheet(actions).show(parentFragmentManager, "actions_bottom_sheet") - } - - private fun addFromCameraRoll() { val intent = Intent(Intent.ACTION_GET_CONTENT).apply { type = "*/*" @@ -290,7 +277,16 @@ class AlbumItemsFragment : } private fun onAlbumActionChosen(@IdRes itemId: Int): Boolean = when (itemId) { - // action to rename album + R.id.action_upload_from_camera_roll -> { + addFromCameraRoll() + true + } + + R.id.action_select_images_from_account -> { + openGalleryToAddMedia() + true + } + R.id.action_rename_file -> { CreateAlbumDialogFragment.newInstance(albumName) .show( @@ -300,7 +296,6 @@ class AlbumItemsFragment : true } - // action to delete album R.id.action_delete -> { showConfirmationDialog(true, null) true @@ -518,7 +513,7 @@ class AlbumItemsFragment : (mContainerActivity as FileDisplayActivity).startImagePreview( file, !file.isDown, - VirtualFolderType.ALBUM, + VirtualFolderType.ALBUM ) } else if (file.isDown) { if (canBePreviewed(file)) { diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt index 038e7f476bf9..fd6f1cf1d79e 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumsFragment.kt @@ -226,7 +226,6 @@ class AlbumsFragment : ) } - private fun hideRefreshLayoutLoader() { binding.swipeContainingList.isRefreshing = false } diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml index 7093928147b7..24008a6445b2 100644 --- a/app/src/main/res/values/ids.xml +++ b/app/src/main/res/values/ids.xml @@ -33,4 +33,6 @@ + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f7047f706e25..48e32f1d0bbc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1515,14 +1515,14 @@ Album name cannot be empty Album name cannot start with invalid char Add more - Rename Album + Rename album Rename - Delete Album + Delete album Failed to delete few of the files. %d Items — %s Album already exists - Pick Album - Pick Media Files + Pick album + Pick media files Create Albums for your Photos You can organize all your photos in as many albums as you like. You haven\'t created an album yet. Add to Album From 725e336210bdd31084c0e53afcd8d69b7a0e9098 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Fri, 20 Feb 2026 08:38:26 +0100 Subject: [PATCH 26/27] fix fab button appereance Signed-off-by: alperozturk96 --- .../ui/fragment/albums/AlbumItemsFragment.kt | 36 ++++++++++++++++--- app/src/main/res/drawable/ic_album.xml | 15 ++++++++ app/src/main/res/layout/list_fragment.xml | 12 ------- .../main/res/menu/bottom_navigation_menu.xml | 2 +- .../main/res/menu/partial_drawer_entries.xml | 2 +- 5 files changed, 49 insertions(+), 18 deletions(-) create mode 100644 app/src/main/res/drawable/ic_album.xml diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt index 80618019c57d..ccfe535bf0bb 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsFragment.kt @@ -27,6 +27,7 @@ import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.widget.AbsListView +import android.widget.RelativeLayout import androidx.activity.result.ActivityResult import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts @@ -45,6 +46,7 @@ import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.appbar.AppBarLayout +import com.google.android.material.floatingactionbutton.FloatingActionButton import com.nextcloud.client.account.User import com.nextcloud.client.account.UserAccountManager import com.nextcloud.client.di.Injectable @@ -148,6 +150,8 @@ class AlbumItemsFragment : private val refreshFlow = MutableSharedFlow(extraBufferCapacity = 1) + private lateinit var addMediaFab: FloatingActionButton + override fun onAttach(context: Context) { super.onAttach(context) try { @@ -193,10 +197,7 @@ class AlbumItemsFragment : setupContainingList() setupContent() - viewThemeUtils.material.themeFAB(binding.addMedia) - binding.addMedia.setOnClickListener { - openAlbumActionsMenu() - } + createAddMediaButton() // if fragment is opened when new albums is created // then open gallery to choose media to add @@ -216,6 +217,33 @@ class AlbumItemsFragment : } } + private fun createAddMediaButton() { + addMediaFab = FloatingActionButton(requireContext()).apply { + id = View.generateViewId() + setImageResource(R.drawable.ic_plus) + contentDescription = getString(R.string.add_media) + + viewThemeUtils.material.themeFAB(this) + + setOnClickListener { + openAlbumActionsMenu() + } + } + + val layoutParams = RelativeLayout.LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ).apply { + addRule(RelativeLayout.ALIGN_PARENT_END) + addRule(RelativeLayout.ALIGN_PARENT_BOTTOM) + + marginEnd = resources.getDimensionPixelSize(R.dimen.standard_margin) + bottomMargin = resources.getDimensionPixelSize(R.dimen.bottom_navigation_view_margin) + } + + binding.listFragmentLayout.addView(addMediaFab, layoutParams) + } + private fun showAppBar() { if (requireActivity() is FileDisplayActivity) { val appBarLayout = requireActivity().findViewById(R.id.appbar) diff --git a/app/src/main/res/drawable/ic_album.xml b/app/src/main/res/drawable/ic_album.xml new file mode 100644 index 000000000000..2897c2926ff4 --- /dev/null +++ b/app/src/main/res/drawable/ic_album.xml @@ -0,0 +1,15 @@ + + + + diff --git a/app/src/main/res/layout/list_fragment.xml b/app/src/main/res/layout/list_fragment.xml index 519e90c4694a..decc1b16b676 100644 --- a/app/src/main/res/layout/list_fragment.xml +++ b/app/src/main/res/layout/list_fragment.xml @@ -35,16 +35,4 @@ layout="@layout/empty_list" /> - - diff --git a/app/src/main/res/menu/bottom_navigation_menu.xml b/app/src/main/res/menu/bottom_navigation_menu.xml index 3943106dfed5..f68e66c84954 100644 --- a/app/src/main/res/menu/bottom_navigation_menu.xml +++ b/app/src/main/res/menu/bottom_navigation_menu.xml @@ -34,7 +34,7 @@
diff --git a/app/src/main/res/menu/partial_drawer_entries.xml b/app/src/main/res/menu/partial_drawer_entries.xml index a2d73c181abc..1bdb377dbb7b 100644 --- a/app/src/main/res/menu/partial_drawer_entries.xml +++ b/app/src/main/res/menu/partial_drawer_entries.xml @@ -65,7 +65,7 @@ android:title="@string/drawer_item_gallery" /> Date: Fri, 20 Feb 2026 11:22:23 +0100 Subject: [PATCH 27/27] Update app/src/main/res/values/strings.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Laura Kramolis Signed-off-by: Alper Öztürk <67455295+alperozturk96@users.noreply.github.com> --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 48e32f1d0bbc..7b8a84340846 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1523,7 +1523,7 @@ Album already exists Pick album Pick media files - Create Albums for your Photos + Create albums for your photos You can organize all your photos in as many albums as you like. You haven\'t created an album yet. Add to Album File added successfully