diff --git a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt
index a5e4fe2..295ff2d 100644
--- a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt
+++ b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt
@@ -1,5 +1,6 @@
package mg.dot.feufaro
+import SharedScreenModel
import android.Manifest
import android.app.ComponentCaller
import android.content.Intent
@@ -10,7 +11,9 @@ import android.os.Environment
import android.util.Base64
import android.view.View
import android.view.WindowManager
+import android.widget.Toast
import androidx.activity.ComponentActivity
+import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.runtime.Composable
@@ -22,11 +25,14 @@ import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import mg.dot.feufaro.ui.LocalFullscreenController
+import org.koin.android.ext.android.inject
import org.koin.androidx.compose.KoinAndroidContext
import java.io.File
import java.util.zip.GZIPInputStream
class MainActivity : ComponentActivity() {
+ private val sharedScreenModel: SharedScreenModel by inject()
+ private var lastBackTime = 0L
override fun onCreate(savedInstanceState: Bundle?) {
ActivityCompat.requestPermissions(
this,
@@ -43,6 +49,27 @@ class MainActivity : ComponentActivity() {
WindowCompat.setDecorFitsSystemWindows(window, false)
intent?.let { handleDeepLinkIntent(it) }
+ onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
+ override fun handleOnBackPressed() {
+ if (sharedScreenModel.sourceModeState.value) {
+ sharedScreenModel.toggleSourceMode()
+ return
+ }
+
+ val currentTime = System.currentTimeMillis()
+ if (currentTime - lastBackTime < 2000) {
+ finish()
+ } else {
+ lastBackTime = currentTime
+ Toast.makeText(
+ this@MainActivity,
+ "Appuyez à nouveau pour quitter",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ })
+
setContent {
KoinAndroidContext {
@@ -65,7 +92,6 @@ class MainActivity : ComponentActivity() {
windowInsetsController.show(WindowInsetsCompat.Type.statusBars())
windowInsetsController.systemBarsBehavior =
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
- window.statusBarColor = android.graphics.Color.TRANSPARENT
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
window.attributes.layoutInDisplayCutoutMode =
diff --git a/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml
index 6f2acb4..bbd3e02 100644
--- a/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml b/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml
index 6f2acb4..bbd3e02 100644
--- a/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ b/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TimeUnitObject.kt b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TimeUnitObject.kt
index c65b2ba..f70d1b1 100644
--- a/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TimeUnitObject.kt
+++ b/composeApp/src/commonMain/kotlin/mg/dot/feufaro/solfa/TimeUnitObject.kt
@@ -44,6 +44,8 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.*
import androidx.compose.ui.window.Popup
import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import cafe.adriel.voyager.core.annotation.InternalVoyagerApi
+import cafe.adriel.voyager.navigator.internal.BackHandler
import feufaro.composeapp.generated.resources.Emmentaler
import feufaro.composeapp.generated.resources.PTSerif_Bold
import feufaro.composeapp.generated.resources.PT_Serif_Bold_Italic
@@ -1421,12 +1423,17 @@ private suspend fun expandInclusions(
return result.toString().trimEnd()
}
+@OptIn(InternalVoyagerApi::class)
@Composable
fun EditSourceCompose(
sharedScreenModel: SharedScreenModel,
solfaScreenModel: SolfaScreenModel
) {
var isEditorVisible = sharedScreenModel.sourceModeState.value
+ BackHandler(enabled = isEditorVisible) {
+ sharedScreenModel.toggleSourceMode()
+ }
+
var sourcePath = sharedScreenModel.activeFilePath.value
var sourceContent = sharedScreenModel.fileContent.value ?: ""
var sourceTitle = sharedScreenModel.songTitle.value