Reworked how back button is handled
This commit is contained in:
parent
009c6b3333
commit
4f26895cb4
90 changed files with 209 additions and 791 deletions
|
@ -23,35 +23,65 @@ import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.ImageView
|
||||||
import androidx.activity.OnBackPressedCallback
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.core.view.doOnPreDraw
|
import androidx.core.view.doOnPreDraw
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.databinding.ViewDataBinding
|
import androidx.databinding.ViewDataBinding
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.google.android.material.transition.MaterialSharedAxis
|
import com.google.android.material.transition.MaterialSharedAxis
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import kotlinx.coroutines.withContext
|
|
||||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
|
import org.linphone.R
|
||||||
|
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
|
|
||||||
abstract class GenericFragment<T : ViewDataBinding> : Fragment() {
|
abstract class GenericFragment<T : ViewDataBinding> : Fragment() {
|
||||||
|
companion object {
|
||||||
|
val emptyFragmentsIds = arrayListOf(
|
||||||
|
R.id.emptyChatFragment,
|
||||||
|
R.id.emptyContactFragment,
|
||||||
|
R.id.emptySettingsFragment,
|
||||||
|
R.id.emptyCallHistoryFragment
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
private var _binding: T? = null
|
private var _binding: T? = null
|
||||||
protected val binding get() = _binding!!
|
protected val binding get() = _binding!!
|
||||||
|
|
||||||
protected var useMaterialSharedAxisXForwardAnimation = true
|
protected var useMaterialSharedAxisXForwardAnimation = true
|
||||||
|
|
||||||
|
protected lateinit var sharedViewModel: SharedMainViewModel
|
||||||
|
|
||||||
|
protected fun isSharedViewModelInitialized(): Boolean {
|
||||||
|
return ::sharedViewModel.isInitialized
|
||||||
|
}
|
||||||
|
|
||||||
protected fun isBindingAvailable(): Boolean {
|
protected fun isBindingAvailable(): Boolean {
|
||||||
return _binding != null
|
return _binding != null
|
||||||
}
|
}
|
||||||
|
|
||||||
protected val onBackPressedCallback = object : OnBackPressedCallback(true) {
|
private fun getFragmentRealClassName(): String {
|
||||||
|
return this.javaClass.name
|
||||||
|
}
|
||||||
|
|
||||||
|
private val onBackPressedCallback = object : OnBackPressedCallback(false) {
|
||||||
override fun handleOnBackPressed() {
|
override fun handleOnBackPressed() {
|
||||||
lifecycleScope.launch {
|
try {
|
||||||
withContext(Dispatchers.Main) {
|
val navController = findNavController()
|
||||||
goBack()
|
Log.d("[Generic Fragment] ${getFragmentRealClassName()} handleOnBackPressed")
|
||||||
|
if (!navController.popBackStack()) {
|
||||||
|
Log.d("[Generic Fragment] ${getFragmentRealClassName()} couldn't pop")
|
||||||
|
if (!navController.navigateUp()) {
|
||||||
|
Log.d("[Generic Fragment] ${getFragmentRealClassName()} couldn't navigate up")
|
||||||
|
// Disable this callback & start a new back press event
|
||||||
|
isEnabled = false
|
||||||
|
goBack()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (ise: IllegalStateException) {
|
||||||
|
Log.e("[Generic Fragment] ${getFragmentRealClassName()} Can't go back: $ise")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,20 +93,19 @@ abstract class GenericFragment<T : ViewDataBinding> : Fragment() {
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
|
sharedViewModel = requireActivity().run {
|
||||||
|
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
||||||
|
}
|
||||||
|
|
||||||
|
sharedViewModel.isSlidingPaneSlideable.observe(viewLifecycleOwner) {
|
||||||
|
Log.d("[Generic Fragment] ${getFragmentRealClassName()} shared main VM sliding pane has changed")
|
||||||
|
onBackPressedCallback.isEnabled = backPressedCallBackEnabled()
|
||||||
|
}
|
||||||
|
|
||||||
_binding = DataBindingUtil.inflate(inflater, getLayoutId(), container, false)
|
_binding = DataBindingUtil.inflate(inflater, getLayoutId(), container, false)
|
||||||
return _binding!!.root
|
return _binding!!.root
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
|
||||||
super.onResume()
|
|
||||||
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, onBackPressedCallback)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPause() {
|
|
||||||
onBackPressedCallback.remove()
|
|
||||||
super.onPause()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
|
|
||||||
|
@ -89,25 +118,50 @@ abstract class GenericFragment<T : ViewDataBinding> : Fragment() {
|
||||||
postponeEnterTransition()
|
postponeEnterTransition()
|
||||||
binding.root.doOnPreDraw { startPostponedEnterTransition() }
|
binding.root.doOnPreDraw { startPostponedEnterTransition() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setupBackPressCallback()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
|
|
||||||
|
onBackPressedCallback.remove()
|
||||||
_binding = null
|
_binding = null
|
||||||
}
|
}
|
||||||
|
|
||||||
protected open fun goBack() {
|
protected fun goBack() {
|
||||||
try {
|
requireActivity().onBackPressedDispatcher.onBackPressed()
|
||||||
if (!findNavController().popBackStack()) {
|
}
|
||||||
if (!findNavController().navigateUp()) {
|
|
||||||
onBackPressedCallback.isEnabled = false
|
private fun setupBackPressCallback() {
|
||||||
requireActivity().onBackPressed()
|
Log.d("[Generic Fragment] ${getFragmentRealClassName()} setupBackPressCallback")
|
||||||
}
|
|
||||||
}
|
val backButton = binding.root.findViewById<ImageView>(R.id.back)
|
||||||
} catch (ise: IllegalStateException) {
|
if (backButton != null) {
|
||||||
Log.e("[Generic Fragment] [$this] Can't go back: $ise")
|
Log.d("[Generic Fragment] ${getFragmentRealClassName()} found back button")
|
||||||
|
// If popping navigation back stack entry would bring us to an "empty" fragment
|
||||||
|
// then don't do it if sliding pane layout isn't "flat"
|
||||||
|
onBackPressedCallback.isEnabled = backPressedCallBackEnabled()
|
||||||
|
backButton.setOnClickListener { goBack() }
|
||||||
|
} else {
|
||||||
onBackPressedCallback.isEnabled = false
|
onBackPressedCallback.isEnabled = false
|
||||||
requireActivity().onBackPressed()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, onBackPressedCallback)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun backPressedCallBackEnabled(): Boolean {
|
||||||
|
// This allow to navigate a SlidingPane child nav graph.
|
||||||
|
// This only concerns fragments for which the nav graph is inside a SlidingPane layout.
|
||||||
|
// In our case it's all graphs except the main one.
|
||||||
|
if (findNavController().graph.id == R.id.main_nav_graph_xml) return false
|
||||||
|
|
||||||
|
val isSlidingPaneFlat = sharedViewModel.isSlidingPaneSlideable.value == false
|
||||||
|
Log.d("[Generic Fragment] ${getFragmentRealClassName()} isSlidingPaneFlat ? $isSlidingPaneFlat")
|
||||||
|
val isPreviousFragmentEmpty = findNavController().previousBackStackEntry?.destination?.id in emptyFragmentsIds
|
||||||
|
Log.d("[Generic Fragment] ${getFragmentRealClassName()} isPreviousFragmentEmpty ? $isPreviousFragmentEmpty")
|
||||||
|
val popBackStack = isSlidingPaneFlat || !isPreviousFragmentEmpty
|
||||||
|
Log.d("[Generic Fragment] ${getFragmentRealClassName()} popBackStack ? $popBackStack")
|
||||||
|
return popBackStack
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,6 @@ import org.linphone.activities.main.contact.fragments.MasterContactsFragment
|
||||||
import org.linphone.activities.main.dialer.fragments.DialerFragment
|
import org.linphone.activities.main.dialer.fragments.DialerFragment
|
||||||
import org.linphone.activities.main.fragments.TabsFragment
|
import org.linphone.activities.main.fragments.TabsFragment
|
||||||
import org.linphone.activities.main.history.fragments.DetailCallLogFragment
|
import org.linphone.activities.main.history.fragments.DetailCallLogFragment
|
||||||
import org.linphone.activities.main.history.fragments.DetailConferenceCallLogFragment
|
|
||||||
import org.linphone.activities.main.history.fragments.MasterCallLogsFragment
|
import org.linphone.activities.main.history.fragments.MasterCallLogsFragment
|
||||||
import org.linphone.activities.main.settings.fragments.*
|
import org.linphone.activities.main.settings.fragments.*
|
||||||
import org.linphone.activities.main.sidemenu.fragments.SideMenuFragment
|
import org.linphone.activities.main.sidemenu.fragments.SideMenuFragment
|
||||||
|
@ -265,16 +264,10 @@ internal fun ScheduledConferencesFragment.navigateToConferenceScheduling() {
|
||||||
internal fun MasterChatRoomsFragment.navigateToChatRoom(args: Bundle) {
|
internal fun MasterChatRoomsFragment.navigateToChatRoom(args: Bundle) {
|
||||||
val navHostFragment =
|
val navHostFragment =
|
||||||
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
||||||
val previousBackStackEntry = navHostFragment.navController.currentBackStackEntry
|
|
||||||
val popUpToFragmentId = when (previousBackStackEntry?.destination?.id) {
|
|
||||||
R.id.detailChatRoomFragment -> R.id.detailChatRoomFragment
|
|
||||||
R.id.chatRoomCreationFragment -> R.id.chatRoomCreationFragment
|
|
||||||
else -> R.id.emptyChatFragment
|
|
||||||
}
|
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_detailChatRoomFragment,
|
R.id.action_global_detailChatRoomFragment,
|
||||||
args,
|
args,
|
||||||
popupTo(popUpToFragmentId, true)
|
popupTo(R.id.emptyChatFragment, false)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,16 +278,10 @@ internal fun MasterChatRoomsFragment.navigateToChatRoomCreation(
|
||||||
val bundle = bundleOf("createGroup" to createGroupChatRoom)
|
val bundle = bundleOf("createGroup" to createGroupChatRoom)
|
||||||
val navHostFragment =
|
val navHostFragment =
|
||||||
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
||||||
val previousBackStackEntry = navHostFragment.navController.currentBackStackEntry
|
|
||||||
val popUpToFragmentId = when (previousBackStackEntry?.destination?.id) {
|
|
||||||
R.id.detailChatRoomFragment -> R.id.detailChatRoomFragment
|
|
||||||
R.id.chatRoomCreationFragment -> R.id.chatRoomCreationFragment
|
|
||||||
else -> R.id.emptyChatFragment
|
|
||||||
}
|
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_chatRoomCreationFragment,
|
R.id.action_global_chatRoomCreationFragment,
|
||||||
bundle,
|
bundle,
|
||||||
popupTo(popUpToFragmentId, true)
|
popupTo(R.id.emptyChatFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -437,19 +424,11 @@ internal fun ChatRoomCreationFragment.navigateToChatRoom(args: Bundle) {
|
||||||
findNavController().navigate(
|
findNavController().navigate(
|
||||||
R.id.action_chatRoomCreationFragment_to_detailChatRoomFragment,
|
R.id.action_chatRoomCreationFragment_to_detailChatRoomFragment,
|
||||||
args,
|
args,
|
||||||
popupTo(R.id.chatRoomCreationFragment, true)
|
popupTo(R.id.emptyChatFragment, false)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun ChatRoomCreationFragment.navigateToEmptyChatRoom() {
|
|
||||||
findNavController().navigate(
|
|
||||||
R.id.action_global_emptyChatFragment,
|
|
||||||
null,
|
|
||||||
popupTo(R.id.chatRoomCreationFragment, true)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun GroupInfoFragment.navigateToChatRoomCreation(args: Bundle?) {
|
internal fun GroupInfoFragment.navigateToChatRoomCreation(args: Bundle?) {
|
||||||
if (findNavController().currentDestination?.id == R.id.groupInfoFragment) {
|
if (findNavController().currentDestination?.id == R.id.groupInfoFragment) {
|
||||||
findNavController().navigate(
|
findNavController().navigate(
|
||||||
|
@ -481,16 +460,10 @@ internal fun MasterContactsFragment.navigateToContact() {
|
||||||
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
|
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
|
||||||
val navHostFragment =
|
val navHostFragment =
|
||||||
childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
|
childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
|
||||||
val previousBackStackEntry = navHostFragment.navController.currentBackStackEntry
|
|
||||||
val popUpToFragmentId = when (previousBackStackEntry?.destination?.id) {
|
|
||||||
R.id.detailContactFragment -> R.id.detailContactFragment
|
|
||||||
R.id.contactEditorFragment -> R.id.contactEditorFragment
|
|
||||||
else -> R.id.emptyContactFragment
|
|
||||||
}
|
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_detailContactFragment,
|
R.id.action_global_detailContactFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(popUpToFragmentId, true)
|
popupTo(R.id.emptyContactFragment, false)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -506,7 +479,7 @@ internal fun MasterContactsFragment.navigateToContactEditor(
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_contactEditorFragment,
|
R.id.action_global_contactEditorFragment,
|
||||||
bundle,
|
bundle,
|
||||||
popupTo(R.id.emptyContactFragment, true)
|
popupTo(R.id.emptyContactFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -534,14 +507,6 @@ internal fun ContactEditorFragment.navigateToContact(id: String) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun ContactEditorFragment.navigateToEmptyContact() {
|
|
||||||
findNavController().navigate(
|
|
||||||
R.id.action_global_emptyContactFragment,
|
|
||||||
null,
|
|
||||||
popupTo(R.id.emptyContactFragment, true)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun DetailContactFragment.navigateToChatRoom(args: Bundle?) {
|
internal fun DetailContactFragment.navigateToChatRoom(args: Bundle?) {
|
||||||
findMasterNavController().navigate(
|
findMasterNavController().navigate(
|
||||||
R.id.action_global_masterChatRoomsFragment,
|
R.id.action_global_masterChatRoomsFragment,
|
||||||
|
@ -568,14 +533,6 @@ internal fun DetailContactFragment.navigateToContactEditor() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun DetailContactFragment.navigateToEmptyContact() {
|
|
||||||
findNavController().navigate(
|
|
||||||
R.id.action_global_emptyContactFragment,
|
|
||||||
null,
|
|
||||||
popupTo(R.id.emptyContactFragment, true)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* History related */
|
/* History related */
|
||||||
|
|
||||||
internal fun MasterCallLogsFragment.navigateToCallHistory(slidingPane: SlidingPaneLayout) {
|
internal fun MasterCallLogsFragment.navigateToCallHistory(slidingPane: SlidingPaneLayout) {
|
||||||
|
@ -585,7 +542,7 @@ internal fun MasterCallLogsFragment.navigateToCallHistory(slidingPane: SlidingPa
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_detailCallLogFragment,
|
R.id.action_global_detailCallLogFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.detailCallLogFragment, true)
|
popupTo(R.id.emptyCallHistoryFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -598,7 +555,7 @@ internal fun MasterCallLogsFragment.navigateToConferenceCallHistory(slidingPane:
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_detailConferenceCallLogFragment,
|
R.id.action_global_detailConferenceCallLogFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.detailConferenceCallLogFragment, true)
|
popupTo(R.id.emptyCallHistoryFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -668,26 +625,6 @@ internal fun DetailCallLogFragment.navigateToDialer(args: Bundle?) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun DetailCallLogFragment.navigateToEmptyCallHistory() {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.detailCallLogFragment) {
|
|
||||||
findNavController().navigate(
|
|
||||||
R.id.action_global_emptyFragment,
|
|
||||||
null,
|
|
||||||
popupTo(R.id.emptyCallHistoryFragment, true)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun DetailConferenceCallLogFragment.navigateToEmptyCallHistory() {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.detailConferenceCallLogFragment) {
|
|
||||||
findNavController().navigate(
|
|
||||||
R.id.action_global_emptyFragment,
|
|
||||||
null,
|
|
||||||
popupTo(R.id.emptyCallHistoryFragment, true)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Settings related */
|
/* Settings related */
|
||||||
|
|
||||||
internal fun SettingsFragment.navigateToAccountSettings(identity: String) {
|
internal fun SettingsFragment.navigateToAccountSettings(identity: String) {
|
||||||
|
@ -698,7 +635,7 @@ internal fun SettingsFragment.navigateToAccountSettings(identity: String) {
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_accountSettingsFragment,
|
R.id.action_global_accountSettingsFragment,
|
||||||
bundle,
|
bundle,
|
||||||
popupTo(R.id.accountSettingsFragment, true)
|
popupTo(R.id.emptySettingsFragment, false)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -710,7 +647,7 @@ internal fun SettingsFragment.navigateToTunnelSettings(slidingPane: SlidingPaneL
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_tunnelSettingsFragment,
|
R.id.action_global_tunnelSettingsFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.tunnelSettingsFragment, true)
|
popupTo(R.id.emptySettingsFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -723,7 +660,7 @@ internal fun SettingsFragment.navigateToAudioSettings(slidingPane: SlidingPaneLa
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_audioSettingsFragment,
|
R.id.action_global_audioSettingsFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.audioSettingsFragment, true)
|
popupTo(R.id.emptySettingsFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -736,7 +673,7 @@ internal fun SettingsFragment.navigateToVideoSettings(slidingPane: SlidingPaneLa
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_videoSettingsFragment,
|
R.id.action_global_videoSettingsFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.videoSettingsFragment, true)
|
popupTo(R.id.emptySettingsFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -749,7 +686,7 @@ internal fun SettingsFragment.navigateToCallSettings(slidingPane: SlidingPaneLay
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_callSettingsFragment,
|
R.id.action_global_callSettingsFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.callSettingsFragment, true)
|
popupTo(R.id.emptySettingsFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -762,7 +699,7 @@ internal fun SettingsFragment.navigateToChatSettings(slidingPane: SlidingPaneLay
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_chatSettingsFragment,
|
R.id.action_global_chatSettingsFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.chatSettingsFragment, true)
|
popupTo(R.id.emptySettingsFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -775,7 +712,7 @@ internal fun SettingsFragment.navigateToNetworkSettings(slidingPane: SlidingPane
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_networkSettingsFragment,
|
R.id.action_global_networkSettingsFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.networkSettingsFragment, true)
|
popupTo(R.id.emptySettingsFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -788,7 +725,7 @@ internal fun SettingsFragment.navigateToContactsSettings(slidingPane: SlidingPan
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_contactsSettingsFragment,
|
R.id.action_global_contactsSettingsFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.contactsSettingsFragment, true)
|
popupTo(R.id.emptySettingsFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -801,7 +738,7 @@ internal fun SettingsFragment.navigateToAdvancedSettings(slidingPane: SlidingPan
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_advancedSettingsFragment,
|
R.id.action_global_advancedSettingsFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.advancedSettingsFragment, true)
|
popupTo(R.id.emptySettingsFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -814,7 +751,7 @@ internal fun SettingsFragment.navigateToConferencesSettings(slidingPane: Sliding
|
||||||
navHostFragment.navController.navigate(
|
navHostFragment.navController.navigate(
|
||||||
R.id.action_global_conferencesSettingsFragment,
|
R.id.action_global_conferencesSettingsFragment,
|
||||||
null,
|
null,
|
||||||
popupTo(R.id.conferencesSettingsFragment, true)
|
popupTo(R.id.emptySettingsFragment, false)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||||
}
|
}
|
||||||
|
@ -859,46 +796,6 @@ internal fun ContactsSettingsFragment.navigateToLdapSettings(configIndex: Int) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun AccountSettingsFragment.navigateToEmptySetting() {
|
|
||||||
navigateToEmptySetting(findNavController())
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun AdvancedSettingsFragment.navigateToEmptySetting() {
|
|
||||||
navigateToEmptySetting(findNavController())
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun AudioSettingsFragment.navigateToEmptySetting() {
|
|
||||||
navigateToEmptySetting(findNavController())
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun CallSettingsFragment.navigateToEmptySetting() {
|
|
||||||
navigateToEmptySetting(findNavController())
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun ChatSettingsFragment.navigateToEmptySetting() {
|
|
||||||
navigateToEmptySetting(findNavController())
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun ConferencesSettingsFragment.navigateToEmptySetting() {
|
|
||||||
navigateToEmptySetting(findNavController())
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun ContactsSettingsFragment.navigateToEmptySetting() {
|
|
||||||
navigateToEmptySetting(findNavController())
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun NetworkSettingsFragment.navigateToEmptySetting() {
|
|
||||||
navigateToEmptySetting(findNavController())
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun TunnelSettingsFragment.navigateToEmptySetting() {
|
|
||||||
navigateToEmptySetting(findNavController())
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun VideoSettingsFragment.navigateToEmptySetting() {
|
|
||||||
navigateToEmptySetting(findNavController())
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Side menu related */
|
/* Side menu related */
|
||||||
|
|
||||||
internal fun SideMenuFragment.navigateToAccountSettings(identity: String) {
|
internal fun SideMenuFragment.navigateToAccountSettings(identity: String) {
|
||||||
|
|
|
@ -39,7 +39,7 @@ import org.linphone.utils.DialogUtils
|
||||||
|
|
||||||
class AccountLoginFragment : AbstractPhoneFragment<AssistantAccountLoginFragmentBinding>() {
|
class AccountLoginFragment : AbstractPhoneFragment<AssistantAccountLoginFragmentBinding>() {
|
||||||
override lateinit var viewModel: AccountLoginViewModel
|
override lateinit var viewModel: AccountLoginViewModel
|
||||||
private lateinit var sharedViewModel: SharedAssistantViewModel
|
private lateinit var sharedAssistantViewModel: SharedAssistantViewModel
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.assistant_account_login_fragment
|
override fun getLayoutId(): Int = R.layout.assistant_account_login_fragment
|
||||||
|
|
||||||
|
@ -48,13 +48,13 @@ class AccountLoginFragment : AbstractPhoneFragment<AssistantAccountLoginFragment
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
sharedAssistantViewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel = ViewModelProvider(
|
viewModel = ViewModelProvider(
|
||||||
this,
|
this,
|
||||||
AccountLoginViewModelFactory(sharedViewModel.getAccountCreator())
|
AccountLoginViewModelFactory(sharedAssistantViewModel.getAccountCreator())
|
||||||
)[AccountLoginViewModel::class.java]
|
)[AccountLoginViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ import org.linphone.activities.navigateToEmailAccountValidation
|
||||||
import org.linphone.databinding.AssistantEmailAccountCreationFragmentBinding
|
import org.linphone.databinding.AssistantEmailAccountCreationFragmentBinding
|
||||||
|
|
||||||
class EmailAccountCreationFragment : GenericFragment<AssistantEmailAccountCreationFragmentBinding>() {
|
class EmailAccountCreationFragment : GenericFragment<AssistantEmailAccountCreationFragmentBinding>() {
|
||||||
private lateinit var sharedViewModel: SharedAssistantViewModel
|
private lateinit var sharedAssistantViewModel: SharedAssistantViewModel
|
||||||
private lateinit var viewModel: EmailAccountCreationViewModel
|
private lateinit var viewModel: EmailAccountCreationViewModel
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.assistant_email_account_creation_fragment
|
override fun getLayoutId(): Int = R.layout.assistant_email_account_creation_fragment
|
||||||
|
@ -42,11 +42,11 @@ class EmailAccountCreationFragment : GenericFragment<AssistantEmailAccountCreati
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
sharedAssistantViewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel = ViewModelProvider(this, EmailAccountCreationViewModelFactory(sharedViewModel.getAccountCreator()))[EmailAccountCreationViewModel::class.java]
|
viewModel = ViewModelProvider(this, EmailAccountCreationViewModelFactory(sharedAssistantViewModel.getAccountCreator()))[EmailAccountCreationViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.goToEmailValidationEvent.observe(
|
viewModel.goToEmailValidationEvent.observe(
|
||||||
|
|
|
@ -31,7 +31,7 @@ import org.linphone.activities.navigateToAccountLinking
|
||||||
import org.linphone.databinding.AssistantEmailAccountValidationFragmentBinding
|
import org.linphone.databinding.AssistantEmailAccountValidationFragmentBinding
|
||||||
|
|
||||||
class EmailAccountValidationFragment : GenericFragment<AssistantEmailAccountValidationFragmentBinding>() {
|
class EmailAccountValidationFragment : GenericFragment<AssistantEmailAccountValidationFragmentBinding>() {
|
||||||
private lateinit var sharedViewModel: SharedAssistantViewModel
|
private lateinit var sharedAssistantViewModel: SharedAssistantViewModel
|
||||||
private lateinit var viewModel: EmailAccountValidationViewModel
|
private lateinit var viewModel: EmailAccountValidationViewModel
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.assistant_email_account_validation_fragment
|
override fun getLayoutId(): Int = R.layout.assistant_email_account_validation_fragment
|
||||||
|
@ -41,11 +41,11 @@ class EmailAccountValidationFragment : GenericFragment<AssistantEmailAccountVali
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
sharedAssistantViewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel = ViewModelProvider(this, EmailAccountValidationViewModelFactory(sharedViewModel.getAccountCreator()))[EmailAccountValidationViewModel::class.java]
|
viewModel = ViewModelProvider(this, EmailAccountValidationViewModelFactory(sharedAssistantViewModel.getAccountCreator()))[EmailAccountValidationViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.leaveAssistantEvent.observe(
|
viewModel.leaveAssistantEvent.observe(
|
||||||
|
|
|
@ -37,7 +37,7 @@ import org.linphone.databinding.AssistantGenericAccountLoginFragmentBinding
|
||||||
import org.linphone.utils.DialogUtils
|
import org.linphone.utils.DialogUtils
|
||||||
|
|
||||||
class GenericAccountLoginFragment : GenericFragment<AssistantGenericAccountLoginFragmentBinding>() {
|
class GenericAccountLoginFragment : GenericFragment<AssistantGenericAccountLoginFragmentBinding>() {
|
||||||
private lateinit var sharedViewModel: SharedAssistantViewModel
|
private lateinit var sharedAssistantViewModel: SharedAssistantViewModel
|
||||||
private lateinit var viewModel: GenericLoginViewModel
|
private lateinit var viewModel: GenericLoginViewModel
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.assistant_generic_account_login_fragment
|
override fun getLayoutId(): Int = R.layout.assistant_generic_account_login_fragment
|
||||||
|
@ -47,11 +47,11 @@ class GenericAccountLoginFragment : GenericFragment<AssistantGenericAccountLogin
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
sharedAssistantViewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel = ViewModelProvider(this, GenericLoginViewModelFactory(sharedViewModel.getAccountCreator(true)))[GenericLoginViewModel::class.java]
|
viewModel = ViewModelProvider(this, GenericLoginViewModelFactory(sharedAssistantViewModel.getAccountCreator(true)))[GenericLoginViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.leaveAssistantEvent.observe(
|
viewModel.leaveAssistantEvent.observe(
|
||||||
|
|
|
@ -32,7 +32,7 @@ import org.linphone.databinding.AssistantPhoneAccountCreationFragmentBinding
|
||||||
|
|
||||||
class PhoneAccountCreationFragment :
|
class PhoneAccountCreationFragment :
|
||||||
AbstractPhoneFragment<AssistantPhoneAccountCreationFragmentBinding>() {
|
AbstractPhoneFragment<AssistantPhoneAccountCreationFragmentBinding>() {
|
||||||
private lateinit var sharedViewModel: SharedAssistantViewModel
|
private lateinit var sharedAssistantViewModel: SharedAssistantViewModel
|
||||||
override lateinit var viewModel: PhoneAccountCreationViewModel
|
override lateinit var viewModel: PhoneAccountCreationViewModel
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.assistant_phone_account_creation_fragment
|
override fun getLayoutId(): Int = R.layout.assistant_phone_account_creation_fragment
|
||||||
|
@ -42,13 +42,13 @@ class PhoneAccountCreationFragment :
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
sharedAssistantViewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel = ViewModelProvider(
|
viewModel = ViewModelProvider(
|
||||||
this,
|
this,
|
||||||
PhoneAccountCreationViewModelFactory(sharedViewModel.getAccountCreator())
|
PhoneAccountCreationViewModelFactory(sharedAssistantViewModel.getAccountCreator())
|
||||||
)[PhoneAccountCreationViewModel::class.java]
|
)[PhoneAccountCreationViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.AssistantPhoneAccountLinkingFragmentBinding
|
import org.linphone.databinding.AssistantPhoneAccountLinkingFragmentBinding
|
||||||
|
|
||||||
class PhoneAccountLinkingFragment : AbstractPhoneFragment<AssistantPhoneAccountLinkingFragmentBinding>() {
|
class PhoneAccountLinkingFragment : AbstractPhoneFragment<AssistantPhoneAccountLinkingFragmentBinding>() {
|
||||||
private lateinit var sharedViewModel: SharedAssistantViewModel
|
private lateinit var sharedAssistantViewModel: SharedAssistantViewModel
|
||||||
override lateinit var viewModel: PhoneAccountLinkingViewModel
|
override lateinit var viewModel: PhoneAccountLinkingViewModel
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.assistant_phone_account_linking_fragment
|
override fun getLayoutId(): Int = R.layout.assistant_phone_account_linking_fragment
|
||||||
|
@ -42,11 +42,11 @@ class PhoneAccountLinkingFragment : AbstractPhoneFragment<AssistantPhoneAccountL
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
sharedAssistantViewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
||||||
}
|
}
|
||||||
|
|
||||||
val accountCreator = sharedViewModel.getAccountCreator()
|
val accountCreator = sharedAssistantViewModel.getAccountCreator()
|
||||||
viewModel = ViewModelProvider(this, PhoneAccountLinkingViewModelFactory(accountCreator))[PhoneAccountLinkingViewModel::class.java]
|
viewModel = ViewModelProvider(this, PhoneAccountLinkingViewModelFactory(accountCreator))[PhoneAccountLinkingViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ import org.linphone.activities.navigateToEchoCancellerCalibration
|
||||||
import org.linphone.databinding.AssistantPhoneAccountValidationFragmentBinding
|
import org.linphone.databinding.AssistantPhoneAccountValidationFragmentBinding
|
||||||
|
|
||||||
class PhoneAccountValidationFragment : GenericFragment<AssistantPhoneAccountValidationFragmentBinding>() {
|
class PhoneAccountValidationFragment : GenericFragment<AssistantPhoneAccountValidationFragmentBinding>() {
|
||||||
private lateinit var sharedViewModel: SharedAssistantViewModel
|
private lateinit var sharedAssistantViewModel: SharedAssistantViewModel
|
||||||
private lateinit var viewModel: PhoneAccountValidationViewModel
|
private lateinit var viewModel: PhoneAccountValidationViewModel
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.assistant_phone_account_validation_fragment
|
override fun getLayoutId(): Int = R.layout.assistant_phone_account_validation_fragment
|
||||||
|
@ -47,11 +47,11 @@ class PhoneAccountValidationFragment : GenericFragment<AssistantPhoneAccountVali
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
sharedAssistantViewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel = ViewModelProvider(this, PhoneAccountValidationViewModelFactory(sharedViewModel.getAccountCreator()))[PhoneAccountValidationViewModel::class.java]
|
viewModel = ViewModelProvider(this, PhoneAccountValidationViewModelFactory(sharedAssistantViewModel.getAccountCreator()))[PhoneAccountValidationViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.phoneNumber.value = arguments?.getString("PhoneNumber")
|
viewModel.phoneNumber.value = arguments?.getString("PhoneNumber")
|
||||||
|
|
|
@ -38,7 +38,7 @@ class QrCodeFragment : GenericFragment<AssistantQrCodeFragmentBinding>() {
|
||||||
const val CAMERA_PERMISSION_REQUEST_CODE = 0
|
const val CAMERA_PERMISSION_REQUEST_CODE = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var sharedViewModel: SharedAssistantViewModel
|
private lateinit var sharedAssistantViewModel: SharedAssistantViewModel
|
||||||
private lateinit var viewModel: QrCodeViewModel
|
private lateinit var viewModel: QrCodeViewModel
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.assistant_qr_code_fragment
|
override fun getLayoutId(): Int = R.layout.assistant_qr_code_fragment
|
||||||
|
@ -48,7 +48,7 @@ class QrCodeFragment : GenericFragment<AssistantQrCodeFragmentBinding>() {
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
sharedAssistantViewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ class QrCodeFragment : GenericFragment<AssistantQrCodeFragmentBinding>() {
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
it.consume { url ->
|
it.consume { url ->
|
||||||
sharedViewModel.remoteProvisioningUrl.value = url
|
sharedAssistantViewModel.remoteProvisioningUrl.value = url
|
||||||
findNavController().navigateUp()
|
findNavController().navigateUp()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ import org.linphone.activities.navigateToQrCode
|
||||||
import org.linphone.databinding.AssistantRemoteProvisioningFragmentBinding
|
import org.linphone.databinding.AssistantRemoteProvisioningFragmentBinding
|
||||||
|
|
||||||
class RemoteProvisioningFragment : GenericFragment<AssistantRemoteProvisioningFragmentBinding>() {
|
class RemoteProvisioningFragment : GenericFragment<AssistantRemoteProvisioningFragmentBinding>() {
|
||||||
private lateinit var sharedViewModel: SharedAssistantViewModel
|
private lateinit var sharedAssistantViewModel: SharedAssistantViewModel
|
||||||
private lateinit var viewModel: RemoteProvisioningViewModel
|
private lateinit var viewModel: RemoteProvisioningViewModel
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.assistant_remote_provisioning_fragment
|
override fun getLayoutId(): Int = R.layout.assistant_remote_provisioning_fragment
|
||||||
|
@ -43,7 +43,7 @@ class RemoteProvisioningFragment : GenericFragment<AssistantRemoteProvisioningFr
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
sharedAssistantViewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
ViewModelProvider(this)[SharedAssistantViewModel::class.java]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,13 +71,14 @@ class RemoteProvisioningFragment : GenericFragment<AssistantRemoteProvisioningFr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.urlToFetch.value = sharedViewModel.remoteProvisioningUrl.value ?: coreContext.core.provisioningUri
|
viewModel.urlToFetch.value = sharedAssistantViewModel.remoteProvisioningUrl.value ?: coreContext.core.provisioningUri
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
if (this::sharedViewModel.isInitialized) {
|
|
||||||
sharedViewModel.remoteProvisioningUrl.value = null
|
if (::sharedAssistantViewModel.isInitialized) {
|
||||||
|
sharedAssistantViewModel.remoteProvisioningUrl.value = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,6 @@ package org.linphone.activities.assistant.fragments
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.navigation.fragment.findNavController
|
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.GenericFragment
|
import org.linphone.activities.GenericFragment
|
||||||
import org.linphone.databinding.AssistantTopBarFragmentBinding
|
import org.linphone.databinding.AssistantTopBarFragmentBinding
|
||||||
|
@ -34,15 +33,5 @@ class TopBarFragment : GenericFragment<AssistantTopBarFragmentBinding>() {
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
useMaterialSharedAxisXForwardAnimation = false
|
useMaterialSharedAxisXForwardAnimation = false
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (!findNavController().popBackStack()) {
|
|
||||||
requireActivity().finish()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,8 +42,6 @@ class AboutFragment : SecureFragment<AboutFragmentBinding>() {
|
||||||
viewModel = ViewModelProvider(this)[AboutViewModel::class.java]
|
viewModel = ViewModelProvider(this)[AboutViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
|
|
||||||
binding.setPrivacyPolicyClickListener {
|
binding.setPrivacyPolicyClickListener {
|
||||||
val browserIntent = Intent(
|
val browserIntent = Intent(
|
||||||
Intent.ACTION_VIEW,
|
Intent.ACTION_VIEW,
|
||||||
|
|
|
@ -23,27 +23,22 @@ import android.content.pm.PackageManager
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.MainActivity
|
import org.linphone.activities.main.MainActivity
|
||||||
import org.linphone.activities.main.chat.viewmodels.ChatRoomCreationViewModel
|
import org.linphone.activities.main.chat.viewmodels.ChatRoomCreationViewModel
|
||||||
import org.linphone.activities.main.fragments.SecureFragment
|
import org.linphone.activities.main.fragments.SecureFragment
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToChatRoom
|
import org.linphone.activities.navigateToChatRoom
|
||||||
import org.linphone.activities.navigateToEmptyChatRoom
|
|
||||||
import org.linphone.activities.navigateToGroupInfo
|
import org.linphone.activities.navigateToGroupInfo
|
||||||
import org.linphone.contact.ContactsSelectionAdapter
|
import org.linphone.contact.ContactsSelectionAdapter
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.ChatRoomCreationFragmentBinding
|
import org.linphone.databinding.ChatRoomCreationFragmentBinding
|
||||||
import org.linphone.utils.AppUtils
|
import org.linphone.utils.AppUtils
|
||||||
import org.linphone.utils.Event
|
|
||||||
import org.linphone.utils.PermissionHelper
|
import org.linphone.utils.PermissionHelper
|
||||||
|
|
||||||
class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>() {
|
class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>() {
|
||||||
private lateinit var viewModel: ChatRoomCreationViewModel
|
private lateinit var viewModel: ChatRoomCreationViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
private lateinit var adapter: ContactsSelectionAdapter
|
private lateinit var adapter: ContactsSelectionAdapter
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.chat_room_creation_fragment
|
override fun getLayoutId(): Int = R.layout.chat_room_creation_fragment
|
||||||
|
@ -53,10 +48,6 @@ class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
||||||
|
|
||||||
val createGroup = arguments?.getBoolean("createGroup") ?: false
|
val createGroup = arguments?.getBoolean("createGroup") ?: false
|
||||||
|
@ -79,9 +70,6 @@ class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>
|
||||||
// Divider between items
|
// Divider between items
|
||||||
binding.contactsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
binding.contactsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||||
|
|
||||||
binding.setAllContactsToggleClickListener {
|
binding.setAllContactsToggleClickListener {
|
||||||
|
@ -182,16 +170,6 @@ class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (!findNavController().popBackStack()) {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptyChatRoom()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun addParticipantsFromSharedViewModel() {
|
private fun addParticipantsFromSharedViewModel() {
|
||||||
val participants = sharedViewModel.chatRoomParticipants.value
|
val participants = sharedViewModel.chatRoomParticipants.value
|
||||||
if (participants != null && participants.size > 0) {
|
if (participants != null && participants.size > 0) {
|
||||||
|
|
|
@ -36,7 +36,6 @@ import androidx.databinding.DataBindingUtil
|
||||||
import androidx.databinding.ViewDataBinding
|
import androidx.databinding.ViewDataBinding
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.findNavController
|
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
@ -57,7 +56,6 @@ import org.linphone.activities.main.chat.viewmodels.*
|
||||||
import org.linphone.activities.main.chat.views.RichEditTextSendListener
|
import org.linphone.activities.main.chat.views.RichEditTextSendListener
|
||||||
import org.linphone.activities.main.fragments.MasterFragment
|
import org.linphone.activities.main.fragments.MasterFragment
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToContacts
|
import org.linphone.activities.navigateToContacts
|
||||||
import org.linphone.activities.navigateToImageFileViewer
|
import org.linphone.activities.navigateToImageFileViewer
|
||||||
import org.linphone.activities.navigateToImdn
|
import org.linphone.activities.navigateToImdn
|
||||||
|
@ -73,7 +71,6 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
||||||
private lateinit var viewModel: ChatRoomViewModel
|
private lateinit var viewModel: ChatRoomViewModel
|
||||||
private lateinit var chatSendingViewModel: ChatMessageSendingViewModel
|
private lateinit var chatSendingViewModel: ChatMessageSendingViewModel
|
||||||
private lateinit var listViewModel: ChatMessagesListViewModel
|
private lateinit var listViewModel: ChatMessagesListViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
private val observer = object : RecyclerView.AdapterDataObserver() {
|
private val observer = object : RecyclerView.AdapterDataObserver() {
|
||||||
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
|
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
|
||||||
|
@ -111,7 +108,7 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSaveInstanceState(outState: Bundle) {
|
override fun onSaveInstanceState(outState: Bundle) {
|
||||||
if (::sharedViewModel.isInitialized) {
|
if (isSharedViewModelInitialized()) {
|
||||||
val chatRoom = sharedViewModel.selectedChatRoom.value
|
val chatRoom = sharedViewModel.selectedChatRoom.value
|
||||||
if (chatRoom != null) {
|
if (chatRoom != null) {
|
||||||
outState.putString("LocalSipUri", chatRoom.localAddress.asStringUriOnly())
|
outState.putString("LocalSipUri", chatRoom.localAddress.asStringUriOnly())
|
||||||
|
@ -129,9 +126,6 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
binding.sharedMainViewModel = sharedViewModel
|
binding.sharedMainViewModel = sharedViewModel
|
||||||
|
|
||||||
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
||||||
|
@ -383,7 +377,7 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
||||||
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
||||||
Log.i("[Chat Room] Forwarding message, going to chat rooms list")
|
Log.i("[Chat Room] Forwarding message, going to chat rooms list")
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
goBack()
|
||||||
} else {
|
} else {
|
||||||
navigateToEmptyChatRoom()
|
navigateToEmptyChatRoom()
|
||||||
}
|
}
|
||||||
|
@ -548,10 +542,6 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setTitleClickListener {
|
binding.setTitleClickListener {
|
||||||
binding.sipUri.visibility = if (!viewModel.oneToOneChatRoom ||
|
binding.sipUri.visibility = if (!viewModel.oneToOneChatRoom ||
|
||||||
binding.sipUri.visibility == View.VISIBLE
|
binding.sipUri.visibility == View.VISIBLE
|
||||||
|
@ -747,6 +737,7 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
|
// Conversation isn't visible anymore, any new message received in it will trigger a notification
|
||||||
coreContext.notificationsManager.currentlyDisplayedChatRoomAddress = null
|
coreContext.notificationsManager.currentlyDisplayedChatRoomAddress = null
|
||||||
|
|
||||||
super.onPause()
|
super.onPause()
|
||||||
|
@ -767,22 +758,6 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
coreContext.notificationsManager.currentlyDisplayedChatRoomAddress = null
|
|
||||||
if (!findNavController().popBackStack()) {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
if (_adapter != null) {
|
|
||||||
try {
|
|
||||||
adapter.unregisterAdapterDataObserver(observer)
|
|
||||||
} catch (ise: IllegalStateException) {}
|
|
||||||
}
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptyChatRoom()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun enterEditionMode() {
|
private fun enterEditionMode() {
|
||||||
listSelectionViewModel.isEditionEnabled.value = true
|
listSelectionViewModel.isEditionEnabled.value = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,13 +27,11 @@ import org.linphone.R
|
||||||
import org.linphone.activities.main.chat.viewmodels.DevicesListViewModel
|
import org.linphone.activities.main.chat.viewmodels.DevicesListViewModel
|
||||||
import org.linphone.activities.main.chat.viewmodels.DevicesListViewModelFactory
|
import org.linphone.activities.main.chat.viewmodels.DevicesListViewModelFactory
|
||||||
import org.linphone.activities.main.fragments.SecureFragment
|
import org.linphone.activities.main.fragments.SecureFragment
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.ChatRoomDevicesFragmentBinding
|
import org.linphone.databinding.ChatRoomDevicesFragmentBinding
|
||||||
|
|
||||||
class DevicesFragment : SecureFragment<ChatRoomDevicesFragmentBinding>() {
|
class DevicesFragment : SecureFragment<ChatRoomDevicesFragmentBinding>() {
|
||||||
private lateinit var listViewModel: DevicesListViewModel
|
private lateinit var listViewModel: DevicesListViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.chat_room_devices_fragment
|
override fun getLayoutId(): Int = R.layout.chat_room_devices_fragment
|
||||||
|
|
||||||
|
@ -42,10 +40,6 @@ class DevicesFragment : SecureFragment<ChatRoomDevicesFragmentBinding>() {
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
val chatRoom = sharedViewModel.selectedChatRoom.value
|
val chatRoom = sharedViewModel.selectedChatRoom.value
|
||||||
if (chatRoom == null) {
|
if (chatRoom == null) {
|
||||||
Log.e("[Devices] Chat room is null, aborting!")
|
Log.e("[Devices] Chat room is null, aborting!")
|
||||||
|
@ -60,10 +54,6 @@ class DevicesFragment : SecureFragment<ChatRoomDevicesFragmentBinding>() {
|
||||||
DevicesListViewModelFactory(chatRoom)
|
DevicesListViewModelFactory(chatRoom)
|
||||||
)[DevicesListViewModel::class.java]
|
)[DevicesListViewModel::class.java]
|
||||||
binding.viewModel = listViewModel
|
binding.viewModel = listViewModel
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
@ -27,14 +27,12 @@ import org.linphone.R
|
||||||
import org.linphone.activities.main.chat.viewmodels.EphemeralViewModel
|
import org.linphone.activities.main.chat.viewmodels.EphemeralViewModel
|
||||||
import org.linphone.activities.main.chat.viewmodels.EphemeralViewModelFactory
|
import org.linphone.activities.main.chat.viewmodels.EphemeralViewModelFactory
|
||||||
import org.linphone.activities.main.fragments.SecureFragment
|
import org.linphone.activities.main.fragments.SecureFragment
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.ChatRoomEphemeralFragmentBinding
|
import org.linphone.databinding.ChatRoomEphemeralFragmentBinding
|
||||||
import org.linphone.utils.Event
|
import org.linphone.utils.Event
|
||||||
|
|
||||||
class EphemeralFragment : SecureFragment<ChatRoomEphemeralFragmentBinding>() {
|
class EphemeralFragment : SecureFragment<ChatRoomEphemeralFragmentBinding>() {
|
||||||
private lateinit var viewModel: EphemeralViewModel
|
private lateinit var viewModel: EphemeralViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int {
|
override fun getLayoutId(): Int {
|
||||||
return R.layout.chat_room_ephemeral_fragment
|
return R.layout.chat_room_ephemeral_fragment
|
||||||
|
@ -46,10 +44,6 @@ class EphemeralFragment : SecureFragment<ChatRoomEphemeralFragmentBinding>() {
|
||||||
isSecure = true
|
isSecure = true
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
val chatRoom = sharedViewModel.selectedChatRoom.value
|
val chatRoom = sharedViewModel.selectedChatRoom.value
|
||||||
if (chatRoom == null) {
|
if (chatRoom == null) {
|
||||||
Log.e("[Ephemeral] Chat room is null, aborting!")
|
Log.e("[Ephemeral] Chat room is null, aborting!")
|
||||||
|
@ -63,10 +57,6 @@ class EphemeralFragment : SecureFragment<ChatRoomEphemeralFragmentBinding>() {
|
||||||
)[EphemeralViewModel::class.java]
|
)[EphemeralViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setValidClickListener {
|
binding.setValidClickListener {
|
||||||
viewModel.updateChatRoomEphemeralDuration()
|
viewModel.updateChatRoomEphemeralDuration()
|
||||||
sharedViewModel.refreshChatRoomInListEvent.value = Event(true)
|
sharedViewModel.refreshChatRoomInListEvent.value = Event(true)
|
||||||
|
|
|
@ -33,7 +33,6 @@ import org.linphone.activities.main.chat.viewmodels.GroupInfoViewModel
|
||||||
import org.linphone.activities.main.chat.viewmodels.GroupInfoViewModelFactory
|
import org.linphone.activities.main.chat.viewmodels.GroupInfoViewModelFactory
|
||||||
import org.linphone.activities.main.fragments.SecureFragment
|
import org.linphone.activities.main.fragments.SecureFragment
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToChatRoom
|
import org.linphone.activities.navigateToChatRoom
|
||||||
import org.linphone.activities.navigateToChatRoomCreation
|
import org.linphone.activities.navigateToChatRoomCreation
|
||||||
import org.linphone.core.Address
|
import org.linphone.core.Address
|
||||||
|
@ -45,7 +44,6 @@ import org.linphone.utils.DialogUtils
|
||||||
|
|
||||||
class GroupInfoFragment : SecureFragment<ChatRoomGroupInfoFragmentBinding>() {
|
class GroupInfoFragment : SecureFragment<ChatRoomGroupInfoFragmentBinding>() {
|
||||||
private lateinit var viewModel: GroupInfoViewModel
|
private lateinit var viewModel: GroupInfoViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
private lateinit var adapter: GroupInfoParticipantsAdapter
|
private lateinit var adapter: GroupInfoParticipantsAdapter
|
||||||
private var meAdminStatusChangedDialog: Dialog? = null
|
private var meAdminStatusChangedDialog: Dialog? = null
|
||||||
|
|
||||||
|
@ -56,10 +54,6 @@ class GroupInfoFragment : SecureFragment<ChatRoomGroupInfoFragmentBinding>() {
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
val chatRoom: ChatRoom? = sharedViewModel.selectedGroupChatRoom.value
|
val chatRoom: ChatRoom? = sharedViewModel.selectedGroupChatRoom.value
|
||||||
isSecure = chatRoom?.currentParams?.isEncryptionEnabled ?: false
|
isSecure = chatRoom?.currentParams?.isEncryptionEnabled ?: false
|
||||||
|
|
||||||
|
@ -113,10 +107,6 @@ class GroupInfoFragment : SecureFragment<ChatRoomGroupInfoFragmentBinding>() {
|
||||||
|
|
||||||
addParticipantsFromSharedViewModel()
|
addParticipantsFromSharedViewModel()
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
viewModel.createdChatRoomEvent.observe(
|
viewModel.createdChatRoomEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -29,7 +29,6 @@ import org.linphone.activities.main.chat.adapters.ImdnAdapter
|
||||||
import org.linphone.activities.main.chat.viewmodels.ImdnViewModel
|
import org.linphone.activities.main.chat.viewmodels.ImdnViewModel
|
||||||
import org.linphone.activities.main.chat.viewmodels.ImdnViewModelFactory
|
import org.linphone.activities.main.chat.viewmodels.ImdnViewModelFactory
|
||||||
import org.linphone.activities.main.fragments.SecureFragment
|
import org.linphone.activities.main.fragments.SecureFragment
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.ChatRoomImdnFragmentBinding
|
import org.linphone.databinding.ChatRoomImdnFragmentBinding
|
||||||
import org.linphone.utils.AppUtils
|
import org.linphone.utils.AppUtils
|
||||||
|
@ -38,7 +37,6 @@ import org.linphone.utils.RecyclerViewHeaderDecoration
|
||||||
class ImdnFragment : SecureFragment<ChatRoomImdnFragmentBinding>() {
|
class ImdnFragment : SecureFragment<ChatRoomImdnFragmentBinding>() {
|
||||||
private lateinit var viewModel: ImdnViewModel
|
private lateinit var viewModel: ImdnViewModel
|
||||||
private lateinit var adapter: ImdnAdapter
|
private lateinit var adapter: ImdnAdapter
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int {
|
override fun getLayoutId(): Int {
|
||||||
return R.layout.chat_room_imdn_fragment
|
return R.layout.chat_room_imdn_fragment
|
||||||
|
@ -49,10 +47,6 @@ class ImdnFragment : SecureFragment<ChatRoomImdnFragmentBinding>() {
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
val chatRoom = sharedViewModel.selectedChatRoom.value
|
val chatRoom = sharedViewModel.selectedChatRoom.value
|
||||||
if (chatRoom == null) {
|
if (chatRoom == null) {
|
||||||
Log.e("[IMDN] Chat room is null, aborting!")
|
Log.e("[IMDN] Chat room is null, aborting!")
|
||||||
|
@ -101,9 +95,5 @@ class ImdnFragment : SecureFragment<ChatRoomImdnFragmentBinding>() {
|
||||||
) {
|
) {
|
||||||
adapter.submitList(it)
|
adapter.submitList(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.content.res.Configuration
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.view.doOnPreDraw
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
import androidx.navigation.fragment.NavHostFragment
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
|
@ -42,7 +41,6 @@ import org.linphone.activities.main.chat.adapters.ChatRoomsListAdapter
|
||||||
import org.linphone.activities.main.chat.viewmodels.ChatRoomsListViewModel
|
import org.linphone.activities.main.chat.viewmodels.ChatRoomsListViewModel
|
||||||
import org.linphone.activities.main.fragments.MasterFragment
|
import org.linphone.activities.main.fragments.MasterFragment
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToChatRoom
|
import org.linphone.activities.navigateToChatRoom
|
||||||
import org.linphone.activities.navigateToChatRoomCreation
|
import org.linphone.activities.navigateToChatRoomCreation
|
||||||
import org.linphone.core.ChatRoom
|
import org.linphone.core.ChatRoom
|
||||||
|
@ -54,7 +52,6 @@ import org.linphone.utils.*
|
||||||
class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, ChatRoomsListAdapter>() {
|
class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, ChatRoomsListAdapter>() {
|
||||||
override val dialogConfirmationMessageBeforeRemoval = R.plurals.chat_room_delete_dialog
|
override val dialogConfirmationMessageBeforeRemoval = R.plurals.chat_room_delete_dialog
|
||||||
private lateinit var listViewModel: ChatRoomsListViewModel
|
private lateinit var listViewModel: ChatRoomsListViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
private val observer = object : RecyclerView.AdapterDataObserver() {
|
private val observer = object : RecyclerView.AdapterDataObserver() {
|
||||||
override fun onChanged() {
|
override fun onChanged() {
|
||||||
|
@ -105,11 +102,18 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
||||||
|
|
||||||
/* Shared view model & sliding pane related */
|
/* Shared view model & sliding pane related */
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
setUpSlidingPane(binding.slidingPane)
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
view.doOnPreDraw { sharedViewModel.isSlidingPaneSlideable.value = binding.slidingPane.isSlideable }
|
binding.slidingPane.addPanelSlideListener(object : SlidingPaneLayout.PanelSlideListener {
|
||||||
|
override fun onPanelSlide(panel: View, slideOffset: Float) { }
|
||||||
|
|
||||||
|
override fun onPanelOpened(panel: View) { }
|
||||||
|
|
||||||
|
override fun onPanelClosed(panel: View) {
|
||||||
|
// Conversation isn't visible anymore, any new message received in it will trigger a notification
|
||||||
|
coreContext.notificationsManager.currentlyDisplayedChatRoomAddress = null
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
// Chat room loading can take some time, so wait until it is ready before opening the pane
|
// Chat room loading can take some time, so wait until it is ready before opening the pane
|
||||||
sharedViewModel.chatRoomFragmentOpenedEvent.observe(
|
sharedViewModel.chatRoomFragmentOpenedEvent.observe(
|
||||||
|
@ -120,17 +124,6 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.observe(
|
|
||||||
viewLifecycleOwner
|
|
||||||
) {
|
|
||||||
it.consume {
|
|
||||||
(requireActivity() as MainActivity).hideKeyboard()
|
|
||||||
if (!binding.slidingPane.closePane()) {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sharedViewModel.layoutChangedEvent.observe(
|
sharedViewModel.layoutChangedEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -158,8 +151,6 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
|
|
||||||
|
|
||||||
/* End of shared view model & sliding pane related */
|
/* End of shared view model & sliding pane related */
|
||||||
|
|
||||||
_adapter = ChatRoomsListAdapter(listSelectionViewModel, viewLifecycleOwner)
|
_adapter = ChatRoomsListAdapter(listSelectionViewModel, viewLifecycleOwner)
|
||||||
|
|
|
@ -22,7 +22,6 @@ package org.linphone.activities.main.conference.fragments
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.format.DateFormat.is24HourFormat
|
import android.text.format.DateFormat.is24HourFormat
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.lifecycle.ViewModelProvider
|
|
||||||
import androidx.navigation.navGraphViewModels
|
import androidx.navigation.navGraphViewModels
|
||||||
import com.google.android.material.datepicker.CalendarConstraints
|
import com.google.android.material.datepicker.CalendarConstraints
|
||||||
import com.google.android.material.datepicker.DateValidatorPointForward
|
import com.google.android.material.datepicker.DateValidatorPointForward
|
||||||
|
@ -33,7 +32,6 @@ import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.GenericFragment
|
import org.linphone.activities.GenericFragment
|
||||||
import org.linphone.activities.main.conference.viewmodels.ConferenceSchedulingViewModel
|
import org.linphone.activities.main.conference.viewmodels.ConferenceSchedulingViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToParticipantsList
|
import org.linphone.activities.navigateToParticipantsList
|
||||||
import org.linphone.core.Factory
|
import org.linphone.core.Factory
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
|
@ -41,7 +39,6 @@ import org.linphone.databinding.ConferenceSchedulingFragmentBinding
|
||||||
|
|
||||||
class ConferenceSchedulingFragment : GenericFragment<ConferenceSchedulingFragmentBinding>() {
|
class ConferenceSchedulingFragment : GenericFragment<ConferenceSchedulingFragmentBinding>() {
|
||||||
private val viewModel: ConferenceSchedulingViewModel by navGraphViewModels(R.id.conference_scheduling_nav_graph)
|
private val viewModel: ConferenceSchedulingViewModel by navGraphViewModels(R.id.conference_scheduling_nav_graph)
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.conference_scheduling_fragment
|
override fun getLayoutId(): Int = R.layout.conference_scheduling_fragment
|
||||||
|
|
||||||
|
@ -52,10 +49,6 @@ class ConferenceSchedulingFragment : GenericFragment<ConferenceSchedulingFragmen
|
||||||
|
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
sharedViewModel.conferenceInfoToEdit.observe(
|
sharedViewModel.conferenceInfoToEdit.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -75,10 +68,6 @@ class ConferenceSchedulingFragment : GenericFragment<ConferenceSchedulingFragmen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setNextClickListener {
|
binding.setNextClickListener {
|
||||||
navigateToParticipantsList()
|
navigateToParticipantsList()
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,10 +58,6 @@ class ConferenceSchedulingParticipantsListFragment : GenericFragment<ConferenceS
|
||||||
// Divider between items
|
// Divider between items
|
||||||
binding.contactsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
binding.contactsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setNextClickListener {
|
binding.setNextClickListener {
|
||||||
navigateToSummary()
|
navigateToSummary()
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,10 +42,6 @@ class ConferenceSchedulingSummaryFragment : GenericFragment<ConferenceScheduling
|
||||||
|
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setCreateConferenceClickListener {
|
binding.setCreateConferenceClickListener {
|
||||||
viewModel.createConference()
|
viewModel.createConference()
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,6 @@ import org.linphone.activities.main.MainActivity
|
||||||
import org.linphone.activities.main.conference.adapters.ScheduledConferencesAdapter
|
import org.linphone.activities.main.conference.adapters.ScheduledConferencesAdapter
|
||||||
import org.linphone.activities.main.conference.viewmodels.ScheduledConferencesViewModel
|
import org.linphone.activities.main.conference.viewmodels.ScheduledConferencesViewModel
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToConferenceScheduling
|
import org.linphone.activities.navigateToConferenceScheduling
|
||||||
import org.linphone.activities.navigateToConferenceWaitingRoom
|
import org.linphone.activities.navigateToConferenceWaitingRoom
|
||||||
import org.linphone.databinding.ConferencesScheduledFragmentBinding
|
import org.linphone.databinding.ConferencesScheduledFragmentBinding
|
||||||
|
@ -45,7 +44,6 @@ import org.linphone.utils.RecyclerViewHeaderDecoration
|
||||||
class ScheduledConferencesFragment : GenericFragment<ConferencesScheduledFragmentBinding>() {
|
class ScheduledConferencesFragment : GenericFragment<ConferencesScheduledFragmentBinding>() {
|
||||||
private lateinit var viewModel: ScheduledConferencesViewModel
|
private lateinit var viewModel: ScheduledConferencesViewModel
|
||||||
private lateinit var adapter: ScheduledConferencesAdapter
|
private lateinit var adapter: ScheduledConferencesAdapter
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.conferences_scheduled_fragment
|
override fun getLayoutId(): Int = R.layout.conferences_scheduled_fragment
|
||||||
|
|
||||||
|
@ -66,10 +64,6 @@ class ScheduledConferencesFragment : GenericFragment<ConferencesScheduledFragmen
|
||||||
)
|
)
|
||||||
binding.conferenceInfoList.adapter = adapter
|
binding.conferenceInfoList.adapter = adapter
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
val layoutManager = LinearLayoutManager(activity)
|
val layoutManager = LinearLayoutManager(activity)
|
||||||
binding.conferenceInfoList.layoutManager = layoutManager
|
binding.conferenceInfoList.layoutManager = layoutManager
|
||||||
|
|
||||||
|
@ -142,10 +136,6 @@ class ScheduledConferencesFragment : GenericFragment<ConferencesScheduledFragmen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setNewConferenceClickListener {
|
binding.setNewConferenceClickListener {
|
||||||
navigateToConferenceScheduling()
|
navigateToConferenceScheduling()
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,6 @@ import android.view.View
|
||||||
import androidx.core.content.FileProvider
|
import androidx.core.content.FileProvider
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.findNavController
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
|
@ -38,18 +37,14 @@ import org.linphone.activities.GenericFragment
|
||||||
import org.linphone.activities.main.MainActivity
|
import org.linphone.activities.main.MainActivity
|
||||||
import org.linphone.activities.main.contact.data.NumberOrAddressEditorData
|
import org.linphone.activities.main.contact.data.NumberOrAddressEditorData
|
||||||
import org.linphone.activities.main.contact.viewmodels.*
|
import org.linphone.activities.main.contact.viewmodels.*
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToContact
|
import org.linphone.activities.navigateToContact
|
||||||
import org.linphone.activities.navigateToEmptyContact
|
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.ContactEditorFragmentBinding
|
import org.linphone.databinding.ContactEditorFragmentBinding
|
||||||
import org.linphone.utils.Event
|
|
||||||
import org.linphone.utils.FileUtils
|
import org.linphone.utils.FileUtils
|
||||||
import org.linphone.utils.PermissionHelper
|
import org.linphone.utils.PermissionHelper
|
||||||
|
|
||||||
class ContactEditorFragment : GenericFragment<ContactEditorFragmentBinding>(), SyncAccountPickerFragment.SyncAccountPickedListener {
|
class ContactEditorFragment : GenericFragment<ContactEditorFragmentBinding>(), SyncAccountPickerFragment.SyncAccountPickedListener {
|
||||||
private lateinit var viewModel: ContactEditorViewModel
|
private lateinit var viewModel: ContactEditorViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
private var temporaryPicturePath: File? = null
|
private var temporaryPicturePath: File? = null
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.contact_editor_fragment
|
override fun getLayoutId(): Int = R.layout.contact_editor_fragment
|
||||||
|
@ -59,10 +54,6 @@ class ContactEditorFragment : GenericFragment<ContactEditorFragmentBinding>(), S
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
viewModel = ViewModelProvider(
|
viewModel = ViewModelProvider(
|
||||||
this,
|
this,
|
||||||
ContactEditorViewModelFactory(sharedViewModel.selectedContact.value)
|
ContactEditorViewModelFactory(sharedViewModel.selectedContact.value)
|
||||||
|
@ -71,10 +62,6 @@ class ContactEditorFragment : GenericFragment<ContactEditorFragmentBinding>(), S
|
||||||
|
|
||||||
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setAvatarClickListener {
|
binding.setAvatarClickListener {
|
||||||
pickFile()
|
pickFile()
|
||||||
}
|
}
|
||||||
|
@ -109,16 +96,6 @@ class ContactEditorFragment : GenericFragment<ContactEditorFragmentBinding>(), S
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (!findNavController().popBackStack()) {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptyContact()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSyncAccountClicked(name: String?, type: String?) {
|
override fun onSyncAccountClicked(name: String?, type: String?) {
|
||||||
Log.i("[Contact Editor] Using account $name / $type")
|
Log.i("[Contact Editor] Using account $name / $type")
|
||||||
viewModel.syncAccountName = name
|
viewModel.syncAccountName = name
|
||||||
|
|
|
@ -26,7 +26,6 @@ import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.view.doOnPreDraw
|
import androidx.core.view.doOnPreDraw
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.*
|
import org.linphone.activities.*
|
||||||
|
@ -34,7 +33,6 @@ import org.linphone.activities.main.*
|
||||||
import org.linphone.activities.main.contact.viewmodels.ContactViewModel
|
import org.linphone.activities.main.contact.viewmodels.ContactViewModel
|
||||||
import org.linphone.activities.main.contact.viewmodels.ContactViewModelFactory
|
import org.linphone.activities.main.contact.viewmodels.ContactViewModelFactory
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToChatRoom
|
import org.linphone.activities.navigateToChatRoom
|
||||||
import org.linphone.activities.navigateToContactEditor
|
import org.linphone.activities.navigateToContactEditor
|
||||||
import org.linphone.activities.navigateToDialer
|
import org.linphone.activities.navigateToDialer
|
||||||
|
@ -45,7 +43,6 @@ import org.linphone.utils.Event
|
||||||
|
|
||||||
class DetailContactFragment : GenericFragment<ContactDetailFragmentBinding>() {
|
class DetailContactFragment : GenericFragment<ContactDetailFragmentBinding>() {
|
||||||
private lateinit var viewModel: ContactViewModel
|
private lateinit var viewModel: ContactViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.contact_detail_fragment
|
override fun getLayoutId(): Int = R.layout.contact_detail_fragment
|
||||||
|
|
||||||
|
@ -54,9 +51,6 @@ class DetailContactFragment : GenericFragment<ContactDetailFragmentBinding>() {
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
binding.sharedMainViewModel = sharedViewModel
|
binding.sharedMainViewModel = sharedViewModel
|
||||||
|
|
||||||
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
||||||
|
@ -127,10 +121,6 @@ class DetailContactFragment : GenericFragment<ContactDetailFragmentBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setEditClickListener {
|
binding.setEditClickListener {
|
||||||
navigateToContactEditor()
|
navigateToContactEditor()
|
||||||
}
|
}
|
||||||
|
@ -170,16 +160,6 @@ class DetailContactFragment : GenericFragment<ContactDetailFragmentBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (!findNavController().popBackStack()) {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptyContact()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun confirmContactRemoval() {
|
private fun confirmContactRemoval() {
|
||||||
val dialogViewModel = DialogViewModel(getString(R.string.contact_delete_one_dialog))
|
val dialogViewModel = DialogViewModel(getString(R.string.contact_delete_one_dialog))
|
||||||
val dialog: Dialog = DialogUtils.getDialog(requireContext(), dialogViewModel)
|
val dialog: Dialog = DialogUtils.getDialog(requireContext(), dialogViewModel)
|
||||||
|
|
|
@ -25,13 +25,11 @@ import android.content.res.Configuration
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.view.doOnPreDraw
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
import androidx.navigation.fragment.NavHostFragment
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.slidingpanelayout.widget.SlidingPaneLayout
|
|
||||||
import com.google.android.material.transition.MaterialSharedAxis
|
import com.google.android.material.transition.MaterialSharedAxis
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
|
@ -43,7 +41,6 @@ import org.linphone.activities.main.contact.adapters.ContactsListAdapter
|
||||||
import org.linphone.activities.main.contact.viewmodels.ContactsListViewModel
|
import org.linphone.activities.main.contact.viewmodels.ContactsListViewModel
|
||||||
import org.linphone.activities.main.fragments.MasterFragment
|
import org.linphone.activities.main.fragments.MasterFragment
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToContact
|
import org.linphone.activities.navigateToContact
|
||||||
import org.linphone.activities.navigateToContactEditor
|
import org.linphone.activities.navigateToContactEditor
|
||||||
import org.linphone.core.Factory
|
import org.linphone.core.Factory
|
||||||
|
@ -55,7 +52,6 @@ import org.linphone.utils.*
|
||||||
class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, ContactsListAdapter>() {
|
class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, ContactsListAdapter>() {
|
||||||
override val dialogConfirmationMessageBeforeRemoval = R.plurals.contact_delete_dialog
|
override val dialogConfirmationMessageBeforeRemoval = R.plurals.contact_delete_dialog
|
||||||
private lateinit var listViewModel: ContactsListViewModel
|
private lateinit var listViewModel: ContactsListViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
private var sipUriToAdd: String? = null
|
private var sipUriToAdd: String? = null
|
||||||
private var editOnClick: Boolean = false
|
private var editOnClick: Boolean = false
|
||||||
|
@ -78,11 +74,7 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
||||||
|
|
||||||
/* Shared view model & sliding pane related */
|
/* Shared view model & sliding pane related */
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
setUpSlidingPane(binding.slidingPane)
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
view.doOnPreDraw { sharedViewModel.isSlidingPaneSlideable.value = binding.slidingPane.isSlideable }
|
|
||||||
|
|
||||||
useMaterialSharedAxisXForwardAnimation = false
|
useMaterialSharedAxisXForwardAnimation = false
|
||||||
sharedViewModel.updateContactsAnimationsBasedOnDestination.observe(
|
sharedViewModel.updateContactsAnimationsBasedOnDestination.observe(
|
||||||
|
@ -114,15 +106,6 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.observe(
|
|
||||||
viewLifecycleOwner
|
|
||||||
) {
|
|
||||||
it.consume {
|
|
||||||
if (!binding.slidingPane.closePane()) {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sharedViewModel.layoutChangedEvent.observe(
|
sharedViewModel.layoutChangedEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -138,7 +121,7 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
|
|
||||||
/* End of shared view model & sliding pane related */
|
/* End of shared view model & sliding pane related */
|
||||||
|
|
||||||
_adapter = ContactsListAdapter(listSelectionViewModel, viewLifecycleOwner)
|
_adapter = ContactsListAdapter(listSelectionViewModel, viewLifecycleOwner)
|
||||||
|
|
|
@ -45,10 +45,6 @@ class ConfigViewerFragment : SecureFragment<FileConfigViewerFragmentBinding>() {
|
||||||
|
|
||||||
isSecure = arguments?.getBoolean("Secure") ?: false
|
isSecure = arguments?.getBoolean("Secure") ?: false
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setExportClickListener {
|
binding.setExportClickListener {
|
||||||
shareConfig()
|
shareConfig()
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,6 @@ import org.linphone.activities.main.MainActivity
|
||||||
import org.linphone.activities.main.dialer.viewmodels.DialerViewModel
|
import org.linphone.activities.main.dialer.viewmodels.DialerViewModel
|
||||||
import org.linphone.activities.main.fragments.SecureFragment
|
import org.linphone.activities.main.fragments.SecureFragment
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToConferenceScheduling
|
import org.linphone.activities.navigateToConferenceScheduling
|
||||||
import org.linphone.activities.navigateToConfigFileViewer
|
import org.linphone.activities.navigateToConfigFileViewer
|
||||||
import org.linphone.activities.navigateToContacts
|
import org.linphone.activities.navigateToContacts
|
||||||
|
@ -59,7 +58,6 @@ import org.linphone.utils.PermissionHelper
|
||||||
|
|
||||||
class DialerFragment : SecureFragment<DialerFragmentBinding>() {
|
class DialerFragment : SecureFragment<DialerFragmentBinding>() {
|
||||||
private lateinit var viewModel: DialerViewModel
|
private lateinit var viewModel: DialerViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
private var uploadLogsInitiatedByUs = false
|
private var uploadLogsInitiatedByUs = false
|
||||||
|
|
||||||
|
@ -73,10 +71,6 @@ class DialerFragment : SecureFragment<DialerFragmentBinding>() {
|
||||||
viewModel = ViewModelProvider(this)[DialerViewModel::class.java]
|
viewModel = ViewModelProvider(this)[DialerViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
useMaterialSharedAxisXForwardAnimation = false
|
useMaterialSharedAxisXForwardAnimation = false
|
||||||
sharedViewModel.updateDialerAnimationsBasedOnDestination.observe(
|
sharedViewModel.updateDialerAnimationsBasedOnDestination.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
|
|
|
@ -22,23 +22,16 @@ package org.linphone.activities.main.files.fragments
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.databinding.ViewDataBinding
|
import androidx.databinding.ViewDataBinding
|
||||||
import androidx.lifecycle.ViewModelProvider
|
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.fragments.SecureFragment
|
import org.linphone.activities.main.fragments.SecureFragment
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
|
|
||||||
abstract class GenericViewerFragment<T : ViewDataBinding> : SecureFragment<T>() {
|
abstract class GenericViewerFragment<T : ViewDataBinding> : SecureFragment<T>() {
|
||||||
protected lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
isSecure = arguments?.getBoolean("Secure") ?: false
|
isSecure = arguments?.getBoolean("Secure") ?: false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,8 +48,4 @@ abstract class GenericViewerFragment<T : ViewDataBinding> : SecureFragment<T>()
|
||||||
(childFragmentManager.findFragmentById(R.id.top_bar_fragment) as? TopBarFragment)
|
(childFragmentManager.findFragmentById(R.id.top_bar_fragment) as? TopBarFragment)
|
||||||
?.setContent(content)
|
?.setContent(content)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
findNavController().popBackStack()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,10 +48,6 @@ class TopBarFragment : GenericFragment<FileViewerTopBarFragmentBinding>() {
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
useMaterialSharedAxisXForwardAnimation = false
|
useMaterialSharedAxisXForwardAnimation = false
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setExportClickListener {
|
binding.setExportClickListener {
|
||||||
val contentToExport = content
|
val contentToExport = content
|
||||||
if (contentToExport != null) {
|
if (contentToExport != null) {
|
||||||
|
|
|
@ -57,7 +57,5 @@ class ListTopBarFragment : GenericFragment<ListEditTopBarFragmentBinding>() {
|
||||||
binding.setDeleteClickListener {
|
binding.setDeleteClickListener {
|
||||||
viewModel.deleteSelectionEvent.value = Event(true)
|
viewModel.deleteSelectionEvent.value = Event(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
onBackPressedCallback.isEnabled = false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,11 @@ package org.linphone.activities.main.fragments
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.activity.OnBackPressedCallback
|
||||||
|
import androidx.core.view.doOnPreDraw
|
||||||
import androidx.databinding.ViewDataBinding
|
import androidx.databinding.ViewDataBinding
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.adapters.SelectionListAdapter
|
import org.linphone.activities.main.adapters.SelectionListAdapter
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
|
@ -107,6 +110,19 @@ abstract class MasterFragment<T : ViewDataBinding, U : SelectionListAdapter<*, *
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun setUpSlidingPane(slidingPane: SlidingPaneLayout) {
|
||||||
|
binding.root.doOnPreDraw {
|
||||||
|
sharedViewModel.isSlidingPaneSlideable.value = slidingPane.isSlideable
|
||||||
|
|
||||||
|
requireActivity().onBackPressedDispatcher.addCallback(
|
||||||
|
viewLifecycleOwner,
|
||||||
|
SlidingPaneBackPressedCallback(slidingPane)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
|
||||||
|
}
|
||||||
|
|
||||||
private fun delete() {
|
private fun delete() {
|
||||||
val list = listSelectionViewModel.selectedItems.value ?: arrayListOf()
|
val list = listSelectionViewModel.selectedItems.value ?: arrayListOf()
|
||||||
deleteItems(list)
|
deleteItems(list)
|
||||||
|
@ -117,4 +133,34 @@ abstract class MasterFragment<T : ViewDataBinding, U : SelectionListAdapter<*, *
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract fun deleteItems(indexesOfItemToDelete: ArrayList<Int>)
|
abstract fun deleteItems(indexesOfItemToDelete: ArrayList<Int>)
|
||||||
|
|
||||||
|
class SlidingPaneBackPressedCallback(private val slidingPaneLayout: SlidingPaneLayout) :
|
||||||
|
OnBackPressedCallback
|
||||||
|
(
|
||||||
|
slidingPaneLayout.isSlideable && slidingPaneLayout.isOpen
|
||||||
|
),
|
||||||
|
SlidingPaneLayout.PanelSlideListener {
|
||||||
|
|
||||||
|
init {
|
||||||
|
Log.d("[Master Fragment] SlidingPane isSlideable = ${slidingPaneLayout.isSlideable}, isOpen = ${slidingPaneLayout.isOpen}")
|
||||||
|
slidingPaneLayout.addPanelSlideListener(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun handleOnBackPressed() {
|
||||||
|
Log.d("[Master Fragment] handleOnBackPressed, closing sliding pane")
|
||||||
|
slidingPaneLayout.closePane()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPanelOpened(panel: View) {
|
||||||
|
Log.d("[Master Fragment] onPanelOpened")
|
||||||
|
isEnabled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPanelClosed(panel: View) {
|
||||||
|
Log.d("[Master Fragment] onPanelClosed")
|
||||||
|
isEnabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPanelSlide(panel: View, slideOffset: Float) { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.GenericFragment
|
import org.linphone.activities.GenericFragment
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.main.viewmodels.StatusViewModel
|
import org.linphone.activities.main.viewmodels.StatusViewModel
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.StatusFragmentBinding
|
import org.linphone.databinding.StatusFragmentBinding
|
||||||
|
@ -33,7 +32,6 @@ import org.linphone.utils.Event
|
||||||
|
|
||||||
class StatusFragment : GenericFragment<StatusFragmentBinding>() {
|
class StatusFragment : GenericFragment<StatusFragmentBinding>() {
|
||||||
private lateinit var viewModel: StatusViewModel
|
private lateinit var viewModel: StatusViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.status_fragment
|
override fun getLayoutId(): Int = R.layout.status_fragment
|
||||||
|
|
||||||
|
@ -46,10 +44,6 @@ class StatusFragment : GenericFragment<StatusFragmentBinding>() {
|
||||||
viewModel = ViewModelProvider(this)[StatusViewModel::class.java]
|
viewModel = ViewModelProvider(this)[StatusViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
sharedViewModel.accountRemoved.observe(
|
sharedViewModel.accountRemoved.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -67,7 +61,5 @@ class StatusFragment : GenericFragment<StatusFragmentBinding>() {
|
||||||
binding.setRefreshClickListener {
|
binding.setRefreshClickListener {
|
||||||
viewModel.refreshRegister()
|
viewModel.refreshRegister()
|
||||||
}
|
}
|
||||||
|
|
||||||
onBackPressedCallback.isEnabled = false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,6 @@ import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.GenericFragment
|
import org.linphone.activities.GenericFragment
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.main.viewmodels.TabsViewModel
|
import org.linphone.activities.main.viewmodels.TabsViewModel
|
||||||
import org.linphone.activities.navigateToCallHistory
|
import org.linphone.activities.navigateToCallHistory
|
||||||
import org.linphone.activities.navigateToChatRooms
|
import org.linphone.activities.navigateToChatRooms
|
||||||
|
@ -39,7 +38,6 @@ import org.linphone.utils.Event
|
||||||
|
|
||||||
class TabsFragment : GenericFragment<TabsFragmentBinding>(), NavController.OnDestinationChangedListener {
|
class TabsFragment : GenericFragment<TabsFragmentBinding>(), NavController.OnDestinationChangedListener {
|
||||||
private lateinit var viewModel: TabsViewModel
|
private lateinit var viewModel: TabsViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.tabs_fragment
|
override fun getLayoutId(): Int = R.layout.tabs_fragment
|
||||||
|
|
||||||
|
@ -49,10 +47,6 @@ class TabsFragment : GenericFragment<TabsFragmentBinding>(), NavController.OnDes
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
useMaterialSharedAxisXForwardAnimation = false
|
useMaterialSharedAxisXForwardAnimation = false
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
viewModel = requireActivity().run {
|
viewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[TabsViewModel::class.java]
|
ViewModelProvider(this)[TabsViewModel::class.java]
|
||||||
}
|
}
|
||||||
|
@ -89,8 +83,6 @@ class TabsFragment : GenericFragment<TabsFragmentBinding>(), NavController.OnDes
|
||||||
}
|
}
|
||||||
navigateToChatRooms()
|
navigateToChatRooms()
|
||||||
}
|
}
|
||||||
|
|
||||||
onBackPressedCallback.isEnabled = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
|
|
|
@ -21,14 +21,12 @@ package org.linphone.activities.main.history.fragments
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.lifecycle.ViewModelProvider
|
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.*
|
import org.linphone.activities.*
|
||||||
import org.linphone.activities.main.*
|
import org.linphone.activities.main.*
|
||||||
import org.linphone.activities.main.history.viewmodels.CallLogViewModel
|
import org.linphone.activities.main.history.viewmodels.CallLogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToContact
|
import org.linphone.activities.navigateToContact
|
||||||
import org.linphone.activities.navigateToContacts
|
import org.linphone.activities.navigateToContacts
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
|
@ -37,7 +35,6 @@ import org.linphone.utils.Event
|
||||||
|
|
||||||
class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
||||||
private lateinit var viewModel: CallLogViewModel
|
private lateinit var viewModel: CallLogViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.history_detail_fragment
|
override fun getLayoutId(): Int = R.layout.history_detail_fragment
|
||||||
|
|
||||||
|
@ -46,9 +43,6 @@ class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
binding.sharedMainViewModel = sharedViewModel
|
binding.sharedMainViewModel = sharedViewModel
|
||||||
|
|
||||||
val callLogGroup = sharedViewModel.selectedCallLogGroup.value
|
val callLogGroup = sharedViewModel.selectedCallLogGroup.value
|
||||||
|
@ -64,10 +58,6 @@ class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
||||||
|
|
||||||
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setNewContactClickListener {
|
binding.setNewContactClickListener {
|
||||||
val copy = viewModel.callLog.remoteAddress.clone()
|
val copy = viewModel.callLog.remoteAddress.clone()
|
||||||
copy.clean()
|
copy.clean()
|
||||||
|
@ -141,14 +131,6 @@ class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptyCallHistory()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
viewModel.enableListener(true)
|
viewModel.enableListener(true)
|
||||||
|
|
|
@ -21,20 +21,16 @@ package org.linphone.activities.main.history.fragments
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.lifecycle.ViewModelProvider
|
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.*
|
import org.linphone.activities.*
|
||||||
import org.linphone.activities.main.*
|
import org.linphone.activities.main.*
|
||||||
import org.linphone.activities.main.history.viewmodels.CallLogViewModel
|
import org.linphone.activities.main.history.viewmodels.CallLogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.HistoryConfDetailFragmentBinding
|
import org.linphone.databinding.HistoryConfDetailFragmentBinding
|
||||||
import org.linphone.utils.Event
|
|
||||||
|
|
||||||
class DetailConferenceCallLogFragment : GenericFragment<HistoryConfDetailFragmentBinding>() {
|
class DetailConferenceCallLogFragment : GenericFragment<HistoryConfDetailFragmentBinding>() {
|
||||||
private lateinit var viewModel: CallLogViewModel
|
private lateinit var viewModel: CallLogViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.history_conf_detail_fragment
|
override fun getLayoutId(): Int = R.layout.history_conf_detail_fragment
|
||||||
|
|
||||||
|
@ -43,9 +39,6 @@ class DetailConferenceCallLogFragment : GenericFragment<HistoryConfDetailFragmen
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
binding.sharedMainViewModel = sharedViewModel
|
binding.sharedMainViewModel = sharedViewModel
|
||||||
|
|
||||||
val callLogGroup = sharedViewModel.selectedCallLogGroup.value
|
val callLogGroup = sharedViewModel.selectedCallLogGroup.value
|
||||||
|
@ -61,10 +54,6 @@ class DetailConferenceCallLogFragment : GenericFragment<HistoryConfDetailFragmen
|
||||||
|
|
||||||
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
viewModel.onMessageToNotifyEvent.observe(
|
viewModel.onMessageToNotifyEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -73,12 +62,4 @@ class DetailConferenceCallLogFragment : GenericFragment<HistoryConfDetailFragmen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptyCallHistory()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,13 +24,11 @@ import android.content.res.Configuration
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.view.doOnPreDraw
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
import androidx.navigation.fragment.NavHostFragment
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.slidingpanelayout.widget.SlidingPaneLayout
|
|
||||||
import com.google.android.material.transition.MaterialSharedAxis
|
import com.google.android.material.transition.MaterialSharedAxis
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
|
@ -42,7 +40,6 @@ import org.linphone.activities.main.history.adapters.CallLogsListAdapter
|
||||||
import org.linphone.activities.main.history.data.GroupedCallLogData
|
import org.linphone.activities.main.history.data.GroupedCallLogData
|
||||||
import org.linphone.activities.main.history.viewmodels.CallLogsListViewModel
|
import org.linphone.activities.main.history.viewmodels.CallLogsListViewModel
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.main.viewmodels.TabsViewModel
|
import org.linphone.activities.main.viewmodels.TabsViewModel
|
||||||
import org.linphone.activities.navigateToCallHistory
|
import org.linphone.activities.navigateToCallHistory
|
||||||
import org.linphone.activities.navigateToConferenceCallHistory
|
import org.linphone.activities.navigateToConferenceCallHistory
|
||||||
|
@ -54,7 +51,6 @@ import org.linphone.utils.*
|
||||||
class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, CallLogsListAdapter>() {
|
class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, CallLogsListAdapter>() {
|
||||||
override val dialogConfirmationMessageBeforeRemoval = R.plurals.history_delete_dialog
|
override val dialogConfirmationMessageBeforeRemoval = R.plurals.history_delete_dialog
|
||||||
private lateinit var listViewModel: CallLogsListViewModel
|
private lateinit var listViewModel: CallLogsListViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
private val observer = object : RecyclerView.AdapterDataObserver() {
|
private val observer = object : RecyclerView.AdapterDataObserver() {
|
||||||
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
|
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
|
||||||
|
@ -96,21 +92,8 @@ class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, Call
|
||||||
|
|
||||||
/* Shared view model & sliding pane related */
|
/* Shared view model & sliding pane related */
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
setUpSlidingPane(binding.slidingPane)
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
view.doOnPreDraw { sharedViewModel.isSlidingPaneSlideable.value = binding.slidingPane.isSlideable }
|
|
||||||
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.observe(
|
|
||||||
viewLifecycleOwner
|
|
||||||
) {
|
|
||||||
it.consume {
|
|
||||||
if (!binding.slidingPane.closePane()) {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sharedViewModel.layoutChangedEvent.observe(
|
sharedViewModel.layoutChangedEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -126,7 +109,7 @@ class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, Call
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
|
|
||||||
/* End of shared view model & sliding pane related */
|
/* End of shared view model & sliding pane related */
|
||||||
|
|
||||||
_adapter = CallLogsListAdapter(listSelectionViewModel, viewLifecycleOwner)
|
_adapter = CallLogsListAdapter(listSelectionViewModel, viewLifecycleOwner)
|
||||||
|
|
|
@ -97,8 +97,6 @@ class RecordingsFragment : MasterFragment<RecordingsFragmentBinding, RecordingsL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
|
|
||||||
binding.setEditClickListener { listSelectionViewModel.isEditionEnabled.value = true }
|
binding.setEditClickListener { listSelectionViewModel.isEditionEnabled.value = true }
|
||||||
|
|
||||||
binding.setVideoTouchListener { v, event ->
|
binding.setVideoTouchListener { v, event ->
|
||||||
|
|
|
@ -26,7 +26,6 @@ import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModel
|
||||||
import org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModelFactory
|
import org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModelFactory
|
||||||
import org.linphone.activities.navigateToEmptySetting
|
|
||||||
import org.linphone.activities.navigateToPhoneLinking
|
import org.linphone.activities.navigateToPhoneLinking
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.SettingsAccountFragmentBinding
|
import org.linphone.databinding.SettingsAccountFragmentBinding
|
||||||
|
@ -59,8 +58,6 @@ class AccountSettingsFragment : GenericSettingFragment<SettingsAccountFragmentBi
|
||||||
}
|
}
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
|
|
||||||
viewModel.linkPhoneNumberEvent.observe(
|
viewModel.linkPhoneNumberEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -100,12 +97,4 @@ class AccountSettingsFragment : GenericSettingFragment<SettingsAccountFragmentBi
|
||||||
sharedViewModel.accountSettingsFragmentOpenedEvent.value = Event(true)
|
sharedViewModel.accountSettingsFragmentOpenedEvent.value = Event(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptySetting()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,12 +30,10 @@ import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.MainActivity
|
import org.linphone.activities.main.MainActivity
|
||||||
import org.linphone.activities.main.settings.viewmodels.AdvancedSettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.AdvancedSettingsViewModel
|
||||||
import org.linphone.activities.navigateToEmptySetting
|
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.core.tools.compatibility.DeviceUtils
|
import org.linphone.core.tools.compatibility.DeviceUtils
|
||||||
import org.linphone.databinding.SettingsAdvancedFragmentBinding
|
import org.linphone.databinding.SettingsAdvancedFragmentBinding
|
||||||
import org.linphone.utils.AppUtils
|
import org.linphone.utils.AppUtils
|
||||||
import org.linphone.utils.Event
|
|
||||||
import org.linphone.utils.PowerManagerUtils
|
import org.linphone.utils.PowerManagerUtils
|
||||||
|
|
||||||
class AdvancedSettingsFragment : GenericSettingFragment<SettingsAdvancedFragmentBinding>() {
|
class AdvancedSettingsFragment : GenericSettingFragment<SettingsAdvancedFragmentBinding>() {
|
||||||
|
@ -52,8 +50,6 @@ class AdvancedSettingsFragment : GenericSettingFragment<SettingsAdvancedFragment
|
||||||
viewModel = ViewModelProvider(this)[AdvancedSettingsViewModel::class.java]
|
viewModel = ViewModelProvider(this)[AdvancedSettingsViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
|
|
||||||
viewModel.uploadFinishedEvent.observe(
|
viewModel.uploadFinishedEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -146,12 +142,4 @@ class AdvancedSettingsFragment : GenericSettingFragment<SettingsAdvancedFragment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptySetting()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,10 +31,8 @@ import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.settings.SettingListenerStub
|
import org.linphone.activities.main.settings.SettingListenerStub
|
||||||
import org.linphone.activities.main.settings.viewmodels.AudioSettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.AudioSettingsViewModel
|
||||||
import org.linphone.activities.navigateToEmptySetting
|
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.SettingsAudioFragmentBinding
|
import org.linphone.databinding.SettingsAudioFragmentBinding
|
||||||
import org.linphone.utils.Event
|
|
||||||
import org.linphone.utils.PermissionHelper
|
import org.linphone.utils.PermissionHelper
|
||||||
|
|
||||||
class AudioSettingsFragment : GenericSettingFragment<SettingsAudioFragmentBinding>() {
|
class AudioSettingsFragment : GenericSettingFragment<SettingsAudioFragmentBinding>() {
|
||||||
|
@ -51,8 +49,6 @@ class AudioSettingsFragment : GenericSettingFragment<SettingsAudioFragmentBindin
|
||||||
viewModel = ViewModelProvider(this)[AudioSettingsViewModel::class.java]
|
viewModel = ViewModelProvider(this)[AudioSettingsViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
|
|
||||||
viewModel.askAudioRecordPermissionForEchoCancellerCalibrationEvent.observe(
|
viewModel.askAudioRecordPermissionForEchoCancellerCalibrationEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -117,12 +113,4 @@ class AudioSettingsFragment : GenericSettingFragment<SettingsAudioFragmentBindin
|
||||||
}
|
}
|
||||||
viewModel.audioCodecs.value = list
|
viewModel.audioCodecs.value = list
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptySetting()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,13 +30,11 @@ import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.settings.viewmodels.CallSettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.CallSettingsViewModel
|
||||||
import org.linphone.activities.navigateToEmptySetting
|
|
||||||
import org.linphone.compatibility.Compatibility
|
import org.linphone.compatibility.Compatibility
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.SettingsCallFragmentBinding
|
import org.linphone.databinding.SettingsCallFragmentBinding
|
||||||
import org.linphone.mediastream.Version
|
import org.linphone.mediastream.Version
|
||||||
import org.linphone.telecom.TelecomHelper
|
import org.linphone.telecom.TelecomHelper
|
||||||
import org.linphone.utils.Event
|
|
||||||
|
|
||||||
class CallSettingsFragment : GenericSettingFragment<SettingsCallFragmentBinding>() {
|
class CallSettingsFragment : GenericSettingFragment<SettingsCallFragmentBinding>() {
|
||||||
private lateinit var viewModel: CallSettingsViewModel
|
private lateinit var viewModel: CallSettingsViewModel
|
||||||
|
@ -52,8 +50,6 @@ class CallSettingsFragment : GenericSettingFragment<SettingsCallFragmentBinding>
|
||||||
viewModel = ViewModelProvider(this)[CallSettingsViewModel::class.java]
|
viewModel = ViewModelProvider(this)[CallSettingsViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
|
|
||||||
viewModel.systemWideOverlayEnabledEvent.observe(
|
viewModel.systemWideOverlayEnabledEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -162,14 +158,6 @@ class CallSettingsFragment : GenericSettingFragment<SettingsCallFragmentBinding>
|
||||||
corePreferences.useTelecomManager = enabled
|
corePreferences.useTelecomManager = enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptySetting()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onRequestPermissionsResult(
|
override fun onRequestPermissionsResult(
|
||||||
requestCode: Int,
|
requestCode: Int,
|
||||||
permissions: Array<out String>,
|
permissions: Array<out String>,
|
||||||
|
|
|
@ -28,10 +28,8 @@ import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.chat.viewmodels.ChatRoomsListViewModel
|
import org.linphone.activities.main.chat.viewmodels.ChatRoomsListViewModel
|
||||||
import org.linphone.activities.main.settings.viewmodels.ChatSettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.ChatSettingsViewModel
|
||||||
import org.linphone.activities.navigateToEmptySetting
|
|
||||||
import org.linphone.databinding.SettingsChatFragmentBinding
|
import org.linphone.databinding.SettingsChatFragmentBinding
|
||||||
import org.linphone.mediastream.Version
|
import org.linphone.mediastream.Version
|
||||||
import org.linphone.utils.Event
|
|
||||||
import org.linphone.utils.ShortcutsHelper
|
import org.linphone.utils.ShortcutsHelper
|
||||||
|
|
||||||
class ChatSettingsFragment : GenericSettingFragment<SettingsChatFragmentBinding>() {
|
class ChatSettingsFragment : GenericSettingFragment<SettingsChatFragmentBinding>() {
|
||||||
|
@ -48,8 +46,6 @@ class ChatSettingsFragment : GenericSettingFragment<SettingsChatFragmentBinding>
|
||||||
viewModel = ViewModelProvider(this)[ChatSettingsViewModel::class.java]
|
viewModel = ViewModelProvider(this)[ChatSettingsViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
|
|
||||||
viewModel.launcherShortcutsEvent.observe(
|
viewModel.launcherShortcutsEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -90,14 +86,6 @@ class ChatSettingsFragment : GenericSettingFragment<SettingsChatFragmentBinding>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptySetting()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun reloadChatRooms() {
|
private fun reloadChatRooms() {
|
||||||
val listViewModel = requireActivity().run {
|
val listViewModel = requireActivity().run {
|
||||||
ViewModelProvider(this)[ChatRoomsListViewModel::class.java]
|
ViewModelProvider(this)[ChatRoomsListViewModel::class.java]
|
||||||
|
|
|
@ -24,9 +24,7 @@ import android.view.View
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.settings.viewmodels.ConferencesSettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.ConferencesSettingsViewModel
|
||||||
import org.linphone.activities.navigateToEmptySetting
|
|
||||||
import org.linphone.databinding.SettingsConferencesFragmentBinding
|
import org.linphone.databinding.SettingsConferencesFragmentBinding
|
||||||
import org.linphone.utils.Event
|
|
||||||
|
|
||||||
class ConferencesSettingsFragment : GenericSettingFragment<SettingsConferencesFragmentBinding>() {
|
class ConferencesSettingsFragment : GenericSettingFragment<SettingsConferencesFragmentBinding>() {
|
||||||
private lateinit var viewModel: ConferencesSettingsViewModel
|
private lateinit var viewModel: ConferencesSettingsViewModel
|
||||||
|
@ -41,15 +39,5 @@ class ConferencesSettingsFragment : GenericSettingFragment<SettingsConferencesFr
|
||||||
|
|
||||||
viewModel = ViewModelProvider(this)[ConferencesSettingsViewModel::class.java]
|
viewModel = ViewModelProvider(this)[ConferencesSettingsViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptySetting()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,11 +28,9 @@ import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.settings.SettingListenerStub
|
import org.linphone.activities.main.settings.SettingListenerStub
|
||||||
import org.linphone.activities.main.settings.viewmodels.ContactsSettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.ContactsSettingsViewModel
|
||||||
import org.linphone.activities.navigateToEmptySetting
|
|
||||||
import org.linphone.activities.navigateToLdapSettings
|
import org.linphone.activities.navigateToLdapSettings
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.SettingsContactsFragmentBinding
|
import org.linphone.databinding.SettingsContactsFragmentBinding
|
||||||
import org.linphone.utils.Event
|
|
||||||
import org.linphone.utils.PermissionHelper
|
import org.linphone.utils.PermissionHelper
|
||||||
import org.linphone.utils.ShortcutsHelper
|
import org.linphone.utils.ShortcutsHelper
|
||||||
|
|
||||||
|
@ -50,8 +48,6 @@ class ContactsSettingsFragment : GenericSettingFragment<SettingsContactsFragment
|
||||||
viewModel = ViewModelProvider(this)[ContactsSettingsViewModel::class.java]
|
viewModel = ViewModelProvider(this)[ContactsSettingsViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
|
|
||||||
viewModel.launcherShortcutsEvent.observe(
|
viewModel.launcherShortcutsEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -126,14 +122,6 @@ class ContactsSettingsFragment : GenericSettingFragment<SettingsContactsFragment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptySetting()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
viewModel.updateLdapConfigurationsList()
|
viewModel.updateLdapConfigurationsList()
|
||||||
|
|
|
@ -22,18 +22,10 @@ package org.linphone.activities.main.settings.fragments
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.databinding.ViewDataBinding
|
import androidx.databinding.ViewDataBinding
|
||||||
import androidx.lifecycle.ViewModelProvider
|
|
||||||
import org.linphone.activities.GenericFragment
|
import org.linphone.activities.GenericFragment
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
|
|
||||||
abstract class GenericSettingFragment<T : ViewDataBinding> : GenericFragment<T>() {
|
abstract class GenericSettingFragment<T : ViewDataBinding> : GenericFragment<T>() {
|
||||||
protected lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
useMaterialSharedAxisXForwardAnimation = sharedViewModel.isSlidingPaneSlideable.value == false
|
||||||
|
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
|
@ -62,7 +62,5 @@ class LdapSettingsFragment : GenericSettingFragment<SettingsLdapFragmentBinding>
|
||||||
goBack()
|
goBack()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,9 +24,7 @@ import android.view.View
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.settings.viewmodels.NetworkSettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.NetworkSettingsViewModel
|
||||||
import org.linphone.activities.navigateToEmptySetting
|
|
||||||
import org.linphone.databinding.SettingsNetworkFragmentBinding
|
import org.linphone.databinding.SettingsNetworkFragmentBinding
|
||||||
import org.linphone.utils.Event
|
|
||||||
|
|
||||||
class NetworkSettingsFragment : GenericSettingFragment<SettingsNetworkFragmentBinding>() {
|
class NetworkSettingsFragment : GenericSettingFragment<SettingsNetworkFragmentBinding>() {
|
||||||
private lateinit var viewModel: NetworkSettingsViewModel
|
private lateinit var viewModel: NetworkSettingsViewModel
|
||||||
|
@ -41,15 +39,5 @@ class NetworkSettingsFragment : GenericSettingFragment<SettingsNetworkFragmentBi
|
||||||
|
|
||||||
viewModel = ViewModelProvider(this)[NetworkSettingsViewModel::class.java]
|
viewModel = ViewModelProvider(this)[NetworkSettingsViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptySetting()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,10 +29,10 @@ import com.google.android.material.transition.MaterialSharedAxis
|
||||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.*
|
import org.linphone.activities.*
|
||||||
|
import org.linphone.activities.main.fragments.MasterFragment
|
||||||
import org.linphone.activities.main.fragments.SecureFragment
|
import org.linphone.activities.main.fragments.SecureFragment
|
||||||
import org.linphone.activities.main.settings.SettingListenerStub
|
import org.linphone.activities.main.settings.SettingListenerStub
|
||||||
import org.linphone.activities.main.settings.viewmodels.SettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.SettingsViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToAccountSettings
|
import org.linphone.activities.navigateToAccountSettings
|
||||||
import org.linphone.activities.navigateToAudioSettings
|
import org.linphone.activities.navigateToAudioSettings
|
||||||
import org.linphone.activities.navigateToTunnelSettings
|
import org.linphone.activities.navigateToTunnelSettings
|
||||||
|
@ -41,7 +41,6 @@ import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.SettingsFragmentBinding
|
import org.linphone.databinding.SettingsFragmentBinding
|
||||||
|
|
||||||
class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
private lateinit var viewModel: SettingsViewModel
|
private lateinit var viewModel: SettingsViewModel
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.settings_fragment
|
override fun getLayoutId(): Int = R.layout.settings_fragment
|
||||||
|
@ -61,10 +60,6 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
||||||
|
|
||||||
/* Shared view model & sliding pane related */
|
/* Shared view model & sliding pane related */
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
view.doOnPreDraw { sharedViewModel.isSlidingPaneSlideable.value = binding.slidingPane.isSlideable }
|
view.doOnPreDraw { sharedViewModel.isSlidingPaneSlideable.value = binding.slidingPane.isSlideable }
|
||||||
|
|
||||||
// Account settings loading can take some time, so wait until it is ready before opening the pane
|
// Account settings loading can take some time, so wait until it is ready before opening the pane
|
||||||
|
@ -76,15 +71,6 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.observe(
|
|
||||||
viewLifecycleOwner
|
|
||||||
) {
|
|
||||||
it.consume {
|
|
||||||
if (!binding.slidingPane.closePane()) {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sharedViewModel.layoutChangedEvent.observe(
|
sharedViewModel.layoutChangedEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -100,6 +86,12 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
requireActivity().onBackPressedDispatcher.addCallback(
|
||||||
|
viewLifecycleOwner,
|
||||||
|
MasterFragment.SlidingPaneBackPressedCallback(binding.slidingPane)
|
||||||
|
)
|
||||||
|
|
||||||
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
|
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
|
||||||
|
|
||||||
/* End of shared view model & sliding pane related */
|
/* End of shared view model & sliding pane related */
|
||||||
|
@ -107,8 +99,6 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
||||||
viewModel = ViewModelProvider(this)[SettingsViewModel::class.java]
|
viewModel = ViewModelProvider(this)[SettingsViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
|
|
||||||
sharedViewModel.accountRemoved.observe(
|
sharedViewModel.accountRemoved.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -24,9 +24,7 @@ import android.view.View
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.settings.viewmodels.TunnelSettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.TunnelSettingsViewModel
|
||||||
import org.linphone.activities.navigateToEmptySetting
|
|
||||||
import org.linphone.databinding.SettingsTunnelFragmentBinding
|
import org.linphone.databinding.SettingsTunnelFragmentBinding
|
||||||
import org.linphone.utils.Event
|
|
||||||
|
|
||||||
class TunnelSettingsFragment : GenericSettingFragment<SettingsTunnelFragmentBinding>() {
|
class TunnelSettingsFragment : GenericSettingFragment<SettingsTunnelFragmentBinding>() {
|
||||||
private lateinit var viewModel: TunnelSettingsViewModel
|
private lateinit var viewModel: TunnelSettingsViewModel
|
||||||
|
@ -41,15 +39,5 @@ class TunnelSettingsFragment : GenericSettingFragment<SettingsTunnelFragmentBind
|
||||||
|
|
||||||
viewModel = ViewModelProvider(this)[TunnelSettingsViewModel::class.java]
|
viewModel = ViewModelProvider(this)[TunnelSettingsViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptySetting()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,10 +31,8 @@ import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.settings.SettingListenerStub
|
import org.linphone.activities.main.settings.SettingListenerStub
|
||||||
import org.linphone.activities.main.settings.viewmodels.VideoSettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.VideoSettingsViewModel
|
||||||
import org.linphone.activities.navigateToEmptySetting
|
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
import org.linphone.databinding.SettingsVideoFragmentBinding
|
import org.linphone.databinding.SettingsVideoFragmentBinding
|
||||||
import org.linphone.utils.Event
|
|
||||||
import org.linphone.utils.PermissionHelper
|
import org.linphone.utils.PermissionHelper
|
||||||
|
|
||||||
class VideoSettingsFragment : GenericSettingFragment<SettingsVideoFragmentBinding>() {
|
class VideoSettingsFragment : GenericSettingFragment<SettingsVideoFragmentBinding>() {
|
||||||
|
@ -51,8 +49,6 @@ class VideoSettingsFragment : GenericSettingFragment<SettingsVideoFragmentBindin
|
||||||
viewModel = ViewModelProvider(this)[VideoSettingsViewModel::class.java]
|
viewModel = ViewModelProvider(this)[VideoSettingsViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
binding.setBackClickListener { goBack() }
|
|
||||||
|
|
||||||
initVideoCodecsList()
|
initVideoCodecsList()
|
||||||
|
|
||||||
if (!PermissionHelper.required(requireContext()).hasCameraPermission()) {
|
if (!PermissionHelper.required(requireContext()).hasCameraPermission()) {
|
||||||
|
@ -103,12 +99,4 @@ class VideoSettingsFragment : GenericSettingFragment<SettingsVideoFragmentBindin
|
||||||
}
|
}
|
||||||
viewModel.videoCodecs.value = list
|
viewModel.videoCodecs.value = list
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goBack() {
|
|
||||||
if (sharedViewModel.isSlidingPaneSlideable.value == true) {
|
|
||||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
|
||||||
} else {
|
|
||||||
navigateToEmptySetting()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,6 @@ import org.linphone.activities.*
|
||||||
import org.linphone.activities.assistant.AssistantActivity
|
import org.linphone.activities.assistant.AssistantActivity
|
||||||
import org.linphone.activities.main.settings.SettingListenerStub
|
import org.linphone.activities.main.settings.SettingListenerStub
|
||||||
import org.linphone.activities.main.sidemenu.viewmodels.SideMenuViewModel
|
import org.linphone.activities.main.sidemenu.viewmodels.SideMenuViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|
||||||
import org.linphone.activities.navigateToAbout
|
import org.linphone.activities.navigateToAbout
|
||||||
import org.linphone.activities.navigateToAccountSettings
|
import org.linphone.activities.navigateToAccountSettings
|
||||||
import org.linphone.activities.navigateToRecordings
|
import org.linphone.activities.navigateToRecordings
|
||||||
|
@ -49,7 +48,6 @@ import org.linphone.utils.PermissionHelper
|
||||||
|
|
||||||
class SideMenuFragment : GenericFragment<SideMenuFragmentBinding>() {
|
class SideMenuFragment : GenericFragment<SideMenuFragmentBinding>() {
|
||||||
private lateinit var viewModel: SideMenuViewModel
|
private lateinit var viewModel: SideMenuViewModel
|
||||||
private lateinit var sharedViewModel: SharedMainViewModel
|
|
||||||
private var temporaryPicturePath: File? = null
|
private var temporaryPicturePath: File? = null
|
||||||
|
|
||||||
override fun getLayoutId(): Int = R.layout.side_menu_fragment
|
override fun getLayoutId(): Int = R.layout.side_menu_fragment
|
||||||
|
@ -62,10 +60,6 @@ class SideMenuFragment : GenericFragment<SideMenuFragmentBinding>() {
|
||||||
viewModel = ViewModelProvider(this)[SideMenuViewModel::class.java]
|
viewModel = ViewModelProvider(this)[SideMenuViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
sharedViewModel = requireActivity().run {
|
|
||||||
ViewModelProvider(this)[SharedMainViewModel::class.java]
|
|
||||||
}
|
|
||||||
|
|
||||||
sharedViewModel.accountRemoved.observe(
|
sharedViewModel.accountRemoved.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
|
@ -128,8 +122,6 @@ class SideMenuFragment : GenericFragment<SideMenuFragmentBinding>() {
|
||||||
coreContext.notificationsManager.stopForegroundNotification()
|
coreContext.notificationsManager.stopForegroundNotification()
|
||||||
coreContext.stop()
|
coreContext.stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
onBackPressedCallback.isEnabled = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
|
|
|
@ -31,7 +31,6 @@ class SharedMainViewModel : ViewModel() {
|
||||||
|
|
||||||
val layoutChangedEvent = MutableLiveData<Event<Boolean>>()
|
val layoutChangedEvent = MutableLiveData<Event<Boolean>>()
|
||||||
var isSlidingPaneSlideable = MutableLiveData<Boolean>()
|
var isSlidingPaneSlideable = MutableLiveData<Boolean>()
|
||||||
val closeSlidingPaneEvent = MutableLiveData<Event<Boolean>>()
|
|
||||||
|
|
||||||
/* Call history */
|
/* Call history */
|
||||||
|
|
||||||
|
|
|
@ -69,10 +69,6 @@ class ConferenceAddParticipantsFragment : GenericFragment<VoipConferenceParticip
|
||||||
// Divider between items
|
// Divider between items
|
||||||
binding.contactsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
binding.contactsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||||
|
|
||||||
binding.setBackClickListener {
|
|
||||||
goBack()
|
|
||||||
}
|
|
||||||
|
|
||||||
binding.setApplyClickListener {
|
binding.setApplyClickListener {
|
||||||
viewModel.applyChanges()
|
viewModel.applyChanges()
|
||||||
goBack()
|
goBack()
|
||||||
|
|
|
@ -75,11 +75,6 @@ class StatusFragment : GenericFragment<VoipStatusFragmentBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
onBackPressedCallback.isEnabled = false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
if (zrtpDialog != null) {
|
if (zrtpDialog != null) {
|
||||||
zrtpDialog?.dismiss()
|
zrtpDialog?.dismiss()
|
||||||
|
|
|
@ -3,9 +3,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="privacyPolicyClickListener"
|
name="privacyPolicyClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -35,7 +32,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -3,9 +3,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="privacyPolicyClickListener"
|
name="privacyPolicyClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -35,7 +32,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -3,9 +3,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -18,7 +15,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="allContactsToggleClickListener"
|
name="allContactsToggleClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -36,7 +33,6 @@
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="left"
|
android:layout_gravity="left"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="titleClickListener"
|
name="titleClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -61,7 +58,6 @@
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.chat.viewmodels.DevicesListViewModel" />
|
type="org.linphone.activities.main.chat.viewmodels.DevicesListViewModel" />
|
||||||
|
@ -25,7 +22,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="validClickListener"
|
name="validClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -28,7 +25,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="nextClickListener"
|
name="nextClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -40,7 +37,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.chat.viewmodels.ImdnViewModel" />
|
type="org.linphone.activities.main.chat.viewmodels.ImdnViewModel" />
|
||||||
|
@ -26,7 +23,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener" />
|
|
||||||
<variable
|
<variable
|
||||||
name="nextClickListener"
|
name="nextClickListener"
|
||||||
type="android.view.View.OnClickListener" />
|
type="android.view.View.OnClickListener" />
|
||||||
|
@ -35,7 +32,7 @@
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:onClick="@{backClickListener}"
|
android:id="@+id/back"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="nextClickListener"
|
name="nextClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -29,7 +26,7 @@
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:onClick="@{backClickListener}"
|
android:id="@+id/back"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener" />
|
|
||||||
<variable
|
<variable
|
||||||
name="createConferenceClickListener"
|
name="createConferenceClickListener"
|
||||||
type="android.view.View.OnClickListener" />
|
type="android.view.View.OnClickListener" />
|
||||||
|
@ -34,7 +31,7 @@
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:onClick="@{backClickListener}"
|
android:id="@+id/back"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -3,9 +3,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="newConferenceClickListener"
|
name="newConferenceClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -30,7 +27,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="deleteClickListener"
|
name="deleteClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -35,7 +32,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="avatarClickListener"
|
name="avatarClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -30,9 +27,8 @@
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/cancel"
|
android:id="@+id/back"
|
||||||
android:contentDescription="@string/content_description_discard_changes"
|
android:contentDescription="@string/content_description_discard_changes"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="0.2"
|
android:layout_weight="0.2"
|
||||||
|
|
|
@ -3,9 +3,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="exportClickListener"
|
name="exportClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -28,7 +25,7 @@
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:onClick="@{backClickListener}"
|
android:id="@+id/back"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -3,9 +3,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="exportClickListener"
|
name="exportClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -20,7 +17,7 @@
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:onClick="@{backClickListener}"
|
android:id="@+id/back"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -6,10 +6,6 @@
|
||||||
|
|
||||||
<import type="android.view.View" />
|
<import type="android.view.View" />
|
||||||
|
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener" />
|
|
||||||
|
|
||||||
<variable
|
<variable
|
||||||
name="newContactClickListener"
|
name="newContactClickListener"
|
||||||
type="android.view.View.OnClickListener" />
|
type="android.view.View.OnClickListener" />
|
||||||
|
@ -45,7 +41,6 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="0.2"
|
android:layout_weight="0.2"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:padding="18dp"
|
android:padding="18dp"
|
||||||
android:src="@drawable/back"
|
android:src="@drawable/back"
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}" />
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}" />
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="newContactClickListener"
|
name="newContactClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -35,7 +32,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="editClickListener"
|
name="editClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -33,7 +30,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -6,9 +6,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModel"/>
|
||||||
|
@ -31,7 +28,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -6,9 +6,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.AdvancedSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.AdvancedSettingsViewModel"/>
|
||||||
|
@ -31,7 +28,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.AudioSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.AudioSettingsViewModel"/>
|
||||||
|
@ -30,7 +27,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.CallSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.CallSettingsViewModel"/>
|
||||||
|
@ -30,7 +27,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.ChatSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.ChatSettingsViewModel"/>
|
||||||
|
@ -30,7 +27,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.ConferencesSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.ConferencesSettingsViewModel"/>
|
||||||
|
@ -30,7 +27,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.ContactsSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.ContactsSettingsViewModel"/>
|
||||||
|
@ -29,7 +26,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -6,9 +6,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.SettingsViewModel" />
|
type="org.linphone.activities.main.settings.viewmodels.SettingsViewModel" />
|
||||||
|
@ -35,7 +32,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.LdapSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.LdapSettingsViewModel"/>
|
||||||
|
@ -30,7 +27,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.NetworkSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.NetworkSettingsViewModel"/>
|
||||||
|
@ -30,7 +27,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.TunnelSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.TunnelSettingsViewModel"/>
|
||||||
|
@ -30,7 +27,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -5,9 +5,6 @@
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<import type="android.text.InputType"/>
|
<import type="android.text.InputType"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.activities.main.settings.viewmodels.VideoSettingsViewModel"/>
|
type="org.linphone.activities.main.settings.viewmodels.VideoSettingsViewModel"/>
|
||||||
|
@ -30,7 +27,6 @@
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/back"
|
android:id="@+id/back"
|
||||||
android:onClick="@{backClickListener}"
|
|
||||||
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
android:visibility="@{sharedMainViewModel.isSlidingPaneSlideable ? View.VISIBLE : View.GONE}"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
|
|
@ -4,9 +4,6 @@
|
||||||
|
|
||||||
<data>
|
<data>
|
||||||
<import type="android.view.View"/>
|
<import type="android.view.View"/>
|
||||||
<variable
|
|
||||||
name="backClickListener"
|
|
||||||
type="android.view.View.OnClickListener"/>
|
|
||||||
<variable
|
<variable
|
||||||
name="applyClickListener"
|
name="applyClickListener"
|
||||||
type="android.view.View.OnClickListener"/>
|
type="android.view.View.OnClickListener"/>
|
||||||
|
@ -29,7 +26,7 @@
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:onClick="@{backClickListener}"
|
android:id="@+id/back"
|
||||||
android:contentDescription="@string/content_description_go_back"
|
android:contentDescription="@string/content_description_go_back"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/main_nav_graph_xml"
|
||||||
app:startDestination="@id/dialerFragment">
|
app:startDestination="@id/dialerFragment">
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
|
|
Loading…
Reference in a new issue