mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-25 04:06:14 +00:00
Add crossfade to action-mode toolbar.
This commit is contained in:
committed by
Greyson Parrelli
parent
9f54de8b39
commit
b40c7d0e06
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user