Close others menu before loading new song

This commit is contained in:
hasinarak3@gmail.com 2026-03-11 09:52:33 +03:00
parent dd0e4a5e53
commit 0b0f0e48a6
2 changed files with 35 additions and 17 deletions

View file

@ -52,14 +52,12 @@ fun MainScreenWithDrawer(
val currentActivePath = Solfa.currentFile
var textInput = sharedScreenModel.searchTitle.collectAsState().value
var isSearchActive by remember { mutableStateOf(false) }
val isSearchActive by sharedScreenModel.showSearchMenu.collectAsState()
val focusRequester = remember { FocusRequester() }
var isExpanded by remember { mutableStateOf(false) }
val isExpanded by sharedScreenModel.expandedFAB.collectAsState()
val showMidiCtrl by sharedScreenModel.showMidiCtrl.collectAsState()
var isPlayMid by remember { mutableStateOf(false) }
val isPlay by sharedScreenModel.isPlay.collectAsState()
val isPos by sharedScreenModel.isPos.collectAsState()
var isDragging = sharedScreenModel.isDragging
@ -153,14 +151,14 @@ LaunchedEffect(isPlay, isPos) {
verticalArrangement = Arrangement.spacedBy(7.dp)
) {
AnimatedVisibility(
visible = isExpanded and !isPlayMid,
visible = isExpanded and !showMidiCtrl,
enter = fadeIn() + scaleIn() + slideInVertically { it / 2 },
exit = fadeOut() + scaleOut() + slideOutVertically { it / 2 }
) {
FloatingActionButton(
onClick = {
sharedScreenModel.toggleQRCodeVisibility()
isExpanded = false
sharedScreenModel.setExpandedFAB(false)
}, modifier = Modifier.alpha(0.45f)
) {
Icon(
@ -173,7 +171,7 @@ LaunchedEffect(isPlay, isPos) {
AnimatedVisibility(
visible = isExpanded and !isPlayMid,
visible = isExpanded and !showMidiCtrl,
enter = fadeIn() + scaleIn() + slideInVertically { it / 2 },
exit = fadeOut() + scaleOut() + slideOutVertically { it / 2 }
) {
@ -195,20 +193,20 @@ LaunchedEffect(isPlay, isPos) {
) {
FloatingActionButton(
onClick = {
isPlayMid = !isPlayMid
sharedScreenModel.setMidiCtrl(!showMidiCtrl)
}, modifier = Modifier.alpha(0.45f)
) {
Icon(
imageVector = if(isPlayMid) Icons.Filled.StopCircle else Icons.Filled.PlayCircle,
imageVector = if(showMidiCtrl) Icons.Filled.StopCircle else Icons.Filled.PlayCircle,
contentDescription = "Jouer",
tint = Color.Blue
)
}
}
if (!isPlayMid) {
if (!showMidiCtrl) {
FloatingActionButton(
onClick = {
isExpanded = !isExpanded
sharedScreenModel.setExpandedFAB(!isExpanded)
refreshTrigeer++
sharedScreenModel.loadNewSong("$midiFile")
}, modifier = Modifier.alpha(0.45f)
@ -221,7 +219,7 @@ LaunchedEffect(isPlay, isPos) {
}
}
AnimatedVisibility(
visible = isPlayMid,
visible = showMidiCtrl,
enter = fadeIn() + scaleIn() + slideInVertically { it / 2 },
exit = fadeOut() + scaleOut() + slideOutVertically { it / 2 }
) {
@ -292,9 +290,6 @@ LaunchedEffect(isPlay, isPos) {
sharedScreenModel.updateSearchTxt("")
sharedScreenModel.reset()
solfaScreenModel.loadFromFile(item.path)
isSearchActive = false
isPlayMid = false
isExpanded = false
sharedScreenModel.stopMidi()
sharedScreenModel.seekTo(0f)
})
@ -355,7 +350,7 @@ LaunchedEffect(isPlay, isPos) {
) {
IconButton(
onClick = {
isSearchActive = !isSearchActive
sharedScreenModel.showSearchMenu(!isSearchActive)
sharedScreenModel.updateSearchTxt("")
textInput = ""
}, modifier = Modifier.size(56.dp).alpha(0.45f).background(

View file

@ -96,6 +96,24 @@ class SharedScreenModel(private val fileRepository: FileRepository) : ScreenMode
fun updateSearchTxt(searchValue: String) {
_searchTitle.value = searchValue
}
private val _showMidiCtrl = MutableStateFlow<Boolean>(false)
val showMidiCtrl: StateFlow<Boolean> = _showMidiCtrl.asStateFlow()
fun setMidiCtrl(value: Boolean) {
_showMidiCtrl.value = value
}
private val _expandedFAB = MutableStateFlow<Boolean>(false)
val expandedFAB: StateFlow<Boolean> = _expandedFAB.asStateFlow()
fun setExpandedFAB(value: Boolean) {
_expandedFAB.value = value
}
private val _showSearchMenu = MutableStateFlow<Boolean>(false)
val showSearchMenu: StateFlow<Boolean> = _showSearchMenu.asStateFlow()
fun showSearchMenu(value: Boolean) {
_showSearchMenu.value = value
}
private var _mediaPlayer by mutableStateOf<FMediaPlayer?>(null)
val mediaPlayer: FMediaPlayer? get() = _mediaPlayer
@ -369,6 +387,11 @@ class SharedScreenModel(private val fileRepository: FileRepository) : ScreenMode
}
fun reset() {
// Close other menus
_showMidiCtrl.value = false
_expandedFAB.value = false
_showSearchMenu.value = false
updateSearchTxt("")
tempTimeUnitObjectList.clear()
}