Skip to content

Commit

Permalink
revert navbutton android
Browse files Browse the repository at this point in the history
  • Loading branch information
lazaronixon committed Sep 30, 2023
1 parent a3dfe56 commit b725046
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ open class WebFragment : TurboWebFragment(), NavDestination {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupMenu()
viewLifecycleOwner.lifecycle.addObserver(bridgeDelegate)
}

Expand Down Expand Up @@ -60,8 +59,4 @@ open class WebFragment : TurboWebFragment(), NavDestination {
override fun createErrorView(statusCode: Int): View {
return layoutInflater.inflate(R.layout.error_web, null)
}

private fun setupMenu() {
toolbarForNavigation()?.inflateMenu(R.menu.web)
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
package <%= package_name %>.strada

import android.util.Log
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.Fragment
import dev.hotwire.strada.BridgeComponent
import dev.hotwire.strada.BridgeDelegate
import dev.hotwire.strada.Message
import <%= package_name %>.R
import <%= package_name %>.base.NavDestination
import <%= package_name %>.databinding.NavButtonComponentBinding
import kotlinx.serialization.Serializable

class NavButtonComponent(
name: String,
private val delegate: BridgeDelegate<NavDestination>
) : BridgeComponent<NavDestination>(name, delegate) {

private val navButtonItemId = 10
private var navButtonMenuItem: MenuItem? = null
private val fragment: Fragment
get() = delegate.destination.fragment
private val toolbar: Toolbar?
Expand All @@ -34,26 +40,27 @@ class NavButtonComponent(
}

private fun showToolbarButton(data: MessageData) {
val toolbar = toolbar ?: return
val menu = toolbar?.menu ?: return
val inflater = LayoutInflater.from(fragment.requireContext())
val binding = NavButtonComponentBinding.inflate(inflater)
val order = 999 // Show as the right-most button

toolbar.menu.findItem(R.id.nav_button)?.apply {
isVisible = true
title = data.title
binding.navButton.apply {
text = data.title
setOnClickListener {
performAction()
}
}

toolbar.setOnMenuItemClickListener {
when (it.itemId) {
R.id.nav_button -> {
performClick()
true
}
else -> false
}
menu.removeItem(navButtonItemId)
navButtonMenuItem = menu.add(Menu.NONE, navButtonItemId, order, data.title).apply {
actionView = binding.root
setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
}
}

private fun performClick() {
replyTo("connect")
private fun performAction(): Boolean {
return replyTo("connect")
}

@Serializable
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end|center_vertical"
android:paddingEnd="16dp">

<com.google.android.material.button.MaterialButton
style="@style/Widget.Material3.Button.TextButton"
android:id="@+id/nav_button"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:minWidth="0dip" />
</FrameLayout>

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ open class WebFragment : TurboWebFragment(), NavDestination {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupMenu()
viewLifecycleOwner.lifecycle.addObserver(bridgeDelegate)
}

Expand Down Expand Up @@ -50,8 +49,4 @@ open class WebFragment : TurboWebFragment(), NavDestination {
override fun createErrorView(statusCode: Int): View {
return layoutInflater.inflate(R.layout.error_web, null)
}

private fun setupMenu() {
toolbarForNavigation()?.inflateMenu(R.menu.web)
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
package <%= package_name %>.strada

import android.util.Log
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.Fragment
import dev.hotwire.strada.BridgeComponent
import dev.hotwire.strada.BridgeDelegate
import dev.hotwire.strada.Message
import <%= package_name %>.R
import <%= package_name %>.base.NavDestination
import <%= package_name %>.databinding.NavButtonComponentBinding
import kotlinx.serialization.Serializable

class NavButtonComponent(
name: String,
private val delegate: BridgeDelegate<NavDestination>
) : BridgeComponent<NavDestination>(name, delegate) {

private val navButtonItemId = 10
private var navButtonMenuItem: MenuItem? = null
private val fragment: Fragment
get() = delegate.destination.fragment
private val toolbar: Toolbar?
Expand All @@ -34,26 +40,27 @@ class NavButtonComponent(
}

private fun showToolbarButton(data: MessageData) {
val toolbar = toolbar ?: return
val menu = toolbar?.menu ?: return
val inflater = LayoutInflater.from(fragment.requireContext())
val binding = NavButtonComponentBinding.inflate(inflater)
val order = 999 // Show as the right-most button

toolbar.menu.findItem(R.id.nav_button)?.apply {
isVisible = true
title = data.title
binding.navButton.apply {
text = data.title
setOnClickListener {
performAction()
}
}

toolbar.setOnMenuItemClickListener {
when (it.itemId) {
R.id.nav_button -> {
performClick()
true
}
else -> false
}
menu.removeItem(navButtonItemId)
navButtonMenuItem = menu.add(Menu.NONE, navButtonItemId, order, data.title).apply {
actionView = binding.root
setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
}
}

private fun performClick() {
replyTo("connect")
private fun performAction(): Boolean {
return replyTo("connect")
}

@Serializable
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end|center_vertical"
android:paddingEnd="16dp">

<com.google.android.material.button.MaterialButton
style="@style/Widget.Material3.Button.TextButton"
android:id="@+id/nav_button"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:minWidth="0dip" />
</FrameLayout>

This file was deleted.

0 comments on commit b725046

Please sign in to comment.