diff --git a/app/src/main/java/com/nextcloud/client/systembars/SystemBarBackgroundCallbacks.kt b/app/src/main/java/com/nextcloud/client/systembars/SystemBarBackgroundCallbacks.kt index 786d8597fd57..5f85e6471b3d 100644 --- a/app/src/main/java/com/nextcloud/client/systembars/SystemBarBackgroundCallbacks.kt +++ b/app/src/main/java/com/nextcloud/client/systembars/SystemBarBackgroundCallbacks.kt @@ -56,6 +56,11 @@ class SystemBarBackgroundCallbacks(private val viewThemeUtilsProvider: Provider< decorView.foreground = SystemBarsBackgroundDrawable(decorView, statusBarColor, actionBarColor) } + @JvmStatic + fun colorStatusBar(activity: Activity, @ColorInt color: Int) { + (activity.window?.decorView?.foreground as? SystemBarsBackgroundDrawable)?.setStatusBarColor(color) + } + @ColorInt private fun statusBarColor(activity: Activity, @ColorInt actionBarColor: Int): Int { if (activity is ToolbarActivity && activity.isHomeSearchToolbarVisible) { diff --git a/app/src/main/java/com/nextcloud/client/systembars/SystemBarsBackgroundDrawable.kt b/app/src/main/java/com/nextcloud/client/systembars/SystemBarsBackgroundDrawable.kt index 1d4bf77a206c..62b263a9a112 100644 --- a/app/src/main/java/com/nextcloud/client/systembars/SystemBarsBackgroundDrawable.kt +++ b/app/src/main/java/com/nextcloud/client/systembars/SystemBarsBackgroundDrawable.kt @@ -35,6 +35,10 @@ class SystemBarsBackgroundDrawable( invalidateSelf() } + fun setStatusBarColor(@ColorInt statusBarColor: Int) { + setColors(statusBarColor, navigationBarPaint.color) + } + override fun draw(canvas: Canvas) { val insets = ViewCompat.getRootWindowInsets(decorView) ?: return drawStatusBar(canvas, insets.getInsets(WindowInsetsCompat.Type.statusBars())) 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 e6c773841bce..31feb5d8df8c 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 @@ -49,6 +49,7 @@ import com.nextcloud.client.editimage.EditImageActivity; import com.nextcloud.client.jobs.BackgroundJobManager; import com.nextcloud.client.network.ClientFactory; +import com.nextcloud.client.systembars.SystemBarBackgroundCallbacks; import com.nextcloud.client.utils.Throttler; import com.nextcloud.common.NextcloudClient; import com.nextcloud.ui.fileactions.FileAction; @@ -905,6 +906,7 @@ public boolean onCreateActionMode(ActionMode mode, Menu menu) { //set actionMode color int statusBarColor = ContextCompat.getColor(requireContext(), R.color.action_mode_background); viewThemeUtils.platform.colorStatusBar(requireActivity(), statusBarColor); + SystemBarBackgroundCallbacks.colorStatusBar(requireActivity(), statusBarColor); // hide FAB in multi selection mode setFabVisible(false); @@ -982,6 +984,7 @@ public void onDestroyActionMode(ActionMode mode) { final var activity = getActivity(); if (activity != null) { viewThemeUtils.platform.resetStatusBar(activity); + SystemBarBackgroundCallbacks.apply(activity, viewThemeUtils); } final var adapter = getCommonAdapter(); diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsMultiChoiceModeListener.kt b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsMultiChoiceModeListener.kt index 2c90789e7583..52f219cfdd19 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsMultiChoiceModeListener.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/albums/AlbumItemsMultiChoiceModeListener.kt @@ -16,6 +16,7 @@ import android.widget.AbsListView import androidx.core.content.ContextCompat import androidx.drawerlayout.widget.DrawerLayout import androidx.fragment.app.FragmentActivity +import com.nextcloud.client.systembars.SystemBarBackgroundCallbacks import com.owncloud.android.R import com.owncloud.android.datamodel.OCFile import com.owncloud.android.ui.adapter.GalleryAdapter @@ -79,10 +80,9 @@ internal class AlbumItemsMultiChoiceModeListener( inflatePlaceholderMenu(menu) mode.invalidate() - viewThemeUtils.platform.colorStatusBar( - activity, - ContextCompat.getColor(activity, R.color.action_mode_background) - ) + val statusBarColor = ContextCompat.getColor(activity, R.color.action_mode_background) + viewThemeUtils.platform.colorStatusBar(activity, statusBarColor) + SystemBarBackgroundCallbacks.colorStatusBar(activity, statusBarColor) adapter?.setMultiSelect(true) onSelectionModeChanged(true) @@ -114,6 +114,7 @@ internal class AlbumItemsMultiChoiceModeListener( activeActionMode = null viewThemeUtils.platform.resetStatusBar(activity) + SystemBarBackgroundCallbacks.apply(activity, viewThemeUtils) adapter?.setMultiSelect(false) adapter?.clearCheckedItems() diff --git a/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinFragment.kt b/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinFragment.kt index 61b8f9abbd7c..f05adbcdc373 100644 --- a/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinFragment.kt @@ -39,6 +39,7 @@ import com.nextcloud.client.di.Injectable import com.nextcloud.client.network.ClientFactory import com.nextcloud.client.network.ConnectivityService import com.nextcloud.client.preferences.AppPreferences +import com.nextcloud.client.systembars.SystemBarBackgroundCallbacks import com.nextcloud.client.utils.Throttler import com.nextcloud.ui.sort.SortOrderUi import com.nextcloud.ui.trashbinFileActions.TrashbinFileActionsBottomSheet @@ -560,10 +561,9 @@ class TrashbinFragment : mode.invalidate() if (activity != null) { - viewThemeUtils.platform.colorStatusBar( - activity, - ContextCompat.getColor(activity, R.color.action_mode_background) - ) + val statusBarColor = ContextCompat.getColor(activity, R.color.action_mode_background) + viewThemeUtils.platform.colorStatusBar(activity, statusBarColor) + SystemBarBackgroundCallbacks.colorStatusBar(activity, statusBarColor) } adapter?.setMultiSelect(true) @@ -619,6 +619,7 @@ class TrashbinFragment : if (activity != null) { viewThemeUtils.platform.resetStatusBar(activity) + SystemBarBackgroundCallbacks.apply(activity, viewThemeUtils) } adapter?.setMultiSelect(false)