mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-05-03 15:26:27 +00:00
Reworked navigation
This commit is contained in:
parent
cbc46ed2e0
commit
fa7c6907be
24 changed files with 121 additions and 136 deletions
17
.idea/deploymentTargetDropDown.xml
generated
Normal file
17
.idea/deploymentTargetDropDown.xml
generated
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="deploymentTargetDropDown">
|
||||||
|
<runningDeviceTargetSelectedWithDropDown>
|
||||||
|
<Target>
|
||||||
|
<type value="RUNNING_DEVICE_TARGET" />
|
||||||
|
<deviceKey>
|
||||||
|
<Key>
|
||||||
|
<type value="SERIAL_NUMBER" />
|
||||||
|
<value value="1A051FDEE005XG" />
|
||||||
|
</Key>
|
||||||
|
</deviceKey>
|
||||||
|
</Target>
|
||||||
|
</runningDeviceTargetSelectedWithDropDown>
|
||||||
|
<timeTargetWasSelectedWithDropDown value="2023-09-07T11:13:39.568123492Z" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
|
|
@ -74,7 +74,6 @@ class CallFragment : GenericFragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
postponeEnterTransition()
|
postponeEnterTransition()
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@ import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.view.animation.Animation
|
||||||
|
import android.view.animation.AnimationUtils
|
||||||
import androidx.annotation.UiThread
|
import androidx.annotation.UiThread
|
||||||
import androidx.core.view.doOnPreDraw
|
import androidx.core.view.doOnPreDraw
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
|
|
@ -47,13 +49,20 @@ class CallsFragment : GenericFragment() {
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation? {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.startCallFragment) {
|
||||||
|
// Holds fragment in place while new contact fragment slides over it
|
||||||
|
return AnimationUtils.loadAnimation(activity, R.anim.hold)
|
||||||
|
}
|
||||||
|
return AnimationUtils.loadAnimation(activity, R.anim.hold)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
postponeEnterTransition()
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
postponeEnterTransition()
|
|
||||||
|
|
||||||
sharedViewModel.callsListReadyToBeDisplayedEvent.observe(viewLifecycleOwner) {
|
sharedViewModel.callsListReadyToBeDisplayedEvent.observe(viewLifecycleOwner) {
|
||||||
it.consume {
|
it.consume {
|
||||||
startPostponedEnterTransition()
|
startPostponedEnterTransition()
|
||||||
|
|
@ -88,12 +97,18 @@ class CallsFragment : GenericFragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sharedViewModel.showStartCallEvent.observe(viewLifecycleOwner) {
|
||||||
|
it.consume {
|
||||||
|
findNavController().navigate(R.id.action_global_startCallFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sharedViewModel.showCallLogEvent.observe(
|
sharedViewModel.showCallLogEvent.observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) {
|
) {
|
||||||
it.consume { callId ->
|
it.consume { callId ->
|
||||||
Log.i("[Calls Fragment] Displaying call log with call ID [$callId]")
|
Log.i("[Calls Fragment] Displaying call log with call ID [$callId]")
|
||||||
val navController = binding.callsRightNavContainer.findNavController()
|
val navController = binding.callsNavContainer.findNavController()
|
||||||
val action = CallFragmentDirections.actionGlobalCallFragment(
|
val action = CallFragmentDirections.actionGlobalCallFragment(
|
||||||
callId
|
callId
|
||||||
)
|
)
|
||||||
|
|
@ -105,7 +120,7 @@ class CallsFragment : GenericFragment() {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.callsFragment) {
|
if (findNavController().currentDestination?.id == R.id.callsFragment) {
|
||||||
// To prevent any previously seen contact to show up when navigating back to here later
|
// To prevent any previously seen contact to show up when navigating back to here later
|
||||||
binding.callsRightNavContainer.findNavController().popBackStack()
|
binding.callsNavContainer.findNavController().popBackStack()
|
||||||
|
|
||||||
val action =
|
val action =
|
||||||
CallsFragmentDirections.actionCallsFragmentToConversationsFragment()
|
CallsFragmentDirections.actionCallsFragmentToConversationsFragment()
|
||||||
|
|
@ -118,7 +133,7 @@ class CallsFragment : GenericFragment() {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.callsFragment) {
|
if (findNavController().currentDestination?.id == R.id.callsFragment) {
|
||||||
// To prevent any previously seen contact to show up when navigating back to here later
|
// To prevent any previously seen contact to show up when navigating back to here later
|
||||||
binding.callsRightNavContainer.findNavController().popBackStack()
|
binding.callsNavContainer.findNavController().popBackStack()
|
||||||
|
|
||||||
val action = CallsFragmentDirections.actionCallsFragmentToContactsFragment()
|
val action = CallsFragmentDirections.actionCallsFragmentToContactsFragment()
|
||||||
findNavController().navigate(action)
|
findNavController().navigate(action)
|
||||||
|
|
|
||||||
|
|
@ -27,14 +27,11 @@ import android.view.Gravity
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.animation.Animation
|
|
||||||
import android.view.animation.AnimationUtils
|
|
||||||
import android.widget.PopupWindow
|
import android.widget.PopupWindow
|
||||||
import androidx.annotation.UiThread
|
import androidx.annotation.UiThread
|
||||||
import androidx.core.view.doOnPreDraw
|
import androidx.core.view.doOnPreDraw
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.navGraphViewModels
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
|
@ -59,20 +56,10 @@ class CallsListFragment : GenericFragment() {
|
||||||
|
|
||||||
private lateinit var binding: CallsListFragmentBinding
|
private lateinit var binding: CallsListFragmentBinding
|
||||||
|
|
||||||
private val listViewModel: CallsListViewModel by navGraphViewModels(
|
private lateinit var listViewModel: CallsListViewModel
|
||||||
R.id.callsListFragment
|
|
||||||
)
|
|
||||||
|
|
||||||
private lateinit var adapter: CallsListAdapter
|
private lateinit var adapter: CallsListAdapter
|
||||||
|
|
||||||
override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation? {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.startCallFragment) {
|
|
||||||
// Holds fragment in place while new contact fragment slides over it
|
|
||||||
return AnimationUtils.loadAnimation(activity, R.anim.hold)
|
|
||||||
}
|
|
||||||
return super.onCreateAnimation(transit, enter, nextAnim)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
|
|
@ -83,12 +70,15 @@ class CallsListFragment : GenericFragment() {
|
||||||
}
|
}
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
postponeEnterTransition()
|
||||||
|
|
||||||
|
listViewModel = requireActivity().run {
|
||||||
|
ViewModelProvider(this)[CallsListViewModel::class.java]
|
||||||
|
}
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
binding.viewModel = listViewModel
|
binding.viewModel = listViewModel
|
||||||
|
|
||||||
postponeEnterTransition()
|
|
||||||
|
|
||||||
adapter = CallsListAdapter(viewLifecycleOwner)
|
adapter = CallsListAdapter(viewLifecycleOwner)
|
||||||
binding.callsList.setHasFixedSize(true)
|
binding.callsList.setHasFixedSize(true)
|
||||||
binding.callsList.adapter = adapter
|
binding.callsList.adapter = adapter
|
||||||
|
|
@ -186,7 +176,7 @@ class CallsListFragment : GenericFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setStartCallClickListener {
|
binding.setStartCallClickListener {
|
||||||
findNavController().navigate(R.id.action_global_startCallFragment)
|
sharedViewModel.showStartCallEvent.value = Event(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
sharedViewModel.defaultAccountChangedEvent.observe(viewLifecycleOwner) {
|
sharedViewModel.defaultAccountChangedEvent.observe(viewLifecycleOwner) {
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,6 @@ class StartCallFragment : GenericFragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
postponeEnterTransition()
|
postponeEnterTransition()
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,6 @@ class ContactFragment : GenericFragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
postponeEnterTransition()
|
postponeEnterTransition()
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@ import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.view.animation.Animation
|
||||||
|
import android.view.animation.AnimationUtils
|
||||||
import androidx.annotation.UiThread
|
import androidx.annotation.UiThread
|
||||||
import androidx.core.view.doOnPreDraw
|
import androidx.core.view.doOnPreDraw
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
|
|
@ -51,13 +53,20 @@ class ContactsFragment : GenericFragment() {
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation? {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.newContactFragment) {
|
||||||
|
// Holds fragment in place while new contact fragment slides over it
|
||||||
|
return AnimationUtils.loadAnimation(activity, R.anim.hold)
|
||||||
|
}
|
||||||
|
return super.onCreateAnimation(transit, enter, nextAnim)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
postponeEnterTransition()
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
||||||
postponeEnterTransition()
|
|
||||||
|
|
||||||
sharedViewModel.contactsListReadyToBeDisplayedEvent.observe(viewLifecycleOwner) {
|
sharedViewModel.contactsListReadyToBeDisplayedEvent.observe(viewLifecycleOwner) {
|
||||||
it.consume {
|
it.consume {
|
||||||
Log.i("$TAG Contacts list is ready, starting postponed enter transition")
|
Log.i("$TAG Contacts list is ready, starting postponed enter transition")
|
||||||
|
|
@ -107,7 +116,7 @@ class ContactsFragment : GenericFragment() {
|
||||||
) {
|
) {
|
||||||
it.consume { refKey ->
|
it.consume { refKey ->
|
||||||
Log.i("$TAG Displaying contact with ref key [$refKey]")
|
Log.i("$TAG Displaying contact with ref key [$refKey]")
|
||||||
val navController = binding.contactsRightNavContainer.findNavController()
|
val navController = binding.contactsNavContainer.findNavController()
|
||||||
val action = ContactFragmentDirections.actionGlobalContactFragment(
|
val action = ContactFragmentDirections.actionGlobalContactFragment(
|
||||||
refKey
|
refKey
|
||||||
)
|
)
|
||||||
|
|
@ -120,7 +129,7 @@ class ContactsFragment : GenericFragment() {
|
||||||
) {
|
) {
|
||||||
it.consume {
|
it.consume {
|
||||||
Log.i("$TAG Opening contact editor for creating new contact")
|
Log.i("$TAG Opening contact editor for creating new contact")
|
||||||
val navController = binding.contactsLeftNavContainer.findNavController()
|
val navController = findNavController()
|
||||||
navController.navigate(R.id.action_global_newContactFragment)
|
navController.navigate(R.id.action_global_newContactFragment)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -129,7 +138,7 @@ class ContactsFragment : GenericFragment() {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.contactsFragment) {
|
if (findNavController().currentDestination?.id == R.id.contactsFragment) {
|
||||||
// To prevent any previously seen contact to show up when navigating back to here later
|
// To prevent any previously seen contact to show up when navigating back to here later
|
||||||
binding.contactsRightNavContainer.findNavController().popBackStack()
|
binding.contactsNavContainer.findNavController().popBackStack()
|
||||||
|
|
||||||
val action = ContactsFragmentDirections.actionContactsFragmentToConversationsFragment()
|
val action = ContactsFragmentDirections.actionContactsFragmentToConversationsFragment()
|
||||||
findNavController().navigate(action)
|
findNavController().navigate(action)
|
||||||
|
|
@ -141,7 +150,7 @@ class ContactsFragment : GenericFragment() {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.contactsFragment) {
|
if (findNavController().currentDestination?.id == R.id.contactsFragment) {
|
||||||
// To prevent any previously seen contact to show up when navigating back to here later
|
// To prevent any previously seen contact to show up when navigating back to here later
|
||||||
binding.contactsRightNavContainer.findNavController().popBackStack()
|
binding.contactsNavContainer.findNavController().popBackStack()
|
||||||
|
|
||||||
val action = ContactsFragmentDirections.actionContactsFragmentToCallsFragment()
|
val action = ContactsFragmentDirections.actionContactsFragmentToCallsFragment()
|
||||||
findNavController().navigate(action)
|
findNavController().navigate(action)
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,10 @@ import android.provider.ContactsContract
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.animation.Animation
|
|
||||||
import android.view.animation.AnimationUtils
|
|
||||||
import androidx.annotation.UiThread
|
import androidx.annotation.UiThread
|
||||||
import androidx.core.content.FileProvider
|
import androidx.core.content.FileProvider
|
||||||
import androidx.core.view.doOnPreDraw
|
import androidx.core.view.doOnPreDraw
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.navGraphViewModels
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
|
@ -54,21 +51,11 @@ class ContactsListFragment : GenericFragment() {
|
||||||
|
|
||||||
private lateinit var binding: ContactsListFragmentBinding
|
private lateinit var binding: ContactsListFragmentBinding
|
||||||
|
|
||||||
private val listViewModel: ContactsListViewModel by navGraphViewModels(
|
private lateinit var listViewModel: ContactsListViewModel
|
||||||
R.id.contactsListFragment
|
|
||||||
)
|
|
||||||
|
|
||||||
private lateinit var adapter: ContactsListAdapter
|
private lateinit var adapter: ContactsListAdapter
|
||||||
private lateinit var favouritesAdapter: ContactsListAdapter
|
private lateinit var favouritesAdapter: ContactsListAdapter
|
||||||
|
|
||||||
override fun onCreateAnimation(transit: Int, enter: Boolean, nextAnim: Int): Animation? {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.newContactFragment) {
|
|
||||||
// Holds fragment in place while new contact fragment slides over it
|
|
||||||
return AnimationUtils.loadAnimation(activity, R.anim.hold)
|
|
||||||
}
|
|
||||||
return super.onCreateAnimation(transit, enter, nextAnim)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup?,
|
container: ViewGroup?,
|
||||||
|
|
@ -80,9 +67,12 @@ class ContactsListFragment : GenericFragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
postponeEnterTransition()
|
postponeEnterTransition()
|
||||||
|
|
||||||
|
listViewModel = requireActivity().run {
|
||||||
|
ViewModelProvider(this)[ContactsListViewModel::class.java]
|
||||||
|
}
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
binding.viewModel = listViewModel
|
binding.viewModel = listViewModel
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -95,12 +95,11 @@ class EditContactFragment : GenericFragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
postponeEnterTransition()
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
postponeEnterTransition()
|
|
||||||
|
|
||||||
val refKey = args.contactRefKey
|
val refKey = args.contactRefKey
|
||||||
Log.i("$TAG Looking up for contact with ref key [$refKey]")
|
Log.i("$TAG Looking up for contact with ref key [$refKey]")
|
||||||
viewModel.findFriendByRefKey(refKey)
|
viewModel.findFriendByRefKey(refKey)
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ class ConversationFragment : Fragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
postponeEnterTransition()
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
@ -74,8 +75,6 @@ class ConversationFragment : Fragment() {
|
||||||
}
|
}
|
||||||
arguments?.clear()
|
arguments?.clear()
|
||||||
|
|
||||||
postponeEnterTransition()
|
|
||||||
|
|
||||||
adapter = ChatEventLogsListAdapter(viewLifecycleOwner)
|
adapter = ChatEventLogsListAdapter(viewLifecycleOwner)
|
||||||
binding.messagesList.setHasFixedSize(false)
|
binding.messagesList.setHasFixedSize(false)
|
||||||
binding.messagesList.adapter = adapter
|
binding.messagesList.adapter = adapter
|
||||||
|
|
|
||||||
|
|
@ -89,12 +89,11 @@ class ConversationsFragment : Fragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
postponeEnterTransition()
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
binding.viewModel = listViewModel
|
binding.viewModel = listViewModel
|
||||||
|
|
||||||
postponeEnterTransition()
|
|
||||||
|
|
||||||
adapter = ConversationsListAdapter(viewLifecycleOwner)
|
adapter = ConversationsListAdapter(viewLifecycleOwner)
|
||||||
adapter.registerAdapterDataObserver(observer)
|
adapter.registerAdapterDataObserver(observer)
|
||||||
binding.conversationsList.setHasFixedSize(true)
|
binding.conversationsList.setHasFixedSize(true)
|
||||||
|
|
|
||||||
|
|
@ -62,12 +62,11 @@ class NewConversationFragment : Fragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
postponeEnterTransition()
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
postponeEnterTransition()
|
|
||||||
|
|
||||||
adapter = ContactsSelectionAdapter(viewLifecycleOwner)
|
adapter = ContactsSelectionAdapter(viewLifecycleOwner)
|
||||||
binding.contactsList.adapter = adapter
|
binding.contactsList.adapter = adapter
|
||||||
binding.contactsList.setHasFixedSize(true)
|
binding.contactsList.setHasFixedSize(true)
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ class AccountProfileFragment : GenericFragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
postponeEnterTransition()
|
postponeEnterTransition()
|
||||||
|
|
||||||
binding.lifecycleOwner = viewLifecycleOwner
|
binding.lifecycleOwner = viewLifecycleOwner
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,10 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() {
|
||||||
|
|
||||||
val callsListReadyToBeDisplayedEvent = MutableLiveData<Event<Boolean>>()
|
val callsListReadyToBeDisplayedEvent = MutableLiveData<Event<Boolean>>()
|
||||||
|
|
||||||
|
val showStartCallEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||||
|
MutableLiveData<Event<Boolean>>()
|
||||||
|
}
|
||||||
|
|
||||||
val showCallLogEvent: MutableLiveData<Event<String>> by lazy {
|
val showCallLogEvent: MutableLiveData<Event<String>> by lazy {
|
||||||
MutableLiveData<Event<String>>()
|
MutableLiveData<Event<String>>()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,21 +20,20 @@
|
||||||
app:layout_constraintEnd_toEndOf="parent">
|
app:layout_constraintEnd_toEndOf="parent">
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
<androidx.fragment.app.FragmentContainerView
|
||||||
android:id="@+id/calls_left_nav_container"
|
android:id="@+id/calls_list"
|
||||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
android:name="org.linphone.ui.main.calls.fragment.CallsListFragment"
|
||||||
android:layout_width="@dimen/sliding_pane_left_fragment_with_nav_width"
|
android:layout_width="@dimen/sliding_pane_left_fragment_with_nav_width"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:defaultNavHost="false"
|
app:layout="@layout/calls_list_fragment"/>
|
||||||
app:navGraph="@navigation/calls_left_nav_graph"/>
|
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
<androidx.fragment.app.FragmentContainerView
|
||||||
android:id="@+id/calls_right_nav_container"
|
android:id="@+id/calls_nav_container"
|
||||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
app:defaultNavHost="false"
|
app:defaultNavHost="false"
|
||||||
app:navGraph="@navigation/calls_right_nav_graph"/>
|
app:navGraph="@navigation/calls_nav_graph"/>
|
||||||
|
|
||||||
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -124,7 +124,7 @@
|
||||||
app:tint="@color/gray_8"
|
app:tint="@color/gray_8"
|
||||||
app:backgroundTint="@color/white"
|
app:backgroundTint="@color/white"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintBottom_toTopOf="@id/bottom_nav_bar" />
|
app:layout_constraintBottom_toBottomOf="parent" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,21 +20,20 @@
|
||||||
app:layout_constraintEnd_toEndOf="parent">
|
app:layout_constraintEnd_toEndOf="parent">
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
<androidx.fragment.app.FragmentContainerView
|
||||||
android:id="@+id/contacts_left_nav_container"
|
android:id="@+id/contacts_list"
|
||||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
android:name="org.linphone.ui.main.contacts.fragment.ContactsListFragment"
|
||||||
android:layout_width="@dimen/sliding_pane_left_fragment_with_nav_width"
|
android:layout_width="@dimen/sliding_pane_left_fragment_with_nav_width"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:defaultNavHost="false"
|
app:layout="@layout/contacts_list_fragment"/>
|
||||||
app:navGraph="@navigation/contact_left_nav_graph"/>
|
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
<androidx.fragment.app.FragmentContainerView
|
||||||
android:id="@+id/contacts_right_nav_container"
|
android:id="@+id/contacts_nav_container"
|
||||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
app:defaultNavHost="false"
|
app:defaultNavHost="false"
|
||||||
app:navGraph="@navigation/contact_right_nav_graph"/>
|
app:navGraph="@navigation/contacts_nav_graph"/>
|
||||||
|
|
||||||
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,21 +12,20 @@
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
<androidx.fragment.app.FragmentContainerView
|
||||||
android:id="@+id/calls_left_nav_container"
|
android:id="@+id/calls_list"
|
||||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
android:name="org.linphone.ui.main.calls.fragment.CallsListFragment"
|
||||||
android:layout_width="@dimen/sliding_pane_left_fragment_width"
|
android:layout_width="@dimen/sliding_pane_left_fragment_width"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:defaultNavHost="false"
|
app:layout="@layout/calls_list_fragment" />
|
||||||
app:navGraph="@navigation/calls_left_nav_graph"/>
|
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
<androidx.fragment.app.FragmentContainerView
|
||||||
android:id="@+id/calls_right_nav_container"
|
android:id="@+id/calls_nav_container"
|
||||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||||
android:layout_width="@dimen/sliding_pane_right_fragment_width"
|
android:layout_width="@dimen/sliding_pane_right_fragment_width"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
app:defaultNavHost="false"
|
app:defaultNavHost="false"
|
||||||
app:navGraph="@navigation/calls_right_nav_graph"/>
|
app:navGraph="@navigation/calls_nav_graph"/>
|
||||||
|
|
||||||
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,21 +12,20 @@
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
<androidx.fragment.app.FragmentContainerView
|
||||||
android:id="@+id/contacts_left_nav_container"
|
android:id="@+id/contacts_list"
|
||||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
android:name="org.linphone.ui.main.contacts.fragment.ContactsListFragment"
|
||||||
android:layout_width="@dimen/sliding_pane_left_fragment_width"
|
android:layout_width="@dimen/sliding_pane_left_fragment_width"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:defaultNavHost="false"
|
app:layout="@layout/contacts_list_fragment"/>
|
||||||
app:navGraph="@navigation/contact_left_nav_graph"/>
|
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
<androidx.fragment.app.FragmentContainerView
|
||||||
android:id="@+id/contacts_right_nav_container"
|
android:id="@+id/contacts_nav_container"
|
||||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||||
android:layout_width="@dimen/sliding_pane_right_fragment_width"
|
android:layout_width="@dimen/sliding_pane_right_fragment_width"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
app:defaultNavHost="false"
|
app:defaultNavHost="false"
|
||||||
app:navGraph="@navigation/contact_right_nav_graph"/>
|
app:navGraph="@navigation/contacts_nav_graph"/>
|
||||||
|
|
||||||
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:id="@+id/calls_left_nav_graph"
|
|
||||||
app:startDestination="@id/callsListFragment">
|
|
||||||
|
|
||||||
<fragment
|
|
||||||
android:id="@+id/callsListFragment"
|
|
||||||
android:name="org.linphone.ui.main.calls.fragment.CallsListFragment"
|
|
||||||
android:label="CallsListFragment"
|
|
||||||
tools:layout="@layout/calls_list_fragment"/>
|
|
||||||
|
|
||||||
<fragment
|
|
||||||
android:id="@+id/startCallFragment"
|
|
||||||
android:name="org.linphone.ui.main.calls.fragment.StartCallFragment"
|
|
||||||
android:label="StartCallFragment"
|
|
||||||
tools:layout="@layout/call_start_fragment" />
|
|
||||||
|
|
||||||
<action
|
|
||||||
android:id="@+id/action_global_startCallFragment"
|
|
||||||
app:destination="@id/startCallFragment"
|
|
||||||
app:enterAnim="@anim/slide_in"
|
|
||||||
app:popExitAnim="@anim/slide_out"
|
|
||||||
app:launchSingleTop="true"/>
|
|
||||||
|
|
||||||
</navigation>
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:id="@+id/contact_left_nav_graph"
|
|
||||||
app:startDestination="@id/contactsListFragment">
|
|
||||||
|
|
||||||
|
|
||||||
<fragment
|
|
||||||
android:id="@+id/contactsListFragment"
|
|
||||||
android:name="org.linphone.ui.main.contacts.fragment.ContactsListFragment"
|
|
||||||
android:label="ContactsListFragment"
|
|
||||||
tools:layout="@layout/contacts_list_fragment">
|
|
||||||
</fragment>
|
|
||||||
|
|
||||||
<fragment
|
|
||||||
android:id="@+id/newContactFragment"
|
|
||||||
android:name="org.linphone.ui.main.contacts.fragment.NewContactFragment"
|
|
||||||
android:label="NewContactFragment"
|
|
||||||
tools:layout="@layout/contact_new_or_edit_fragment"/>
|
|
||||||
<action
|
|
||||||
android:id="@+id/action_global_newContactFragment"
|
|
||||||
app:destination="@id/newContactFragment"
|
|
||||||
app:enterAnim="@anim/slide_in"
|
|
||||||
app:popExitAnim="@anim/slide_out"
|
|
||||||
app:launchSingleTop="true" />
|
|
||||||
</navigation>
|
|
||||||
|
|
@ -138,4 +138,30 @@
|
||||||
android:id="@+id/action_global_recordingsFragment"
|
android:id="@+id/action_global_recordingsFragment"
|
||||||
app:destination="@id/recordingsFragment"/>
|
app:destination="@id/recordingsFragment"/>
|
||||||
|
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/startCallFragment"
|
||||||
|
android:name="org.linphone.ui.main.calls.fragment.StartCallFragment"
|
||||||
|
android:label="StartCallFragment"
|
||||||
|
tools:layout="@layout/call_start_fragment" />
|
||||||
|
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_global_startCallFragment"
|
||||||
|
app:destination="@id/startCallFragment"
|
||||||
|
app:enterAnim="@anim/slide_in"
|
||||||
|
app:popExitAnim="@anim/slide_out"
|
||||||
|
app:launchSingleTop="true"/>
|
||||||
|
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/newContactFragment"
|
||||||
|
android:name="org.linphone.ui.main.contacts.fragment.NewContactFragment"
|
||||||
|
android:label="NewContactFragment"
|
||||||
|
tools:layout="@layout/contact_new_or_edit_fragment"/>
|
||||||
|
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_global_newContactFragment"
|
||||||
|
app:destination="@id/newContactFragment"
|
||||||
|
app:enterAnim="@anim/slide_in"
|
||||||
|
app:popExitAnim="@anim/slide_out"
|
||||||
|
app:launchSingleTop="true" />
|
||||||
|
|
||||||
</navigation>
|
</navigation>
|
||||||
Loading…
Add table
Reference in a new issue