From 9f7ce5d1dcfeb6b61015f0c4b92177b752f77af3 Mon Sep 17 00:00:00 2001 From: Vincent TE Date: Fri, 3 May 2024 13:21:49 +0200 Subject: [PATCH 1/2] Adding margins when we have an inset --- .../drive/ui/fileList/preview/PreviewPDFActivity.kt | 8 +++++++- .../drive/ui/fileList/preview/PreviewSliderFragment.kt | 9 ++++----- .../java/com/infomaniak/drive/views/PreviewHeaderView.kt | 6 +++++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewPDFActivity.kt b/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewPDFActivity.kt index 88d12f96df..d21c7a0c86 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewPDFActivity.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewPDFActivity.kt @@ -37,6 +37,7 @@ import com.infomaniak.drive.utils.Utils.ROOT_ID import com.infomaniak.drive.views.FileInfoActionsView.OnItemClickListener import com.infomaniak.lib.core.utils.SnackbarUtils.showSnackbar import com.infomaniak.lib.core.utils.getFileNameAndSize +import com.infomaniak.lib.core.utils.setMargins import io.sentry.Sentry import io.sentry.SentryLevel @@ -86,7 +87,12 @@ class PreviewPDFActivity : AppCompatActivity(), OnItemClickListener { override fun onStart() { super.onStart() - binding.header.setupWindowInsetsListener(rootView = binding.root, bottomSheetView = binding.bottomSheetFileInfos) + binding.header.setupWindowInsetsListener( + rootView = binding.root, + bottomSheetView = binding.bottomSheetFileInfos + ) { + binding.pdfContainer.setMargins(right = it?.right ?: 0) + } setupStatusBarForPreview() } diff --git a/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewSliderFragment.kt b/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewSliderFragment.kt index e7f6756ca7..ef5dc21cfb 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewSliderFragment.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewSliderFragment.kt @@ -50,10 +50,7 @@ import com.infomaniak.drive.utils.Utils.openWith import com.infomaniak.drive.views.FileInfoActionsView import com.infomaniak.drive.views.PreviewHeaderView import com.infomaniak.lib.core.models.ApiResponse -import com.infomaniak.lib.core.utils.getBackNavigationResult -import com.infomaniak.lib.core.utils.safeNavigate -import com.infomaniak.lib.core.utils.toggleEdgeToEdge -import com.infomaniak.lib.core.utils.whenResultIsOk +import com.infomaniak.lib.core.utils.* import io.sentry.Sentry import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -187,7 +184,9 @@ class PreviewSliderFragment : Fragment(), FileInfoActionsView.OnItemClickListene binding.header.setupWindowInsetsListener( rootView = root, bottomSheetView = binding.bottomSheetFileInfos, - ) + ) { + binding.pdfContainer.setMargins(right = it?.right ?: 0) + } } override fun onStart() { diff --git a/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt b/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt index 71588c1911..e4ee7eebd8 100644 --- a/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt +++ b/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt @@ -23,6 +23,7 @@ import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet +import androidx.core.graphics.Insets import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.isGone @@ -81,11 +82,13 @@ class PreviewHeaderView @JvmOverloads constructor( fun setupWindowInsetsListener( rootView: View, bottomSheetView: View, + callback: ((insets: Insets?) -> Unit)? = null, ) { val bottomSheetBehavior = BottomSheetBehavior.from(bottomSheetView) ViewCompat.setOnApplyWindowInsetsListener(rootView) { _, windowInsets -> with(windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())) { - setMargins(left = left, top = top, right = right) + // We add the same margins here on the left and right to have the view centered + setMargins(left = left + right, top = top, right = left + right) val topOffset = getTopOffset(bottomSheetView) bottomSheetBehavior.apply { peekHeight = getDefaultPeekHeight() + bottom @@ -98,6 +101,7 @@ class PreviewHeaderView @JvmOverloads constructor( // Add padding to the bottom to allow the last element of the // list to be displayed right over the android navigation bar bottomSheetView.setPadding(0, 0, 0, bottom) + callback?.invoke(this) } windowInsets From f8654cab57c5afa2058359e6f086b0e740faf9e4 Mon Sep 17 00:00:00 2001 From: Kevin Boulongne <1788629+KevinBoulongne@users.noreply.github.com> Date: Mon, 6 May 2024 08:43:53 +0200 Subject: [PATCH 2/2] Apply suggestions from code review --- .../drive/ui/fileList/preview/PreviewPDFActivity.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewPDFActivity.kt b/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewPDFActivity.kt index d21c7a0c86..76c91d1636 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewPDFActivity.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/fileList/preview/PreviewPDFActivity.kt @@ -85,14 +85,17 @@ class PreviewPDFActivity : AppCompatActivity(), OnItemClickListener { bottomSheetFileInfos.initOnClickListener(this@PreviewPDFActivity) } - override fun onStart() { + override fun onStart() = with(binding) { + super.onStart() - binding.header.setupWindowInsetsListener( - rootView = binding.root, - bottomSheetView = binding.bottomSheetFileInfos + + header.setupWindowInsetsListener( + rootView = root, + bottomSheetView = bottomSheetFileInfos, ) { - binding.pdfContainer.setMargins(right = it?.right ?: 0) + pdfContainer.setMargins(right = it?.right ?: 0) } + setupStatusBarForPreview() }