Add crossfade to action-mode toolbar.

This commit is contained in:
Alex Hart
2025-06-05 11:05:20 -03:00
committed by Greyson Parrelli
parent 9f54de8b39
commit b40c7d0e06

View File

@@ -126,11 +126,21 @@ interface MainToolbarCallback {
}
}
enum class MainToolbarMode {
ACTION_MODE,
FULL,
BASIC,
SEARCH
enum class MainToolbarMode(val crossFadeKey: CrossFadeKey) {
ACTION_MODE(CrossFadeKey.ACTION_MODE),
FULL(CrossFadeKey.FULL),
BASIC(CrossFadeKey.BASIC),
SEARCH(CrossFadeKey.FULL);
/**
* Since FULL and SEARCH share the same cross-fade target, we use a shared
* cross-fade key between them.
*/
enum class CrossFadeKey {
ACTION_MODE,
FULL,
BASIC
}
}
data class MainToolbarState(
@@ -164,19 +174,11 @@ fun MainToolbar(
state: MainToolbarState,
callback: MainToolbarCallback
) {
if (state.mode == MainToolbarMode.ACTION_MODE) {
ActionModeToolbar(
state = state,
callback = callback
)
return
}
Crossfade(
targetState = state.mode != MainToolbarMode.BASIC
targetState = state.mode.crossFadeKey
) { targetState ->
when (targetState) {
true -> Box {
MainToolbarMode.CrossFadeKey.FULL -> Box {
var revealOffset by remember { mutableStateOf(Offset.Zero) }
BoxWithConstraints {
@@ -211,7 +213,8 @@ fun MainToolbar(
}
}
false -> ArchiveToolbar(state, callback)
MainToolbarMode.CrossFadeKey.BASIC -> ArchiveToolbar(state, callback)
MainToolbarMode.CrossFadeKey.ACTION_MODE -> ActionModeToolbar(state, callback)
}
}
}