Use dark status bar icons when drawer is opened

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

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

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

@ -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) {
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

@ -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 {

Loading…
Cancel
Save