Added ringtone picker (hidden by default for now)
This commit is contained in:
parent
e9266dc019
commit
43e6e14654
5 changed files with 65 additions and 3 deletions
|
@ -20,22 +20,40 @@
|
|||
package org.linphone.activities.main.settings.viewmodels
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.settings.SettingListenerStub
|
||||
import org.linphone.core.MediaEncryption
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.mediastream.Version
|
||||
import org.linphone.telecom.TelecomHelper
|
||||
import org.linphone.utils.AppUtils
|
||||
import org.linphone.utils.Event
|
||||
|
||||
class CallSettingsViewModel : GenericSettingsViewModel() {
|
||||
val deviceRingtoneListener = object : SettingListenerStub() {
|
||||
override fun onBoolValueChanged(newValue: Boolean) {
|
||||
core.ring = if (newValue) null else prefs.ringtonePath
|
||||
core.ring = if (newValue) null else prefs.defaultRingtonePath
|
||||
}
|
||||
}
|
||||
val deviceRingtone = MutableLiveData<Boolean>()
|
||||
|
||||
val ringtoneListener = object : SettingListenerStub() {
|
||||
override fun onListValueChanged(position: Int) {
|
||||
if (position == 0) {
|
||||
core.ring = null
|
||||
} else {
|
||||
core.ring = ringtoneValues[position]
|
||||
}
|
||||
}
|
||||
}
|
||||
val ringtoneIndex = MutableLiveData<Int>()
|
||||
val ringtoneLabels = MutableLiveData<ArrayList<String>>()
|
||||
private val ringtoneValues = arrayListOf<String>()
|
||||
val showRingtonesList = MutableLiveData<Boolean>()
|
||||
|
||||
val vibrateOnIncomingCallListener = object : SettingListenerStub() {
|
||||
override fun onBoolValueChanged(newValue: Boolean) {
|
||||
core.isVibrationOnIncomingCallEnabled = newValue
|
||||
|
@ -212,7 +230,10 @@ class CallSettingsViewModel : GenericSettingsViewModel() {
|
|||
val goToAndroidNotificationSettingsEvent = MutableLiveData<Event<Boolean>>()
|
||||
|
||||
init {
|
||||
initRingtonesList()
|
||||
deviceRingtone.value = core.ring == null
|
||||
showRingtonesList.value = prefs.showAllRingtones
|
||||
|
||||
vibrateOnIncomingCall.value = core.isVibrationOnIncomingCallEnabled
|
||||
|
||||
initEncryptionList()
|
||||
|
@ -238,6 +259,28 @@ class CallSettingsViewModel : GenericSettingsViewModel() {
|
|||
pauseCallsWhenAudioFocusIsLost.value = prefs.pauseCallsWhenAudioFocusIsLost
|
||||
}
|
||||
|
||||
private fun initRingtonesList() {
|
||||
val labels = arrayListOf<String>()
|
||||
labels.add(AppUtils.getString(R.string.call_settings_device_ringtone_title))
|
||||
ringtoneValues.add("")
|
||||
|
||||
val directory = File(prefs.ringtonesPath)
|
||||
val files = directory.listFiles()
|
||||
for (ringtone in files.orEmpty()) {
|
||||
if (ringtone.absolutePath.endsWith(".mkv")) {
|
||||
val name = ringtone.name
|
||||
.substringBefore(".")
|
||||
.replace("_", " ")
|
||||
.capitalize(Locale.getDefault())
|
||||
labels.add(name)
|
||||
ringtoneValues.add(ringtone.absolutePath)
|
||||
}
|
||||
}
|
||||
|
||||
ringtoneLabels.value = labels
|
||||
ringtoneIndex.value = if (core.ring == null) 0 else ringtoneValues.indexOf(core.ring)
|
||||
}
|
||||
|
||||
private fun initEncryptionList() {
|
||||
val labels = arrayListOf<String>()
|
||||
|
||||
|
|
|
@ -460,6 +460,11 @@ class CorePreferences constructor(private val context: Context) {
|
|||
val useEphemeralPerDeviceMode: Boolean
|
||||
get() = config.getBool("app", "ephemeral_chat_messages_settings_per_device", true)
|
||||
|
||||
// If enabled user will see all ringtones bundled in our SDK
|
||||
// and will be able to choose which one to use if not using it's device's default
|
||||
val showAllRingtones: Boolean
|
||||
get() = config.getBool("app", "show_all_available_ringtones", false)
|
||||
|
||||
/* Default values related */
|
||||
|
||||
val echoCancellerCalibration: Int
|
||||
|
@ -578,8 +583,11 @@ class CorePreferences constructor(private val context: Context) {
|
|||
val defaultValuesPath: String
|
||||
get() = context.filesDir.absolutePath + "/assistant_default_values"
|
||||
|
||||
val ringtonePath: String
|
||||
get() = context.filesDir.absolutePath + "/share/sounds/linphone/rings/notes_of_the_optimistic.mkv"
|
||||
val ringtonesPath: String
|
||||
get() = context.filesDir.absolutePath + "/share/sounds/linphone/rings/"
|
||||
|
||||
val defaultRingtonePath: String
|
||||
get() = ringtonesPath + "notes_of_the_optimistic.mkv"
|
||||
|
||||
val userCertificatesPath: String
|
||||
get() = context.filesDir.absolutePath + "/user-certs"
|
||||
|
|
|
@ -72,9 +72,18 @@
|
|||
<include
|
||||
layout="@layout/settings_widget_switch"
|
||||
linphone:title="@{@string/call_settings_device_ringtone_title}"
|
||||
android:visibility="@{viewModel.showRingtonesList ? View.GONE : View.VISIBLE}"
|
||||
linphone:listener="@{viewModel.deviceRingtoneListener}"
|
||||
linphone:checked="@={viewModel.deviceRingtone}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_list"
|
||||
android:visibility="@{viewModel.showRingtonesList ? View.VISIBLE : View.GONE, default=gone}"
|
||||
linphone:title="@{@string/call_settings_ringtones_title}"
|
||||
linphone:listener="@{viewModel.ringtoneListener}"
|
||||
linphone:selectedIndex="@{viewModel.ringtoneIndex}"
|
||||
linphone:labels="@{viewModel.ringtoneLabels}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_switch"
|
||||
linphone:title="@{@string/call_settings_vibrate_title}"
|
||||
|
|
|
@ -629,4 +629,5 @@
|
|||
<string name="content_descripton_scroll_to_bottom">Aller au dernier message reçu ou au premier message non lu</string>
|
||||
<string name="audio_settings_prefer_bluetooth_devices_title">Acheminer l\'audio vers l\'appareil bluetooth, s\'il existe</string>
|
||||
<string name="audio_settings_prefer_bluetooth_devices_summary">Il aura la priorité sur le périphérique de sortie par défaut</string>
|
||||
<string name="call_settings_ringtones_title">Sonnerie</string>
|
||||
</resources>
|
|
@ -402,6 +402,7 @@
|
|||
|
||||
<!-- Call settings -->
|
||||
<string name="call_settings_device_ringtone_title">Use device ringtone</string>
|
||||
<string name="call_settings_ringtones_title">Ringtone</string>
|
||||
<string name="call_settings_vibrate_title">Vibrate while incoming call is ringing</string>
|
||||
<string name="call_settings_encryption_title">Media encryption</string>
|
||||
<string name="call_settings_media_encryption_none">None</string>
|
||||
|
|
Loading…
Reference in a new issue