Use dark status bar icons when drawer is opened

pull/1508/head
Alex Baker 5 years ago
parent ca99e8f6c2
commit ad4b4bd36b

@ -97,6 +97,10 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
override fun onDrawerStateChanged(newState: Int) { override fun onDrawerStateChanged(newState: Int) {
finishActionMode() finishActionMode()
} }
override fun onDrawerClosed(drawerView: View) {
taskListFragment?.themeColor?.setStatusBarColor(binding.drawerLayout)
}
}) })
handleIntent() handleIntent()
} }

@ -131,7 +131,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
private lateinit var search: MenuItem private lateinit var search: MenuItem
private var searchQuery: String? = null private var searchQuery: String? = null
private var mode: ActionMode? = null private var mode: ActionMode? = null
private lateinit var themeColor: ThemeColor lateinit var themeColor: ThemeColor
private lateinit var callbacks: TaskListFragmentCallbackHandler private lateinit var callbacks: TaskListFragmentCallbackHandler
override fun onRefresh() { override fun onRefresh() {

@ -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()
}
}
}

@ -242,8 +242,7 @@ public class ThemeColor implements Pickable {
public void setStatusBarColor(DrawerLayout drawerLayout) { public void setStatusBarColor(DrawerLayout drawerLayout) {
drawerLayout.setStatusBarBackgroundColor(colorPrimary); drawerLayout.setStatusBarBackgroundColor(colorPrimary);
int systemUiVisibility = applyLightStatusBarFlag(drawerLayout.getSystemUiVisibility()); org.tasks.extensions.View.INSTANCE.lightStatusBar(drawerLayout, isDark);
drawerLayout.setSystemUiVisibility(systemUiVisibility);
} }
public void setStatusBarColor(CollapsingToolbarLayout layout) { public void setStatusBarColor(CollapsingToolbarLayout layout) {
@ -261,9 +260,7 @@ public class ThemeColor implements Pickable {
} }
public void applyToStatusBarIcons(Activity activity) { public void applyToStatusBarIcons(Activity activity) {
View decorView = activity.getWindow().getDecorView(); org.tasks.extensions.View.INSTANCE.lightStatusBar(activity.getWindow().getDecorView(), isDark);
int systemUiVisibility = applyLightStatusBarFlag(decorView.getSystemUiVisibility());
decorView.setSystemUiVisibility(systemUiVisibility);
} }
public void applyToNavigationBar(Activity activity) { 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) @RequiresApi(api = VERSION_CODES.O)
private int applyLightNavigationBar(int flag) { private int applyLightNavigationBar(int flag) {
return isDark return isDark

@ -27,6 +27,7 @@ import org.tasks.billing.PurchaseActivity
import org.tasks.data.TaskDao import org.tasks.data.TaskDao
import org.tasks.dialogs.NewFilterDialog.Companion.newFilterDialog import org.tasks.dialogs.NewFilterDialog.Companion.newFilterDialog
import org.tasks.extensions.Context.openUri import org.tasks.extensions.Context.openUri
import org.tasks.extensions.View.lightStatusBar
import org.tasks.filters.FilterProvider import org.tasks.filters.FilterProvider
import org.tasks.filters.NavigationDrawerAction import org.tasks.filters.NavigationDrawerAction
import org.tasks.intents.TaskIntents import org.tasks.intents.TaskIntents
@ -106,6 +107,11 @@ class NavigationDrawerFragment : Fragment() {
fun setUp(drawerLayout: DrawerLayout) { fun setUp(drawerLayout: DrawerLayout) {
mFragmentContainerView = requireActivity().findViewById(FRAGMENT_NAVIGATION_DRAWER) mFragmentContainerView = requireActivity().findViewById(FRAGMENT_NAVIGATION_DRAWER)
mDrawerLayout = drawerLayout mDrawerLayout = drawerLayout
mDrawerLayout.addDrawerListener(object : SimpleDrawerListener() {
override fun onDrawerOpened(drawerView: View) {
setStatusBarColors()
}
})
} }
fun setSelected(selected: Filter?) = adapter.setSelected(selected) fun setSelected(selected: Filter?) = adapter.setSelected(selected)
@ -127,12 +133,20 @@ class NavigationDrawerFragment : Fragment() {
private fun close() = mDrawerLayout.closeDrawer(mFragmentContainerView!!) 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() { override fun onResume() {
super.onResume() super.onResume()
localBroadcastManager.registerRefreshListReceiver(refreshReceiver) localBroadcastManager.registerRefreshListReceiver(refreshReceiver)
updateFilters() updateFilters()
if (isDrawerOpen) {
setStatusBarColors()
}
} }
private fun updateFilters() = lifecycleScope.launch { private fun updateFilters() = lifecycleScope.launch {

Loading…
Cancel
Save