Bug 1879372 - Add enabled/disabled nav button states

fenix/125.0
mike a 2 months ago committed by mergify[bot]
parent 0760ab5a58
commit a6820d760c

@ -17,6 +17,7 @@ import androidx.compose.material.IconButton
import androidx.compose.material.LocalContentColor import androidx.compose.material.LocalContentColor
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
@ -28,6 +29,7 @@ import androidx.core.content.ContextCompat
import mozilla.components.browser.menu.view.MenuButton import mozilla.components.browser.menu.view.MenuButton
import mozilla.components.browser.state.selector.normalTabs import mozilla.components.browser.state.selector.normalTabs
import mozilla.components.browser.state.selector.privateTabs import mozilla.components.browser.state.selector.privateTabs
import mozilla.components.browser.state.selector.selectedTab
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.lib.state.ext.observeAsState import mozilla.components.lib.state.ext.observeAsState
import org.mozilla.fenix.R import org.mozilla.fenix.R
@ -74,16 +76,22 @@ fun BrowserNavBar(
browserState.normalTabs.size browserState.normalTabs.size
} }
}.value }.value
val canGoBack by browserStore.observeAsState(initialValue = false) { it.selectedTab?.content?.canGoBack ?: false }
val canGoForward by browserStore.observeAsState(initialValue = false) {
it.selectedTab?.content?.canGoForward ?: false
}
NavBar { NavBar {
BackButton( BackButton(
onBackButtonClick = onBackButtonClick, onBackButtonClick = onBackButtonClick,
onBackButtonLongPress = onBackButtonLongPress, onBackButtonLongPress = onBackButtonLongPress,
enabled = canGoBack,
) )
ForwardButton( ForwardButton(
onForwardButtonClick = onForwardButtonClick, onForwardButtonClick = onForwardButtonClick,
onForwardButtonLongPress = onForwardButtonLongPress, onForwardButtonLongPress = onForwardButtonLongPress,
enabled = canGoForward,
) )
HomeButton( HomeButton(
@ -134,6 +142,8 @@ fun HomeNavBar(
onBackButtonLongPress = { onBackButtonLongPress = {
// no-op // no-op
}, },
// Nav buttons are disabled on the home screen
enabled = false,
) )
ForwardButton( ForwardButton(
@ -143,6 +153,8 @@ fun HomeNavBar(
onForwardButtonLongPress = { onForwardButtonLongPress = {
// no-op // no-op
}, },
// Nav buttons are disabled on the home screen
enabled = false,
) )
SearchWebButton( SearchWebButton(
@ -177,15 +189,17 @@ private fun NavBar(
private fun BackButton( private fun BackButton(
onBackButtonClick: () -> Unit, onBackButtonClick: () -> Unit,
onBackButtonLongPress: () -> Unit, onBackButtonLongPress: () -> Unit,
enabled: Boolean,
) { ) {
LongPressIconButton( LongPressIconButton(
onClick = onBackButtonClick, onClick = onBackButtonClick,
onLongClick = onBackButtonLongPress, onLongClick = onBackButtonLongPress,
enabled = enabled,
) { ) {
Icon( Icon(
painter = painterResource(R.drawable.mozac_ic_back_24), painter = painterResource(R.drawable.mozac_ic_back_24),
stringResource(id = R.string.browser_menu_back), stringResource(id = R.string.browser_menu_back),
tint = FirefoxTheme.colors.iconPrimary, tint = if (enabled) FirefoxTheme.colors.iconPrimary else FirefoxTheme.colors.iconDisabled,
) )
} }
} }
@ -194,15 +208,17 @@ private fun BackButton(
private fun ForwardButton( private fun ForwardButton(
onForwardButtonClick: () -> Unit, onForwardButtonClick: () -> Unit,
onForwardButtonLongPress: () -> Unit, onForwardButtonLongPress: () -> Unit,
enabled: Boolean,
) { ) {
LongPressIconButton( LongPressIconButton(
onClick = onForwardButtonClick, onClick = onForwardButtonClick,
onLongClick = onForwardButtonLongPress, onLongClick = onForwardButtonLongPress,
enabled = enabled,
) { ) {
Icon( Icon(
painter = painterResource(R.drawable.mozac_ic_forward_24), painter = painterResource(R.drawable.mozac_ic_forward_24),
stringResource(id = R.string.browser_menu_forward), stringResource(id = R.string.browser_menu_forward),
tint = FirefoxTheme.colors.iconPrimary, tint = if (enabled) FirefoxTheme.colors.iconPrimary else FirefoxTheme.colors.iconDisabled,
) )
} }
} }

Loading…
Cancel
Save