Reworked app to use SlidingPane and simplify navigation
This commit is contained in:
parent
bac8d8e4e8
commit
41a15cf6ee
68 changed files with 1096 additions and 2413 deletions
|
@ -235,13 +235,16 @@ dependencies {
|
|||
|
||||
implementation 'androidx.appcompat:appcompat:1.3.0'
|
||||
implementation 'androidx.media:media:1.2.0'
|
||||
implementation 'androidx.fragment:fragment-ktx:1.3.4'
|
||||
implementation 'androidx.core:core-ktx:1.6.0-beta02'
|
||||
implementation 'androidx.fragment:fragment-ktx:1.4.0-alpha03'
|
||||
implementation 'androidx.core:core-ktx:1.6.0-rc01'
|
||||
|
||||
def nav_version = "2.3.5"
|
||||
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
|
||||
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
|
||||
|
||||
implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0-alpha02"
|
||||
implementation "androidx.window:window:1.0.0-alpha08"
|
||||
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
||||
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
|
||||
|
|
|
@ -23,13 +23,20 @@ import android.annotation.SuppressLint
|
|||
import android.content.pm.ActivityInfo
|
||||
import android.content.res.Configuration
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.Display
|
||||
import android.view.Surface
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.core.util.Consumer
|
||||
import androidx.navigation.ActivityNavigator
|
||||
import androidx.window.FoldingFeature
|
||||
import androidx.window.WindowLayoutInfo
|
||||
import androidx.window.WindowManager
|
||||
import java.util.*
|
||||
import java.util.concurrent.Executor
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||
import org.linphone.LinphoneApplication.Companion.ensureCoreExists
|
||||
|
@ -42,10 +49,57 @@ abstract class GenericActivity : AppCompatActivity() {
|
|||
val isDestructionPending: Boolean
|
||||
get() = _isDestructionPending
|
||||
|
||||
private lateinit var windowManagerX: WindowManager
|
||||
|
||||
inner class LayoutStateChangeCallback : Consumer<WindowLayoutInfo> {
|
||||
override fun accept(newLayoutInfo: WindowLayoutInfo) {
|
||||
Log.i("[Layout State Change] $newLayoutInfo")
|
||||
|
||||
if (newLayoutInfo.displayFeatures.isEmpty()) {
|
||||
onLayoutChanges(null)
|
||||
} else {
|
||||
for (feature in newLayoutInfo.displayFeatures) {
|
||||
val foldingFeature = feature as? FoldingFeature
|
||||
if (foldingFeature != null) {
|
||||
onLayoutChanges(foldingFeature)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private val layoutStateChangeCallback = LayoutStateChangeCallback()
|
||||
|
||||
private fun runOnUiThreadExecutor(): Executor {
|
||||
val handler = Handler(Looper.getMainLooper())
|
||||
return Executor() {
|
||||
handler.post(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
|
||||
windowManagerX.registerLayoutChangeCallback(
|
||||
runOnUiThreadExecutor(),
|
||||
layoutStateChangeCallback
|
||||
)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
|
||||
windowManagerX.unregisterLayoutChangeCallback(layoutStateChangeCallback)
|
||||
}
|
||||
|
||||
open fun onLayoutChanges(foldingFeature: FoldingFeature?) {
|
||||
}
|
||||
|
||||
@SuppressLint("SourceLockedOrientationActivity")
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
windowManagerX = WindowManager(this)
|
||||
|
||||
ensureCoreExists(applicationContext)
|
||||
|
||||
requestedOrientation = if (corePreferences.forcePortrait) {
|
||||
|
|
|
@ -23,14 +23,23 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.addCallback
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.databinding.ViewDataBinding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.navigation.fragment.findNavController
|
||||
|
||||
abstract class GenericFragment<T : ViewDataBinding> : Fragment() {
|
||||
private var _binding: T? = null
|
||||
protected val binding get() = _binding!!
|
||||
|
||||
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
|
||||
abstract fun getLayoutId(): Int
|
||||
|
||||
override fun onCreateView(
|
||||
|
@ -42,8 +51,23 @@ abstract class GenericFragment<T : ViewDataBinding> : Fragment() {
|
|||
return _binding!!.root
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
requireActivity().onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
protected open fun goBack() {
|
||||
if (!findNavController().popBackStack()) {
|
||||
if (!findNavController().navigateUp()) {
|
||||
onBackPressedCallback.isEnabled = false
|
||||
requireActivity().onBackPressed()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,11 +50,7 @@ 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()
|
||||
}
|
||||
return parentFragment?.parentFragment?.findNavController() ?: findNavController()
|
||||
}
|
||||
|
||||
fun getRightToLeftAnimationNavOptions(
|
||||
|
@ -149,6 +145,16 @@ fun getLeftTopToRightBottomNoPopAnimationNavOptions(
|
|||
.build()
|
||||
}
|
||||
|
||||
fun popupTo(
|
||||
popUpTo: Int = -1,
|
||||
popUpInclusive: Boolean = false,
|
||||
singleTop: Boolean = true
|
||||
): NavOptions {
|
||||
val builder = NavOptions.Builder()
|
||||
builder.setPopUpTo(popUpTo, popUpInclusive).setLaunchSingleTop(singleTop)
|
||||
return builder.build()
|
||||
}
|
||||
|
||||
/* Main activity related */
|
||||
|
||||
internal fun MainActivity.navigateToDialer(args: Bundle?) {
|
||||
|
@ -263,21 +269,20 @@ internal fun DialerFragment.navigateToConfigFileViewer() {
|
|||
/* Chat related */
|
||||
|
||||
internal fun MasterChatRoomsFragment.navigateToChatRoom(args: Bundle) {
|
||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||
if (findNavController().currentDestination?.id == R.id.masterChatRoomsFragment) {
|
||||
findNavController().navigate(
|
||||
R.id.action_masterChatRoomsFragment_to_detailChatRoomFragment,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
||||
val previousBackStackEntry = navHostFragment.navController.currentBackStackEntry
|
||||
if (previousBackStackEntry == null || previousBackStackEntry.destination.id == R.id.emptyChatFragment) {
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_detailChatRoomFragment,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions(R.id.emptyChatFragment, true)
|
||||
popupTo(R.id.emptyChatFragment, true)
|
||||
)
|
||||
} else {
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_detailChatRoomFragment,
|
||||
args,
|
||||
popupTo(R.id.chatRoomCreationFragment, true)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -286,21 +291,20 @@ 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,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.chat_nav_container) as NavHostFragment
|
||||
val previousBackStackEntry = navHostFragment.navController.currentBackStackEntry
|
||||
if (previousBackStackEntry == null || previousBackStackEntry.destination.id == R.id.emptyChatFragment) {
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_chatRoomCreationFragment,
|
||||
bundle,
|
||||
getRightToLeftAnimationNavOptions(R.id.emptyChatFragment, true)
|
||||
popupTo(R.id.emptyChatFragment, true)
|
||||
)
|
||||
} else {
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_chatRoomCreationFragment,
|
||||
bundle,
|
||||
popupTo(R.id.detailChatRoomFragment, true)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -310,14 +314,6 @@ internal fun DetailChatRoomFragment.navigateToContacts(sipUriToAdd: String) {
|
|||
findMasterNavController().navigate(Uri.parse(deepLink), getLeftToRightAnimationNavOptions())
|
||||
}
|
||||
|
||||
internal fun DetailChatRoomFragment.navigateToChatRooms() {
|
||||
findMasterNavController().navigate(
|
||||
R.id.action_global_masterChatRoomsFragment,
|
||||
null,
|
||||
getLeftToRightAnimationNavOptions(R.id.masterChatRoomsFragment)
|
||||
)
|
||||
}
|
||||
|
||||
internal fun DetailChatRoomFragment.navigateToImdn(args: Bundle?) {
|
||||
if (findNavController().currentDestination?.id == R.id.detailChatRoomFragment) {
|
||||
findNavController().navigate(
|
||||
|
@ -415,19 +411,11 @@ internal fun ChatRoomCreationFragment.navigateToGroupInfo() {
|
|||
|
||||
internal fun ChatRoomCreationFragment.navigateToChatRoom(args: Bundle) {
|
||||
if (findNavController().currentDestination?.id == R.id.chatRoomCreationFragment) {
|
||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||
findNavController().navigate(
|
||||
R.id.action_chatRoomCreationFragment_to_detailChatRoomFragment,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
} else {
|
||||
findNavController().navigate(
|
||||
R.id.action_chatRoomCreationFragment_to_detailChatRoomFragment,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions(R.id.emptyFragment, true)
|
||||
)
|
||||
}
|
||||
findNavController().navigate(
|
||||
R.id.action_chatRoomCreationFragment_to_detailChatRoomFragment,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions(R.id.emptyFragment, true)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -442,59 +430,37 @@ internal fun GroupInfoFragment.navigateToChatRoomCreation(args: Bundle?) {
|
|||
|
||||
internal fun GroupInfoFragment.navigateToChatRoom(args: Bundle?) {
|
||||
if (findNavController().currentDestination?.id == R.id.groupInfoFragment) {
|
||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||
findNavController().navigate(
|
||||
R.id.action_groupInfoFragment_to_detailChatRoomFragment,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
} else {
|
||||
findNavController().navigate(
|
||||
R.id.action_groupInfoFragment_to_detailChatRoomFragment,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions(R.id.emptyFragment, true)
|
||||
)
|
||||
}
|
||||
findNavController().navigate(
|
||||
R.id.action_groupInfoFragment_to_detailChatRoomFragment,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions(R.id.emptyFragment, true)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/* 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,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions())
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_detailContactFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions(R.id.emptyContactFragment, true)
|
||||
popupTo(R.id.emptyContactFragment, true)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.masterContactsFragment) {
|
||||
val bundle = if (sipUriToAdd != null) bundleOf("SipUri" to sipUriToAdd) else Bundle()
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.contacts_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_contactEditorFragment,
|
||||
bundle,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -505,24 +471,16 @@ internal fun ContactEditorFragment.navigateToContact(contact: NativeContact) {
|
|||
findNavController().navigate(
|
||||
R.id.action_contactEditorFragment_to_detailContactFragment,
|
||||
bundle,
|
||||
getRightToLeftAnimationNavOptions(R.id.masterContactsFragment, false)
|
||||
popupTo(R.id.masterContactsFragment, false)
|
||||
)
|
||||
}
|
||||
|
||||
internal fun DetailContactFragment.navigateToChatRoom(args: Bundle?) {
|
||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||
findNavController().navigate(
|
||||
R.id.action_detailContactFragment_to_detailChatRoomFragment,
|
||||
args,
|
||||
getRightBottomToLeftTopAnimationNavOptions()
|
||||
)
|
||||
} else {
|
||||
findMasterNavController().navigate(
|
||||
R.id.action_global_masterChatRoomsFragment,
|
||||
args,
|
||||
getRightBottomToLeftTopAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
findMasterNavController().navigate(
|
||||
R.id.action_global_masterChatRoomsFragment,
|
||||
args,
|
||||
getRightBottomToLeftTopAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
|
||||
internal fun DetailContactFragment.navigateToDialer(args: Bundle?) {
|
||||
|
@ -538,7 +496,7 @@ internal fun DetailContactFragment.navigateToContactEditor() {
|
|||
findNavController().navigate(
|
||||
R.id.action_detailContactFragment_to_contactEditorFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -546,21 +504,13 @@ internal fun DetailContactFragment.navigateToContactEditor() {
|
|||
/* 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,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.masterCallLogsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.history_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_detailCallLogFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions(R.id.emptyFragment, true)
|
||||
popupTo(R.id.emptyFragment, true)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -579,18 +529,8 @@ internal fun DetailCallLogFragment.navigateToContacts(sipUriToAdd: String) {
|
|||
}
|
||||
|
||||
internal fun DetailCallLogFragment.navigateToContact(contact: NativeContact) {
|
||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||
val args = Bundle()
|
||||
args.putString("id", contact.nativeId)
|
||||
findMasterNavController().navigate(
|
||||
R.id.action_detailCallLogFragment_to_detailContactFragment,
|
||||
args,
|
||||
getRightBottomToLeftTopAnimationNavOptions()
|
||||
)
|
||||
} else {
|
||||
val deepLink = "linphone-android://contact/view/${contact.nativeId}"
|
||||
findMasterNavController().navigate(Uri.parse(deepLink), getRightBottomToLeftTopAnimationNavOptions())
|
||||
}
|
||||
val deepLink = "linphone-android://contact/view/${contact.nativeId}"
|
||||
findMasterNavController().navigate(Uri.parse(deepLink), getRightBottomToLeftTopAnimationNavOptions())
|
||||
}
|
||||
|
||||
internal fun DetailCallLogFragment.navigateToFriend(friendAddress: Address) {
|
||||
|
@ -599,19 +539,11 @@ internal fun DetailCallLogFragment.navigateToFriend(friendAddress: Address) {
|
|||
}
|
||||
|
||||
internal fun DetailCallLogFragment.navigateToChatRoom(args: Bundle?) {
|
||||
if (!resources.getBoolean(R.bool.isTablet)) {
|
||||
findNavController().navigate(
|
||||
R.id.action_detailCallLogFragment_to_detailChatRoomFragment,
|
||||
args,
|
||||
getRightBottomToLeftTopAnimationNavOptions()
|
||||
)
|
||||
} else {
|
||||
findMasterNavController().navigate(
|
||||
R.id.action_global_masterChatRoomsFragment,
|
||||
args,
|
||||
getRightBottomToLeftTopAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
findMasterNavController().navigate(
|
||||
R.id.action_global_masterChatRoomsFragment,
|
||||
args,
|
||||
getRightBottomToLeftTopAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
|
||||
internal fun DetailCallLogFragment.navigateToDialer(args: Bundle?) {
|
||||
|
@ -625,182 +557,110 @@ internal fun DetailCallLogFragment.navigateToDialer(args: Bundle?) {
|
|||
/* 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,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||
val bundle = bundleOf("Identity" to identity)
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_accountSettingsFragment,
|
||||
bundle,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_tunnelSettingsFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_audioSettingsFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_videoSettingsFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_callSettingsFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_chatSettingsFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_networkSettingsFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_contactsSettingsFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
if (findNavController().currentDestination?.id == R.id.settingsFragment) {
|
||||
val navHostFragment =
|
||||
childFragmentManager.findFragmentById(R.id.settings_nav_container) as NavHostFragment
|
||||
navHostFragment.navController.navigate(
|
||||
R.id.action_global_advancedSettingsFragment,
|
||||
null,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -810,7 +670,7 @@ internal fun AccountSettingsFragment.navigateToPhoneLinking(args: Bundle?) {
|
|||
findNavController().navigate(
|
||||
R.id.action_accountSettingsFragment_to_phoneAccountLinkingFragment,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -820,7 +680,7 @@ internal fun PhoneAccountLinkingFragment.navigateToPhoneAccountValidation(args:
|
|||
findNavController().navigate(
|
||||
R.id.action_phoneAccountLinkingFragment_to_phoneAccountValidationFragment,
|
||||
args,
|
||||
getRightToLeftAnimationNavOptions()
|
||||
popupTo()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,6 @@ package org.linphone.activities.assistant.fragments
|
|||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.activity.addCallback
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||
import org.linphone.R
|
||||
|
@ -31,14 +30,6 @@ import org.linphone.databinding.AssistantTopBarFragmentBinding
|
|||
class TopBarFragment : GenericFragment<AssistantTopBarFragmentBinding>() {
|
||||
override fun getLayoutId(): Int = R.layout.assistant_top_bar_fragment
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
requireActivity().onBackPressedDispatcher.addCallback(this) {
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
|
@ -49,7 +40,7 @@ class TopBarFragment : GenericFragment<AssistantTopBarFragmentBinding>() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun goBack() {
|
||||
override fun goBack() {
|
||||
if (!findNavController().popBackStack()) {
|
||||
requireActivity().finish()
|
||||
if (corePreferences.enableAnimations) {
|
||||
|
|
|
@ -35,6 +35,7 @@ import androidx.lifecycle.lifecycleScope
|
|||
import androidx.navigation.NavController
|
||||
import androidx.navigation.NavDestination
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.window.FoldingFeature
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import java.io.UnsupportedEncodingException
|
||||
import java.net.URLDecoder
|
||||
|
@ -54,6 +55,7 @@ import org.linphone.contact.ContactsUpdatedListenerStub
|
|||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.MainActivityBinding
|
||||
import org.linphone.utils.AppUtils
|
||||
import org.linphone.utils.Event
|
||||
import org.linphone.utils.FileUtils
|
||||
|
||||
class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestinationChangedListener {
|
||||
|
@ -81,6 +83,10 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
|||
private var initPosY = 0f
|
||||
private var overlay: View? = null
|
||||
|
||||
override fun onLayoutChanges(foldingFeature: FoldingFeature?) {
|
||||
sharedViewModel.layoutChangedEvent.value = Event(true)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
|
@ -170,11 +176,19 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
|||
|
||||
when (destination.id) {
|
||||
R.id.masterCallLogsFragment, R.id.masterContactsFragment, R.id.dialerFragment, R.id.masterChatRoomsFragment ->
|
||||
tabsFragment.visibility = View.VISIBLE
|
||||
else -> tabsFragment.visibility = View.GONE
|
||||
showTabsFragment()
|
||||
else -> hideTabsFragment()
|
||||
}
|
||||
}
|
||||
|
||||
fun showTabsFragment() {
|
||||
tabsFragment.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
fun hideTabsFragment() {
|
||||
tabsFragment.visibility = View.GONE
|
||||
}
|
||||
|
||||
fun hideStatusFragment() {
|
||||
statusFragment.visibility = View.GONE
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@ import android.net.Uri
|
|||
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.main.fragments.SecureFragment
|
||||
import org.linphone.databinding.AboutFragmentBinding
|
||||
|
@ -42,7 +41,7 @@ class AboutFragment : SecureFragment<AboutFragmentBinding>() {
|
|||
viewModel = ViewModelProvider(this).get(AboutViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.setBackClickListener { goBack() }
|
||||
|
||||
binding.setPrivacyPolicyClickListener {
|
||||
val browserIntent = Intent(
|
||||
|
|
|
@ -37,6 +37,7 @@ import org.linphone.activities.navigateToGroupInfo
|
|||
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>() {
|
||||
|
@ -76,7 +77,7 @@ class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>
|
|||
binding.contactsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
|
||||
|
@ -146,6 +147,12 @@ class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>
|
|||
}
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
if (!findNavController().popBackStack()) {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onRequestPermissionsResult(
|
||||
requestCode: Int,
|
||||
permissions: Array<out String>,
|
||||
|
|
|
@ -30,7 +30,6 @@ import android.view.MenuInflater
|
|||
import android.view.MenuItem
|
||||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import androidx.activity.addCallback
|
||||
import androidx.appcompat.view.menu.MenuBuilder
|
||||
import androidx.appcompat.view.menu.MenuPopupHelper
|
||||
import androidx.core.content.FileProvider
|
||||
|
@ -55,7 +54,6 @@ import org.linphone.activities.main.chat.viewmodels.*
|
|||
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.navigateToChatRooms
|
||||
import org.linphone.activities.navigateToContacts
|
||||
import org.linphone.activities.navigateToImageFileViewer
|
||||
import org.linphone.activities.navigateToImdn
|
||||
|
@ -94,14 +92,6 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
|||
super.onDestroyView()
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
requireActivity().onBackPressedDispatcher.addCallback(this) {
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
|
@ -110,6 +100,7 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
|||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
val localSipUri = arguments?.getString("LocalSipUri")
|
||||
val remoteSipUri = arguments?.getString("RemoteSipUri")
|
||||
|
@ -244,7 +235,7 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
|||
sharedViewModel.messageToForwardEvent.removeObservers(viewLifecycleOwner)
|
||||
sharedViewModel.messageToForwardEvent.value = Event(chatMessage)
|
||||
Log.i("[Chat Room] Forwarding message, going to chat rooms list")
|
||||
navigateToChatRooms()
|
||||
goBack()
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -338,7 +329,6 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
|||
binding.setBackClickListener {
|
||||
goBack()
|
||||
}
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
|
||||
binding.setTitleClickListener {
|
||||
binding.sipUri.visibility = if (!viewModel.oneToOneChatRoom ||
|
||||
|
@ -479,10 +469,9 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
|||
}
|
||||
}
|
||||
|
||||
private fun goBack() {
|
||||
if (!findNavController().popBackStack(R.id.masterChatRoomsFragment, false)) {
|
||||
Log.w("[Chat Room] No MasterChatRoomsFragment found in back stack")
|
||||
navigateToChatRooms()
|
||||
override fun goBack() {
|
||||
if (!findNavController().popBackStack()) {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ class DevicesFragment : SecureFragment<ChatRoomDevicesFragmentBinding>() {
|
|||
binding.viewModel = listViewModel
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -64,12 +64,12 @@ class EphemeralFragment : SecureFragment<ChatRoomEphemeralFragmentBinding>() {
|
|||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
|
||||
binding.setValidClickListener {
|
||||
viewModel.updateChatRoomEphemeralDuration()
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@ import android.app.Dialog
|
|||
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.R
|
||||
import org.linphone.activities.main.MainActivity
|
||||
|
@ -107,7 +106,7 @@ class GroupInfoFragment : SecureFragment<ChatRoomGroupInfoFragmentBinding>() {
|
|||
addParticipantsFromSharedViewModel()
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
|
||||
viewModel.createdChatRoomEvent.observe(viewLifecycleOwner, {
|
||||
|
|
|
@ -94,7 +94,7 @@ class ImdnFragment : SecureFragment<ChatRoomImdnFragmentBinding>() {
|
|||
binding.participantsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
// Displays state header
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter)
|
||||
binding.participantsList.addItemDecoration(headerItemDecoration)
|
||||
|
||||
viewModel.participants.observe(viewLifecycleOwner, {
|
||||
|
@ -102,7 +102,7 @@ class ImdnFragment : SecureFragment<ChatRoomImdnFragmentBinding>() {
|
|||
})
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,10 +23,12 @@ import android.app.Dialog
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.GenericActivity
|
||||
|
@ -80,10 +82,45 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
listViewModel = ViewModelProvider(this).get(ChatRoomsListViewModel::class.java)
|
||||
binding.viewModel = listViewModel
|
||||
|
||||
/* Shared view model & sliding pane related */
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
|
||||
view.doOnPreDraw { sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable }
|
||||
|
||||
sharedViewModel.closeSlidingPaneEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
if (!binding.slidingPane.closePane()) {
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
})
|
||||
sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable
|
||||
}
|
||||
})
|
||||
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
|
||||
/*binding.slidingPane.addPanelSlideListener(object : SlidingPaneLayout.PanelSlideListener {
|
||||
override fun onPanelSlide(panel: View, slideOffset: Float) { }
|
||||
|
||||
override fun onPanelOpened(panel: View) {
|
||||
if (binding.slidingPane.isSlideable) {
|
||||
(requireActivity() as MainActivity).hideTabsFragment()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPanelClosed(panel: View) {
|
||||
if (binding.slidingPane.isSlideable) {
|
||||
(requireActivity() as MainActivity).showTabsFragment()
|
||||
}
|
||||
}
|
||||
})*/
|
||||
|
||||
/* End of hared view model & sliding pane related */
|
||||
|
||||
_adapter = ChatRoomsListAdapter(listSelectionViewModel, viewLifecycleOwner)
|
||||
// SubmitList is done on a background thread
|
||||
// We need this adapter data observer to know when to scroll
|
||||
|
@ -155,6 +192,7 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
Log.w("[Chat] Activity is pending destruction, don't start navigating now!")
|
||||
sharedViewModel.destructionPendingChatRoom = chatRoom
|
||||
} else {
|
||||
binding.slidingPane.openPane()
|
||||
sharedViewModel.selectedChatRoom.value = chatRoom
|
||||
navigateToChatRoom(AppUtils.createBundleWithSharedTextAndFiles(sharedViewModel))
|
||||
}
|
||||
|
@ -182,11 +220,13 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
}
|
||||
|
||||
binding.setNewOneToOneChatRoomClickListener {
|
||||
binding.slidingPane.openPane()
|
||||
sharedViewModel.chatRoomParticipants.value = arrayListOf()
|
||||
navigateToChatRoomCreation(false)
|
||||
}
|
||||
|
||||
binding.setNewGroupChatRoomClickListener {
|
||||
binding.slidingPane.openPane()
|
||||
sharedViewModel.selectedGroupChatRoom.value = null
|
||||
sharedViewModel.chatRoomParticipants.value = arrayListOf()
|
||||
navigateToChatRoomCreation(true)
|
||||
|
@ -194,6 +234,7 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
|
||||
val pendingDestructionChatRoom = sharedViewModel.destructionPendingChatRoom
|
||||
if (pendingDestructionChatRoom != null) {
|
||||
binding.slidingPane.openPane()
|
||||
Log.w("[Chat] Found pending chat room from before activity was recreated")
|
||||
sharedViewModel.destructionPendingChatRoom = null
|
||||
sharedViewModel.selectedChatRoom.value = pendingDestructionChatRoom
|
||||
|
|
|
@ -70,7 +70,7 @@ class ContactEditorFragment : GenericFragment<ContactEditorFragmentBinding>(), S
|
|||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
|
||||
binding.setAvatarClickListener {
|
||||
|
|
|
@ -40,6 +40,7 @@ import org.linphone.activities.navigateToDialer
|
|||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.ContactDetailFragmentBinding
|
||||
import org.linphone.utils.DialogUtils
|
||||
import org.linphone.utils.Event
|
||||
|
||||
class DetailContactFragment : GenericFragment<ContactDetailFragmentBinding>() {
|
||||
private lateinit var viewModel: ContactViewModel
|
||||
|
@ -55,6 +56,7 @@ class DetailContactFragment : GenericFragment<ContactDetailFragmentBinding>() {
|
|||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
val id = arguments?.getString("id")
|
||||
arguments?.clear()
|
||||
|
@ -108,9 +110,8 @@ class DetailContactFragment : GenericFragment<ContactDetailFragmentBinding>() {
|
|||
})
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
|
||||
binding.setEditClickListener {
|
||||
navigateToContactEditor()
|
||||
|
@ -127,6 +128,10 @@ class DetailContactFragment : GenericFragment<ContactDetailFragmentBinding>() {
|
|||
})
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
|
||||
private fun confirmContactRemoval() {
|
||||
val dialogViewModel = DialogViewModel(getString(R.string.contact_delete_one_dialog))
|
||||
val dialog: Dialog = DialogUtils.getDialog(requireContext(), dialogViewModel)
|
||||
|
|
|
@ -24,10 +24,12 @@ import android.content.pm.PackageManager
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.MainActivity
|
||||
|
@ -68,10 +70,45 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
|||
listViewModel = ViewModelProvider(this).get(ContactsListViewModel::class.java)
|
||||
binding.viewModel = listViewModel
|
||||
|
||||
/* Shared view model & sliding pane related */
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
|
||||
view.doOnPreDraw { sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable }
|
||||
|
||||
sharedViewModel.closeSlidingPaneEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
if (!binding.slidingPane.closePane()) {
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
})
|
||||
sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable
|
||||
}
|
||||
})
|
||||
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
|
||||
/*binding.slidingPane.addPanelSlideListener(object : SlidingPaneLayout.PanelSlideListener {
|
||||
override fun onPanelSlide(panel: View, slideOffset: Float) { }
|
||||
|
||||
override fun onPanelOpened(panel: View) {
|
||||
if (binding.slidingPane.isSlideable) {
|
||||
(requireActivity() as MainActivity).hideTabsFragment()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPanelClosed(panel: View) {
|
||||
if (binding.slidingPane.isSlideable) {
|
||||
(requireActivity() as MainActivity).showTabsFragment()
|
||||
}
|
||||
}
|
||||
})*/
|
||||
|
||||
/* End of hared view model & sliding pane related */
|
||||
|
||||
_adapter = ContactsListAdapter(listSelectionViewModel, viewLifecycleOwner)
|
||||
binding.contactsList.setHasFixedSize(true)
|
||||
binding.contactsList.adapter = adapter
|
||||
|
@ -124,7 +161,7 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
|||
binding.contactsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
// Displays the first letter header
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter)
|
||||
binding.contactsList.addItemDecoration(headerItemDecoration)
|
||||
|
||||
adapter.selectedContactEvent.observe(viewLifecycleOwner, {
|
||||
|
@ -133,6 +170,7 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
|||
sharedViewModel.selectedContact.value = contact
|
||||
listViewModel.filter.value = ""
|
||||
|
||||
binding.slidingPane.openPane()
|
||||
if (editOnClick) {
|
||||
navigateToContactEditor(sipUriToAdd)
|
||||
editOnClick = false
|
||||
|
@ -174,6 +212,8 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
|
|||
binding.setNewContactClickListener {
|
||||
// Remove any previously selected contact
|
||||
sharedViewModel.selectedContact.value = null
|
||||
|
||||
binding.slidingPane.openPane()
|
||||
navigateToContactEditor(sipUriToAdd)
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@ import android.content.Intent
|
|||
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.main.dialer.viewmodels.ConfigFileViewModel
|
||||
import org.linphone.activities.main.fragments.SecureFragment
|
||||
|
@ -47,7 +46,7 @@ class ConfigViewerFragment : SecureFragment<FileConfigViewerFragmentBinding>() {
|
|||
isSecure = arguments?.getBoolean("Secure") ?: false
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
|
||||
binding.setExportClickListener {
|
||||
|
|
|
@ -69,7 +69,7 @@ class AudioViewerFragment : GenericViewerFragment<FileAudioViewerFragmentBinding
|
|||
// This is to prevent the first back key press to only hide to media controls
|
||||
override fun dispatchKeyEvent(event: KeyEvent?): Boolean {
|
||||
if (event?.keyCode == KeyEvent.KEYCODE_BACK) {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
return true
|
||||
}
|
||||
return super.dispatchKeyEvent(event)
|
||||
|
|
|
@ -21,7 +21,6 @@ package org.linphone.activities.main.files.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.activities.SnackBarActivity
|
||||
|
@ -42,7 +41,7 @@ class TopBarFragment : GenericFragment<FileViewerTopBarFragmentBinding>() {
|
|||
binding.lifecycleOwner = this
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
|
||||
binding.setExportClickListener {
|
||||
|
|
|
@ -61,7 +61,7 @@ class VideoViewerFragment : GenericViewerFragment<FileVideoViewerFragmentBinding
|
|||
// This is to prevent the first back key press to only hide to media controls
|
||||
override fun dispatchKeyEvent(event: KeyEvent?): Boolean {
|
||||
if (event?.keyCode == KeyEvent.KEYCODE_BACK) {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
return true
|
||||
}
|
||||
return super.dispatchKeyEvent(event)
|
||||
|
|
|
@ -36,6 +36,7 @@ import org.linphone.activities.navigateToFriend
|
|||
import org.linphone.contact.NativeContact
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.HistoryDetailFragmentBinding
|
||||
import org.linphone.utils.Event
|
||||
|
||||
class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
||||
private lateinit var viewModel: CallLogViewModel
|
||||
|
@ -51,6 +52,7 @@ class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
|||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
val callLogGroup = sharedViewModel.selectedCallLogGroup.value
|
||||
if (callLogGroup == null) {
|
||||
|
@ -69,9 +71,8 @@ class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
|||
viewModel.relatedCallLogs.value = callLogGroup.callLogs
|
||||
|
||||
binding.setBackClickListener {
|
||||
findNavController().popBackStack()
|
||||
goBack()
|
||||
}
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
|
||||
binding.setNewContactClickListener {
|
||||
val copy = viewModel.callLog.remoteAddress.clone()
|
||||
|
@ -101,7 +102,10 @@ class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
|||
val args = Bundle()
|
||||
args.putString("URI", address.asStringUriOnly())
|
||||
args.putBoolean("Transfer", sharedViewModel.pendingCallTransfer)
|
||||
args.putBoolean("SkipAutoCallStart", true) // If auto start call setting is enabled, ignore it
|
||||
args.putBoolean(
|
||||
"SkipAutoCallStart",
|
||||
true
|
||||
) // If auto start call setting is enabled, ignore it
|
||||
navigateToDialer(args)
|
||||
} else {
|
||||
val localAddress = callLog.localAddress
|
||||
|
@ -125,4 +129,8 @@ class DetailCallLogFragment : GenericFragment<HistoryDetailFragmentBinding>() {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,10 +23,12 @@ import android.app.Dialog
|
|||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.fragments.MasterFragment
|
||||
|
@ -71,10 +73,45 @@ class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, Call
|
|||
listViewModel = ViewModelProvider(this).get(CallLogsListViewModel::class.java)
|
||||
binding.viewModel = listViewModel
|
||||
|
||||
/* Shared view model & sliding pane related */
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
|
||||
view.doOnPreDraw { sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable }
|
||||
|
||||
sharedViewModel.closeSlidingPaneEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
if (!binding.slidingPane.closePane()) {
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
})
|
||||
sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable
|
||||
}
|
||||
})
|
||||
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
|
||||
/*binding.slidingPane.addPanelSlideListener(object : SlidingPaneLayout.PanelSlideListener {
|
||||
override fun onPanelSlide(panel: View, slideOffset: Float) { }
|
||||
|
||||
override fun onPanelOpened(panel: View) {
|
||||
if (binding.slidingPane.isSlideable) {
|
||||
(requireActivity() as MainActivity).hideTabsFragment()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPanelClosed(panel: View) {
|
||||
if (binding.slidingPane.isSlideable) {
|
||||
(requireActivity() as MainActivity).showTabsFragment()
|
||||
}
|
||||
}
|
||||
})*/
|
||||
|
||||
/* End of hared view model & sliding pane related */
|
||||
|
||||
_adapter = CallLogsListAdapter(listSelectionViewModel, viewLifecycleOwner)
|
||||
// SubmitList is done on a background thread
|
||||
// We need this adapter data observer to know when to scroll
|
||||
|
@ -125,7 +162,7 @@ class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, Call
|
|||
binding.callLogsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
// Displays formatted date header
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter)
|
||||
binding.callLogsList.addItemDecoration(headerItemDecoration)
|
||||
|
||||
listViewModel.callLogs.observe(viewLifecycleOwner, { callLogs ->
|
||||
|
@ -157,6 +194,7 @@ class MasterCallLogsFragment : MasterFragment<HistoryMasterFragmentBinding, Call
|
|||
adapter.selectedCallLogEvent.observe(viewLifecycleOwner, {
|
||||
it.consume { callLog ->
|
||||
sharedViewModel.selectedCallLogGroup.value = callLog
|
||||
binding.slidingPane.openPane()
|
||||
navigateToCallHistory()
|
||||
}
|
||||
})
|
||||
|
|
|
@ -23,7 +23,6 @@ import android.os.Bundle
|
|||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.fragments.MasterFragment
|
||||
|
@ -66,14 +65,14 @@ class RecordingsFragment : MasterFragment<RecordingsFragmentBinding, RecordingsL
|
|||
binding.recordingsList.addItemDecoration(AppUtils.getDividerDecoration(requireContext(), layoutManager))
|
||||
|
||||
// Displays the first letter header
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||
val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter)
|
||||
binding.recordingsList.addItemDecoration(headerItemDecoration)
|
||||
|
||||
viewModel.recordingsList.observe(viewLifecycleOwner, { recordings ->
|
||||
adapter.submitList(recordings)
|
||||
})
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.setBackClickListener { goBack() }
|
||||
|
||||
binding.setEditClickListener { listSelectionViewModel.isEditionEnabled.value = true }
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
|||
import org.linphone.activities.navigateToPhoneLinking
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.SettingsAccountFragmentBinding
|
||||
import org.linphone.utils.Event
|
||||
|
||||
class AccountSettingsFragment : GenericFragment<SettingsAccountFragmentBinding>() {
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
|
@ -46,6 +47,7 @@ class AccountSettingsFragment : GenericFragment<SettingsAccountFragmentBinding>(
|
|||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
val identity = arguments?.getString("Identity")
|
||||
if (identity == null) {
|
||||
|
@ -58,8 +60,7 @@ class AccountSettingsFragment : GenericFragment<SettingsAccountFragmentBinding>(
|
|||
viewModel = ViewModelProvider(this, AccountSettingsViewModelFactory(identity)).get(AccountSettingsViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
binding.setBackClickListener { goBack() }
|
||||
|
||||
viewModel.linkPhoneNumberEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
|
@ -83,4 +84,8 @@ class AccountSettingsFragment : GenericFragment<SettingsAccountFragmentBinding>(
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,18 +27,20 @@ import android.view.View
|
|||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.GenericFragment
|
||||
import org.linphone.activities.main.MainActivity
|
||||
import org.linphone.activities.main.settings.viewmodels.AdvancedSettingsViewModel
|
||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
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 : GenericFragment<SettingsAdvancedFragmentBinding>() {
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
private lateinit var viewModel: AdvancedSettingsViewModel
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.settings_advanced_fragment
|
||||
|
@ -48,11 +50,15 @@ class AdvancedSettingsFragment : GenericFragment<SettingsAdvancedFragmentBinding
|
|||
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
viewModel = ViewModelProvider(this).get(AdvancedSettingsViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
binding.setBackClickListener { goBack() }
|
||||
|
||||
viewModel.uploadFinishedEvent.observe(viewLifecycleOwner, {
|
||||
it.consume { url ->
|
||||
|
@ -126,4 +132,8 @@ class AdvancedSettingsFragment : GenericFragment<SettingsAdvancedFragmentBinding
|
|||
ContextCompat.startActivity(requireContext(), intent, null)
|
||||
} })
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,18 +26,20 @@ import android.view.View
|
|||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.databinding.ViewDataBinding
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import org.linphone.BR
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.GenericFragment
|
||||
import org.linphone.activities.main.settings.SettingListenerStub
|
||||
import org.linphone.activities.main.settings.viewmodels.AudioSettingsViewModel
|
||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.SettingsAudioFragmentBinding
|
||||
import org.linphone.utils.Event
|
||||
import org.linphone.utils.PermissionHelper
|
||||
|
||||
class AudioSettingsFragment : GenericFragment<SettingsAudioFragmentBinding>() {
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
private lateinit var viewModel: AudioSettingsViewModel
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.settings_audio_fragment
|
||||
|
@ -47,11 +49,15 @@ class AudioSettingsFragment : GenericFragment<SettingsAudioFragmentBinding>() {
|
|||
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
viewModel = ViewModelProvider(this).get(AudioSettingsViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
binding.setBackClickListener { goBack() }
|
||||
|
||||
viewModel.askAudioRecordPermissionForEchoCancellerCalibrationEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
|
@ -110,4 +116,8 @@ class AudioSettingsFragment : GenericFragment<SettingsAudioFragmentBinding>() {
|
|||
}
|
||||
viewModel.audioCodecs.value = list
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,15 +26,17 @@ import android.os.Bundle
|
|||
import android.provider.Settings
|
||||
import android.view.View
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.GenericFragment
|
||||
import org.linphone.activities.main.settings.viewmodels.CallSettingsViewModel
|
||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
import org.linphone.compatibility.Compatibility
|
||||
import org.linphone.databinding.SettingsCallFragmentBinding
|
||||
import org.linphone.mediastream.Version
|
||||
import org.linphone.utils.Event
|
||||
|
||||
class CallSettingsFragment : GenericFragment<SettingsCallFragmentBinding>() {
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
private lateinit var viewModel: CallSettingsViewModel
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.settings_call_fragment
|
||||
|
@ -44,11 +46,15 @@ class CallSettingsFragment : GenericFragment<SettingsCallFragmentBinding>() {
|
|||
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
viewModel = ViewModelProvider(this).get(CallSettingsViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
binding.setBackClickListener { goBack() }
|
||||
|
||||
viewModel.systemWideOverlayEnabledEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
|
@ -84,4 +90,8 @@ class CallSettingsFragment : GenericFragment<SettingsCallFragmentBinding>() {
|
|||
viewModel.systemWideOverlayListener.onBoolValueChanged(false)
|
||||
}
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,15 +25,17 @@ import android.os.Bundle
|
|||
import android.provider.Settings
|
||||
import android.view.View
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.GenericFragment
|
||||
import org.linphone.activities.main.settings.viewmodels.ChatSettingsViewModel
|
||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
import org.linphone.compatibility.Compatibility
|
||||
import org.linphone.databinding.SettingsChatFragmentBinding
|
||||
import org.linphone.mediastream.Version
|
||||
import org.linphone.utils.Event
|
||||
|
||||
class ChatSettingsFragment : GenericFragment<SettingsChatFragmentBinding>() {
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
private lateinit var viewModel: ChatSettingsViewModel
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.settings_chat_fragment
|
||||
|
@ -43,11 +45,15 @@ class ChatSettingsFragment : GenericFragment<SettingsChatFragmentBinding>() {
|
|||
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
viewModel = ViewModelProvider(this).get(ChatSettingsViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
binding.setBackClickListener { goBack() }
|
||||
|
||||
viewModel.launcherShortcutsEvent.observe(viewLifecycleOwner, {
|
||||
it.consume { newValue ->
|
||||
|
@ -76,4 +82,8 @@ class ChatSettingsFragment : GenericFragment<SettingsChatFragmentBinding>() {
|
|||
}
|
||||
} })
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,18 +23,20 @@ import android.content.pm.PackageManager
|
|||
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.LinphoneApplication.Companion.corePreferences
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.GenericFragment
|
||||
import org.linphone.activities.main.settings.viewmodels.ContactsSettingsViewModel
|
||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
import org.linphone.compatibility.Compatibility
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.SettingsContactsFragmentBinding
|
||||
import org.linphone.utils.Event
|
||||
import org.linphone.utils.PermissionHelper
|
||||
|
||||
class ContactsSettingsFragment : GenericFragment<SettingsContactsFragmentBinding>() {
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
private lateinit var viewModel: ContactsSettingsViewModel
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.settings_contacts_fragment
|
||||
|
@ -44,11 +46,15 @@ class ContactsSettingsFragment : GenericFragment<SettingsContactsFragmentBinding
|
|||
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
viewModel = ViewModelProvider(this).get(ContactsSettingsViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
binding.setBackClickListener { goBack() }
|
||||
|
||||
viewModel.launcherShortcutsEvent.observe(viewLifecycleOwner, {
|
||||
it.consume { newValue ->
|
||||
|
@ -105,4 +111,8 @@ class ContactsSettingsFragment : GenericFragment<SettingsContactsFragmentBinding
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,13 +22,15 @@ package org.linphone.activities.main.settings.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.GenericFragment
|
||||
import org.linphone.activities.main.settings.viewmodels.NetworkSettingsViewModel
|
||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
import org.linphone.databinding.SettingsNetworkFragmentBinding
|
||||
import org.linphone.utils.Event
|
||||
|
||||
class NetworkSettingsFragment : GenericFragment<SettingsNetworkFragmentBinding>() {
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
private lateinit var viewModel: NetworkSettingsViewModel
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.settings_network_fragment
|
||||
|
@ -38,10 +40,18 @@ class NetworkSettingsFragment : GenericFragment<SettingsNetworkFragmentBinding>(
|
|||
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
viewModel = ViewModelProvider(this).get(NetworkSettingsViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
binding.setBackClickListener { goBack() }
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,8 +21,9 @@ package org.linphone.activities.main.settings.fragments
|
|||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.*
|
||||
import org.linphone.activities.main.fragments.SecureFragment
|
||||
|
@ -47,14 +48,34 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
|||
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
/* Shared view model & sliding pane related */
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
|
||||
view.doOnPreDraw { sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable }
|
||||
|
||||
sharedViewModel.closeSlidingPaneEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
if (!binding.slidingPane.closePane()) {
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
})
|
||||
sharedViewModel.layoutChangedEvent.observe(viewLifecycleOwner, {
|
||||
it.consume {
|
||||
sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable
|
||||
}
|
||||
})
|
||||
binding.slidingPane.lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
|
||||
|
||||
/* End of hared view model & sliding pane related */
|
||||
|
||||
viewModel = ViewModelProvider(this).get(SettingsViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.setBackClickListener { goBack() }
|
||||
|
||||
sharedViewModel.accountRemoved.observe(viewLifecycleOwner, {
|
||||
Log.i("[Settings] Account removed, update accounts list")
|
||||
|
@ -65,60 +86,70 @@ class SettingsFragment : SecureFragment<SettingsFragmentBinding>() {
|
|||
if (identity != null) {
|
||||
Log.i("[Settings] Found identity parameter in arguments: $identity")
|
||||
arguments?.clear()
|
||||
binding.slidingPane.openPane()
|
||||
navigateToAccountSettings(identity)
|
||||
}
|
||||
|
||||
viewModel.accountsSettingsListener = object : SettingListenerStub() {
|
||||
override fun onAccountClicked(identity: String) {
|
||||
Log.i("[Settings] Navigation to settings for account with identity: $identity")
|
||||
binding.slidingPane.openPane()
|
||||
navigateToAccountSettings(identity)
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.tunnelSettingsListener = object : SettingListenerStub() {
|
||||
override fun onClicked() {
|
||||
binding.slidingPane.openPane()
|
||||
navigateToTunnelSettings()
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.audioSettingsListener = object : SettingListenerStub() {
|
||||
override fun onClicked() {
|
||||
binding.slidingPane.openPane()
|
||||
navigateToAudioSettings()
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.videoSettingsListener = object : SettingListenerStub() {
|
||||
override fun onClicked() {
|
||||
binding.slidingPane.openPane()
|
||||
navigateToVideoSettings()
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.callSettingsListener = object : SettingListenerStub() {
|
||||
override fun onClicked() {
|
||||
binding.slidingPane.openPane()
|
||||
navigateToCallSettings()
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.chatSettingsListener = object : SettingListenerStub() {
|
||||
override fun onClicked() {
|
||||
binding.slidingPane.openPane()
|
||||
navigateToChatSettings()
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.networkSettingsListener = object : SettingListenerStub() {
|
||||
override fun onClicked() {
|
||||
binding.slidingPane.openPane()
|
||||
navigateToNetworkSettings()
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.contactsSettingsListener = object : SettingListenerStub() {
|
||||
override fun onClicked() {
|
||||
binding.slidingPane.openPane()
|
||||
navigateToContactsSettings()
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.advancedSettingsListener = object : SettingListenerStub() {
|
||||
override fun onClicked() {
|
||||
binding.slidingPane.openPane()
|
||||
navigateToAdvancedSettings()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,13 +22,15 @@ package org.linphone.activities.main.settings.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.GenericFragment
|
||||
import org.linphone.activities.main.settings.viewmodels.TunnelSettingsViewModel
|
||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
import org.linphone.databinding.SettingsTunnelFragmentBinding
|
||||
import org.linphone.utils.Event
|
||||
|
||||
class TunnelSettingsFragment : GenericFragment<SettingsTunnelFragmentBinding>() {
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
private lateinit var viewModel: TunnelSettingsViewModel
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.settings_tunnel_fragment
|
||||
|
@ -38,10 +40,18 @@ class TunnelSettingsFragment : GenericFragment<SettingsTunnelFragmentBinding>()
|
|||
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
viewModel = ViewModelProvider(this).get(TunnelSettingsViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
binding.setBackClickListener { goBack() }
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,18 +26,20 @@ import android.view.View
|
|||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.databinding.ViewDataBinding
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import org.linphone.BR
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.GenericFragment
|
||||
import org.linphone.activities.main.settings.SettingListenerStub
|
||||
import org.linphone.activities.main.settings.viewmodels.VideoSettingsViewModel
|
||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.SettingsVideoFragmentBinding
|
||||
import org.linphone.utils.Event
|
||||
import org.linphone.utils.PermissionHelper
|
||||
|
||||
class VideoSettingsFragment : GenericFragment<SettingsVideoFragmentBinding>() {
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
private lateinit var viewModel: VideoSettingsViewModel
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.settings_video_fragment
|
||||
|
@ -47,11 +49,15 @@ class VideoSettingsFragment : GenericFragment<SettingsVideoFragmentBinding>() {
|
|||
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
sharedViewModel = requireActivity().run {
|
||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
viewModel = ViewModelProvider(this).get(VideoSettingsViewModel::class.java)
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setBackClickListener { findNavController().popBackStack() }
|
||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||
binding.setBackClickListener { goBack() }
|
||||
|
||||
initVideoCodecsList()
|
||||
|
||||
|
@ -100,4 +106,8 @@ class VideoSettingsFragment : GenericFragment<SettingsVideoFragmentBinding>() {
|
|||
}
|
||||
viewModel.videoCodecs.value = list
|
||||
}
|
||||
|
||||
override fun goBack() {
|
||||
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,6 +29,10 @@ import org.linphone.utils.Event
|
|||
class SharedMainViewModel : ViewModel() {
|
||||
val toggleDrawerEvent = MutableLiveData<Event<Boolean>>()
|
||||
|
||||
val layoutChangedEvent = MutableLiveData<Event<Boolean>>()
|
||||
var canSlidingPaneBeClosed = MutableLiveData<Boolean>()
|
||||
val closeSlidingPaneEvent = MutableLiveData<Event<Boolean>>()
|
||||
|
||||
/* Call history */
|
||||
|
||||
val selectedCallLogGroup = MutableLiveData<GroupedCallLogData>()
|
||||
|
|
|
@ -26,9 +26,8 @@ import android.util.SparseArray
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import org.linphone.R
|
||||
|
||||
class RecyclerViewHeaderDecoration(private val adapter: HeaderAdapter) : RecyclerView.ItemDecoration() {
|
||||
class RecyclerViewHeaderDecoration(private val context: Context, private val adapter: HeaderAdapter) : RecyclerView.ItemDecoration() {
|
||||
private val headers: SparseArray<View> = SparseArray()
|
||||
|
||||
override fun getItemOffsets(
|
||||
|
@ -54,10 +53,8 @@ class RecyclerViewHeaderDecoration(private val adapter: HeaderAdapter) : Recycle
|
|||
view.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
}
|
||||
|
||||
val displayMetrics = parent.context.resources.displayMetrics
|
||||
val width = if (view.resources.getBoolean(R.bool.isTablet)) displayMetrics.widthPixels / 2 else displayMetrics.widthPixels
|
||||
val widthSpec = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY)
|
||||
val heightSpec = View.MeasureSpec.makeMeasureSpec(displayMetrics.heightPixels, View.MeasureSpec.EXACTLY)
|
||||
val widthSpec = View.MeasureSpec.makeMeasureSpec(parent.width, View.MeasureSpec.EXACTLY)
|
||||
val heightSpec = View.MeasureSpec.makeMeasureSpec(parent.height, View.MeasureSpec.EXACTLY)
|
||||
val childWidth = ViewGroup.getChildMeasureSpec(widthSpec, parent.paddingLeft + parent.paddingRight, view.layoutParams.width)
|
||||
val childHeight = ViewGroup.getChildMeasureSpec(heightSpec, parent.paddingTop + parent.paddingBottom, view.layoutParams.height)
|
||||
|
||||
|
@ -71,7 +68,7 @@ class RecyclerViewHeaderDecoration(private val adapter: HeaderAdapter) : Recycle
|
|||
val position = parent.getChildAdapterPosition(child)
|
||||
if (position != RecyclerView.NO_POSITION && adapter.displayHeaderForPosition(position)) {
|
||||
canvas.save()
|
||||
val headerView: View = headers.get(position) ?: adapter.getHeaderViewForPosition(parent.context, position)
|
||||
val headerView: View = headers.get(position) ?: adapter.getHeaderViewForPosition(context, position)
|
||||
canvas.translate(0f, child.y - headerView.height)
|
||||
headerView.draw(canvas)
|
||||
canvas.restore()
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 16 KiB |
Binary file not shown.
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 14 KiB |
|
@ -1,210 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:bind="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
<variable
|
||||
name="backClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="newContactClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="contactClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.history.viewmodels.CallLogViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="18dp"
|
||||
android:src="@drawable/back" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.6" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{newContactClickListener}"
|
||||
android:visibility="@{viewModel.contact != null ? View.GONE : View.VISIBLE}"
|
||||
android:contentDescription="@string/content_description_add_contact"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contact_add" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{contactClickListener}"
|
||||
android:visibility="@{viewModel.contact == null ? View.GONE : View.VISIBLE}"
|
||||
android:contentDescription="@string/content_description_go_to_contact"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contact" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:orientation="horizontal"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:padding="5dp">
|
||||
|
||||
<org.linphone.contact.BigContactAvatarView
|
||||
android:id="@+id/avatar"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="100dp"
|
||||
android:gravity="center"
|
||||
bind:layout="@layout/contact_avatar_big"
|
||||
app:viewModel="@{viewModel}"/>
|
||||
|
||||
<TextView
|
||||
android:text="@{viewModel.contact.fullName ?? viewModel.displayName}"
|
||||
style="@style/big_contact_name_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal" />
|
||||
|
||||
<org.linphone.views.MarqueeTextView
|
||||
android:text="@{viewModel.peerSipUri}"
|
||||
style="@style/sip_uri_font"
|
||||
android:singleLine="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{() -> viewModel.startCall()}"
|
||||
android:contentDescription="@string/content_description_start_call"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_margin="10dp"
|
||||
android:background="@drawable/round_orange_button_background"
|
||||
android:src="@drawable/call_start_default" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{() -> viewModel.startChat(false)}"
|
||||
android:visibility="@{viewModel.chatAllowed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_start_chat"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_margin="10dp"
|
||||
android:background="@drawable/round_orange_button_background"
|
||||
android:src="@drawable/chat_start_default" />
|
||||
|
||||
<RelativeLayout
|
||||
android:onClick="@{() -> viewModel.startChat(true)}"
|
||||
android:visibility="@{viewModel.chatAllowed && viewModel.secureChatAllowed ? View.VISIBLE : View.GONE}"
|
||||
android:layout_width="65dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_margin="10dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@string/content_description_start_encrypted_chat"
|
||||
android:background="@drawable/round_orange_button_background"
|
||||
android:src="@drawable/chat_start_default" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:contentDescription="@string/content_description_start_encrypted_chat"
|
||||
android:src="@drawable/security_toggle_icon_green" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:padding="5dp">
|
||||
|
||||
<TextView
|
||||
style="@style/assistant_input_field_header_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="5dp"
|
||||
android:text="@string/history_calls_list"
|
||||
android:textAllCaps="true" />
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:entries="@{viewModel.callsHistory}"
|
||||
app:layout="@{@layout/history_detail_cell}"/>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<include
|
||||
layout="@layout/wait_layout"
|
||||
bind:visibility="@{viewModel.waitForChatRoomCreation}"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</layout>
|
|
@ -1,192 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:bind="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
<variable
|
||||
name="backClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="newContactClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="contactClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.history.viewmodels.CallLogViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="18dp"
|
||||
android:src="@drawable/back" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.6" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{newContactClickListener}"
|
||||
android:visibility="@{viewModel.contact != null ? View.GONE : View.VISIBLE}"
|
||||
android:contentDescription="@string/content_description_add_contact"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contact_add" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{contactClickListener}"
|
||||
android:visibility="@{viewModel.contact == null ? View.GONE : View.VISIBLE}"
|
||||
android:contentDescription="@string/content_description_go_to_contact"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contact" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="20dp"
|
||||
android:paddingBottom="5dp">
|
||||
|
||||
<org.linphone.contact.BigContactAvatarView
|
||||
android:id="@+id/avatar"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="100dp"
|
||||
android:gravity="center"
|
||||
bind:layout="@layout/contact_avatar_big"
|
||||
app:viewModel="@{viewModel}"/>
|
||||
|
||||
<TextView
|
||||
android:text="@{viewModel.contact.fullName ?? viewModel.displayName}"
|
||||
style="@style/big_contact_name_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal" />
|
||||
|
||||
<org.linphone.views.MarqueeTextView
|
||||
android:text="@{viewModel.peerSipUri}"
|
||||
style="@style/sip_uri_font"
|
||||
android:singleLine="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{() -> viewModel.startCall()}"
|
||||
android:contentDescription="@string/content_description_start_call"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_margin="10dp"
|
||||
android:background="@drawable/round_orange_button_background"
|
||||
android:src="@drawable/call_start_default" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{() -> viewModel.startChat(false)}"
|
||||
android:visibility="@{viewModel.chatAllowed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_start_chat"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_margin="10dp"
|
||||
android:background="@drawable/round_orange_button_background"
|
||||
android:src="@drawable/chat_start_default" />
|
||||
|
||||
<RelativeLayout
|
||||
android:onClick="@{() -> viewModel.startChat(true)}"
|
||||
android:visibility="@{viewModel.chatAllowed && viewModel.secureChatAllowed ? View.VISIBLE : View.GONE}"
|
||||
android:layout_width="65dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_margin="10dp">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@string/content_description_start_encrypted_chat"
|
||||
android:background="@drawable/round_orange_button_background"
|
||||
android:src="@drawable/chat_start_default" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:contentDescription="@string/content_description_start_encrypted_chat"
|
||||
android:src="@drawable/security_toggle_icon_green" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="1dp"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<TextView
|
||||
style="@style/assistant_input_field_header_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="5dp"
|
||||
android:text="@string/history_calls_list"
|
||||
android:textAllCaps="true" />
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:entries="@{viewModel.callsHistory}"
|
||||
app:layout="@{@layout/history_detail_cell}"/>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<include
|
||||
layout="@layout/wait_layout"
|
||||
bind:visibility="@{viewModel.waitForChatRoomCreation}"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</layout>
|
|
@ -1,209 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:linphone="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
<variable
|
||||
name="backClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.SettingsViewModel" />
|
||||
</data>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="18dp"
|
||||
android:src="@drawable/back" />
|
||||
|
||||
<TextView
|
||||
style="@style/accent_colored_title_font"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.6"
|
||||
android:gravity="center"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:padding="15dp"
|
||||
android:text="@string/settings"/>
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_primary_account_title"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_text"
|
||||
linphone:title="@{@string/settings_primary_account_display_name_title}"
|
||||
linphone:listener="@{viewModel.primaryAccountDisplayNameListener}"
|
||||
linphone:defaultValue="@{viewModel.primaryAccountDisplayName}"
|
||||
linphone:inputType="@{InputType.TYPE_CLASS_TEXT}"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_text"
|
||||
linphone:title="@{@string/settings_primary_account_username_title}"
|
||||
linphone:listener="@{viewModel.primaryAccountUsernameListener}"
|
||||
linphone:defaultValue="@{viewModel.primaryAccountUsername}"
|
||||
linphone:inputType="@{InputType.TYPE_CLASS_TEXT}"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_accounts_title"
|
||||
android:visibility="@{viewModel.showAccountSettings ? View.VISIBLE : View.GONE}"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:visibility="@{viewModel.showAccountSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:entries="@{viewModel.accounts}"
|
||||
linphone:layout="@{@layout/settings_account_cell}"/>
|
||||
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_list_title"
|
||||
android:paddingTop="15dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.tunnelSettingsListener}"
|
||||
android:visibility="@{viewModel.showTunnelSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_tunnel_title}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.audioSettingsListener}"
|
||||
android:visibility="@{viewModel.showAudioSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_audio_title}"
|
||||
linphone:icon="@{@drawable/settings_audio}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.videoSettingsListener}"
|
||||
android:visibility="@{viewModel.showVideoSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_video_title}"
|
||||
linphone:icon="@{@drawable/settings_video}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.callSettingsListener}"
|
||||
android:visibility="@{viewModel.showCallSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_call_title}"
|
||||
linphone:icon="@{@drawable/settings_call}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.chatSettingsListener}"
|
||||
android:visibility="@{viewModel.showChatSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_chat_title}"
|
||||
linphone:icon="@{@drawable/settings_chat}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.networkSettingsListener}"
|
||||
android:visibility="@{viewModel.showNetworkSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_network_title}"
|
||||
linphone:icon="@{@drawable/settings_network}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.contactsSettingsListener}"
|
||||
android:visibility="@{viewModel.showContactsSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_contacts_title}"
|
||||
linphone:icon="@{@drawable/settings_contacts}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.advancedSettingsListener}"
|
||||
android:visibility="@{viewModel.showAdvancedSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_advanced_title}"
|
||||
linphone:icon="@{@drawable/settings_advanced}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/settings_nav_container"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
linphone:defaultNavHost="false"
|
||||
linphone:navGraph="@navigation/settings_nav_graph"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</layout>
|
|
@ -1,175 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout 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">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View" />
|
||||
<variable
|
||||
name="newOneToOneChatRoomClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="newGroupChatRoomClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="editClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="cancelForwardClickListener"
|
||||
type="android.view.View.OnClickListener" />
|
||||
<variable
|
||||
name="cancelSharingClickListener"
|
||||
type="android.view.View.OnClickListener" />
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.chat.viewmodels.ChatRoomsListViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{cancelForwardClickListener}"
|
||||
android:visibility="@{viewModel.forwardPending ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_cancel_forward"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="10dp"
|
||||
android:src="@drawable/cancel" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{cancelSharingClickListener}"
|
||||
android:visibility="@{viewModel.fileSharingPending || viewModel.textSharingPending ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_cancel_sharing"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="10dp"
|
||||
android:src="@drawable/cancel" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{newOneToOneChatRoomClickListener}"
|
||||
android:contentDescription="@string/content_description_create_one_to_one_chat_room"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/chat_new" />
|
||||
|
||||
<ImageView
|
||||
android:visibility="@{viewModel.groupChatAvailable ? View.VISIBLE : View.GONE}"
|
||||
android:onClick="@{newGroupChatRoomClickListener}"
|
||||
android:contentDescription="@string/content_description_create_group_chat_room"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/chat_group_new" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.4" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{editClickListener}"
|
||||
android:enabled="@{!viewModel.chatRooms.empty}"
|
||||
android:visibility="@{viewModel.forwardPending || viewModel.fileSharingPending || viewModel.textSharingPending ? View.GONE : View.VISIBLE}"
|
||||
android:contentDescription="@string/content_description_enter_edition_mode"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/delete" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:visibility="@{viewModel.fileSharingPending || viewModel.textSharingPending || viewModel.forwardPending ? View.VISIBLE : View.GONE, default=gone}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/backgroundContrastColor"
|
||||
android:textColor="?attr/secondaryTextColor"
|
||||
android:padding="10dp"
|
||||
android:text="@{viewModel.fileSharingPending ? @string/chat_room_choose_conversation_for_file_sharing : (viewModel.textSharingPending ? @string/chat_room_choose_conversation_for_text_sharing : @string/chat_room_choose_conversation_for_message_forward)}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/list_edit_top_bar_fragment"
|
||||
android:name="org.linphone.activities.main.fragments.ListTopBarFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_alignTop="@id/top_bar"
|
||||
tools:layout="@layout/list_edit_top_bar_fragment" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/chatList"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:text="@string/no_chat_history"
|
||||
android:visibility="@{viewModel.chatRooms.empty ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/chat_nav_container"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:defaultNavHost="false"
|
||||
app:navGraph="@navigation/chat_nav_graph"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</layout>
|
|
@ -1,202 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout 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">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
<variable
|
||||
name="allContactsToggleClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="sipContactsToggleClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="newContactClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="editClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.contact.viewmodels.ContactsListViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{allContactsToggleClickListener}"
|
||||
android:enabled="@{viewModel.sipContactsSelected}"
|
||||
android:contentDescription="@string/content_description_show_all_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contacts_all" />
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.sipContactsSelected ? View.GONE : View.VISIBLE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{sipContactsToggleClickListener}"
|
||||
android:enabled="@{!viewModel.sipContactsSelected}"
|
||||
android:contentDescription="@string/content_description_show_sip_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:gravity="center"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contacts_sip" />
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.sipContactsSelected ? View.VISIBLE : View.GONE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{newContactClickListener}"
|
||||
android:contentDescription="@string/content_description_add_contact"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contact_add" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{editClickListener}"
|
||||
android:enabled="@{!viewModel.contactsList.empty}"
|
||||
android:contentDescription="@string/content_description_enter_edition_mode"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/delete" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/list_edit_top_bar_fragment"
|
||||
android:name="org.linphone.activities.main.fragments.ListTopBarFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_alignTop="@id/top_bar"
|
||||
tools:layout="@layout/list_edit_top_bar_fragment" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/searchBar"
|
||||
android:text="@={viewModel.filter}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:inputType="textPersonName"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_margin="10dp"
|
||||
android:drawableLeft="@drawable/search"
|
||||
android:drawablePadding="10dp"
|
||||
android:background="@color/transparent_color"
|
||||
android:backgroundTint="@color/transparent_color"
|
||||
android:hint="@string/contact_filter_hint"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_below="@id/searchBar"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/contactsList"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_below="@id/searchBar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:gravity="center"
|
||||
android:text="@string/no_sip_contact"
|
||||
android:visibility="@{viewModel.sipContactsSelected && viewModel.contactsList.empty ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:gravity="center"
|
||||
android:text="@string/no_contact"
|
||||
android:visibility="@{!viewModel.sipContactsSelected && viewModel.contactsList.empty ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/contacts_nav_container"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:defaultNavHost="false"
|
||||
app:navGraph="@navigation/contacts_nav_graph"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</layout>
|
|
@ -1,165 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout 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">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
<variable
|
||||
name="allCallLogsToggleClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="missedCallLogsToggleClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="editClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.history.viewmodels.CallLogsListViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{allCallLogsToggleClickListener}"
|
||||
android:enabled="@{viewModel.missedCallLogsSelected}"
|
||||
android:contentDescription="@string/content_description_show_all_calls"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/history_all" />
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.missedCallLogsSelected ? View.GONE : View.VISIBLE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{missedCallLogsToggleClickListener}"
|
||||
android:enabled="@{!viewModel.missedCallLogsSelected}"
|
||||
android:contentDescription="@string/content_description_show_missed_calls"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:gravity="center"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/history_missed" />
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.missedCallLogsSelected ? View.VISIBLE : View.GONE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.4" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{editClickListener}"
|
||||
android:enabled="@{viewModel.missedCallLogsSelected ? !viewModel.missedCallLogs.empty : !viewModel.callLogs.empty}"
|
||||
android:contentDescription="@string/content_description_enter_edition_mode"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/delete" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/list_edit_top_bar_fragment"
|
||||
android:name="org.linphone.activities.main.fragments.ListTopBarFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_alignTop="@id/top_bar"
|
||||
tools:layout="@layout/list_edit_top_bar_fragment" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/callLogsList"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:text="@string/no_call_history"
|
||||
android:visibility="@{viewModel.callLogs.empty && !viewModel.missedCallLogsSelected ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:text="@string/no_missed_call_history"
|
||||
android:visibility="@{viewModel.missedCallLogs.empty && viewModel.missedCallLogsSelected ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/history_nav_container"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:defaultNavHost="false"
|
||||
app:navGraph="@navigation/history_nav_graph"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</layout>
|
|
@ -1,209 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:linphone="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
<variable
|
||||
name="backClickListener"
|
||||
type="android.view.View.OnClickListener"/>
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.SettingsViewModel" />
|
||||
</data>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="18dp"
|
||||
android:src="@drawable/back" />
|
||||
|
||||
<TextView
|
||||
style="@style/accent_colored_title_font"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.6"
|
||||
android:gravity="center"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:padding="15dp"
|
||||
android:text="@string/settings"/>
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_primary_account_title"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_text"
|
||||
linphone:title="@{@string/settings_primary_account_display_name_title}"
|
||||
linphone:listener="@{viewModel.primaryAccountDisplayNameListener}"
|
||||
linphone:defaultValue="@{viewModel.primaryAccountDisplayName}"
|
||||
linphone:inputType="@{InputType.TYPE_CLASS_TEXT}"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_text"
|
||||
linphone:title="@{@string/settings_primary_account_username_title}"
|
||||
linphone:listener="@{viewModel.primaryAccountUsernameListener}"
|
||||
linphone:defaultValue="@{viewModel.primaryAccountUsername}"
|
||||
linphone:inputType="@{InputType.TYPE_CLASS_TEXT}"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_accounts_title"
|
||||
android:visibility="@{viewModel.showAccountSettings ? View.VISIBLE : View.GONE}"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:visibility="@{viewModel.showAccountSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:entries="@{viewModel.accounts}"
|
||||
linphone:layout="@{@layout/settings_account_cell}"/>
|
||||
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_list_title"
|
||||
android:paddingTop="15dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.tunnelSettingsListener}"
|
||||
android:visibility="@{viewModel.showTunnelSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_tunnel_title}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.audioSettingsListener}"
|
||||
android:visibility="@{viewModel.showAudioSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_audio_title}"
|
||||
linphone:icon="@{@drawable/settings_audio}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.videoSettingsListener}"
|
||||
android:visibility="@{viewModel.showVideoSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_video_title}"
|
||||
linphone:icon="@{@drawable/settings_video}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.callSettingsListener}"
|
||||
android:visibility="@{viewModel.showCallSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_call_title}"
|
||||
linphone:icon="@{@drawable/settings_call}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.chatSettingsListener}"
|
||||
android:visibility="@{viewModel.showChatSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_chat_title}"
|
||||
linphone:icon="@{@drawable/settings_chat}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.networkSettingsListener}"
|
||||
android:visibility="@{viewModel.showNetworkSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_network_title}"
|
||||
linphone:icon="@{@drawable/settings_network}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.contactsSettingsListener}"
|
||||
android:visibility="@{viewModel.showContactsSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_contacts_title}"
|
||||
linphone:icon="@{@drawable/settings_contacts}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.advancedSettingsListener}"
|
||||
android:visibility="@{viewModel.showAdvancedSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_advanced_title}"
|
||||
linphone:icon="@{@drawable/settings_advanced}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/settings_nav_container"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
linphone:defaultNavHost="false"
|
||||
linphone:navGraph="@navigation/settings_nav_graph"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</layout>
|
|
@ -32,6 +32,9 @@
|
|||
<variable
|
||||
name="chatSendingViewModel"
|
||||
type="org.linphone.activities.main.chat.viewmodels.ChatMessageSendingViewModel" />
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -49,6 +52,7 @@
|
|||
android:id="@+id/back"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
@ -63,7 +67,7 @@
|
|||
android:layout_weight="@{viewModel.oneToOneChatRoom ? 0.4f : 0.6f}"
|
||||
android:gravity="center_vertical|left"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="5dp">
|
||||
android:paddingLeft="15dp">
|
||||
|
||||
<org.linphone.views.MarqueeTextView
|
||||
android:onClick="@{titleClickListener}"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View" />
|
||||
|
@ -24,9 +25,16 @@
|
|||
type="org.linphone.activities.main.chat.viewmodels.ChatRoomsListViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
<androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
android:id="@+id/sliding_pane"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="280dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
|
@ -80,7 +88,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:padding="10dp"
|
||||
android:src="@drawable/chat_group_new" />
|
||||
|
||||
<View
|
||||
|
@ -135,6 +143,23 @@
|
|||
android:text="@string/no_chat_history"
|
||||
android:visibility="@{viewModel.chatRooms.empty ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentRight="true"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/chat_nav_container"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="300dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
app:defaultNavHost="false"
|
||||
app:navGraph="@navigation/chat_nav_graph"/>
|
||||
|
||||
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
||||
|
||||
</layout>
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.contact.viewmodels.ContactViewModel" />
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -33,6 +36,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
|
@ -21,147 +22,178 @@
|
|||
type="org.linphone.activities.main.contact.viewmodels.ContactsListViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
<androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
android:id="@+id/sliding_pane"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
<RelativeLayout
|
||||
android:layout_width="280dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{allContactsToggleClickListener}"
|
||||
android:enabled="@{viewModel.sipContactsSelected}"
|
||||
android:contentDescription="@string/content_description_show_all_contacts"
|
||||
android:layout_width="match_parent"
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contacts_all" />
|
||||
android:layout_weight="0.2">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{allContactsToggleClickListener}"
|
||||
android:enabled="@{viewModel.sipContactsSelected}"
|
||||
android:contentDescription="@string/content_description_show_all_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contacts_all" />
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.sipContactsSelected ? View.GONE : View.VISIBLE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{sipContactsToggleClickListener}"
|
||||
android:enabled="@{!viewModel.sipContactsSelected}"
|
||||
android:contentDescription="@string/content_description_show_sip_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:gravity="center"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contacts_sip" />
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.sipContactsSelected ? View.VISIBLE : View.GONE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.sipContactsSelected ? View.GONE : View.VISIBLE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{sipContactsToggleClickListener}"
|
||||
android:enabled="@{!viewModel.sipContactsSelected}"
|
||||
android:contentDescription="@string/content_description_show_sip_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:onClick="@{newContactClickListener}"
|
||||
android:contentDescription="@string/content_description_add_contact"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contact_add" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{editClickListener}"
|
||||
android:enabled="@{!viewModel.contactsList.empty}"
|
||||
android:contentDescription="@string/content_description_enter_edition_mode"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/delete" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/list_edit_top_bar_fragment"
|
||||
android:name="org.linphone.activities.main.fragments.ListTopBarFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_alignTop="@id/top_bar"
|
||||
tools:layout="@layout/list_edit_top_bar_fragment" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/searchBar"
|
||||
android:text="@={viewModel.filter}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_margin="10dp"
|
||||
android:inputType="textPersonName"
|
||||
android:drawableLeft="@drawable/search"
|
||||
android:drawablePadding="10dp"
|
||||
android:background="@color/transparent_color"
|
||||
android:backgroundTint="@color/transparent_color"
|
||||
android:hint="@string/contact_filter_hint"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_below="@id/searchBar"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/contactsList"
|
||||
android:layout_below="@id/searchBar"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/searchBar">
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:gravity="center"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contacts_sip" />
|
||||
android:text="@string/no_sip_contact"
|
||||
android:visibility="@{viewModel.sipContactsSelected && viewModel.contactsList.empty ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.sipContactsSelected ? View.VISIBLE : View.GONE}"
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:gravity="center"
|
||||
android:text="@string/no_contact"
|
||||
android:visibility="@{!viewModel.sipContactsSelected && viewModel.contactsList.empty ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2" />
|
||||
android:layout_alignParentRight="true"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{newContactClickListener}"
|
||||
android:contentDescription="@string/content_description_add_contact"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/contact_add" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{editClickListener}"
|
||||
android:enabled="@{!viewModel.contactsList.empty}"
|
||||
android:contentDescription="@string/content_description_enter_edition_mode"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/delete" />
|
||||
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/list_edit_top_bar_fragment"
|
||||
android:name="org.linphone.activities.main.fragments.ListTopBarFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_alignTop="@id/top_bar"
|
||||
tools:layout="@layout/list_edit_top_bar_fragment" />
|
||||
android:id="@+id/contacts_nav_container"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="300dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
app:defaultNavHost="false"
|
||||
app:navGraph="@navigation/contacts_nav_graph"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/searchBar"
|
||||
android:text="@={viewModel.filter}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_margin="10dp"
|
||||
android:inputType="textPersonName"
|
||||
android:drawableLeft="@drawable/search"
|
||||
android:drawablePadding="10dp"
|
||||
android:background="@color/transparent_color"
|
||||
android:backgroundTint="@color/transparent_color"
|
||||
android:hint="@string/contact_filter_hint"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_below="@id/searchBar"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/contactsList"
|
||||
android:layout_below="@id/searchBar"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:gravity="center"
|
||||
android:text="@string/no_sip_contact"
|
||||
android:visibility="@{viewModel.sipContactsSelected && viewModel.contactsList.empty ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:gravity="center"
|
||||
android:text="@string/no_contact"
|
||||
android:visibility="@{!viewModel.sipContactsSelected && viewModel.contactsList.empty ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
</RelativeLayout>
|
||||
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
||||
|
||||
</layout>
|
||||
|
|
|
@ -17,6 +17,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.history.viewmodels.CallLogViewModel" />
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -33,6 +36,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
|
@ -18,114 +19,138 @@
|
|||
type="org.linphone.activities.main.history.viewmodels.CallLogsListViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
<androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
android:id="@+id/sliding_pane"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
<RelativeLayout
|
||||
android:layout_width="280dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{allCallLogsToggleClickListener}"
|
||||
android:enabled="@{viewModel.missedCallLogsSelected}"
|
||||
android:contentDescription="@string/content_description_show_all_calls"
|
||||
android:layout_width="match_parent"
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/history_all" />
|
||||
android:layout_weight="0.2">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{allCallLogsToggleClickListener}"
|
||||
android:enabled="@{viewModel.missedCallLogsSelected}"
|
||||
android:contentDescription="@string/content_description_show_all_calls"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/history_all" />
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.missedCallLogsSelected ? View.GONE : View.VISIBLE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{missedCallLogsToggleClickListener}"
|
||||
android:enabled="@{!viewModel.missedCallLogsSelected}"
|
||||
android:contentDescription="@string/content_description_show_missed_calls"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:gravity="center"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/history_missed" />
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.missedCallLogsSelected ? View.VISIBLE : View.GONE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.missedCallLogsSelected ? View.GONE : View.VISIBLE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.4" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{missedCallLogsToggleClickListener}"
|
||||
android:enabled="@{!viewModel.missedCallLogsSelected}"
|
||||
android:contentDescription="@string/content_description_show_missed_calls"
|
||||
android:layout_width="match_parent"
|
||||
android:onClick="@{editClickListener}"
|
||||
android:enabled="@{viewModel.missedCallLogsSelected ? !viewModel.missedCallLogs.empty : !viewModel.callLogs.empty}"
|
||||
android:contentDescription="@string/content_description_enter_edition_mode"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:gravity="center"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/history_missed" />
|
||||
android:src="@drawable/delete" />
|
||||
|
||||
<View
|
||||
android:visibility="@{viewModel.missedCallLogsSelected ? View.VISIBLE : View.GONE}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:background="?attr/accentColor" />
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/list_edit_top_bar_fragment"
|
||||
android:name="org.linphone.activities.main.fragments.ListTopBarFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_alignTop="@id/top_bar"
|
||||
tools:layout="@layout/list_edit_top_bar_fragment" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/callLogsList"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:text="@string/no_call_history"
|
||||
android:visibility="@{viewModel.callLogs.empty && !viewModel.missedCallLogsSelected ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:text="@string/no_missed_call_history"
|
||||
android:visibility="@{viewModel.missedCallLogs.empty && viewModel.missedCallLogsSelected ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.4" />
|
||||
android:layout_alignParentRight="true"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{editClickListener}"
|
||||
android:enabled="@{viewModel.missedCallLogsSelected ? !viewModel.missedCallLogs.empty : !viewModel.callLogs.empty}"
|
||||
android:contentDescription="@string/content_description_enter_edition_mode"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/delete" />
|
||||
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/list_edit_top_bar_fragment"
|
||||
android:name="org.linphone.activities.main.fragments.ListTopBarFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_alignTop="@id/top_bar"
|
||||
tools:layout="@layout/list_edit_top_bar_fragment" />
|
||||
android:id="@+id/history_nav_container"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="300dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
app:defaultNavHost="false"
|
||||
app:navGraph="@navigation/history_nav_graph"/>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/callLogsList"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:text="@string/no_call_history"
|
||||
android:visibility="@{viewModel.callLogs.empty && !viewModel.missedCallLogsSelected ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
<TextView
|
||||
style="@style/empty_list_font"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:text="@string/no_missed_call_history"
|
||||
android:visibility="@{viewModel.missedCallLogs.empty && viewModel.missedCallLogsSelected ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
</RelativeLayout>
|
||||
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
||||
|
||||
</layout>
|
||||
|
|
|
@ -12,6 +12,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModel"/>
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -29,6 +32,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -52,7 +56,7 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.INVISIBLE : View.GONE}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.AdvancedSettingsViewModel"/>
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -28,6 +31,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -51,7 +55,7 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.INVISIBLE : View.GONE}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.AudioSettingsViewModel"/>
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -28,6 +31,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -51,7 +55,7 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.INVISIBLE : View.GONE}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.CallSettingsViewModel"/>
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -28,6 +31,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -51,7 +55,7 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.INVISIBLE : View.GONE}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.ChatSettingsViewModel"/>
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -28,6 +31,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -51,7 +55,7 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.INVISIBLE : View.GONE}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -10,6 +10,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.ContactsSettingsViewModel"/>
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -27,6 +30,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -50,7 +54,7 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.INVISIBLE : View.GONE}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:linphone="http://schemas.android.com/apk/res-auto">
|
||||
xmlns:linphone="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View"/>
|
||||
|
@ -13,170 +14,194 @@
|
|||
type="org.linphone.activities.main.settings.viewmodels.SettingsViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
<androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
android:id="@+id/sliding_pane"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="18dp"
|
||||
android:src="@drawable/back" />
|
||||
|
||||
<TextView
|
||||
style="@style/accent_colored_title_font"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.6"
|
||||
android:gravity="center"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:padding="15dp"
|
||||
android:text="@string/settings"/>
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<RelativeLayout
|
||||
android:layout_width="280dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:orientation="vertical">
|
||||
android:layout_height="@dimen/main_activity_top_bar_size"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:background="?attr/lightToolbarBackgroundColor"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:background="?attr/button_background_drawable"
|
||||
android:padding="18dp"
|
||||
android:src="@drawable/back" />
|
||||
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_primary_account_title"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
style="@style/accent_colored_title_font"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.6"
|
||||
android:gravity="center"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:padding="15dp"
|
||||
android:text="@string/settings"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_text"
|
||||
linphone:title="@{@string/settings_primary_account_display_name_title}"
|
||||
linphone:listener="@{viewModel.primaryAccountDisplayNameListener}"
|
||||
linphone:defaultValue="@{viewModel.primaryAccountDisplayName}"
|
||||
linphone:inputType="@{InputType.TYPE_CLASS_TEXT}"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_text"
|
||||
linphone:title="@{@string/settings_primary_account_username_title}"
|
||||
linphone:listener="@{viewModel.primaryAccountUsernameListener}"
|
||||
linphone:defaultValue="@{viewModel.primaryAccountUsername}"
|
||||
linphone:inputType="@{InputType.TYPE_CLASS_TEXT}"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_accounts_title"
|
||||
android:visibility="@{viewModel.showAccountSettings && !viewModel.accounts.empty ? View.VISIBLE : View.GONE}"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_below="@id/top_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:visibility="@{viewModel.showAccountSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:entries="@{viewModel.accounts}"
|
||||
linphone:layout="@{@layout/settings_account_cell}"/>
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_list_title"
|
||||
android:paddingTop="15dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_primary_account_title"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.tunnelSettingsListener}"
|
||||
android:visibility="@{viewModel.showTunnelSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_tunnel_title}" />
|
||||
<include
|
||||
layout="@layout/settings_widget_text"
|
||||
linphone:title="@{@string/settings_primary_account_display_name_title}"
|
||||
linphone:listener="@{viewModel.primaryAccountDisplayNameListener}"
|
||||
linphone:defaultValue="@{viewModel.primaryAccountDisplayName}"
|
||||
linphone:inputType="@{InputType.TYPE_CLASS_TEXT}"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showAudioSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.audioSettingsListener}"
|
||||
linphone:title="@{@string/settings_audio_title}"
|
||||
linphone:icon="@{@drawable/settings_audio}" />
|
||||
<include
|
||||
layout="@layout/settings_widget_text"
|
||||
linphone:title="@{@string/settings_primary_account_username_title}"
|
||||
linphone:listener="@{viewModel.primaryAccountUsernameListener}"
|
||||
linphone:defaultValue="@{viewModel.primaryAccountUsername}"
|
||||
linphone:inputType="@{InputType.TYPE_CLASS_TEXT}"
|
||||
android:visibility="@{viewModel.accounts.empty ? View.VISIBLE : View.GONE}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showVideoSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.videoSettingsListener}"
|
||||
linphone:title="@{@string/settings_video_title}"
|
||||
linphone:icon="@{@drawable/settings_video}" />
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_accounts_title"
|
||||
android:visibility="@{viewModel.showAccountSettings && !viewModel.accounts.empty ? View.VISIBLE : View.GONE}"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showCallSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.callSettingsListener}"
|
||||
linphone:title="@{@string/settings_call_title}"
|
||||
linphone:icon="@{@drawable/settings_call}" />
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:visibility="@{viewModel.showAccountSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:entries="@{viewModel.accounts}"
|
||||
linphone:layout="@{@layout/settings_account_cell}"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showChatSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.chatSettingsListener}"
|
||||
linphone:title="@{@string/settings_chat_title}"
|
||||
linphone:icon="@{@drawable/settings_chat}" />
|
||||
<TextView
|
||||
style="@style/settings_category_font"
|
||||
android:text="@string/settings_list_title"
|
||||
android:paddingTop="15dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showNetworkSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.networkSettingsListener}"
|
||||
linphone:title="@{@string/settings_network_title}"
|
||||
linphone:icon="@{@drawable/settings_network}" />
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
linphone:listener="@{viewModel.tunnelSettingsListener}"
|
||||
android:visibility="@{viewModel.showTunnelSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:title="@{@string/settings_tunnel_title}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showContactsSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.contactsSettingsListener}"
|
||||
linphone:title="@{@string/settings_contacts_title}"
|
||||
linphone:icon="@{@drawable/settings_contacts}" />
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showAudioSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.audioSettingsListener}"
|
||||
linphone:title="@{@string/settings_audio_title}"
|
||||
linphone:icon="@{@drawable/settings_audio}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showAdvancedSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.advancedSettingsListener}"
|
||||
linphone:title="@{@string/settings_advanced_title}"
|
||||
linphone:icon="@{@drawable/settings_advanced}" />
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showVideoSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.videoSettingsListener}"
|
||||
linphone:title="@{@string/settings_video_title}"
|
||||
linphone:icon="@{@drawable/settings_video}" />
|
||||
|
||||
</LinearLayout>
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showCallSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.callSettingsListener}"
|
||||
linphone:title="@{@string/settings_call_title}"
|
||||
linphone:icon="@{@drawable/settings_call}" />
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showChatSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.chatSettingsListener}"
|
||||
linphone:title="@{@string/settings_chat_title}"
|
||||
linphone:icon="@{@drawable/settings_chat}" />
|
||||
|
||||
</RelativeLayout>
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showNetworkSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.networkSettingsListener}"
|
||||
linphone:title="@{@string/settings_network_title}"
|
||||
linphone:icon="@{@drawable/settings_network}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showContactsSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.contactsSettingsListener}"
|
||||
linphone:title="@{@string/settings_contacts_title}"
|
||||
linphone:icon="@{@drawable/settings_contacts}" />
|
||||
|
||||
<include
|
||||
layout="@layout/settings_widget_basic"
|
||||
android:visibility="@{viewModel.showAdvancedSettings ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.advancedSettingsListener}"
|
||||
linphone:title="@{@string/settings_advanced_title}"
|
||||
linphone:icon="@{@drawable/settings_advanced}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
<View
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentRight="true"
|
||||
android:background="?attr/dividerColor" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/settings_nav_container"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="300dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
linphone:defaultNavHost="false"
|
||||
linphone:navGraph="@navigation/settings_nav_graph"/>
|
||||
|
||||
</androidx.slidingpanelayout.widget.SlidingPaneLayout>
|
||||
|
||||
</layout>
|
|
@ -11,6 +11,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.NetworkSettingsViewModel"/>
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -28,6 +31,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -51,7 +55,7 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.INVISIBLE : View.GONE}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.TunnelSettingsViewModel"/>
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -28,6 +31,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -51,7 +55,7 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.INVISIBLE : View.GONE}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.settings.viewmodels.VideoSettingsViewModel"/>
|
||||
<variable
|
||||
name="sharedMainViewModel"
|
||||
type="org.linphone.activities.main.viewmodels.SharedMainViewModel" />
|
||||
</data>
|
||||
|
||||
<RelativeLayout
|
||||
|
@ -28,6 +31,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.VISIBLE : View.GONE}"
|
||||
android:contentDescription="@string/content_description_go_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -51,7 +55,7 @@
|
|||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="@{sharedMainViewModel.canSlidingPaneBeClosed ? View.INVISIBLE : View.GONE}" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -1,87 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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/chat_nav_graph.xml"
|
||||
app:startDestination="@id/emptyChatFragment">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/detailChatRoomFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.DetailChatRoomFragment"
|
||||
tools:layout="@layout/chat_room_detail_fragment"
|
||||
android:label="DetailChatRoomFragment" >
|
||||
<action
|
||||
android:id="@+id/action_detailChatRoomFragment_to_imdnFragment"
|
||||
app:destination="@id/imdnFragment" />
|
||||
<action
|
||||
android:id="@+id/action_detailChatRoomFragment_to_devicesFragment"
|
||||
app:destination="@id/devicesFragment" />
|
||||
<action
|
||||
android:id="@+id/action_detailChatRoomFragment_to_groupInfoFragment"
|
||||
app:destination="@id/groupInfoFragment" />
|
||||
<action
|
||||
android:id="@+id/action_detailChatRoomFragment_to_ephemeralFragment"
|
||||
app:destination="@id/ephemeralFragment" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/chatRoomCreationFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.ChatRoomCreationFragment"
|
||||
tools:layout="@layout/chat_room_creation_fragment"
|
||||
android:label="ChatRoomCreationFragment" >
|
||||
<argument
|
||||
android:name="createGroup"
|
||||
app:argType="boolean"
|
||||
android:defaultValue="false" />
|
||||
<action
|
||||
android:id="@+id/action_chatRoomCreationFragment_to_groupInfoFragment"
|
||||
app:destination="@id/groupInfoFragment" />
|
||||
<action
|
||||
android:id="@+id/action_chatRoomCreationFragment_to_detailChatRoomFragment"
|
||||
app:destination="@id/detailChatRoomFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/devicesFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.DevicesFragment"
|
||||
tools:layout="@layout/chat_room_devices_fragment"
|
||||
android:label="DevicesFragment" />
|
||||
<fragment
|
||||
android:id="@+id/groupInfoFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.GroupInfoFragment"
|
||||
tools:layout="@layout/chat_room_group_info_fragment"
|
||||
android:label="GroupInfoFragment" >
|
||||
<action
|
||||
android:id="@+id/action_groupInfoFragment_to_chatRoomCreationFragment"
|
||||
app:destination="@id/chatRoomCreationFragment" />
|
||||
<action
|
||||
android:id="@+id/action_groupInfoFragment_to_detailChatRoomFragment"
|
||||
app:destination="@id/detailChatRoomFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/imdnFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.ImdnFragment"
|
||||
tools:layout="@layout/chat_room_imdn_fragment"
|
||||
android:label="ImdnFragment" >
|
||||
<argument
|
||||
android:name="MessageId"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/emptyChatFragment"
|
||||
android:name="org.linphone.activities.main.fragments.EmptyFragment"
|
||||
tools:layout="@layout/empty_fragment"
|
||||
android:label="EmptyFragment" >
|
||||
</fragment>
|
||||
<action
|
||||
android:id="@+id/action_global_detailChatRoomFragment"
|
||||
app:destination="@id/detailChatRoomFragment" />
|
||||
<action
|
||||
android:id="@+id/action_global_chatRoomCreationFragment"
|
||||
app:destination="@id/chatRoomCreationFragment" />
|
||||
<fragment
|
||||
android:id="@+id/ephemeralFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.EphemeralFragment"
|
||||
tools:layout="@layout/chat_room_ephemeral_fragment"
|
||||
android:label="EphemeralFragment" />
|
||||
|
||||
</navigation>
|
|
@ -1,47 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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/contacts_nav_graph.xml"
|
||||
app:startDestination="@id/emptyContactFragment">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/detailContactFragment"
|
||||
android:name="org.linphone.activities.main.contact.fragments.DetailContactFragment"
|
||||
tools:layout="@layout/contact_detail_fragment"
|
||||
android:label="DetailContactFragment" >
|
||||
<action
|
||||
android:id="@+id/action_detailContactFragment_to_contactEditorFragment"
|
||||
app:destination="@id/contactEditorFragment" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/contactEditorFragment"
|
||||
android:name="org.linphone.activities.main.contact.fragments.ContactEditorFragment"
|
||||
tools:layout="@layout/contact_editor_fragment"
|
||||
android:label="ContactEditorFragment" >
|
||||
<argument
|
||||
android:name="SipUri"
|
||||
app:argType="string"
|
||||
app:nullable="true" />
|
||||
<action
|
||||
android:id="@+id/action_contactEditorFragment_to_detailContactFragment"
|
||||
app:destination="@id/detailContactFragment" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/emptyContactFragment"
|
||||
android:name="org.linphone.activities.main.fragments.EmptyFragment"
|
||||
tools:layout="@layout/empty_fragment"
|
||||
android:label="EmptyFragment" >
|
||||
</fragment>
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_detailContactFragment"
|
||||
app:destination="@id/detailContactFragment" />
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_contactEditorFragment"
|
||||
app:destination="@id/contactEditorFragment" />
|
||||
|
||||
</navigation>
|
|
@ -1,24 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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/history_nav_graph.xml"
|
||||
app:startDestination="@id/emptyFragment">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/emptyFragment"
|
||||
android:name="org.linphone.activities.main.fragments.EmptyFragment"
|
||||
tools:layout="@layout/empty_fragment"
|
||||
android:label="EmptyFragment"/>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/detailCallLogFragment"
|
||||
android:name="org.linphone.activities.main.history.fragments.DetailCallLogFragment"
|
||||
tools:layout="@layout/history_detail_fragment"
|
||||
android:label="DetailCallLogFragment" />
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_detailCallLogFragment"
|
||||
app:destination="@id/detailCallLogFragment" />
|
||||
|
||||
</navigation>
|
|
@ -3,7 +3,13 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/chat_nav_graph.xml"
|
||||
app:startDestination="@id/detailChatRoomFragment">
|
||||
app:startDestination="@id/emptyChatFragment">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/emptyChatFragment"
|
||||
android:name="org.linphone.activities.main.fragments.EmptyFragment"
|
||||
tools:layout="@layout/empty_fragment"
|
||||
android:label="EmptyFragment" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/detailChatRoomFragment"
|
||||
|
@ -28,7 +34,7 @@
|
|||
android:id="@+id/chatRoomCreationFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.ChatRoomCreationFragment"
|
||||
tools:layout="@layout/chat_room_creation_fragment"
|
||||
android:label="ChatRoomCreationFragment">
|
||||
android:label="ChatRoomCreationFragment" >
|
||||
<argument
|
||||
android:name="createGroup"
|
||||
app:argType="boolean"
|
||||
|
@ -40,11 +46,13 @@
|
|||
android:id="@+id/action_chatRoomCreationFragment_to_detailChatRoomFragment"
|
||||
app:destination="@id/detailChatRoomFragment" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/devicesFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.DevicesFragment"
|
||||
tools:layout="@layout/chat_room_devices_fragment"
|
||||
android:label="DevicesFragment" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/groupInfoFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.GroupInfoFragment"
|
||||
|
@ -57,6 +65,7 @@
|
|||
android:id="@+id/action_groupInfoFragment_to_detailChatRoomFragment"
|
||||
app:destination="@id/detailChatRoomFragment" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/imdnFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.ImdnFragment"
|
||||
|
@ -66,6 +75,15 @@
|
|||
android:name="MessageId"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_detailChatRoomFragment"
|
||||
app:destination="@id/detailChatRoomFragment" />
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_chatRoomCreationFragment"
|
||||
app:destination="@id/chatRoomCreationFragment" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/ephemeralFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.EphemeralFragment"
|
||||
|
|
|
@ -3,7 +3,13 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/contacts_nav_graph.xml"
|
||||
app:startDestination="@id/detailContactFragment">
|
||||
app:startDestination="@id/emptyContactFragment">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/emptyContactFragment"
|
||||
android:name="org.linphone.activities.main.fragments.EmptyFragment"
|
||||
tools:layout="@layout/empty_fragment"
|
||||
android:label="EmptyFragment"/>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/detailContactFragment"
|
||||
|
@ -18,7 +24,6 @@
|
|||
<action
|
||||
android:id="@+id/action_detailContactFragment_to_detailChatRoomFragment"
|
||||
app:destination="@id/chat_nav_graph.xml" />
|
||||
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
|
@ -26,9 +31,21 @@
|
|||
android:name="org.linphone.activities.main.contact.fragments.ContactEditorFragment"
|
||||
tools:layout="@layout/contact_editor_fragment"
|
||||
android:label="ContactEditorFragment" >
|
||||
<argument
|
||||
android:name="SipUri"
|
||||
app:argType="string"
|
||||
app:nullable="true" />
|
||||
<action
|
||||
android:id="@+id/action_contactEditorFragment_to_detailContactFragment"
|
||||
app:destination="@id/detailContactFragment" />
|
||||
</fragment>
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_detailContactFragment"
|
||||
app:destination="@id/detailContactFragment" />
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_contactEditorFragment"
|
||||
app:destination="@id/contactEditorFragment" />
|
||||
|
||||
</navigation>
|
|
@ -3,22 +3,22 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/history_nav_graph.xml"
|
||||
app:startDestination="@id/detailCallLogFragment">
|
||||
app:startDestination="@id/emptyFragment">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/emptyFragment"
|
||||
android:name="org.linphone.activities.main.fragments.EmptyFragment"
|
||||
tools:layout="@layout/empty_fragment"
|
||||
android:label="EmptyFragment"/>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/detailCallLogFragment"
|
||||
android:name="org.linphone.activities.main.history.fragments.DetailCallLogFragment"
|
||||
tools:layout="@layout/history_detail_fragment"
|
||||
android:label="DetailCallLogFragment">
|
||||
android:label="DetailCallLogFragment" />
|
||||
|
||||
<action
|
||||
android:id="@+id/action_detailCallLogFragment_to_detailContactFragment"
|
||||
app:destination="@id/contacts_nav_graph.xml" />
|
||||
|
||||
<action
|
||||
android:id="@+id/action_detailCallLogFragment_to_detailChatRoomFragment"
|
||||
app:destination="@id/chat_nav_graph.xml" />
|
||||
|
||||
</fragment>
|
||||
<action
|
||||
android:id="@+id/action_global_detailCallLogFragment"
|
||||
app:destination="@id/detailCallLogFragment" />
|
||||
|
||||
</navigation>
|
|
@ -19,12 +19,6 @@
|
|||
<action
|
||||
android:id="@+id/action_masterChatRoomsFragment_to_masterContactsFragment"
|
||||
app:destination="@id/masterContactsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_masterChatRoomsFragment_to_detailChatRoomFragment"
|
||||
app:destination="@id/chat_nav_graph.xml" />
|
||||
<action
|
||||
android:id="@+id/action_masterChatRoomsFragment_to_chatRoomCreationFragment"
|
||||
app:destination="@id/chatRoomCreationFragment" />
|
||||
<argument
|
||||
android:name="LocalSipUri"
|
||||
app:argType="string"
|
||||
|
@ -42,6 +36,9 @@
|
|||
app:uri="linphone-android://chat-room/{LocalSipUri}/{RemoteSipUri}"
|
||||
android:autoVerify="true" />
|
||||
</fragment>
|
||||
<action
|
||||
android:id="@+id/action_global_masterChatRoomsFragment"
|
||||
app:destination="@id/masterChatRoomsFragment" />
|
||||
<fragment
|
||||
android:id="@+id/masterContactsFragment"
|
||||
android:name="org.linphone.activities.main.contact.fragments.MasterContactsFragment"
|
||||
|
@ -56,12 +53,6 @@
|
|||
<action
|
||||
android:id="@+id/action_masterContactsFragment_to_masterChatRoomsFragment"
|
||||
app:destination="@id/masterChatRoomsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_masterContactsFragment_to_detailContactFragment"
|
||||
app:destination="@id/contacts_nav_graph.xml" />
|
||||
<action
|
||||
android:id="@+id/action_masterContactsFragment_to_contactEditorFragment"
|
||||
app:destination="@id/contactEditorFragment" />
|
||||
<argument
|
||||
android:name="id"
|
||||
app:argType="string"
|
||||
|
@ -79,7 +70,6 @@
|
|||
app:uri="linphone-android://contact/new/{sipUri}"
|
||||
android:autoVerify="true" />
|
||||
</fragment>
|
||||
<include app:graph="@navigation/history_nav_graph" />
|
||||
<fragment
|
||||
android:id="@+id/masterCallLogsFragment"
|
||||
android:name="org.linphone.activities.main.history.fragments.MasterCallLogsFragment"
|
||||
|
@ -94,9 +84,6 @@
|
|||
<action
|
||||
android:id="@+id/action_masterCallLogsFragment_to_masterChatRoomsFragment"
|
||||
app:destination="@id/masterChatRoomsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_masterCallLogsFragment_to_detailCallLogFragment"
|
||||
app:destination="@id/history_nav_graph.xml" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/dialerFragment"
|
||||
|
@ -117,49 +104,9 @@
|
|||
app:argType="boolean"
|
||||
android:defaultValue="false" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/contactEditorFragment"
|
||||
android:name="org.linphone.activities.main.contact.fragments.ContactEditorFragment"
|
||||
tools:layout="@layout/contact_editor_fragment"
|
||||
android:label="ContactEditorFragment" >
|
||||
<argument
|
||||
android:name="SipUri"
|
||||
app:argType="string"
|
||||
app:nullable="true" />
|
||||
<action
|
||||
android:id="@+id/action_contactEditorFragment_to_detailContactFragment"
|
||||
app:destination="@id/contacts_nav_graph.xml" />
|
||||
</fragment>
|
||||
<include app:graph="@navigation/chat_nav_graph" />
|
||||
<include app:graph="@navigation/contacts_nav_graph" />
|
||||
<fragment
|
||||
android:id="@+id/chatRoomCreationFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.ChatRoomCreationFragment"
|
||||
tools:layout="@layout/chat_room_creation_fragment"
|
||||
android:label="ChatRoomCreationFragment">
|
||||
<argument
|
||||
android:name="createGroup"
|
||||
app:argType="boolean"
|
||||
android:defaultValue="false" />
|
||||
<action
|
||||
android:id="@+id/action_chatRoomCreationFragment_to_groupInfoFragment"
|
||||
app:destination="@id/groupInfoFragment" />
|
||||
<action
|
||||
android:id="@+id/action_chatRoomCreationFragment_to_detailChatRoomFragment"
|
||||
app:destination="@id/chat_nav_graph.xml" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/groupInfoFragment"
|
||||
android:name="org.linphone.activities.main.chat.fragments.GroupInfoFragment"
|
||||
tools:layout="@layout/chat_room_group_info_fragment"
|
||||
android:label="GroupInfoFragment" >
|
||||
<action
|
||||
android:id="@+id/action_groupInfoFragment_to_detailChatRoomFragment"
|
||||
app:destination="@id/chat_nav_graph.xml" />
|
||||
<action
|
||||
android:id="@+id/action_groupInfoFragment_to_chatRoomCreationFragment"
|
||||
app:destination="@id/chatRoomCreationFragment" />
|
||||
</fragment>
|
||||
<action
|
||||
android:id="@+id/action_global_dialerFragment"
|
||||
app:destination="@id/dialerFragment" />
|
||||
<fragment
|
||||
android:id="@+id/aboutFragment"
|
||||
android:name="org.linphone.activities.main.about.AboutFragment"
|
||||
|
@ -181,33 +128,6 @@
|
|||
android:name="org.linphone.activities.main.settings.fragments.SettingsFragment"
|
||||
tools:layout="@layout/settings_fragment"
|
||||
android:label="SettingsFragment" >
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_chatSettingsFragment"
|
||||
app:destination="@id/chatSettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_callSettingsFragment"
|
||||
app:destination="@id/callSettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_advancedSettingsFragment"
|
||||
app:destination="@id/advancedSettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_accountSettingsFragment"
|
||||
app:destination="@id/accountSettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_audioSettingsFragment"
|
||||
app:destination="@id/audioSettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_contactsSettingsFragment"
|
||||
app:destination="@id/contactsSettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_videoSettingsFragment"
|
||||
app:destination="@id/videoSettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_networkSettingsFragment"
|
||||
app:destination="@id/networkSettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_tunnelSettingsFragment"
|
||||
app:destination="@id/tunnelSettingsFragment" />
|
||||
<deepLink
|
||||
android:id="@+id/settingsDeepLink"
|
||||
app:uri="linphone-android://settings/{Identity}"
|
||||
|
@ -216,139 +136,46 @@
|
|||
<action
|
||||
android:id="@+id/action_global_settingsFragment"
|
||||
app:destination="@id/settingsFragment" />
|
||||
<include app:graph="@navigation/settings_nav_graph" />
|
||||
<fragment
|
||||
android:id="@+id/accountSettingsFragment"
|
||||
android:name="org.linphone.activities.main.settings.fragments.AccountSettingsFragment"
|
||||
tools:layout="@layout/settings_account_fragment"
|
||||
android:label="AccountSettingsFragment" >
|
||||
<argument
|
||||
android:name="Identity"
|
||||
app:argType="string" />
|
||||
<action
|
||||
android:id="@+id/action_accountSettingsFragment_to_phoneAccountLinkingFragment"
|
||||
app:destination="@id/phoneAccountLinkingFragment" />
|
||||
<deepLink
|
||||
android:id="@+id/accountSettingsDeepLink"
|
||||
app:uri="linphone-android://account-settings/{Identity}"
|
||||
android:autoVerify="true" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/advancedSettingsFragment"
|
||||
android:name="org.linphone.activities.main.settings.fragments.AdvancedSettingsFragment"
|
||||
tools:layout="@layout/settings_advanced_fragment"
|
||||
android:label="AdvancedSettingsFragment" />
|
||||
<fragment
|
||||
android:id="@+id/audioSettingsFragment"
|
||||
android:name="org.linphone.activities.main.settings.fragments.AudioSettingsFragment"
|
||||
tools:layout="@layout/settings_audio_fragment"
|
||||
android:label="AudioSettingsFragment" />
|
||||
<fragment
|
||||
android:id="@+id/callSettingsFragment"
|
||||
android:name="org.linphone.activities.main.settings.fragments.CallSettingsFragment"
|
||||
tools:layout="@layout/settings_call_fragment"
|
||||
android:label="CallSettingsFragment" />
|
||||
<fragment
|
||||
android:id="@+id/chatSettingsFragment"
|
||||
android:name="org.linphone.activities.main.settings.fragments.ChatSettingsFragment"
|
||||
tools:layout="@layout/settings_chat_fragment"
|
||||
android:label="ChatSettingsFragment" />
|
||||
<fragment
|
||||
android:id="@+id/contactsSettingsFragment"
|
||||
android:name="org.linphone.activities.main.settings.fragments.ContactsSettingsFragment"
|
||||
tools:layout="@layout/settings_contacts_fragment"
|
||||
android:label="ContactsSettingsFragment" />
|
||||
<fragment
|
||||
android:id="@+id/networkSettingsFragment"
|
||||
android:name="org.linphone.activities.main.settings.fragments.NetworkSettingsFragment"
|
||||
tools:layout="@layout/settings_network_fragment"
|
||||
android:label="NetworkSettingsFragment" />
|
||||
<fragment
|
||||
android:id="@+id/videoSettingsFragment"
|
||||
android:name="org.linphone.activities.main.settings.fragments.VideoSettingsFragment"
|
||||
tools:layout="@layout/settings_video_fragment"
|
||||
android:label="VideoSettingsFragment" />
|
||||
<fragment
|
||||
android:id="@+id/tunnelSettingsFragment"
|
||||
android:name="org.linphone.activities.main.settings.fragments.TunnelSettingsFragment"
|
||||
tools:layout="@layout/settings_tunnel_fragment"
|
||||
android:label="TunnelSettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_global_masterChatRoomsFragment"
|
||||
app:destination="@id/masterChatRoomsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_global_dialerFragment"
|
||||
app:destination="@id/dialerFragment" />
|
||||
<fragment
|
||||
android:id="@+id/phoneAccountLinkingFragment"
|
||||
tools:layout="@layout/assistant_phone_account_linking_fragment"
|
||||
android:name="org.linphone.activities.assistant.fragments.PhoneAccountLinkingFragment"
|
||||
android:label="PhoneAccountLinkingFragment" >
|
||||
<action
|
||||
android:id="@+id/action_phoneAccountLinkingFragment_to_phoneAccountValidationFragment"
|
||||
app:destination="@id/phoneAccountValidationFragment" />
|
||||
<argument
|
||||
android:name="Username"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="Password"
|
||||
app:argType="string"
|
||||
app:nullable="true" />
|
||||
<argument
|
||||
android:name="HA1"
|
||||
app:argType="string"
|
||||
app:nullable="true" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/phoneAccountValidationFragment"
|
||||
tools:layout="@layout/assistant_phone_account_validation_fragment"
|
||||
android:name="org.linphone.activities.assistant.fragments.PhoneAccountValidationFragment"
|
||||
android:label="PhoneAccountValidationFragment" >
|
||||
<action
|
||||
android:id="@+id/action_phoneAccountValidationFragment_to_accountSettingsFragment"
|
||||
app:destination="@id/accountSettingsFragment" />
|
||||
<argument
|
||||
android:name="PhoneNumber"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="IsLogin"
|
||||
app:argType="boolean" />
|
||||
<argument
|
||||
android:name="IsCreation"
|
||||
app:argType="boolean" />
|
||||
<argument
|
||||
android:name="IsLinking"
|
||||
app:argType="boolean" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/textViewerFragment"
|
||||
android:name="org.linphone.activities.main.files.fragments.TextViewerFragment"
|
||||
android:label="TextViewerFragment" />
|
||||
<action android:id="@+id/action_global_textViewerFragment" app:destination="@id/textViewerFragment" />
|
||||
<action
|
||||
android:id="@+id/action_global_textViewerFragment"
|
||||
app:destination="@id/textViewerFragment" />
|
||||
<fragment
|
||||
android:id="@+id/pdfViewerFragment"
|
||||
android:name="org.linphone.activities.main.files.fragments.PdfViewerFragment"
|
||||
android:label="PdfViewerFragment" />
|
||||
<action android:id="@+id/action_global_pdfViewerFragment" app:destination="@id/pdfViewerFragment" />
|
||||
<action
|
||||
android:id="@+id/action_global_pdfViewerFragment"
|
||||
app:destination="@id/pdfViewerFragment" />
|
||||
<fragment
|
||||
android:id="@+id/imageViewerFragment"
|
||||
android:name="org.linphone.activities.main.files.fragments.ImageViewerFragment"
|
||||
android:label="ImageViewerFragment" />
|
||||
<action android:id="@+id/action_global_imageViewerFragment" app:destination="@id/imageViewerFragment"/>
|
||||
<action
|
||||
android:id="@+id/action_global_imageViewerFragment"
|
||||
app:destination="@id/imageViewerFragment"/>
|
||||
<fragment
|
||||
android:id="@+id/videoViewerFragment"
|
||||
android:name="org.linphone.activities.main.files.fragments.VideoViewerFragment"
|
||||
android:label="VideoViewerFragment" />
|
||||
<action android:id="@+id/action_global_videoViewerFragment" app:destination="@id/videoViewerFragment"/>
|
||||
<action
|
||||
android:id="@+id/action_global_videoViewerFragment"
|
||||
app:destination="@id/videoViewerFragment"/>
|
||||
<fragment
|
||||
android:id="@+id/audioViewerFragment"
|
||||
android:name="org.linphone.activities.main.files.fragments.AudioViewerFragment"
|
||||
android:label="AudioViewerFragment" />
|
||||
<action android:id="@+id/action_global_audioViewerFragment" app:destination="@id/audioViewerFragment"/>
|
||||
<action
|
||||
android:id="@+id/action_global_audioViewerFragment"
|
||||
app:destination="@id/audioViewerFragment"/>
|
||||
<fragment
|
||||
android:id="@+id/configViewerFragment"
|
||||
android:name="org.linphone.activities.main.dialer.fragments.ConfigViewerFragment"
|
||||
android:label="ConfigViewerFragment" />
|
||||
<action android:id="@+id/action_global_configViewerFragment" app:destination="@id/configViewerFragment" />
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_configViewerFragment"
|
||||
app:destination="@id/configViewerFragment" />
|
||||
</navigation>
|
Loading…
Reference in a new issue