Fixed issues with deep links on tablets
This commit is contained in:
parent
cdfc07c560
commit
002999aa7a
8 changed files with 308 additions and 208 deletions
263
app/src/main/java/org/linphone/activities/main/Navigation.kt
Normal file
263
app/src/main/java/org/linphone/activities/main/Navigation.kt
Normal file
|
@ -0,0 +1,263 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2010-2020 Belledonne Communications SARL.
|
||||||
|
*
|
||||||
|
* This file is part of linphone-android
|
||||||
|
* (see https://www.linphone.org).
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package org.linphone.activities.main
|
||||||
|
|
||||||
|
import android.net.Uri
|
||||||
|
import android.os.Bundle
|
||||||
|
import androidx.core.os.bundleOf
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.navigation.NavController
|
||||||
|
import androidx.navigation.fragment.NavHostFragment
|
||||||
|
import androidx.navigation.fragment.findNavController
|
||||||
|
import org.linphone.R
|
||||||
|
import org.linphone.activities.main.chat.fragments.DetailChatRoomFragment
|
||||||
|
import org.linphone.activities.main.chat.fragments.MasterChatRoomsFragment
|
||||||
|
import org.linphone.activities.main.contact.fragments.ContactEditorFragment
|
||||||
|
import org.linphone.activities.main.contact.fragments.MasterContactsFragment
|
||||||
|
import org.linphone.activities.main.history.fragments.DetailCallLogFragment
|
||||||
|
import org.linphone.activities.main.history.fragments.MasterCallLogsFragment
|
||||||
|
import org.linphone.activities.main.settings.fragments.SettingsFragment
|
||||||
|
import org.linphone.contact.NativeContact
|
||||||
|
import org.linphone.core.Address
|
||||||
|
|
||||||
|
internal fun Fragment.findMasterNavController(): NavController {
|
||||||
|
return if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
findNavController()
|
||||||
|
} else {
|
||||||
|
parentFragment?.parentFragment?.findNavController() ?: findNavController()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Chat related */
|
||||||
|
|
||||||
|
internal fun MasterChatRoomsFragment.navigateToChatRoom() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.masterChatRoomsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_masterChatRoomsFragment_to_detailChatRoomFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_detailChatRoomFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun MasterChatRoomsFragment.navigateToChatRoomCreation(
|
||||||
|
createGroupChatRoom: Boolean = false
|
||||||
|
) {
|
||||||
|
val bundle = bundleOf("createGroup" to createGroupChatRoom)
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.masterChatRoomsFragment) {
|
||||||
|
findNavController().navigate(
|
||||||
|
R.id.action_masterChatRoomsFragment_to_chatRoomCreationFragment,
|
||||||
|
bundle
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_chatRoomCreationFragment, bundle)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun DetailChatRoomFragment.navigateToContacts(sipUriToAdd: String) {
|
||||||
|
val deepLink = "linphone-android://contact/new/$sipUriToAdd"
|
||||||
|
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun DetailChatRoomFragment.navigateToChatRooms() {
|
||||||
|
val deepLink = "linphone-android://chat/"
|
||||||
|
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Contacts related */
|
||||||
|
|
||||||
|
internal fun MasterContactsFragment.navigateToContact() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_masterContactsFragment_to_detailContactFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_detailContactFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun MasterContactsFragment.navigateToContactEditor(sipUriToAdd: String? = null) {
|
||||||
|
val bundle = if (sipUriToAdd != null) bundleOf("SipUri" to sipUriToAdd) else Bundle()
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_masterContactsFragment_to_contactEditorFragment, bundle)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_contactEditorFragment, bundle)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun ContactEditorFragment.navigateToContact(contact: NativeContact) {
|
||||||
|
val deepLink = "linphone-android://contact/view/${contact.nativeId}"
|
||||||
|
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||||
|
}
|
||||||
|
|
||||||
|
/* History related */
|
||||||
|
|
||||||
|
internal fun MasterCallLogsFragment.navigateToCallHistory() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.masterCallLogsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_masterCallLogsFragment_to_detailCallLogFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.history_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_detailCallLogFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun DetailCallLogFragment.navigateToContacts(sipUriToAdd: String) {
|
||||||
|
val deepLink = "linphone-android://contact/new/$sipUriToAdd"
|
||||||
|
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun DetailCallLogFragment.navigateToContact(contact: NativeContact) {
|
||||||
|
val deepLink = "linphone-android://contact/view/${contact.nativeId}"
|
||||||
|
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun DetailCallLogFragment.navigateToFriend(friendAddress: Address) {
|
||||||
|
val deepLink = "linphone-android://contact/new/${friendAddress.asStringUriOnly()}"
|
||||||
|
findMasterNavController().navigate(Uri.parse(deepLink))
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Settings related */
|
||||||
|
|
||||||
|
internal fun SettingsFragment.navigateToAccountSettings(identity: String) {
|
||||||
|
val bundle = bundleOf("Identity" to identity)
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||||
|
findNavController().navigate(
|
||||||
|
R.id.action_settingsFragment_to_accountSettingsFragment,
|
||||||
|
bundle
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_accountSettingsFragment, bundle)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun SettingsFragment.navigateToTunnelSettings() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_settingsFragment_to_tunnelSettingsFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_tunnelSettingsFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun SettingsFragment.navigateToAudioSettings() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_settingsFragment_to_audioSettingsFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_audioSettingsFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun SettingsFragment.navigateToVideoSettings() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_settingsFragment_to_videoSettingsFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_videoSettingsFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun SettingsFragment.navigateToCallSettings() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_settingsFragment_to_callSettingsFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_callSettingsFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun SettingsFragment.navigateToChatSettings() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_settingsFragment_to_chatSettingsFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_chatSettingsFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun SettingsFragment.navigateToNetworkSettings() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_settingsFragment_to_networkSettingsFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_networkSettingsFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun SettingsFragment.navigateToContactsSettings() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_settingsFragment_to_contactsSettingsFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_contactsSettingsFragment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun SettingsFragment.navigateToAdvancedSettings() {
|
||||||
|
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||||
|
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||||
|
findNavController().navigate(R.id.action_settingsFragment_to_advancedSettingsFragment)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val navHostFragment =
|
||||||
|
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||||
|
navHostFragment.navController.navigate(R.id.action_global_advancedSettingsFragment)
|
||||||
|
}
|
||||||
|
}
|
|
@ -35,7 +35,6 @@ import androidx.appcompat.view.menu.MenuPopupHelper
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.Navigation
|
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
@ -48,6 +47,8 @@ import org.linphone.activities.main.chat.ChatScrollListener
|
||||||
import org.linphone.activities.main.chat.adapters.ChatMessagesListAdapter
|
import org.linphone.activities.main.chat.adapters.ChatMessagesListAdapter
|
||||||
import org.linphone.activities.main.chat.viewmodels.*
|
import org.linphone.activities.main.chat.viewmodels.*
|
||||||
import org.linphone.activities.main.fragments.MasterFragment
|
import org.linphone.activities.main.fragments.MasterFragment
|
||||||
|
import org.linphone.activities.main.navigateToChatRooms
|
||||||
|
import org.linphone.activities.main.navigateToContacts
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||||
import org.linphone.core.*
|
import org.linphone.core.*
|
||||||
|
@ -172,10 +173,8 @@ class DetailChatRoomFragment : MasterFragment() {
|
||||||
// as we don't want to forward it in this chat room
|
// as we don't want to forward it in this chat room
|
||||||
sharedViewModel.messageToForwardEvent.removeObservers(viewLifecycleOwner)
|
sharedViewModel.messageToForwardEvent.removeObservers(viewLifecycleOwner)
|
||||||
sharedViewModel.messageToForwardEvent.value = Event(chatMessage)
|
sharedViewModel.messageToForwardEvent.value = Event(chatMessage)
|
||||||
|
Log.i("[Chat Room] Forwarding message, going to chat rooms list")
|
||||||
val deepLink = "linphone-android://chat/"
|
navigateToChatRooms()
|
||||||
Log.i("[Chat Room] Forwarding message, starting deep link: $deepLink")
|
|
||||||
findNavController().navigate(Uri.parse(deepLink))
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -183,15 +182,14 @@ class DetailChatRoomFragment : MasterFragment() {
|
||||||
it.consume { chatMessage ->
|
it.consume { chatMessage ->
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
args.putString("MessageId", chatMessage.messageId)
|
args.putString("MessageId", chatMessage.messageId)
|
||||||
Navigation.findNavController(binding.root).navigate(R.id.action_detailChatRoomFragment_to_imdnFragment, args)
|
findNavController().navigate(R.id.action_detailChatRoomFragment_to_imdnFragment, args)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.addSipUriToContactEvent.observe(viewLifecycleOwner, Observer {
|
adapter.addSipUriToContactEvent.observe(viewLifecycleOwner, Observer {
|
||||||
it.consume { sipUri ->
|
it.consume { sipUri ->
|
||||||
val deepLink = "linphone-android://contact/new/$sipUri"
|
Log.i("[Chat Room] Going to contacts list with SIP URI to add: $sipUri")
|
||||||
Log.i("[Chat Room] Creating contact, starting deep link: $deepLink")
|
navigateToContacts(sipUri)
|
||||||
findNavController().navigate(Uri.parse(deepLink))
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -25,11 +25,8 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.os.bundleOf
|
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
|
||||||
import androidx.navigation.fragment.findNavController
|
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
@ -40,6 +37,8 @@ import org.linphone.activities.main.MainActivity
|
||||||
import org.linphone.activities.main.chat.adapters.ChatRoomsListAdapter
|
import org.linphone.activities.main.chat.adapters.ChatRoomsListAdapter
|
||||||
import org.linphone.activities.main.chat.viewmodels.ChatRoomsListViewModel
|
import org.linphone.activities.main.chat.viewmodels.ChatRoomsListViewModel
|
||||||
import org.linphone.activities.main.fragments.MasterFragment
|
import org.linphone.activities.main.fragments.MasterFragment
|
||||||
|
import org.linphone.activities.main.navigateToChatRoom
|
||||||
|
import org.linphone.activities.main.navigateToChatRoomCreation
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||||
import org.linphone.core.ChatRoom
|
import org.linphone.core.ChatRoom
|
||||||
|
@ -145,15 +144,7 @@ class MasterChatRoomsFragment : MasterFragment() {
|
||||||
adapter.selectedChatRoomEvent.observe(viewLifecycleOwner, Observer {
|
adapter.selectedChatRoomEvent.observe(viewLifecycleOwner, Observer {
|
||||||
it.consume { chatRoom ->
|
it.consume { chatRoom ->
|
||||||
sharedViewModel.selectedChatRoom.value = chatRoom
|
sharedViewModel.selectedChatRoom.value = chatRoom
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
navigateToChatRoom()
|
||||||
if (findNavController().currentDestination?.id == R.id.masterChatRoomsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_masterChatRoomsFragment_to_detailChatRoomFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_detailChatRoomFragment)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -162,37 +153,12 @@ class MasterChatRoomsFragment : MasterFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setNewOneToOneChatRoomClickListener {
|
binding.setNewOneToOneChatRoomClickListener {
|
||||||
val bundle = bundleOf("createGroup" to false)
|
navigateToChatRoomCreation(false)
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.masterChatRoomsFragment) {
|
|
||||||
findNavController().navigate(
|
|
||||||
R.id.action_masterChatRoomsFragment_to_chatRoomCreationFragment,
|
|
||||||
bundle
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_chatRoomCreationFragment, bundle)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setNewGroupChatRoomClickListener {
|
binding.setNewGroupChatRoomClickListener {
|
||||||
sharedViewModel.selectedGroupChatRoom.value = null
|
sharedViewModel.selectedGroupChatRoom.value = null
|
||||||
|
navigateToChatRoomCreation(true)
|
||||||
val bundle = bundleOf("createGroup" to true)
|
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.masterChatRoomsFragment) {
|
|
||||||
findNavController().navigate(
|
|
||||||
R.id.action_masterChatRoomsFragment_to_chatRoomCreationFragment,
|
|
||||||
bundle
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_chatRoomCreationFragment, bundle)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val localSipUri = arguments?.getString("LocalSipUri")
|
val localSipUri = arguments?.getString("LocalSipUri")
|
||||||
|
|
|
@ -38,6 +38,7 @@ import kotlinx.coroutines.launch
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.MainActivity
|
import org.linphone.activities.main.MainActivity
|
||||||
import org.linphone.activities.main.contact.viewmodels.*
|
import org.linphone.activities.main.contact.viewmodels.*
|
||||||
|
import org.linphone.activities.main.navigateToContact
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||||
import org.linphone.contact.NativeContact
|
import org.linphone.contact.NativeContact
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
|
@ -87,9 +88,8 @@ class ContactEditorFragment : Fragment() {
|
||||||
val savedContact = viewModel.save()
|
val savedContact = viewModel.save()
|
||||||
if (savedContact is NativeContact) {
|
if (savedContact is NativeContact) {
|
||||||
savedContact.syncValuesFromAndroidContact(requireContext())
|
savedContact.syncValuesFromAndroidContact(requireContext())
|
||||||
val deepLink = "linphone-android://contact/view/${savedContact.nativeId}"
|
Log.i("[Contact Editor] Displaying contact $savedContact")
|
||||||
Log.i("[Contact Editor] Displaying contact, starting deep link: $deepLink")
|
navigateToContact(savedContact)
|
||||||
findNavController().navigate(Uri.parse(deepLink))
|
|
||||||
} else {
|
} else {
|
||||||
findNavController().popBackStack()
|
findNavController().popBackStack()
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,6 @@ import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
|
||||||
import androidx.navigation.fragment.findNavController
|
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
@ -40,6 +38,8 @@ import org.linphone.activities.main.MainActivity
|
||||||
import org.linphone.activities.main.contact.adapters.ContactsListAdapter
|
import org.linphone.activities.main.contact.adapters.ContactsListAdapter
|
||||||
import org.linphone.activities.main.contact.viewmodels.ContactsListViewModel
|
import org.linphone.activities.main.contact.viewmodels.ContactsListViewModel
|
||||||
import org.linphone.activities.main.fragments.MasterFragment
|
import org.linphone.activities.main.fragments.MasterFragment
|
||||||
|
import org.linphone.activities.main.navigateToContact
|
||||||
|
import org.linphone.activities.main.navigateToContactEditor
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||||
import org.linphone.contact.Contact
|
import org.linphone.contact.Contact
|
||||||
|
@ -138,11 +138,11 @@ class MasterContactsFragment : MasterFragment() {
|
||||||
listViewModel.filter.value = ""
|
listViewModel.filter.value = ""
|
||||||
|
|
||||||
if (editOnClick) {
|
if (editOnClick) {
|
||||||
goToContactEditor()
|
navigateToContactEditor(sipUriToAdd)
|
||||||
editOnClick = false
|
editOnClick = false
|
||||||
sipUriToAdd = null
|
sipUriToAdd = null
|
||||||
} else {
|
} else {
|
||||||
goToContactDetails()
|
navigateToContact()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -169,7 +169,7 @@ class MasterContactsFragment : MasterFragment() {
|
||||||
binding.setNewContactClickListener {
|
binding.setNewContactClickListener {
|
||||||
// Remove any previously selected contact
|
// Remove any previously selected contact
|
||||||
sharedViewModel.selectedContact.value = null
|
sharedViewModel.selectedContact.value = null
|
||||||
goToContactEditor()
|
navigateToContactEditor(sipUriToAdd)
|
||||||
}
|
}
|
||||||
|
|
||||||
val id = arguments?.getString("id")
|
val id = arguments?.getString("id")
|
||||||
|
@ -253,31 +253,4 @@ class MasterContactsFragment : MasterFragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun goToContactDetails() {
|
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_masterContactsFragment_to_detailContactFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_detailContactFragment)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun goToContactEditor() {
|
|
||||||
val args = Bundle()
|
|
||||||
if (sipUriToAdd != null) args.putString("SipUri", sipUriToAdd)
|
|
||||||
|
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_masterContactsFragment_to_contactEditorFragment, args)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_contactEditorFragment, args)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
*/
|
*/
|
||||||
package org.linphone.activities.main.history.fragments
|
package org.linphone.activities.main.history.fragments
|
||||||
|
|
||||||
import android.net.Uri
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
@ -33,6 +32,9 @@ import org.linphone.R
|
||||||
import org.linphone.activities.main.MainActivity
|
import org.linphone.activities.main.MainActivity
|
||||||
import org.linphone.activities.main.history.viewmodels.CallLogViewModel
|
import org.linphone.activities.main.history.viewmodels.CallLogViewModel
|
||||||
import org.linphone.activities.main.history.viewmodels.CallLogViewModelFactory
|
import org.linphone.activities.main.history.viewmodels.CallLogViewModelFactory
|
||||||
|
import org.linphone.activities.main.navigateToContact
|
||||||
|
import org.linphone.activities.main.navigateToContacts
|
||||||
|
import org.linphone.activities.main.navigateToFriend
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||||
import org.linphone.contact.NativeContact
|
import org.linphone.contact.NativeContact
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
|
@ -79,23 +81,20 @@ class DetailCallLogFragment : Fragment() {
|
||||||
|
|
||||||
binding.setNewContactClickListener {
|
binding.setNewContactClickListener {
|
||||||
viewModel.callLog.remoteAddress.clean()
|
viewModel.callLog.remoteAddress.clean()
|
||||||
val deepLink = "linphone-android://contact/new/${viewModel.callLog.remoteAddress.asStringUriOnly()}"
|
Log.i("[History] Creating contact with SIP URI: ${viewModel.callLog.remoteAddress.asStringUriOnly()}")
|
||||||
Log.i("[History] Creating contact, starting deep link: $deepLink")
|
navigateToContacts(viewModel.callLog.remoteAddress.asStringUriOnly())
|
||||||
findNavController().navigate(Uri.parse(deepLink))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.setContactClickListener {
|
binding.setContactClickListener {
|
||||||
val contact = viewModel.contact.value as? NativeContact
|
val contact = viewModel.contact.value as? NativeContact
|
||||||
if (contact != null) {
|
if (contact != null) {
|
||||||
val deepLink = "linphone-android://contact/view/${contact.nativeId}"
|
Log.i("[History] Displaying contact $contact")
|
||||||
Log.i("[History] Displaying contact, starting deep link: $deepLink")
|
navigateToContact(contact)
|
||||||
findNavController().navigate(Uri.parse(deepLink))
|
|
||||||
} else {
|
} else {
|
||||||
val address = viewModel.callLog.remoteAddress
|
val address = viewModel.callLog.remoteAddress
|
||||||
address.clean()
|
address.clean()
|
||||||
val deepLink = "linphone-android://contact/view-friend/${address.asStringUriOnly()}"
|
Log.i("[History] Displaying friend with address ${address.asStringUriOnly()}")
|
||||||
Log.i("[History] Displaying friend, starting deep link: $deepLink")
|
navigateToFriend(address)
|
||||||
findNavController().navigate(Uri.parse(deepLink))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@ import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
|
@ -39,6 +38,7 @@ import org.linphone.activities.main.fragments.MasterFragment
|
||||||
import org.linphone.activities.main.history.adapters.CallLogsListAdapter
|
import org.linphone.activities.main.history.adapters.CallLogsListAdapter
|
||||||
import org.linphone.activities.main.history.viewmodels.CallLogsListViewModel
|
import org.linphone.activities.main.history.viewmodels.CallLogsListViewModel
|
||||||
import org.linphone.activities.main.history.viewmodels.GroupedCallLogViewModel
|
import org.linphone.activities.main.history.viewmodels.GroupedCallLogViewModel
|
||||||
|
import org.linphone.activities.main.navigateToCallHistory
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||||
import org.linphone.activities.main.viewmodels.TabsViewModel
|
import org.linphone.activities.main.viewmodels.TabsViewModel
|
||||||
|
@ -157,15 +157,7 @@ class MasterCallLogsFragment : MasterFragment() {
|
||||||
adapter.selectedCallLogEvent.observe(viewLifecycleOwner, Observer {
|
adapter.selectedCallLogEvent.observe(viewLifecycleOwner, Observer {
|
||||||
it.consume { callLog ->
|
it.consume { callLog ->
|
||||||
sharedViewModel.selectedCallLogGroup.value = callLog
|
sharedViewModel.selectedCallLogGroup.value = callLog
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
navigateToCallHistory()
|
||||||
if (findNavController().currentDestination?.id == R.id.masterCallLogsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_masterCallLogsFragment_to_detailCallLogFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.history_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_detailCallLogFragment)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,11 @@ import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.activities.main.*
|
||||||
|
import org.linphone.activities.main.navigateToAccountSettings
|
||||||
|
import org.linphone.activities.main.navigateToAudioSettings
|
||||||
|
import org.linphone.activities.main.navigateToTunnelSettings
|
||||||
import org.linphone.activities.main.settings.SettingListenerStub
|
import org.linphone.activities.main.settings.SettingListenerStub
|
||||||
import org.linphone.activities.main.settings.viewmodels.SettingsViewModel
|
import org.linphone.activities.main.settings.viewmodels.SettingsViewModel
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||||
|
@ -70,155 +72,62 @@ class SettingsFragment : Fragment() {
|
||||||
|
|
||||||
val identity = arguments?.getString("identity")
|
val identity = arguments?.getString("identity")
|
||||||
if (identity != null) {
|
if (identity != null) {
|
||||||
val args = Bundle()
|
|
||||||
args.putString("Identity", identity)
|
|
||||||
Log.i("[Settings] Found identity parameter in arguments: $identity")
|
Log.i("[Settings] Found identity parameter in arguments: $identity")
|
||||||
arguments?.clear()
|
navigateToAccountSettings(identity)
|
||||||
|
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
|
||||||
findNavController().navigate(
|
|
||||||
R.id.action_settingsFragment_to_accountSettingsFragment,
|
|
||||||
args
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_accountSettingsFragment, args)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onAccountClicked(identity: String) {
|
override fun onAccountClicked(identity: String) {
|
||||||
val args = Bundle()
|
|
||||||
args.putString("Identity", identity)
|
|
||||||
Log.i("[Settings] Navigation to settings for proxy with identity: $identity")
|
Log.i("[Settings] Navigation to settings for proxy with identity: $identity")
|
||||||
|
navigateToAccountSettings(identity)
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
|
||||||
findNavController().navigate(
|
|
||||||
R.id.action_settingsFragment_to_accountSettingsFragment,
|
|
||||||
args
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_accountSettingsFragment, args)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.tunnelSettingsListener = object : SettingListenerStub() {
|
viewModel.tunnelSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onClicked() {
|
override fun onClicked() {
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
navigateToTunnelSettings()
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_settingsFragment_to_tunnelSettingsFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_tunnelSettingsFragment)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.audioSettingsListener = object : SettingListenerStub() {
|
viewModel.audioSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onClicked() {
|
override fun onClicked() {
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
navigateToAudioSettings()
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_settingsFragment_to_audioSettingsFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_audioSettingsFragment)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.videoSettingsListener = object : SettingListenerStub() {
|
viewModel.videoSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onClicked() {
|
override fun onClicked() {
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
navigateToVideoSettings()
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_settingsFragment_to_videoSettingsFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_videoSettingsFragment)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.callSettingsListener = object : SettingListenerStub() {
|
viewModel.callSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onClicked() {
|
override fun onClicked() {
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
navigateToCallSettings()
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_settingsFragment_to_callSettingsFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_callSettingsFragment)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.chatSettingsListener = object : SettingListenerStub() {
|
viewModel.chatSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onClicked() {
|
override fun onClicked() {
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
navigateToChatSettings()
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_settingsFragment_to_chatSettingsFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_chatSettingsFragment)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.networkSettingsListener = object : SettingListenerStub() {
|
viewModel.networkSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onClicked() {
|
override fun onClicked() {
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
navigateToNetworkSettings()
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_settingsFragment_to_networkSettingsFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_networkSettingsFragment)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.contactsSettingsListener = object : SettingListenerStub() {
|
viewModel.contactsSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onClicked() {
|
override fun onClicked() {
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
navigateToContactsSettings()
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_settingsFragment_to_contactsSettingsFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_contactsSettingsFragment)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.advancedSettingsListener = object : SettingListenerStub() {
|
viewModel.advancedSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onClicked() {
|
override fun onClicked() {
|
||||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
navigateToAdvancedSettings()
|
||||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
|
||||||
findNavController().navigate(R.id.action_settingsFragment_to_advancedSettingsFragment)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val navHostFragment =
|
|
||||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
|
||||||
navHostFragment.navController.navigate(R.id.action_global_advancedSettingsFragment)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue