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