Added quick links to android notification channels in settings

This commit is contained in:
Sylvain Berfini 2020-05-29 14:45:09 +02:00
parent b414dfcbeb
commit cd880ee06d
7 changed files with 67 additions and 0 deletions

View file

@ -21,7 +21,9 @@ package org.linphone.activities.main.settings.fragments
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -33,6 +35,7 @@ import org.linphone.R
import org.linphone.activities.main.settings.viewmodels.CallSettingsViewModel
import org.linphone.compatibility.Compatibility
import org.linphone.databinding.SettingsCallFragmentBinding
import org.linphone.mediastream.Version
class CallSettingsFragment : Fragment() {
private lateinit var binding: SettingsCallFragmentBinding
@ -66,6 +69,23 @@ class CallSettingsFragment : Fragment() {
}
}
})
viewModel.goToAndroidNotificationSettingsEvent.observe(viewLifecycleOwner, Observer { it.consume {
if (Build.VERSION.SDK_INT >= Version.API26_O_80) {
val i = Intent()
i.action = Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS
i.putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName)
i.putExtra(
Settings.EXTRA_CHANNEL_ID,
getString(R.string.notification_channel_service_id)
)
i.addCategory(Intent.CATEGORY_DEFAULT)
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
startActivity(i)
}
} })
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

View file

@ -19,7 +19,10 @@
*/
package org.linphone.activities.main.settings.fragments
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -31,6 +34,7 @@ import org.linphone.R
import org.linphone.activities.main.settings.viewmodels.ChatSettingsViewModel
import org.linphone.compatibility.Compatibility
import org.linphone.databinding.SettingsChatFragmentBinding
import org.linphone.mediastream.Version
class ChatSettingsFragment : Fragment() {
private lateinit var binding: SettingsChatFragmentBinding
@ -65,5 +69,22 @@ class ChatSettingsFragment : Fragment() {
}
}
})
viewModel.goToAndroidNotificationSettingsEvent.observe(viewLifecycleOwner, Observer { it.consume {
if (Build.VERSION.SDK_INT >= Version.API26_O_80) {
val i = Intent()
i.action = Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS
i.putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName)
i.putExtra(
Settings.EXTRA_CHANNEL_ID,
getString(R.string.notification_channel_chat_id)
)
i.addCategory(Intent.CATEGORY_DEFAULT)
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
startActivity(i)
}
} })
}
}

View file

@ -118,6 +118,13 @@ class CallSettingsViewModel : GenericSettingsViewModel() {
}
val voiceMailUri = MutableLiveData<String>()
val goToAndroidNotificationSettingsListener = object : SettingListenerStub() {
override fun onClicked() {
goToAndroidNotificationSettingsEvent.value = Event(true)
}
}
val goToAndroidNotificationSettingsEvent = MutableLiveData<Event<Boolean>>()
init {
deviceRingtone.value = core.ring == null
vibrateOnIncomingCall.value = prefs.vibrateWhileIncomingCall

View file

@ -88,6 +88,13 @@ class ChatSettingsViewModel : GenericSettingsViewModel() {
}
val hideRoomsRemovedProxies = MutableLiveData<Boolean>()
val goToAndroidNotificationSettingsListener = object : SettingListenerStub() {
override fun onClicked() {
goToAndroidNotificationSettingsEvent.value = Event(true)
}
}
val goToAndroidNotificationSettingsEvent = MutableLiveData<Event<Boolean>>()
init {
downloadedImagesPublic.value = prefs.makePublicDownloadedImages
initAutoDownloadList()

View file

@ -157,6 +157,11 @@
linphone:defaultValue="@{viewModel.voiceMailUri}"
linphone:inputType="@{InputType.TYPE_TEXT_VARIATION_URI}"/>
<include
layout="@layout/settings_widget_basic"
linphone:listener="@{viewModel.goToAndroidNotificationSettingsListener}"
linphone:title="@{@string/call_settings_go_to_android_notification_settings}" />
</LinearLayout>
</ScrollView>

View file

@ -118,6 +118,11 @@
linphone:listener="@{viewModel.hideRoomsRemovedProxiesListener}"
linphone:checked="@={viewModel.hideRoomsRemovedProxies}"/>
<include
layout="@layout/settings_widget_basic"
linphone:listener="@{viewModel.goToAndroidNotificationSettingsListener}"
linphone:title="@{@string/chat_settings_go_to_android_notification_settings}" />
</LinearLayout>
</ScrollView>

View file

@ -359,6 +359,7 @@
<string name="call_settings_incoming_timeout_summary">in seconds</string>
<string name="call_settings_voice_mail_uri_title">Voice mail URI</string>
<string name="call_settings_voice_mail_uri_summary"></string>
<string name="call_settings_go_to_android_notification_settings">Android notification settings</string>
<!-- Chat settings -->
<string name="chat_settings_file_sharing_url_title">Sharing server URL</string>
@ -378,6 +379,7 @@
<string name="chat_settings_hide_empty_rooms_summary"></string>
<string name="chat_settings_hide_rooms_removed_proxies_title">Hide chat rooms from removed proxy configs</string>
<string name="chat_settings_hide_rooms_removed_proxies_summary">If you are missing chat rooms, try to uncheck this setting</string>
<string name="chat_settings_go_to_android_notification_settings">Android notification settings</string>
<!-- Network settings -->
<string name="network_settings_wifi_only_title">Use WiFi only</string>