diff --git a/app/src/main/java/com/nextcloud/ui/fileDetail/FileDetailPreview.kt b/app/src/main/java/com/nextcloud/ui/fileDetail/FileDetailPreview.kt index fd8630800dac..32d67909ae1a 100644 --- a/app/src/main/java/com/nextcloud/ui/fileDetail/FileDetailPreview.kt +++ b/app/src/main/java/com/nextcloud/ui/fileDetail/FileDetailPreview.kt @@ -10,6 +10,7 @@ package com.nextcloud.ui.fileDetail import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.widget.ImageView +import com.nextcloud.utils.extensions.getBigThumbnail import com.nextcloud.utils.extensions.getSmallThumbnail import com.nextcloud.utils.thumbnail.FolderThumbnailGenerator import com.nextcloud.utils.thumbnail.VideoOverlayGenerator @@ -32,7 +33,7 @@ class FileDetailPreview( return } - val thumbnail = file.getSmallThumbnail() + val thumbnail = file.getBigThumbnail() ?: file.getSmallThumbnail() if (thumbnail == null) { setIcon(MimeTypeUtil.getFileTypeIcon(file.mimeType, file.fileName, toolbarActivity, viewThemeUtils)) } else { @@ -53,7 +54,7 @@ class FileDetailPreview( private fun setIcon(icon: Drawable) { previewImageView?.setImageDrawable(icon) - val padding = toolbarActivity.resources.getDimensionPixelSize(R.dimen.standard_double_padding) + val padding = toolbarActivity.resources.getDimensionPixelSize(R.dimen.file_details_preview_icon_padding) applyScaling(ImageView.ScaleType.FIT_CENTER, padding) } diff --git a/app/src/main/java/com/nextcloud/ui/fileDetail/HeaderFirstNestedScrollView.kt b/app/src/main/java/com/nextcloud/ui/fileDetail/HeaderFirstNestedScrollView.kt new file mode 100644 index 000000000000..782997440288 --- /dev/null +++ b/app/src/main/java/com/nextcloud/ui/fileDetail/HeaderFirstNestedScrollView.kt @@ -0,0 +1,33 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 Alper Ozturk + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package com.nextcloud.ui.fileDetail + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import androidx.core.widget.NestedScrollView + +class HeaderFirstNestedScrollView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : NestedScrollView(context, attrs, defStyleAttr) { + + override fun onNestedPreScroll(target: View, dx: Int, dy: Int, consumed: IntArray, type: Int) { + super.onNestedPreScroll(target, dx, dy, consumed, type) + + val remainingDy = dy - consumed[1] + if (remainingDy <= 0) { + return + } + + val scrollYBefore = scrollY + scrollBy(0, remainingDy) + consumed[1] += scrollY - scrollYBefore + } +} 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 8fc39287dd64..593c9c60e9cd 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 @@ -2065,7 +2065,7 @@ class FileDisplayActivity : setLeftFragment(detailFragment, false) // swap now, so no frame shows the list without its sort row supportFragmentManager.executePendingTransactions() - configureToolbarForPreview(file) + updateActionBarForFile(file) } /** diff --git a/app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java index 814bc39aef4a..1d0c1d3a182f 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java @@ -15,7 +15,6 @@ import android.animation.AnimatorInflater; import android.annotation.SuppressLint; -import android.graphics.Color; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; @@ -347,13 +346,7 @@ public final void hideInfoBox() { } public void setPreviewImageVisibility(boolean isVisibility) { - if (mPreviewImage != null && mPreviewImageContainer != null) { - if (isVisibility) { - mToolbar.setTitle(null); - mToolbar.setBackgroundColor(Color.TRANSPARENT); - } else { - mToolbar.setBackgroundResource(R.color.appbar); - } + if (mPreviewImageContainer != null) { mPreviewImageContainer.setVisibility(isVisibility ? View.VISIBLE : View.GONE); } } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java index 8c7dafe2de80..95a3d9c86931 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -241,6 +241,8 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, binding = FileDetailsFragmentBinding.inflate(inflater, container, false); view = binding.getRoot(); + binding.detailContainer.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, + oldBottom) -> fitTabContentToViewport()); if (getFile() == null || user == null) { showEmptyContent(); @@ -843,6 +845,27 @@ public void showHideFragmentView(boolean isFragmentReplaced) { binding.sharingFrameContainer.setVisibility(isFragmentReplaced ? View.VISIBLE : View.GONE); } + private void fitTabContentToViewport() { + int tabLayoutHeight = binding.tabLayout.getVisibility() == View.VISIBLE ? binding.tabLayout.getHeight() : 0; + int tabContentHeight = binding.detailContainer.getHeight() - tabLayoutHeight; + if (tabContentHeight <= 0) { + return; + } + + setHeight(binding.pager, tabContentHeight); + setHeight(binding.sharingFrameContainer, tabContentHeight); + } + + private void setHeight(View target, int height) { + ViewGroup.LayoutParams params = target.getLayoutParams(); + if (params.height == height) { + return; + } + + params.height = height; + target.post(target::requestLayout); + } + /** * open the new sharing screen process to modify the created share * diff --git a/app/src/main/res/drawable/preview_image_gradient_shape.xml b/app/src/main/res/drawable/preview_image_gradient_shape.xml deleted file mode 100644 index aa5b7830fd30..000000000000 --- a/app/src/main/res/drawable/preview_image_gradient_shape.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/layout/file_details_fragment.xml b/app/src/main/res/layout/file_details_fragment.xml index 80cb6a7420bb..39e1b2eb4951 100644 --- a/app/src/main/res/layout/file_details_fragment.xml +++ b/app/src/main/res/layout/file_details_fragment.xml @@ -3,235 +3,242 @@ ~ Nextcloud - Android Client ~ ~ SPDX-FileCopyrightText: 2021 TSI-mc + ~ SPDX-FileCopyrightText: 2025 Alper Ozturk ~ SPDX-FileCopyrightText: 2019 Tobias Kaminsky ~ SPDX-FileCopyrightText: 2018 Andy Scherzinger ~ SPDX-FileCopyrightText: 2013 ownCloud Inc. ~ SPDX-FileCopyrightText: 2012 Bartosz Przybylski ~ SPDX-License-Identifier: GPL-2.0-only AND (AGPL-3.0-or-later OR GPL-2.0-only) --> - + android:layout_height="match_parent"> + android:orientation="vertical"> - - + android:orientation="horizontal"> - - + android:layout_weight="1" + android:padding="@dimen/standard_padding" + android:orientation="vertical"> - - + + + android:gravity="center" + android:orientation="horizontal"> + + + + + + + + + + + + + + + + + + + + + + + + + + android:text="@string/downloader_download_in_progress_ticker" /> - - - + android:indeterminate="false" + android:layout_marginTop="@dimen/standard_quarter_margin" + app:indicatorColor="?attr/colorPrimary" + app:trackColor="?attr/colorSurfaceContainerHighest" /> - + - - - - - + android:id="@+id/syncBlock" + android:layout_width="match_parent" + android:orientation="vertical" + android:layout_height="wrap_content"> - + android:layout_height="1dp" + android:background="@color/list_divider_background" /> - + android:orientation="horizontal" + android:paddingStart="@dimen/standard_quarter_padding" + android:paddingTop="@dimen/standard_half_padding" + android:paddingEnd="@dimen/zero" + android:paddingBottom="@dimen/standard_half_padding"> - + - + - + + + - - - + android:background="@color/bg_default" + app:tabGravity="center" + app:tabMode="fixed" + app:tabTextColor="@color/text_color" + app:tabInlineLabel="true" /> + + - + - - - + - - - - - - - - - - - + diff --git a/app/src/main/res/layout/toolbar_standard.xml b/app/src/main/res/layout/toolbar_standard.xml index e07ee7726dd3..34d6fd1468ea 100644 --- a/app/src/main/res/layout/toolbar_standard.xml +++ b/app/src/main/res/layout/toolbar_standard.xml @@ -77,7 +77,8 @@ @@ -85,14 +86,9 @@ - - + + + 164dp + 32dp + diff --git a/app/src/main/res/values/dims.xml b/app/src/main/res/values/dims.xml index 16afb882cbe3..5e1b896cb3e5 100644 --- a/app/src/main/res/values/dims.xml +++ b/app/src/main/res/values/dims.xml @@ -13,6 +13,8 @@ 164dp + 112dp + 16dp 12sp 20dp 40dp