Skip to content

Commit

Permalink
fix: back navigation behavior for drawer activity
Browse files Browse the repository at this point in the history
  • Loading branch information
jahirfiquitiva committed Oct 9, 2023
1 parent e0413de commit a73bf3f
Showing 1 changed file with 34 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,25 @@ abstract class DrawerBlueprintActivity : BlueprintActivity(),
super.onCreate(savedInstanceState)
enableTranslucentStatusBar()

toggle = ActionBarDrawerToggle(
toggle = object : ActionBarDrawerToggle(
this,
drawerLayout,
toolbar,
dev.jahir.frames.R.string.open,
dev.jahir.frames.R.string.close
)
) {
override fun onDrawerOpened(drawerView: View) {
super.onDrawerOpened(drawerView)
enableOnBackPressedCallback(true)
}

override fun onDrawerClosed(view: View) {
super.onDrawerClosed(view)
enableOnBackPressedCallback(isBackPressedCallbackEnabled())
}
};


toggle?.drawerArrowDrawable?.color =
resolveColor(
com.google.android.material.R.attr.colorOnPrimary,
Expand All @@ -54,7 +66,8 @@ abstract class DrawerBlueprintActivity : BlueprintActivity(),
toolbar?.tint()

val header =
navigationView?.findViewById(R.id.navigation_header) ?: navigationView?.getHeaderView(0)
navigationView?.findViewById(R.id.navigation_header)
?: navigationView?.getHeaderView(0)
header?.let { setOptimalDrawerHeaderHeight(it) }

val headerDrawable = drawable(R.drawable.drawer_header)
Expand All @@ -72,7 +85,8 @@ abstract class DrawerBlueprintActivity : BlueprintActivity(),
val drawerTitle: TextView? = header?.findViewById(R.id.drawer_title)
drawerTitle?.text = getAppName()

val drawerSubtitle: TextView? = header?.findViewById(R.id.drawer_subtitle)
val drawerSubtitle: TextView? =
header?.findViewById(R.id.drawer_subtitle)
drawerSubtitle?.text = currentVersionName

navigationView?.post {
Expand Down Expand Up @@ -103,7 +117,8 @@ abstract class DrawerBlueprintActivity : BlueprintActivity(),

override fun onTemplatesLoaded(templates: ArrayList<Component>) {
super.onTemplatesLoaded(templates)
navigationView?.menu?.findItem(R.id.templates)?.isVisible = templates.isNotEmpty()
navigationView?.menu?.findItem(R.id.templates)?.isVisible =
templates.isNotEmpty()
}

override fun onPostCreate(savedInstanceState: Bundle?) {
Expand Down Expand Up @@ -145,22 +160,33 @@ abstract class DrawerBlueprintActivity : BlueprintActivity(),
}
}
val checked = changeFragment(item.itemId)
enableOnBackPressedCallback(checked && isBackPressedCallbackEnabled())
if (!checked) onOptionsItemSelected(item)
return checked
}

override fun onSafeBackPressed() {
override fun handleOnBackPressed() {
val isDrawerOpen = drawerLayout?.isDrawerOpen(GravityCompat.START) ?: false
if (!isIconsPicker) {
when {
isDrawerOpen -> drawerLayout?.closeDrawer(GravityCompat.START, true)
else -> super.onSafeBackPressed()
else -> super.handleOnBackPressed()
}
} else {
super.onSafeBackPressed()
super.handleOnBackPressed()
}
}

override fun isBackPressedCallbackEnabled(): Boolean {
val isDrawerOpen = drawerLayout?.isDrawerOpen(GravityCompat.START) ?: false
return if (!isIconsPicker) {
when {
isDrawerOpen -> false
else -> super.isBackPressedCallbackEnabled()
}
} else super.isBackPressedCallbackEnabled()
}

private fun lockDrawer() {
drawerLayout?.closeDrawer(GravityCompat.START, true)
drawerLayout?.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.START)
Expand Down

0 comments on commit a73bf3f

Please sign in to comment.