From ad4b4bd36b25e64256174ae9731f565df9ac5520 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Tue, 25 May 2021 15:10:20 -0500 Subject: [PATCH] Use dark status bar icons when drawer is opened --- .../com/todoroo/astrid/activity/MainActivity.kt | 4 ++++ .../todoroo/astrid/activity/TaskListFragment.kt | 2 +- app/src/main/java/org/tasks/extensions/View.kt | 13 +++++++++++++ .../main/java/org/tasks/themes/ThemeColor.java | 13 ++----------- .../org/tasks/ui/NavigationDrawerFragment.kt | 16 +++++++++++++++- 5 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/org/tasks/extensions/View.kt diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt index 25d03c5f1..116e39d9e 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt @@ -97,6 +97,10 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl override fun onDrawerStateChanged(newState: Int) { finishActionMode() } + + override fun onDrawerClosed(drawerView: View) { + taskListFragment?.themeColor?.setStatusBarColor(binding.drawerLayout) + } }) handleIntent() } diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt index 3b2b99141..97cfa6093 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt @@ -131,7 +131,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL private lateinit var search: MenuItem private var searchQuery: String? = null private var mode: ActionMode? = null - private lateinit var themeColor: ThemeColor + lateinit var themeColor: ThemeColor private lateinit var callbacks: TaskListFragmentCallbackHandler override fun onRefresh() { diff --git a/app/src/main/java/org/tasks/extensions/View.kt b/app/src/main/java/org/tasks/extensions/View.kt new file mode 100644 index 000000000..fa7d926d1 --- /dev/null +++ b/app/src/main/java/org/tasks/extensions/View.kt @@ -0,0 +1,13 @@ +package org.tasks.extensions + +import android.view.View + +object View { + fun View.lightStatusBar(isDark: Boolean) { + systemUiVisibility = if (isDark) { + systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + } else { + systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/org/tasks/themes/ThemeColor.java b/app/src/main/java/org/tasks/themes/ThemeColor.java index 2882560cc..a4b8c0565 100644 --- a/app/src/main/java/org/tasks/themes/ThemeColor.java +++ b/app/src/main/java/org/tasks/themes/ThemeColor.java @@ -242,8 +242,7 @@ public class ThemeColor implements Pickable { public void setStatusBarColor(DrawerLayout drawerLayout) { drawerLayout.setStatusBarBackgroundColor(colorPrimary); - int systemUiVisibility = applyLightStatusBarFlag(drawerLayout.getSystemUiVisibility()); - drawerLayout.setSystemUiVisibility(systemUiVisibility); + org.tasks.extensions.View.INSTANCE.lightStatusBar(drawerLayout, isDark); } public void setStatusBarColor(CollapsingToolbarLayout layout) { @@ -261,9 +260,7 @@ public class ThemeColor implements Pickable { } public void applyToStatusBarIcons(Activity activity) { - View decorView = activity.getWindow().getDecorView(); - int systemUiVisibility = applyLightStatusBarFlag(decorView.getSystemUiVisibility()); - decorView.setSystemUiVisibility(systemUiVisibility); + org.tasks.extensions.View.INSTANCE.lightStatusBar(activity.getWindow().getDecorView(), isDark); } public void applyToNavigationBar(Activity activity) { @@ -276,12 +273,6 @@ public class ThemeColor implements Pickable { } } - private int applyLightStatusBarFlag(int flag) { - return isDark - ? flag | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR - : flag & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; - } - @RequiresApi(api = VERSION_CODES.O) private int applyLightNavigationBar(int flag) { return isDark diff --git a/app/src/main/java/org/tasks/ui/NavigationDrawerFragment.kt b/app/src/main/java/org/tasks/ui/NavigationDrawerFragment.kt index 15b96fbc1..088587b2c 100644 --- a/app/src/main/java/org/tasks/ui/NavigationDrawerFragment.kt +++ b/app/src/main/java/org/tasks/ui/NavigationDrawerFragment.kt @@ -27,6 +27,7 @@ import org.tasks.billing.PurchaseActivity import org.tasks.data.TaskDao import org.tasks.dialogs.NewFilterDialog.Companion.newFilterDialog import org.tasks.extensions.Context.openUri +import org.tasks.extensions.View.lightStatusBar import org.tasks.filters.FilterProvider import org.tasks.filters.NavigationDrawerAction import org.tasks.intents.TaskIntents @@ -106,6 +107,11 @@ class NavigationDrawerFragment : Fragment() { fun setUp(drawerLayout: DrawerLayout) { mFragmentContainerView = requireActivity().findViewById(FRAGMENT_NAVIGATION_DRAWER) mDrawerLayout = drawerLayout + mDrawerLayout.addDrawerListener(object : SimpleDrawerListener() { + override fun onDrawerOpened(drawerView: View) { + setStatusBarColors() + } + }) } fun setSelected(selected: Filter?) = adapter.setSelected(selected) @@ -127,12 +133,20 @@ class NavigationDrawerFragment : Fragment() { private fun close() = mDrawerLayout.closeDrawer(mFragmentContainerView!!) - fun openDrawer() = mDrawerLayout.openDrawer(mFragmentContainerView!!) + fun openDrawer() { + setStatusBarColors() + mDrawerLayout.openDrawer(mFragmentContainerView!!) + } + + private fun setStatusBarColors() = mDrawerLayout.lightStatusBar(false) override fun onResume() { super.onResume() localBroadcastManager.registerRefreshListReceiver(refreshReceiver) updateFilters() + if (isDrawerOpen) { + setStatusBarColors() + } } private fun updateFilters() = lifecycleScope.launch {