Compare commits
2 commits
64c94b4064
...
15b638c93b
| Author | SHA1 | Date | |
|---|---|---|---|
| 15b638c93b | |||
| c00a8507ca |
4 changed files with 8 additions and 166 deletions
|
|
@ -68,17 +68,6 @@ object ScreenSolfa : Screen {
|
||||||
var isScanning by remember { mutableStateOf(false) }
|
var isScanning by remember { mutableStateOf(false) }
|
||||||
var qrCodeResult by remember { mutableStateOf("Aucun code scanné") }
|
var qrCodeResult by remember { mutableStateOf("Aucun code scanné") }
|
||||||
|
|
||||||
/* if (isScanning) {
|
|
||||||
ScannerScreen(
|
|
||||||
onScanComplete = { result ->
|
|
||||||
qrCodeResult = result
|
|
||||||
isScanning = false
|
|
||||||
},
|
|
||||||
onClose = {
|
|
||||||
isScanning = false
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} else {*/
|
|
||||||
|
|
||||||
MainScreenWithDrawer(
|
MainScreenWithDrawer(
|
||||||
solfaScreenModel,
|
solfaScreenModel,
|
||||||
|
|
@ -165,17 +154,6 @@ object ScreenSolfa : Screen {
|
||||||
Text(nextLabel)
|
Text(nextLabel)
|
||||||
}
|
}
|
||||||
MGButton(onClick = {
|
MGButton(onClick = {
|
||||||
/*println("Load btn clicked")
|
|
||||||
launchFilePicker(
|
|
||||||
mimeTypes = arrayOf("text/plain"),
|
|
||||||
onFileSelected = { path ->
|
|
||||||
if (path != null) {
|
|
||||||
println("fichier $path");
|
|
||||||
} else {
|
|
||||||
println("Pas de dichier")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)*/
|
|
||||||
solfaScreenModel.loadCustomFile()
|
solfaScreenModel.loadCustomFile()
|
||||||
}) {
|
}) {
|
||||||
val loadFile: String by sharedScreenModel.loadFile.collectAsState()
|
val loadFile: String by sharedScreenModel.loadFile.collectAsState()
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,6 @@ import mg.dot.feufaro.data.DrawerItem
|
||||||
import mg.dot.feufaro.data.getDrawerItems
|
import mg.dot.feufaro.data.getDrawerItems
|
||||||
import mg.dot.feufaro.getPlatform
|
import mg.dot.feufaro.getPlatform
|
||||||
import mg.dot.feufaro.midi.MediaPlayer
|
import mg.dot.feufaro.midi.MediaPlayer
|
||||||
//import mg.dot.feufaro.midi.MidiPlayer
|
|
||||||
//import mg.dot.feufaro.midi.StopMidi
|
|
||||||
import mg.dot.feufaro.solfa.Solfa
|
import mg.dot.feufaro.solfa.Solfa
|
||||||
import mg.dot.feufaro.viewmodel.SolfaScreenModel
|
import mg.dot.feufaro.viewmodel.SolfaScreenModel
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
@ -74,11 +72,7 @@ fun MainScreenWithDrawer(
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//var isDragging by remember { mutableStateOf(false) }
|
|
||||||
//var isPlay by remember { mutableStateOf(false) }
|
|
||||||
//var isPos by remember { mutableStateOf(true) }
|
|
||||||
var isPlayMid by remember { mutableStateOf(false) }
|
var isPlayMid by remember { mutableStateOf(false) }
|
||||||
//var currentPos by remember { mutableStateOf(0f) }
|
|
||||||
val isPlay by sharedScreenModel.isPlay.collectAsState()
|
val isPlay by sharedScreenModel.isPlay.collectAsState()
|
||||||
val isPos by sharedScreenModel.isPos.collectAsState()
|
val isPos by sharedScreenModel.isPos.collectAsState()
|
||||||
var isDragging = sharedScreenModel.isDragging
|
var isDragging = sharedScreenModel.isDragging
|
||||||
|
|
@ -90,19 +84,9 @@ var refreshTrigeer by remember { mutableStateOf(0)}
|
||||||
val volumelevel by sharedScreenModel.volumeLevel.collectAsState()
|
val volumelevel by sharedScreenModel.volumeLevel.collectAsState()
|
||||||
|
|
||||||
val player = sharedScreenModel.mediaPlayer
|
val player = sharedScreenModel.mediaPlayer
|
||||||
/*val mediaPlayer = remember(refreshTrigeer) {
|
|
||||||
MediaPlayer(filename = midiFile, onFinished = {
|
|
||||||
isPos = true
|
|
||||||
isPlay = false
|
|
||||||
currentPos = 0f
|
|
||||||
// isPlayMid = true
|
|
||||||
println("fin de lecture du whawyd3.mid")
|
|
||||||
|
|
||||||
}).apply { setVolume(volumelevel) }
|
|
||||||
}*/
|
|
||||||
LaunchedEffect(isPlay, isPos) {
|
LaunchedEffect(isPlay, isPos) {
|
||||||
if (isPlay && !isPos) {
|
if (isPlay && !isPos) {
|
||||||
// while (isPlay && !isPos) {
|
|
||||||
while (true) {
|
while (true) {
|
||||||
sharedScreenModel.updateProgress()
|
sharedScreenModel.updateProgress()
|
||||||
delay(100)
|
delay(100)
|
||||||
|
|
@ -110,20 +94,6 @@ LaunchedEffect(isPlay, isPos) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*LaunchedEffect(isPlay, isPos, mediaPlayer) {
|
|
||||||
if (isPlay && !isPos) {
|
|
||||||
val d = mediaPlayer.getDuration().toFloat()
|
|
||||||
if (d > 0) duration = d
|
|
||||||
while (isPlay && !isPos) {
|
|
||||||
if(!isDragging) {
|
|
||||||
val p = mediaPlayer.getCurrentPosition().toFloat()
|
|
||||||
if (p >= 0) currentPos = p
|
|
||||||
}
|
|
||||||
delay(100)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
LaunchedEffect(isSearchActive) {
|
LaunchedEffect(isSearchActive) {
|
||||||
if (isSearchActive) {
|
if (isSearchActive) {
|
||||||
focusRequester.requestFocus()
|
focusRequester.requestFocus()
|
||||||
|
|
@ -145,14 +115,9 @@ LaunchedEffect(isPlay, isPos) {
|
||||||
onScannerButtonClick()
|
onScannerButtonClick()
|
||||||
},
|
},
|
||||||
onSongSelected = { newSong ->
|
onSongSelected = { newSong ->
|
||||||
// mediaPlayer?.stop()
|
|
||||||
// isPos = true
|
|
||||||
// isPlay = false
|
|
||||||
// currentPos = 0f
|
|
||||||
sharedScreenModel.loadNewSong("whawyd3.mid")
|
sharedScreenModel.loadNewSong("whawyd3.mid")
|
||||||
// refreshTrigeer++
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}, content = {
|
}, content = {
|
||||||
Scaffold(contentWindowInsets = WindowInsets(0, 0, 0, 0), topBar = {
|
Scaffold(contentWindowInsets = WindowInsets(0, 0, 0, 0), topBar = {
|
||||||
TopAppBar(
|
TopAppBar(
|
||||||
|
|
@ -174,15 +139,7 @@ LaunchedEffect(isPlay, isPos) {
|
||||||
}) {
|
}) {
|
||||||
Icon(Icons.Filled.Menu, contentDescription = "Ouvrir Menu")
|
Icon(Icons.Filled.Menu, contentDescription = "Ouvrir Menu")
|
||||||
}
|
}
|
||||||
}, actions = {/* Text(
|
}, actions = {
|
||||||
text = measure,
|
|
||||||
modifier = Modifier.weight(1f, fill = false),
|
|
||||||
fontSize = 20.sp,
|
|
||||||
maxLines = 2,
|
|
||||||
softWrap = false,
|
|
||||||
overflow = TextOverflow.Ellipsis
|
|
||||||
)
|
|
||||||
Spacer(Modifier.width(8.dp))*/
|
|
||||||
Text(
|
Text(
|
||||||
text = songKey,
|
text = songKey,
|
||||||
fontSize = 25.sp,
|
fontSize = 25.sp,
|
||||||
|
|
@ -250,11 +207,6 @@ LaunchedEffect(isPlay, isPos) {
|
||||||
FloatingActionButton(
|
FloatingActionButton(
|
||||||
onClick = {
|
onClick = {
|
||||||
isPlayMid = !isPlayMid
|
isPlayMid = !isPlayMid
|
||||||
// if(isPlayMid) sharedScreenModel.stopMidi()
|
|
||||||
// if(mediaPlayer.getCurrentPosition() != 0L) {
|
|
||||||
// mediaPlayer?.seekTo(0)
|
|
||||||
// mediaPlayer?.stop()
|
|
||||||
// }
|
|
||||||
}, modifier = Modifier.alpha(0.45f)
|
}, modifier = Modifier.alpha(0.45f)
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
|
|
@ -294,45 +246,8 @@ LaunchedEffect(isPlay, isPos) {
|
||||||
volume = volumelevel,
|
volume = volumelevel,
|
||||||
duration = duration,
|
duration = duration,
|
||||||
onPlayPauseClick = {
|
onPlayPauseClick = {
|
||||||
sharedScreenModel.togglePlayPause()/*if(isPlay){
|
sharedScreenModel.togglePlayPause()
|
||||||
mediaPlayer?.pause()
|
onSeek = { newPos ->
|
||||||
isPlay = false
|
|
||||||
isPos = true
|
|
||||||
} else {
|
|
||||||
if(currentPos == 0f) {
|
|
||||||
mediaPlayer?.seekTo(0)
|
|
||||||
}
|
|
||||||
mediaPlayer?.play()
|
|
||||||
mediaPlayer?.setVolume(volumelevel)
|
|
||||||
isPlay = true
|
|
||||||
isPos = false*/
|
|
||||||
},
|
|
||||||
/* if(!isPlay) {
|
|
||||||
if (currentPos == 0f) mediaPlayer.seekTo(0)
|
|
||||||
mediaPlayer?.play()
|
|
||||||
isPlay = true
|
|
||||||
isPos = false
|
|
||||||
} else {
|
|
||||||
mediaPlayer?.stop()
|
|
||||||
isPlay = false
|
|
||||||
isPos = true
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// println("je clique pause = ${sharedScreenModel.isPlay} play = ${sharedScreenModel.isPos}")
|
|
||||||
// if(isPos) {
|
|
||||||
// mediaPlayer.play()
|
|
||||||
// isPos = false
|
|
||||||
// } else {
|
|
||||||
// mediaPlayer.pause()
|
|
||||||
// isPos = true
|
|
||||||
// }
|
|
||||||
/*if (isPlayMid) {
|
|
||||||
// mediaPlayer.seekTo(0f.toLong())
|
|
||||||
mediaPlayer.play()
|
|
||||||
isPlayMid = false
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
onSeek = { newPos -> // currentPos = newPos
|
|
||||||
sharedScreenModel.setDragging(true)
|
sharedScreenModel.setDragging(true)
|
||||||
sharedScreenModel.seekTo(newPos)
|
sharedScreenModel.seekTo(newPos)
|
||||||
scope.launch {
|
scope.launch {
|
||||||
|
|
@ -342,7 +257,7 @@ LaunchedEffect(isPlay, isPos) {
|
||||||
println("DrawerUI:335: mihetsika $newPos")
|
println("DrawerUI:335: mihetsika $newPos")
|
||||||
},
|
},
|
||||||
mediaPlayer = player,
|
mediaPlayer = player,
|
||||||
onVolumeChange = { newVolume -> // volumelevel = newVolume
|
onVolumeChange = { newVolume ->
|
||||||
sharedScreenModel.setVolume(newVolume)
|
sharedScreenModel.setVolume(newVolume)
|
||||||
println("Changement volume $newVolume -l $volumelevel")
|
println("Changement volume $newVolume -l $volumelevel")
|
||||||
},
|
},
|
||||||
|
|
@ -350,29 +265,6 @@ LaunchedEffect(isPlay, isPos) {
|
||||||
} else {
|
} else {
|
||||||
Text("Sélectionner un morceau")
|
Text("Sélectionner un morceau")
|
||||||
}
|
}
|
||||||
/*Row(
|
|
||||||
modifier = Modifier.align(Alignment.Center).padding(16.dp),
|
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
|
||||||
horizontalArrangement = Arrangement.spacedBy(8.dp)
|
|
||||||
) {
|
|
||||||
Slider(
|
|
||||||
value = currentPos,
|
|
||||||
onValueChange = { newPos ->
|
|
||||||
currentPos = newPos
|
|
||||||
mediaPlayer?.seekTo(newPos.toLong())
|
|
||||||
},
|
|
||||||
valueRange = 0f..duration
|
|
||||||
)
|
|
||||||
}
|
|
||||||
Button(
|
|
||||||
onClick = {
|
|
||||||
isPos = !isPos
|
|
||||||
if(isPlay) mediaPlayer?.pause() else mediaPlayer?.play()
|
|
||||||
if(isPos) mediaPlayer?.pause() else mediaPlayer?.play()
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
Text(if (isPos) "Pause" else "play Midi")
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -444,13 +336,6 @@ LaunchedEffect(isPlay, isPos) {
|
||||||
placeholder = {
|
placeholder = {
|
||||||
Text("... ...")
|
Text("... ...")
|
||||||
},
|
},
|
||||||
/*leadingIcon = {
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.Default.Search,
|
|
||||||
contentDescription = "Icône de recherche",
|
|
||||||
tint = MaterialTheme.colorScheme.primary
|
|
||||||
)
|
|
||||||
},*/
|
|
||||||
textStyle = MaterialTheme.typography.titleLarge.copy(
|
textStyle = MaterialTheme.typography.titleLarge.copy(
|
||||||
fontSize = 17.sp,
|
fontSize = 17.sp,
|
||||||
fontWeight = FontWeight.Bold,
|
fontWeight = FontWeight.Bold,
|
||||||
|
|
@ -495,23 +380,4 @@ LaunchedEffect(isPlay, isPos) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
|
|
||||||
var isPlay by mutableStateOf(false)
|
|
||||||
private set
|
|
||||||
|
|
||||||
fun playMidi() {
|
|
||||||
if(!isPlay) {
|
|
||||||
isPlay = true
|
|
||||||
MidiPlayer("whawyd3.mid") {
|
|
||||||
isPlay = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fun stopMidi() {
|
|
||||||
if(isPlay) {
|
|
||||||
StopMidi()
|
|
||||||
isPlay = false
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
@ -26,6 +26,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.foundation.text.KeyboardActions
|
import androidx.compose.foundation.text.KeyboardActions
|
||||||
import androidx.compose.foundation.text.KeyboardOptions
|
import androidx.compose.foundation.text.KeyboardOptions
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.filled.AvTimer
|
||||||
import androidx.compose.material.icons.filled.Church
|
import androidx.compose.material.icons.filled.Church
|
||||||
import androidx.compose.material.icons.filled.Clear
|
import androidx.compose.material.icons.filled.Clear
|
||||||
import androidx.compose.material.icons.filled.ClearAll
|
import androidx.compose.material.icons.filled.ClearAll
|
||||||
|
|
@ -339,7 +340,7 @@ fun MidiControlPanel(
|
||||||
onClick = {
|
onClick = {
|
||||||
showBPMTools = !showBPMTools
|
showBPMTools = !showBPMTools
|
||||||
}) {
|
}) {
|
||||||
Icon(imageVector = Icons.Default.MusicNote, contentDescription = "Tempo")
|
Icon(imageVector = Icons.Default.AvTimer, contentDescription = "Tempo")
|
||||||
}
|
}
|
||||||
AnimatedVisibility(visible = showBPMTools){
|
AnimatedVisibility(visible = showBPMTools){
|
||||||
Box(
|
Box(
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
// commonMain/kotlin/mg/dot/feufaro/viewmodel/SharedScreenModel.kt
|
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
|
|
@ -133,7 +132,6 @@ class SharedScreenModel() : ScreenModel {
|
||||||
})
|
})
|
||||||
println("New media Player crée $newMidiFile")
|
println("New media Player crée $newMidiFile")
|
||||||
}
|
}
|
||||||
// val mediaPlayer =
|
|
||||||
|
|
||||||
fun togglePlayPause() {
|
fun togglePlayPause() {
|
||||||
_mediaPlayer?.let { player ->
|
_mediaPlayer?.let { player ->
|
||||||
|
|
@ -151,7 +149,6 @@ class SharedScreenModel() : ScreenModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
println("128: Status de isPlay ${_isPlay.value} \nisPos ${_isPos.value} \ncurrentPos ${_currentPos.value} \n volume ${_volumeLevel.value}")
|
println("128: Status de isPlay ${_isPlay.value} \nisPos ${_isPos.value} \ncurrentPos ${_currentPos.value} \n volume ${_volumeLevel.value}")
|
||||||
// _isPlay.value = !_isPlay.value
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fun stopMidi() {
|
fun stopMidi() {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue