From 758eb39a5e89a781fc9862acd2cd410e258ad022 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Fri, 27 Jun 2025 16:42:16 +0200 Subject: [PATCH 1/3] applyDisplayCutOutTopPadding Signed-off-by: alperozturk --- .../ui/preview/PreviewImageActivity.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt index 9c08c3b1d14f..e110980b7a9e 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt @@ -123,6 +123,29 @@ class PreviewImageActivity : } observeWorkerState() + applyDisplayCutOutTopPadding() + } + + private fun applyDisplayCutOutTopPadding() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { + return + } + + window.decorView.setOnApplyWindowInsetsListener { view, insets -> + val displayCutout = insets.displayCutout + if (displayCutout != null) { + val safeInsetTop = displayCutout.safeInsetTop + val viewPager = findViewById(R.id.fragmentPager) + viewPager.setPadding( + viewPager.paddingLeft, + safeInsetTop, + viewPager.paddingRight, + viewPager.paddingBottom, + ) + } + + view.onApplyWindowInsets(insets) + } } fun toggleActionBarVisibility(hide: Boolean) { From 8bb5c03a16bf9746f4bdb935fe4a231dc5023388 Mon Sep 17 00:00:00 2001 From: alperozturk Date: Thu, 28 Aug 2025 15:15:22 +0200 Subject: [PATCH 2/3] fix: extended list fragment on key listener Signed-off-by: alperozturk --- .../ui/preview/PreviewImageActivity.kt | 51 +++++-------------- 1 file changed, 14 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt index e110980b7a9e..a6fabb6e0ebc 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt @@ -14,9 +14,10 @@ import android.os.Build import android.os.Bundle import android.view.MenuItem import android.view.View -import android.view.WindowInsets -import android.view.WindowInsetsController import androidx.appcompat.app.ActionBar +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat import androidx.drawerlayout.widget.DrawerLayout import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.viewpager2.widget.ViewPager2 @@ -523,9 +524,9 @@ class PreviewImageActivity : ) == 0 if (visible) { - hideSystemUI(fullScreenAnchorView!!) + hideSystemUI() } else { - showSystemUI(fullScreenAnchorView!!) + showSystemUI() } } @@ -559,42 +560,18 @@ class PreviewImageActivity : // TODO Auto-generated method stub } - private fun hideSystemUI(anchorView: View) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - window.insetsController?.let { controller -> - controller.hide(WindowInsets.Type.systemBars()) - controller.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE - } - } else { - @Suppress("DEPRECATION") - anchorView.systemUiVisibility = ( - View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hides NAVIGATION BAR; Android >= 4.0 - or View.SYSTEM_UI_FLAG_FULLSCREEN // hides STATUS BAR; Android >= 4.1 - or View.SYSTEM_UI_FLAG_IMMERSIVE // stays interactive; Android >= 4.4 - or View.SYSTEM_UI_FLAG_LAYOUT_STABLE // draw full window; Android >= 4.1 - or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // draw full window; Android >= 4.1 - or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - ) + + private fun hideSystemUI() { + WindowCompat.setDecorFitsSystemWindows(window, false) + WindowInsetsControllerCompat(window, window.decorView).let { controller -> + controller.hide(WindowInsetsCompat.Type.systemBars()) + controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE } } - private fun showSystemUI(anchorView: View) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - window.insetsController?.let { controller -> - controller.show(WindowInsets.Type.systemBars()) - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - controller.systemBarsBehavior = WindowInsetsController.BEHAVIOR_DEFAULT - } - } - } else { - @Suppress("DEPRECATION") - anchorView.systemUiVisibility = ( - View.SYSTEM_UI_FLAG_LAYOUT_STABLE // draw full window; Android >= 4.1 - or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // draw full window; Android >= 4.1 - or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION - ) - } + private fun showSystemUI() { + WindowCompat.setDecorFitsSystemWindows(window, true) + WindowInsetsControllerCompat(window, window.decorView).show(WindowInsetsCompat.Type.systemBars()) } companion object { From 7c1127db97edc199de4ffac5f235ad5cf297f94e Mon Sep 17 00:00:00 2001 From: alperozturk Date: Thu, 28 Aug 2025 15:34:42 +0200 Subject: [PATCH 3/3] add: eTag check Signed-off-by: alperozturk --- .../ui/preview/PreviewImageActivity.kt | 80 ++++++++++--------- 1 file changed, 43 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt index a6fabb6e0ebc..32d1d2013c50 100644 --- a/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt @@ -15,9 +15,7 @@ import android.os.Bundle import android.view.MenuItem import android.view.View import androidx.appcompat.app.ActionBar -import androidx.core.view.WindowCompat -import androidx.core.view.WindowInsetsCompat -import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.content.ContextCompat import androidx.drawerlayout.widget.DrawerLayout import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.viewpager2.widget.ViewPager2 @@ -127,28 +125,6 @@ class PreviewImageActivity : applyDisplayCutOutTopPadding() } - private fun applyDisplayCutOutTopPadding() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { - return - } - - window.decorView.setOnApplyWindowInsetsListener { view, insets -> - val displayCutout = insets.displayCutout - if (displayCutout != null) { - val safeInsetTop = displayCutout.safeInsetTop - val viewPager = findViewById(R.id.fragmentPager) - viewPager.setPadding( - viewPager.paddingLeft, - safeInsetTop, - viewPager.paddingRight, - viewPager.paddingBottom, - ) - } - - view.onApplyWindowInsets(insets) - } - } - fun toggleActionBarVisibility(hide: Boolean) { if (actionBar == null) { return @@ -336,6 +312,29 @@ class PreviewImageActivity : } } + private fun applyDisplayCutOutTopPadding() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { + return + } + + window.decorView.setOnApplyWindowInsetsListener { view, insets -> + val displayCutout = insets.displayCutout + if (displayCutout != null) { + val safeInsetTop = displayCutout.safeInsetTop + val viewPager = findViewById(R.id.fragmentPager) + viewPager.setPadding( + viewPager.paddingLeft, + safeInsetTop, + viewPager.paddingRight, + viewPager.paddingBottom, + ) + viewPager.setBackgroundColor(ContextCompat.getColor(this, R.color.black)) + } + + view.onApplyWindowInsets(insets) + } + } + private fun setDownloadedItem() { savedPosition?.let { position -> @@ -524,9 +523,9 @@ class PreviewImageActivity : ) == 0 if (visible) { - hideSystemUI() + hideSystemUI(fullScreenAnchorView!!) } else { - showSystemUI() + showSystemUI(fullScreenAnchorView!!) } } @@ -560,18 +559,25 @@ class PreviewImageActivity : // TODO Auto-generated method stub } - - private fun hideSystemUI() { - WindowCompat.setDecorFitsSystemWindows(window, false) - WindowInsetsControllerCompat(window, window.decorView).let { controller -> - controller.hide(WindowInsetsCompat.Type.systemBars()) - controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE - } + @Suppress("DEPRECATION") + private fun hideSystemUI(anchorView: View) { + anchorView.systemUiVisibility = ( + View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + or View.SYSTEM_UI_FLAG_FULLSCREEN + or View.SYSTEM_UI_FLAG_IMMERSIVE + or View.SYSTEM_UI_FLAG_LAYOUT_STABLE + or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + ) } - private fun showSystemUI() { - WindowCompat.setDecorFitsSystemWindows(window, true) - WindowInsetsControllerCompat(window, window.decorView).show(WindowInsetsCompat.Type.systemBars()) + @Suppress("DEPRECATION") + private fun showSystemUI(anchorView: View) { + anchorView.systemUiVisibility = ( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + ) } companion object {