From 46c439e28d2a380ce7a75994469c6794145a5f77 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Tue, 28 Apr 2026 15:54:20 +0300 Subject: [PATCH] Request restart of Telecom Framework setting is changed --- .../kotlin/com/tutpro/baresip/AudioScreen.kt | 146 +++++++++--------- 1 file changed, 74 insertions(+), 72 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/AudioScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/AudioScreen.kt index 9b827cc0..fe7df0e8 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/AudioScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/AudioScreen.kt @@ -207,8 +207,8 @@ private fun AudioContent(contentPadding: PaddingValues) { verticalArrangement = Arrangement.spacedBy(12.dp), ) { Telecom() - ToneCountry() Ringtone() + ToneCountry() SpeakerPhone() CallVolume() MicGain() @@ -250,6 +250,65 @@ private fun Telecom() { } } +@Composable +private fun Ringtone() { + val ringToneTitle = stringResource(R.string.ringtone) + val selectRingToneMessage = stringResource(R.string.select_ringtone) + val ctx = LocalContext.current + var ringtoneUri by remember { + mutableStateOf(if (Preferences(ctx).ringtoneUri == "") + RingtoneManager.getActualDefaultRingtoneUri(ctx, RingtoneManager.TYPE_RINGTONE).toString() + else + Preferences(ctx).ringtoneUri!!) + } + newRingtoneUri = ringtoneUri + val launcher = rememberLauncherForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { result: ActivityResult -> + if (result.resultCode == android.app.Activity.RESULT_OK) { + val uri: Uri? = if (VERSION.SDK_INT >= 33) + result.data?.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, Uri::class.java) + else + @Suppress("DEPRECATION") + result.data?.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI) + if (uri != null) { + ringtoneUri = uri.toString() + newRingtoneUri = ringtoneUri + } + } + } + Row( + Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Start + ) { + Text( + text = ringToneTitle, + modifier = Modifier + .weight(1f) + .clickable { + val intent = Intent(RingtoneManager.ACTION_RINGTONE_PICKER) + intent.putExtra( + RingtoneManager.EXTRA_RINGTONE_TYPE, + RingtoneManager.TYPE_RINGTONE + ) + intent.putExtra( + RingtoneManager.EXTRA_RINGTONE_TITLE, + selectRingToneMessage + ) + intent.putExtra( + RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, + ringtoneUri.toUri() + ) + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false) + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true) + launcher.launch(intent) + }, + fontSize = 18.sp, + ) + } +} + @Composable private fun ToneCountry() { Row( @@ -312,65 +371,6 @@ private fun ToneCountry() { } } -@Composable -private fun Ringtone() { - val ringToneTitle = stringResource(R.string.ringtone) - val selectRingToneMessage = stringResource(R.string.select_ringtone) - val ctx = LocalContext.current - var ringtoneUri by remember { - mutableStateOf(if (Preferences(ctx).ringtoneUri == "") - RingtoneManager.getActualDefaultRingtoneUri(ctx, RingtoneManager.TYPE_RINGTONE).toString() - else - Preferences(ctx).ringtoneUri!!) - } - newRingtoneUri = ringtoneUri - val launcher = rememberLauncherForActivityResult( - ActivityResultContracts.StartActivityForResult() - ) { result: ActivityResult -> - if (result.resultCode == android.app.Activity.RESULT_OK) { - val uri: Uri? = if (VERSION.SDK_INT >= 33) - result.data?.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, Uri::class.java) - else - @Suppress("DEPRECATION") - result.data?.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI) - if (uri != null) { - ringtoneUri = uri.toString() - newRingtoneUri = ringtoneUri - } - } - } - Row( - Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Start - ) { - Text( - text = ringToneTitle, - modifier = Modifier - .weight(1f) - .clickable { - val intent = Intent(RingtoneManager.ACTION_RINGTONE_PICKER) - intent.putExtra( - RingtoneManager.EXTRA_RINGTONE_TYPE, - RingtoneManager.TYPE_RINGTONE - ) - intent.putExtra( - RingtoneManager.EXTRA_RINGTONE_TITLE, - selectRingToneMessage - ) - intent.putExtra( - RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, - ringtoneUri.toUri() - ) - intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false) - intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true) - launcher.launch(intent) - }, - fontSize = 18.sp, - ) - } -} - @Composable private fun SpeakerPhone() { Row( @@ -629,11 +629,25 @@ private fun checkOnClick(ctx: Context): Result { var restart = false + if (newTelecom != oldTelecom) { + Config.replaceVariable("telecom", if (newTelecom) "yes" else "no") + BaresipService.telecom = newTelecom + restart = true + save = true + } + if (Preferences(ctx).ringtoneUri != newRingtoneUri) { Preferences(ctx).ringtoneUri = newRingtoneUri BaresipService.rt = RingtoneManager.getRingtone(ctx, newRingtoneUri.toUri()) } + + if (BaresipService.toneCountry != newToneCountry) { + BaresipService.toneCountry = newToneCountry + Config.replaceVariable("tone_country", newToneCountry) + save = true + } + if (BaresipService.callVolume != newCallVolume) { BaresipService.callVolume = newCallVolume Config.replaceVariable("call_volume", newCallVolume.toString()) @@ -739,18 +753,6 @@ private fun checkOnClick(ctx: Context): Result { save = true } - if (BaresipService.toneCountry != newToneCountry) { - BaresipService.toneCountry = newToneCountry - Config.replaceVariable("tone_country", newToneCountry) - save = true - } - - if (newTelecom != oldTelecom) { - Config.replaceVariable("telecom", if (newTelecom) "yes" else "no") - BaresipService.telecom = newTelecom - save = true - } - if (save) Config.save() return if (restart) Result.RESTART else Result.OK