Code improvements
This commit is contained in:
parent
d611d20cfd
commit
c582b18b28
61 changed files with 222 additions and 289 deletions
|
@ -57,7 +57,7 @@ android {
|
||||||
buildToolsVersion '30.0.2'
|
buildToolsVersion '30.0.2'
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 23
|
minSdkVersion 23
|
||||||
targetSdkVersion 29
|
targetSdkVersion 30
|
||||||
versionCode 4999
|
versionCode 4999
|
||||||
versionName "${project.version}"
|
versionName "${project.version}"
|
||||||
applicationId getPackageName()
|
applicationId getPackageName()
|
||||||
|
|
|
@ -26,7 +26,6 @@ import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
@ -83,7 +82,7 @@ class AccountLoginFragment : AbstractPhoneFragment() {
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.goToSmsValidationEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.goToSmsValidationEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.accountLoginFragment) {
|
if (findNavController().currentDestination?.id == R.id.accountLoginFragment) {
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
|
@ -94,7 +93,7 @@ class AccountLoginFragment : AbstractPhoneFragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.leaveAssistantEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.leaveAssistantEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (coreContext.core.isEchoCancellerCalibrationRequired) {
|
if (coreContext.core.isEchoCancellerCalibrationRequired) {
|
||||||
if (findNavController().currentDestination?.id == R.id.accountLoginFragment) {
|
if (findNavController().currentDestination?.id == R.id.accountLoginFragment) {
|
||||||
|
@ -106,7 +105,7 @@ class AccountLoginFragment : AbstractPhoneFragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.invalidCredentialsEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.invalidCredentialsEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
val dialogViewModel = DialogViewModel(getString(R.string.assistant_error_invalid_credentials))
|
val dialogViewModel = DialogViewModel(getString(R.string.assistant_error_invalid_credentials))
|
||||||
val dialog: Dialog = DialogUtils.getDialog(requireContext(), dialogViewModel)
|
val dialog: Dialog = DialogUtils.getDialog(requireContext(), dialogViewModel)
|
||||||
|
|
|
@ -25,7 +25,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.activities.assistant.viewmodels.EchoCancellerCalibrationViewModel
|
import org.linphone.activities.assistant.viewmodels.EchoCancellerCalibrationViewModel
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
|
@ -53,7 +52,7 @@ class EchoCancellerCalibrationFragment : Fragment() {
|
||||||
viewModel = ViewModelProvider(this).get(EchoCancellerCalibrationViewModel::class.java)
|
viewModel = ViewModelProvider(this).get(EchoCancellerCalibrationViewModel::class.java)
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.echoCalibrationTerminated.observe(viewLifecycleOwner, Observer {
|
viewModel.echoCalibrationTerminated.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
requireActivity().finish()
|
requireActivity().finish()
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -59,7 +58,7 @@ class EmailAccountCreationFragment : Fragment() {
|
||||||
viewModel = ViewModelProvider(this, EmailAccountCreationViewModelFactory(sharedViewModel.getAccountCreator())).get(EmailAccountCreationViewModel::class.java)
|
viewModel = ViewModelProvider(this, EmailAccountCreationViewModelFactory(sharedViewModel.getAccountCreator())).get(EmailAccountCreationViewModel::class.java)
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.goToEmailValidationEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.goToEmailValidationEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.emailAccountCreationFragment) {
|
if (findNavController().currentDestination?.id == R.id.emailAccountCreationFragment) {
|
||||||
findNavController().navigate(R.id.action_emailAccountCreationFragment_to_emailAccountValidationFragment)
|
findNavController().navigate(R.id.action_emailAccountCreationFragment_to_emailAccountValidationFragment)
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -57,7 +56,7 @@ class EmailAccountValidationFragment : Fragment() {
|
||||||
viewModel = ViewModelProvider(this, EmailAccountValidationViewModelFactory(sharedViewModel.getAccountCreator())).get(EmailAccountValidationViewModel::class.java)
|
viewModel = ViewModelProvider(this, EmailAccountValidationViewModelFactory(sharedViewModel.getAccountCreator())).get(EmailAccountValidationViewModel::class.java)
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.leaveAssistantEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.leaveAssistantEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.emailAccountValidationFragment) {
|
if (findNavController().currentDestination?.id == R.id.emailAccountValidationFragment) {
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
|
|
|
@ -25,7 +25,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
@ -63,7 +62,7 @@ class GenericAccountLoginFragment : Fragment() {
|
||||||
viewModel = ViewModelProvider(this, GenericLoginViewModelFactory(sharedViewModel.getAccountCreator(true))).get(GenericLoginViewModel::class.java)
|
viewModel = ViewModelProvider(this, GenericLoginViewModelFactory(sharedViewModel.getAccountCreator(true))).get(GenericLoginViewModel::class.java)
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.leaveAssistantEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.leaveAssistantEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (coreContext.core.isEchoCancellerCalibrationRequired) {
|
if (coreContext.core.isEchoCancellerCalibrationRequired) {
|
||||||
if (findNavController().currentDestination?.id == R.id.genericAccountLoginFragment) {
|
if (findNavController().currentDestination?.id == R.id.genericAccountLoginFragment) {
|
||||||
|
@ -75,7 +74,7 @@ class GenericAccountLoginFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.invalidCredentialsEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.invalidCredentialsEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
val dialogViewModel = DialogViewModel(getString(R.string.assistant_error_invalid_credentials))
|
val dialogViewModel = DialogViewModel(getString(R.string.assistant_error_invalid_credentials))
|
||||||
val dialog: Dialog = DialogUtils.getDialog(requireContext(), dialogViewModel)
|
val dialog: Dialog = DialogUtils.getDialog(requireContext(), dialogViewModel)
|
||||||
|
|
|
@ -23,7 +23,6 @@ import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -66,7 +65,7 @@ class PhoneAccountCreationFragment : AbstractPhoneFragment() {
|
||||||
CountryPickerFragment(viewModel).show(childFragmentManager, "CountryPicker")
|
CountryPickerFragment(viewModel).show(childFragmentManager, "CountryPicker")
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.goToSmsValidationEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.goToSmsValidationEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.phoneAccountCreationFragment) {
|
if (findNavController().currentDestination?.id == R.id.phoneAccountCreationFragment) {
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
|
|
|
@ -23,7 +23,6 @@ import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication
|
import org.linphone.LinphoneApplication
|
||||||
|
@ -80,7 +79,7 @@ class PhoneAccountLinkingFragment : AbstractPhoneFragment() {
|
||||||
CountryPickerFragment(viewModel).show(childFragmentManager, "CountryPicker")
|
CountryPickerFragment(viewModel).show(childFragmentManager, "CountryPicker")
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.goToSmsValidationEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.goToSmsValidationEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.phoneAccountLinkingFragment) {
|
if (findNavController().currentDestination?.id == R.id.phoneAccountLinkingFragment) {
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
|
@ -91,7 +90,7 @@ class PhoneAccountLinkingFragment : AbstractPhoneFragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.leaveAssistantEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.leaveAssistantEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.phoneAccountLinkingFragment) {
|
if (findNavController().currentDestination?.id == R.id.phoneAccountLinkingFragment) {
|
||||||
if (LinphoneApplication.coreContext.core.isEchoCancellerCalibrationRequired) {
|
if (LinphoneApplication.coreContext.core.isEchoCancellerCalibrationRequired) {
|
||||||
|
|
|
@ -26,7 +26,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
@ -67,7 +66,7 @@ class PhoneAccountValidationFragment : Fragment() {
|
||||||
viewModel.isCreation.value = arguments?.getBoolean("IsCreation", false)
|
viewModel.isCreation.value = arguments?.getBoolean("IsCreation", false)
|
||||||
viewModel.isLinking.value = arguments?.getBoolean("IsLinking", false)
|
viewModel.isLinking.value = arguments?.getBoolean("IsLinking", false)
|
||||||
|
|
||||||
viewModel.leaveAssistantEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.leaveAssistantEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
when {
|
when {
|
||||||
viewModel.isLogin.value == true || viewModel.isCreation.value == true -> {
|
viewModel.isLogin.value == true || viewModel.isCreation.value == true -> {
|
||||||
|
|
|
@ -25,7 +25,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
@ -61,7 +60,7 @@ class QrCodeFragment : Fragment() {
|
||||||
viewModel = ViewModelProvider(this).get(QrCodeViewModel::class.java)
|
viewModel = ViewModelProvider(this).get(QrCodeViewModel::class.java)
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.qrCodeFoundEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.qrCodeFoundEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { url ->
|
it.consume { url ->
|
||||||
sharedViewModel.remoteProvisioningUrl.value = url
|
sharedViewModel.remoteProvisioningUrl.value = url
|
||||||
findNavController().navigateUp()
|
findNavController().navigateUp()
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
@ -66,7 +65,7 @@ class RemoteProvisioningFragment : Fragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.fetchSuccessfulEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.fetchSuccessfulEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { success ->
|
it.consume { success ->
|
||||||
if (success) {
|
if (success) {
|
||||||
if (coreContext.core.isEchoCancellerCalibrationRequired) {
|
if (coreContext.core.isEchoCancellerCalibrationRequired) {
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.os.Bundle
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -57,7 +56,7 @@ class CallActivity : ProximitySensorActivity() {
|
||||||
|
|
||||||
sharedViewModel = ViewModelProvider(this).get(SharedCallViewModel::class.java)
|
sharedViewModel = ViewModelProvider(this).get(SharedCallViewModel::class.java)
|
||||||
|
|
||||||
sharedViewModel.toggleDrawerEvent.observe(this, Observer {
|
sharedViewModel.toggleDrawerEvent.observe(this, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (binding.statsMenu.isDrawerOpen(Gravity.LEFT)) {
|
if (binding.statsMenu.isDrawerOpen(Gravity.LEFT)) {
|
||||||
binding.statsMenu.closeDrawer(binding.sideMenuContent, true)
|
binding.statsMenu.closeDrawer(binding.sideMenuContent, true)
|
||||||
|
@ -67,7 +66,7 @@ class CallActivity : ProximitySensorActivity() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
sharedViewModel.resetHiddenInterfaceTimerInVideoCallEvent.observe(this, Observer {
|
sharedViewModel.resetHiddenInterfaceTimerInVideoCallEvent.observe(this, {
|
||||||
it.consume {
|
it.consume {
|
||||||
viewModel.showMomentarily()
|
viewModel.showMomentarily()
|
||||||
}
|
}
|
||||||
|
@ -95,7 +94,7 @@ class CallActivity : ProximitySensorActivity() {
|
||||||
|
|
||||||
videoZoomHelper = VideoZoomHelper(this, binding.remoteVideoSurface)
|
videoZoomHelper = VideoZoomHelper(this, binding.remoteVideoSurface)
|
||||||
|
|
||||||
viewModel.proximitySensorEnabled.observe(this, Observer {
|
viewModel.proximitySensorEnabled.observe(this, {
|
||||||
enableProximitySensor(it)
|
enableProximitySensor(it)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.app.KeyguardManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -65,21 +64,21 @@ class IncomingCallActivity : GenericActivity() {
|
||||||
)[IncomingCallViewModel::class.java]
|
)[IncomingCallViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.callEndedEvent.observe(this, Observer {
|
viewModel.callEndedEvent.observe(this, {
|
||||||
it.consume {
|
it.consume {
|
||||||
Log.i("[Incoming Call Activity] Call ended, finish activity")
|
Log.i("[Incoming Call Activity] Call ended, finish activity")
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.callConnectedEvent.observe(this, Observer {
|
viewModel.callConnectedEvent.observe(this, {
|
||||||
it.consume {
|
it.consume {
|
||||||
Log.i("[Incoming Call Activity] Call connected, finish activity")
|
Log.i("[Incoming Call Activity] Call connected, finish activity")
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.earlyMediaVideoEnabled.observe(this, Observer {
|
viewModel.earlyMediaVideoEnabled.observe(this, {
|
||||||
if (it) {
|
if (it) {
|
||||||
Log.i("[Incoming Call Activity] Early media video being received, set native window id")
|
Log.i("[Incoming Call Activity] Early media video being received, set native window id")
|
||||||
coreContext.core.nativeVideoWindowId = binding.remoteVideoSurface
|
coreContext.core.nativeVideoWindowId = binding.remoteVideoSurface
|
||||||
|
|
|
@ -23,7 +23,6 @@ import android.annotation.TargetApi
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -82,14 +81,14 @@ class OutgoingCallActivity : GenericActivity() {
|
||||||
controlsViewModel.toggleSpeaker()
|
controlsViewModel.toggleSpeaker()
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.callEndedEvent.observe(this, Observer {
|
viewModel.callEndedEvent.observe(this, {
|
||||||
it.consume {
|
it.consume {
|
||||||
Log.i("[Outgoing Call Activity] Call ended, finish activity")
|
Log.i("[Outgoing Call Activity] Call ended, finish activity")
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.callConnectedEvent.observe(this, Observer {
|
viewModel.callConnectedEvent.observe(this, {
|
||||||
it.consume {
|
it.consume {
|
||||||
Log.i("[Outgoing Call Activity] Call connected, finish activity")
|
Log.i("[Outgoing Call Activity] Call connected, finish activity")
|
||||||
finish()
|
finish()
|
||||||
|
|
|
@ -27,9 +27,7 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import java.util.*
|
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.call.viewmodels.CallsViewModel
|
import org.linphone.activities.call.viewmodels.CallsViewModel
|
||||||
import org.linphone.activities.call.viewmodels.ControlsViewModel
|
import org.linphone.activities.call.viewmodels.ControlsViewModel
|
||||||
|
@ -74,7 +72,7 @@ class ControlsFragment : Fragment() {
|
||||||
controlsViewModel = ViewModelProvider(this).get(ControlsViewModel::class.java)
|
controlsViewModel = ViewModelProvider(this).get(ControlsViewModel::class.java)
|
||||||
binding.controlsViewModel = controlsViewModel
|
binding.controlsViewModel = controlsViewModel
|
||||||
|
|
||||||
callsViewModel.currentCallViewModel.observe(viewLifecycleOwner, Observer {
|
callsViewModel.currentCallViewModel.observe(viewLifecycleOwner, {
|
||||||
if (it != null) {
|
if (it != null) {
|
||||||
binding.activeCallTimer.base =
|
binding.activeCallTimer.base =
|
||||||
SystemClock.elapsedRealtime() - (1000 * it.call.duration) // Linphone timestamps are in seconds
|
SystemClock.elapsedRealtime() - (1000 * it.call.duration) // Linphone timestamps are in seconds
|
||||||
|
@ -82,13 +80,13 @@ class ControlsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
callsViewModel.noMoreCallEvent.observe(viewLifecycleOwner, Observer {
|
callsViewModel.noMoreCallEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
activity?.finish()
|
activity?.finish()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
callsViewModel.callUpdateEvent.observe(viewLifecycleOwner, Observer {
|
callsViewModel.callUpdateEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { call ->
|
it.consume { call ->
|
||||||
if (call.state == Call.State.StreamsRunning) {
|
if (call.state == Call.State.StreamsRunning) {
|
||||||
dialog?.dismiss()
|
dialog?.dismiss()
|
||||||
|
@ -98,7 +96,7 @@ class ControlsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
controlsViewModel.chatClickedEvent.observe(viewLifecycleOwner, Observer {
|
controlsViewModel.chatClickedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
intent.setClass(requireContext(), MainActivity::class.java)
|
intent.setClass(requireContext(), MainActivity::class.java)
|
||||||
|
@ -108,7 +106,7 @@ class ControlsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
controlsViewModel.addCallClickedEvent.observe(viewLifecycleOwner, Observer {
|
controlsViewModel.addCallClickedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
intent.setClass(requireContext(), MainActivity::class.java)
|
intent.setClass(requireContext(), MainActivity::class.java)
|
||||||
|
@ -119,7 +117,7 @@ class ControlsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
controlsViewModel.transferCallClickedEvent.observe(viewLifecycleOwner, Observer {
|
controlsViewModel.transferCallClickedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
intent.setClass(requireContext(), MainActivity::class.java)
|
intent.setClass(requireContext(), MainActivity::class.java)
|
||||||
|
@ -130,7 +128,7 @@ class ControlsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
controlsViewModel.somethingClickedEvent.observe(viewLifecycleOwner, Observer {
|
controlsViewModel.somethingClickedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
sharedViewModel.resetHiddenInterfaceTimerInVideoCallEvent.value = Event(true)
|
sharedViewModel.resetHiddenInterfaceTimerInVideoCallEvent.value = Event(true)
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -73,7 +72,7 @@ class StatusFragment : Fragment() {
|
||||||
viewModel.refreshRegister()
|
viewModel.refreshRegister()
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.showZrtpDialogEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.showZrtpDialogEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { call ->
|
it.consume { call ->
|
||||||
if (call.state == Call.State.Connected || call.state == Call.State.StreamsRunning) {
|
if (call.state == Call.State.Connected || call.state == Call.State.StreamsRunning) {
|
||||||
showZrtpDialog(call)
|
showZrtpDialog(call)
|
||||||
|
|
|
@ -28,7 +28,6 @@ import android.view.Gravity
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
|
@ -77,7 +76,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
||||||
sharedViewModel = ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
sharedViewModel = ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||||
binding.viewModel = sharedViewModel
|
binding.viewModel = sharedViewModel
|
||||||
|
|
||||||
sharedViewModel.toggleDrawerEvent.observe(this, Observer {
|
sharedViewModel.toggleDrawerEvent.observe(this, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (binding.sideMenu.isDrawerOpen(Gravity.LEFT)) {
|
if (binding.sideMenu.isDrawerOpen(Gravity.LEFT)) {
|
||||||
binding.sideMenu.closeDrawer(binding.sideMenuContent, true)
|
binding.sideMenu.closeDrawer(binding.sideMenuContent, true)
|
||||||
|
@ -87,7 +86,7 @@ class MainActivity : GenericActivity(), SnackBarActivity, NavController.OnDestin
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
coreContext.callErrorMessageResourceId.observe(this, Observer {
|
coreContext.callErrorMessageResourceId.observe(this, {
|
||||||
it.consume { messageResourceId ->
|
it.consume { messageResourceId ->
|
||||||
showSnackBar(messageResourceId)
|
showSnackBar(messageResourceId)
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -73,7 +72,7 @@ class AboutFragment : Fragment() {
|
||||||
startActivity(browserIntent)
|
startActivity(browserIntent)
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.uploadFinishedEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.uploadFinishedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { url ->
|
it.consume { url ->
|
||||||
val clipboard =
|
val clipboard =
|
||||||
requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||||
|
|
|
@ -28,7 +28,6 @@ import android.view.ViewGroup
|
||||||
import androidx.appcompat.widget.PopupMenu
|
import androidx.appcompat.widget.PopupMenu
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -133,7 +132,7 @@ class ChatMessagesListAdapter(val selectionViewModel: ListTopBarViewModel) : Lif
|
||||||
|
|
||||||
// This is for item selection through ListTopBarFragment
|
// This is for item selection through ListTopBarFragment
|
||||||
selectionListViewModel = selectionViewModel
|
selectionListViewModel = selectionViewModel
|
||||||
selectionViewModel.isEditionEnabled.observe(this@ChatMessageViewHolder, Observer {
|
selectionViewModel.isEditionEnabled.observe(this@ChatMessageViewHolder, {
|
||||||
position = adapterPosition
|
position = adapterPosition
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -292,7 +291,7 @@ class ChatMessagesListAdapter(val selectionViewModel: ListTopBarViewModel) : Lif
|
||||||
|
|
||||||
// This is for item selection through ListTopBarFragment
|
// This is for item selection through ListTopBarFragment
|
||||||
selectionListViewModel = selectionViewModel
|
selectionListViewModel = selectionViewModel
|
||||||
selectionViewModel.isEditionEnabled.observe(this@EventViewHolder, Observer {
|
selectionViewModel.isEditionEnabled.observe(this@EventViewHolder, {
|
||||||
position = adapterPosition
|
position = adapterPosition
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -67,11 +66,11 @@ class ChatRoomCreationContactsAdapter : LifecycleListAdapter<SearchResult, ChatR
|
||||||
val searchResultViewModel = ChatRoomCreationContactViewModel(searchResult)
|
val searchResultViewModel = ChatRoomCreationContactViewModel(searchResult)
|
||||||
viewModel = searchResultViewModel
|
viewModel = searchResultViewModel
|
||||||
|
|
||||||
securityEnabled.observe(this@ViewHolder, Observer {
|
securityEnabled.observe(this@ViewHolder, {
|
||||||
updateSecurity(searchResult, searchResultViewModel, it)
|
updateSecurity(searchResult, searchResultViewModel, it)
|
||||||
})
|
})
|
||||||
|
|
||||||
selectedAddresses.observe(this@ViewHolder, Observer {
|
selectedAddresses.observe(this@ViewHolder, {
|
||||||
val selected = it.find { address ->
|
val selected = it.find { address ->
|
||||||
val searchAddress = searchResult.address
|
val searchAddress = searchResult.address
|
||||||
if (searchAddress != null) address.weakEqual(searchAddress) else false
|
if (searchAddress != null) address.weakEqual(searchAddress) else false
|
||||||
|
|
|
@ -23,7 +23,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.chat.viewmodels.ChatRoomViewModel
|
import org.linphone.activities.main.chat.viewmodels.ChatRoomViewModel
|
||||||
|
@ -63,7 +62,7 @@ class ChatRoomsListAdapter(val selectionViewModel: ListTopBarViewModel) : Lifecy
|
||||||
|
|
||||||
// This is for item selection through ListTopBarFragment
|
// This is for item selection through ListTopBarFragment
|
||||||
selectionListViewModel = selectionViewModel
|
selectionListViewModel = selectionViewModel
|
||||||
selectionViewModel.isEditionEnabled.observe(this@ViewHolder, Observer {
|
selectionViewModel.isEditionEnabled.observe(this@ViewHolder, {
|
||||||
position = adapterPosition
|
position = adapterPosition
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ class ImdnAdapter : ListAdapter<ParticipantImdnState,
|
||||||
holder.bind(getItem(position))
|
holder.bind(getItem(position))
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class ViewHolder(
|
class ViewHolder(
|
||||||
private val binding: ChatRoomImdnParticipantCellBinding
|
private val binding: ChatRoomImdnParticipantCellBinding
|
||||||
) : LifecycleViewHolder(binding) {
|
) : LifecycleViewHolder(binding) {
|
||||||
fun bind(participantImdnState: ParticipantImdnState) {
|
fun bind(participantImdnState: ParticipantImdnState) {
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
|
@ -96,23 +95,23 @@ class ChatRoomCreationFragment : Fragment() {
|
||||||
viewModel.sipContactsSelected.value = true
|
viewModel.sipContactsSelected.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.contactsList.observe(viewLifecycleOwner, Observer {
|
viewModel.contactsList.observe(viewLifecycleOwner, {
|
||||||
adapter.submitList(it)
|
adapter.submitList(it)
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.isEncrypted.observe(viewLifecycleOwner, Observer {
|
viewModel.isEncrypted.observe(viewLifecycleOwner, {
|
||||||
adapter.securityEnabled.value = it
|
adapter.securityEnabled.value = it
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.sipContactsSelected.observe(viewLifecycleOwner, Observer {
|
viewModel.sipContactsSelected.observe(viewLifecycleOwner, {
|
||||||
viewModel.updateContactsList()
|
viewModel.updateContactsList()
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.selectedAddresses.observe(viewLifecycleOwner, Observer {
|
viewModel.selectedAddresses.observe(viewLifecycleOwner, {
|
||||||
adapter.selectedAddresses.value = it
|
adapter.selectedAddresses.value = it
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.chatRoomCreatedEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.chatRoomCreatedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { chatRoom ->
|
it.consume { chatRoom ->
|
||||||
sharedViewModel.selectedChatRoom.value = chatRoom
|
sharedViewModel.selectedChatRoom.value = chatRoom
|
||||||
if (findNavController().currentDestination?.id == R.id.chatRoomCreationFragment) {
|
if (findNavController().currentDestination?.id == R.id.chatRoomCreationFragment) {
|
||||||
|
@ -121,11 +120,11 @@ class ChatRoomCreationFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.filter.observe(viewLifecycleOwner, Observer {
|
viewModel.filter.observe(viewLifecycleOwner, {
|
||||||
viewModel.applyFilter()
|
viewModel.applyFilter()
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.selectedContact.observe(viewLifecycleOwner, Observer {
|
adapter.selectedContact.observe(viewLifecycleOwner, {
|
||||||
it.consume { searchResult ->
|
it.consume { searchResult ->
|
||||||
if (createGroup) {
|
if (createGroup) {
|
||||||
viewModel.toggleSelectionForSearchResult(searchResult)
|
viewModel.toggleSelectionForSearchResult(searchResult)
|
||||||
|
@ -148,7 +147,7 @@ class ChatRoomCreationFragment : Fragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.onErrorEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { messageResourceId ->
|
it.consume { messageResourceId ->
|
||||||
(activity as MainActivity).showSnackBar(messageResourceId)
|
(activity as MainActivity).showSnackBar(messageResourceId)
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,6 @@ import android.view.*
|
||||||
import android.webkit.MimeTypeMap
|
import android.webkit.MimeTypeMap
|
||||||
import androidx.appcompat.view.menu.MenuBuilder
|
import androidx.appcompat.view.menu.MenuBuilder
|
||||||
import androidx.appcompat.view.menu.MenuPopupHelper
|
import androidx.appcompat.view.menu.MenuPopupHelper
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
|
@ -129,45 +128,45 @@ class DetailChatRoomFragment : MasterFragment() {
|
||||||
}
|
}
|
||||||
binding.chatMessagesList.addOnScrollListener(chatScrollListener)
|
binding.chatMessagesList.addOnScrollListener(chatScrollListener)
|
||||||
|
|
||||||
chatSendingViewModel.textToSend.observe(viewLifecycleOwner, Observer {
|
chatSendingViewModel.textToSend.observe(viewLifecycleOwner, {
|
||||||
chatSendingViewModel.onTextToSendChanged(it)
|
chatSendingViewModel.onTextToSendChanged(it)
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.events.observe(viewLifecycleOwner, Observer { events ->
|
listViewModel.events.observe(viewLifecycleOwner, { events ->
|
||||||
adapter.submitList(events)
|
adapter.submitList(events)
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.messageUpdatedEvent.observe(viewLifecycleOwner, Observer {
|
listViewModel.messageUpdatedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { position ->
|
it.consume { position ->
|
||||||
adapter.notifyItemChanged(position)
|
adapter.notifyItemChanged(position)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.scrollToBottomOnMessageReceivedEvent.observe(viewLifecycleOwner, Observer {
|
listViewModel.scrollToBottomOnMessageReceivedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
scrollToBottom()
|
scrollToBottom()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.requestWriteExternalStoragePermissionEvent.observe(viewLifecycleOwner, Observer {
|
listViewModel.requestWriteExternalStoragePermissionEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
requestPermissions(arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)
|
requestPermissions(arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.deleteMessageEvent.observe(viewLifecycleOwner, Observer {
|
adapter.deleteMessageEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { chatMessage ->
|
it.consume { chatMessage ->
|
||||||
listViewModel.deleteMessage(chatMessage)
|
listViewModel.deleteMessage(chatMessage)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.resendMessageEvent.observe(viewLifecycleOwner, Observer {
|
adapter.resendMessageEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { chatMessage ->
|
it.consume { chatMessage ->
|
||||||
listViewModel.resendMessage(chatMessage)
|
listViewModel.resendMessage(chatMessage)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.forwardMessageEvent.observe(viewLifecycleOwner, Observer {
|
adapter.forwardMessageEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { chatMessage ->
|
it.consume { chatMessage ->
|
||||||
// Remove observer before setting the message to forward
|
// Remove observer before setting the message to forward
|
||||||
// as we don't want to forward it in this chat room
|
// as we don't want to forward it in this chat room
|
||||||
|
@ -178,7 +177,7 @@ class DetailChatRoomFragment : MasterFragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.showImdnForMessageEvent.observe(viewLifecycleOwner, Observer {
|
adapter.showImdnForMessageEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { chatMessage ->
|
it.consume { chatMessage ->
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
args.putString("MessageId", chatMessage.messageId)
|
args.putString("MessageId", chatMessage.messageId)
|
||||||
|
@ -186,14 +185,14 @@ class DetailChatRoomFragment : MasterFragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.addSipUriToContactEvent.observe(viewLifecycleOwner, Observer {
|
adapter.addSipUriToContactEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { sipUri ->
|
it.consume { sipUri ->
|
||||||
Log.i("[Chat Room] Going to contacts list with SIP URI to add: $sipUri")
|
Log.i("[Chat Room] Going to contacts list with SIP URI to add: $sipUri")
|
||||||
navigateToContacts(sipUri)
|
navigateToContacts(sipUri)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.openContentEvent.observe(viewLifecycleOwner, Observer {
|
adapter.openContentEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { path ->
|
it.consume { path ->
|
||||||
openFile(path)
|
openFile(path)
|
||||||
}
|
}
|
||||||
|
@ -239,7 +238,7 @@ class DetailChatRoomFragment : MasterFragment() {
|
||||||
coreContext.startCall(viewModel.addressToCall)
|
coreContext.startCall(viewModel.addressToCall)
|
||||||
}
|
}
|
||||||
|
|
||||||
sharedViewModel.textToShare.observe(viewLifecycleOwner, Observer {
|
sharedViewModel.textToShare.observe(viewLifecycleOwner, {
|
||||||
if (it.isNotEmpty()) {
|
if (it.isNotEmpty()) {
|
||||||
Log.i("[Chat Room] Found text to share")
|
Log.i("[Chat Room] Found text to share")
|
||||||
chatSendingViewModel.textToSend.value = it
|
chatSendingViewModel.textToSend.value = it
|
||||||
|
@ -247,7 +246,7 @@ class DetailChatRoomFragment : MasterFragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
sharedViewModel.filesToShare.observe(viewLifecycleOwner, Observer {
|
sharedViewModel.filesToShare.observe(viewLifecycleOwner, {
|
||||||
if (it.isNotEmpty()) {
|
if (it.isNotEmpty()) {
|
||||||
for (path in it) {
|
for (path in it) {
|
||||||
Log.i("[Chat Room] Found $path file to share")
|
Log.i("[Chat Room] Found $path file to share")
|
||||||
|
@ -257,7 +256,7 @@ class DetailChatRoomFragment : MasterFragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
sharedViewModel.messageToForwardEvent.observe(viewLifecycleOwner, Observer {
|
sharedViewModel.messageToForwardEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { chatMessage ->
|
it.consume { chatMessage ->
|
||||||
Log.i("[Chat Room] Found message to transfer")
|
Log.i("[Chat Room] Found message to transfer")
|
||||||
showForwardConfirmationDialog(chatMessage)
|
showForwardConfirmationDialog(chatMessage)
|
||||||
|
|
|
@ -25,7 +25,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
|
@ -90,21 +89,21 @@ class GroupInfoFragment : Fragment() {
|
||||||
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
||||||
binding.participants.addItemDecoration(dividerItemDecoration)
|
binding.participants.addItemDecoration(dividerItemDecoration)
|
||||||
|
|
||||||
viewModel.participants.observe(viewLifecycleOwner, Observer {
|
viewModel.participants.observe(viewLifecycleOwner, {
|
||||||
adapter.submitList(it)
|
adapter.submitList(it)
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.isMeAdmin.observe(viewLifecycleOwner, Observer { isMeAdmin ->
|
viewModel.isMeAdmin.observe(viewLifecycleOwner, { isMeAdmin ->
|
||||||
adapter.showAdminControls(isMeAdmin && chatRoom != null)
|
adapter.showAdminControls(isMeAdmin && chatRoom != null)
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.meAdminChangedEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.meAdminChangedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { isMeAdmin ->
|
it.consume { isMeAdmin ->
|
||||||
showMeAdminStateChanged(isMeAdmin)
|
showMeAdminStateChanged(isMeAdmin)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.participantRemovedEvent.observe(viewLifecycleOwner, Observer {
|
adapter.participantRemovedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { participant ->
|
it.consume { participant ->
|
||||||
viewModel.removeParticipant(participant)
|
viewModel.removeParticipant(participant)
|
||||||
}
|
}
|
||||||
|
@ -116,7 +115,7 @@ class GroupInfoFragment : Fragment() {
|
||||||
findNavController().popBackStack()
|
findNavController().popBackStack()
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.createdChatRoomEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.createdChatRoomEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { chatRoom ->
|
it.consume { chatRoom ->
|
||||||
sharedViewModel.selectedChatRoom.value = chatRoom
|
sharedViewModel.selectedChatRoom.value = chatRoom
|
||||||
goToChatRoom()
|
goToChatRoom()
|
||||||
|
@ -164,7 +163,7 @@ class GroupInfoFragment : Fragment() {
|
||||||
dialog.show()
|
dialog.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.onErrorEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { messageResourceId ->
|
it.consume { messageResourceId ->
|
||||||
(activity as MainActivity).showSnackBar(messageResourceId)
|
(activity as MainActivity).showSnackBar(messageResourceId)
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
|
@ -101,7 +100,7 @@ class ImdnFragment : Fragment() {
|
||||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||||
binding.participantsList.addItemDecoration(headerItemDecoration)
|
binding.participantsList.addItemDecoration(headerItemDecoration)
|
||||||
|
|
||||||
viewModel.participants.observe(viewLifecycleOwner, Observer {
|
viewModel.participants.observe(viewLifecycleOwner, {
|
||||||
adapter.submitList(it)
|
adapter.submitList(it)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
|
@ -127,21 +126,21 @@ class MasterChatRoomsFragment : MasterFragment() {
|
||||||
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
dividerItemDecoration.setDrawable(resources.getDrawable(R.drawable.divider, null))
|
||||||
binding.chatList.addItemDecoration(dividerItemDecoration)
|
binding.chatList.addItemDecoration(dividerItemDecoration)
|
||||||
|
|
||||||
listViewModel.chatRooms.observe(viewLifecycleOwner, Observer { chatRooms ->
|
listViewModel.chatRooms.observe(viewLifecycleOwner, { chatRooms ->
|
||||||
adapter.submitList(chatRooms)
|
adapter.submitList(chatRooms)
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.latestUpdatedChatRoomId.observe(viewLifecycleOwner, Observer { position ->
|
listViewModel.latestUpdatedChatRoomId.observe(viewLifecycleOwner, { position ->
|
||||||
adapter.notifyItemChanged(position)
|
adapter.notifyItemChanged(position)
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.contactsUpdatedEvent.observe(viewLifecycleOwner, Observer {
|
listViewModel.contactsUpdatedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
adapter.notifyDataSetChanged()
|
adapter.notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.selectedChatRoomEvent.observe(viewLifecycleOwner, Observer {
|
adapter.selectedChatRoomEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { chatRoom ->
|
it.consume { chatRoom ->
|
||||||
sharedViewModel.selectedChatRoom.value = chatRoom
|
sharedViewModel.selectedChatRoom.value = chatRoom
|
||||||
navigateToChatRoom()
|
navigateToChatRoom()
|
||||||
|
@ -175,21 +174,21 @@ class MasterChatRoomsFragment : MasterFragment() {
|
||||||
adapter.selectedChatRoomEvent.value = Event(chatRoom)
|
adapter.selectedChatRoomEvent.value = Event(chatRoom)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sharedViewModel.textToShare.observe(viewLifecycleOwner, Observer {
|
sharedViewModel.textToShare.observe(viewLifecycleOwner, {
|
||||||
if (it.isNotEmpty()) {
|
if (it.isNotEmpty()) {
|
||||||
Log.i("[Chat] Found text to share")
|
Log.i("[Chat] Found text to share")
|
||||||
val activity = requireActivity() as MainActivity
|
val activity = requireActivity() as MainActivity
|
||||||
activity.showSnackBar(R.string.chat_room_toast_choose_for_sharing)
|
activity.showSnackBar(R.string.chat_room_toast_choose_for_sharing)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
sharedViewModel.filesToShare.observe(viewLifecycleOwner, Observer {
|
sharedViewModel.filesToShare.observe(viewLifecycleOwner, {
|
||||||
if (it.isNotEmpty()) {
|
if (it.isNotEmpty()) {
|
||||||
Log.i("[Chat] Found ${it.size} files to share")
|
Log.i("[Chat] Found ${it.size} files to share")
|
||||||
val activity = requireActivity() as MainActivity
|
val activity = requireActivity() as MainActivity
|
||||||
activity.showSnackBar(R.string.chat_room_toast_choose_for_sharing)
|
activity.showSnackBar(R.string.chat_room_toast_choose_for_sharing)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
sharedViewModel.messageToForwardEvent.observe(viewLifecycleOwner, Observer {
|
sharedViewModel.messageToForwardEvent.observe(viewLifecycleOwner, {
|
||||||
if (!it.consumed()) {
|
if (!it.consumed()) {
|
||||||
Log.i("[Chat] Found chat message to transfer")
|
Log.i("[Chat] Found chat message to transfer")
|
||||||
|
|
||||||
|
@ -198,7 +197,7 @@ class MasterChatRoomsFragment : MasterFragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.onErrorEvent.observe(viewLifecycleOwner, Observer {
|
listViewModel.onErrorEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { messageResourceId ->
|
it.consume { messageResourceId ->
|
||||||
(activity as MainActivity).showSnackBar(messageResourceId)
|
(activity as MainActivity).showSnackBar(messageResourceId)
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.contact.viewmodels.ContactViewModel
|
import org.linphone.activities.main.contact.viewmodels.ContactViewModel
|
||||||
|
@ -67,7 +66,7 @@ class ContactsListAdapter(val selectionViewModel: ListTopBarViewModel) : Lifecyc
|
||||||
|
|
||||||
// This is for item selection through ListTopBarFragment
|
// This is for item selection through ListTopBarFragment
|
||||||
selectionListViewModel = selectionViewModel
|
selectionListViewModel = selectionViewModel
|
||||||
selectionViewModel.isEditionEnabled.observe(this@ViewHolder, Observer {
|
selectionViewModel.isEditionEnabled.observe(this@ViewHolder, {
|
||||||
position = adapterPosition
|
position = adapterPosition
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ class SyncAccountAdapter : BaseAdapter() {
|
||||||
|
|
||||||
val icon = view.findViewById<ImageView>(R.id.account_icon)
|
val icon = view.findViewById<ImageView>(R.id.account_icon)
|
||||||
icon.setImageDrawable(account.third)
|
icon.setImageDrawable(account.third)
|
||||||
|
icon.contentDescription = account.second
|
||||||
val name = view.findViewById<TextView>(R.id.account_name)
|
val name = view.findViewById<TextView>(R.id.account_name)
|
||||||
name.text = account.first
|
name.text = account.first
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
@ -73,13 +72,13 @@ class DetailContactFragment : Fragment() {
|
||||||
)[ContactViewModel::class.java]
|
)[ContactViewModel::class.java]
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
|
|
||||||
viewModel.sendSmsToEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.sendSmsToEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { number ->
|
it.consume { number ->
|
||||||
sendSms(number)
|
sendSms(number)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.startCallToEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.startCallToEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { address ->
|
it.consume { address ->
|
||||||
if (coreContext.core.callsNb > 0) {
|
if (coreContext.core.callsNb > 0) {
|
||||||
Log.i("[Contact] Starting dialer with pre-filled URI ${address.asStringUriOnly()}, is transfer? ${sharedViewModel.pendingCallTransfer}")
|
Log.i("[Contact] Starting dialer with pre-filled URI ${address.asStringUriOnly()}, is transfer? ${sharedViewModel.pendingCallTransfer}")
|
||||||
|
@ -97,7 +96,7 @@ class DetailContactFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.chatRoomCreatedEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.chatRoomCreatedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { chatRoom ->
|
it.consume { chatRoom ->
|
||||||
if (findNavController().currentDestination?.id == R.id.detailContactFragment) {
|
if (findNavController().currentDestination?.id == R.id.detailContactFragment) {
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
|
@ -123,7 +122,7 @@ class DetailContactFragment : Fragment() {
|
||||||
confirmContactRemoval()
|
confirmContactRemoval()
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.onErrorEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { messageResourceId ->
|
it.consume { messageResourceId ->
|
||||||
(activity as MainActivity).showSnackBar(messageResourceId)
|
(activity as MainActivity).showSnackBar(messageResourceId)
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
|
@ -131,7 +130,7 @@ class MasterContactsFragment : MasterFragment() {
|
||||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||||
binding.contactsList.addItemDecoration(headerItemDecoration)
|
binding.contactsList.addItemDecoration(headerItemDecoration)
|
||||||
|
|
||||||
adapter.selectedContactEvent.observe(viewLifecycleOwner, Observer {
|
adapter.selectedContactEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { contact ->
|
it.consume { contact ->
|
||||||
Log.i("[Contacts] Selected item in list changed: $contact")
|
Log.i("[Contacts] Selected item in list changed: $contact")
|
||||||
sharedViewModel.selectedContact.value = contact
|
sharedViewModel.selectedContact.value = contact
|
||||||
|
@ -147,7 +146,7 @@ class MasterContactsFragment : MasterFragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.contactsList.observe(viewLifecycleOwner, Observer {
|
listViewModel.contactsList.observe(viewLifecycleOwner, {
|
||||||
adapter.submitList(it)
|
adapter.submitList(it)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -158,11 +157,11 @@ class MasterContactsFragment : MasterFragment() {
|
||||||
listViewModel.sipContactsSelected.value = true
|
listViewModel.sipContactsSelected.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
listViewModel.sipContactsSelected.observe(viewLifecycleOwner, Observer {
|
listViewModel.sipContactsSelected.observe(viewLifecycleOwner, {
|
||||||
listViewModel.updateContactsList()
|
listViewModel.updateContactsList()
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.filter.observe(viewLifecycleOwner, Observer {
|
listViewModel.filter.observe(viewLifecycleOwner, {
|
||||||
listViewModel.updateContactsList()
|
listViewModel.updateContactsList()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
@ -120,14 +119,14 @@ class DialerFragment : Fragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.enteredUri.observe(viewLifecycleOwner, Observer {
|
viewModel.enteredUri.observe(viewLifecycleOwner, {
|
||||||
if (it == corePreferences.debugPopupCode) {
|
if (it == corePreferences.debugPopupCode) {
|
||||||
displayDebugPopup()
|
displayDebugPopup()
|
||||||
viewModel.enteredUri.value = ""
|
viewModel.enteredUri.value = ""
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.uploadFinishedEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.uploadFinishedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { url ->
|
it.consume { url ->
|
||||||
// To prevent being trigger when using the Send Logs button in About page
|
// To prevent being trigger when using the Send Logs button in About page
|
||||||
if (uploadLogsInitiatedByUs) {
|
if (uploadLogsInitiatedByUs) {
|
||||||
|
@ -144,7 +143,7 @@ class DialerFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.updateAvailableEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.updateAvailableEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { url ->
|
it.consume { url ->
|
||||||
displayNewVersionAvailableDialog(url)
|
displayNewVersionAvailableDialog(url)
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ package org.linphone.activities.main.fragments
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.viewmodels.DialogViewModel
|
import org.linphone.activities.main.viewmodels.DialogViewModel
|
||||||
|
@ -44,23 +43,23 @@ abstract class MasterFragment : Fragment() {
|
||||||
// List selection
|
// List selection
|
||||||
listSelectionViewModel = ViewModelProvider(this).get(ListTopBarViewModel::class.java)
|
listSelectionViewModel = ViewModelProvider(this).get(ListTopBarViewModel::class.java)
|
||||||
|
|
||||||
listSelectionViewModel.isEditionEnabled.observe(viewLifecycleOwner, Observer {
|
listSelectionViewModel.isEditionEnabled.observe(viewLifecycleOwner, {
|
||||||
if (!it) listSelectionViewModel.onUnSelectAll()
|
if (!it) listSelectionViewModel.onUnSelectAll()
|
||||||
})
|
})
|
||||||
|
|
||||||
listSelectionViewModel.selectAllEvent.observe(viewLifecycleOwner, Observer {
|
listSelectionViewModel.selectAllEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
listSelectionViewModel.onSelectAll(getItemCount() - 1)
|
listSelectionViewModel.onSelectAll(getItemCount() - 1)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
listSelectionViewModel.unSelectAllEvent.observe(viewLifecycleOwner, Observer {
|
listSelectionViewModel.unSelectAllEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
listSelectionViewModel.onUnSelectAll()
|
listSelectionViewModel.onUnSelectAll()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
listSelectionViewModel.deleteSelectionEvent.observe(viewLifecycleOwner, Observer {
|
listSelectionViewModel.deleteSelectionEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
val confirmationDialog = AppUtils.getStringWithPlural(dialogConfirmationMessageBeforeRemoval, listSelectionViewModel.selectedItems.value.orEmpty().size)
|
val confirmationDialog = AppUtils.getStringWithPlural(dialogConfirmationMessageBeforeRemoval, listSelectionViewModel.selectedItems.value.orEmpty().size)
|
||||||
val viewModel = DialogViewModel(confirmationDialog)
|
val viewModel = DialogViewModel(confirmationDialog)
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
import org.linphone.activities.main.viewmodels.SharedMainViewModel
|
||||||
|
@ -59,7 +58,7 @@ class StatusFragment : Fragment() {
|
||||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||||
} ?: throw Exception("Invalid Activity")
|
} ?: throw Exception("Invalid Activity")
|
||||||
|
|
||||||
sharedViewModel.proxyConfigRemoved.observe(viewLifecycleOwner, Observer {
|
sharedViewModel.proxyConfigRemoved.observe(viewLifecycleOwner, {
|
||||||
Log.i("[Status Fragment] A proxy config was removed, update default proxy state")
|
Log.i("[Status Fragment] A proxy config was removed, update default proxy state")
|
||||||
val defaultProxy = coreContext.core.defaultProxyConfig
|
val defaultProxy = coreContext.core.defaultProxyConfig
|
||||||
if (defaultProxy != null) {
|
if (defaultProxy != null) {
|
||||||
|
|
|
@ -25,7 +25,6 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.history.viewmodels.CallLogViewModel
|
import org.linphone.activities.main.history.viewmodels.CallLogViewModel
|
||||||
|
@ -69,7 +68,7 @@ class CallLogsListAdapter(val selectionViewModel: ListTopBarViewModel) : Lifecyc
|
||||||
|
|
||||||
// This is for item selection through ListTopBarFragment
|
// This is for item selection through ListTopBarFragment
|
||||||
selectionListViewModel = selectionViewModel
|
selectionListViewModel = selectionViewModel
|
||||||
selectionViewModel.isEditionEnabled.observe(this@ViewHolder, Observer {
|
selectionViewModel.isEditionEnabled.observe(this@ViewHolder, {
|
||||||
position = adapterPosition
|
position = adapterPosition
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
@ -98,7 +97,7 @@ class DetailCallLogFragment : Fragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.startCallEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.startCallEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { address ->
|
it.consume { address ->
|
||||||
if (coreContext.core.callsNb > 0) {
|
if (coreContext.core.callsNb > 0) {
|
||||||
Log.i("[History] Starting dialer with pre-filled URI ${address.asStringUriOnly()}, is transfer? ${sharedViewModel.pendingCallTransfer}")
|
Log.i("[History] Starting dialer with pre-filled URI ${address.asStringUriOnly()}, is transfer? ${sharedViewModel.pendingCallTransfer}")
|
||||||
|
@ -116,7 +115,7 @@ class DetailCallLogFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.chatRoomCreatedEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.chatRoomCreatedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { chatRoom ->
|
it.consume { chatRoom ->
|
||||||
if (findNavController().currentDestination?.id == R.id.detailCallLogFragment) {
|
if (findNavController().currentDestination?.id == R.id.detailCallLogFragment) {
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
|
@ -127,7 +126,7 @@ class DetailCallLogFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.onErrorEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.onErrorEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { messageResourceId ->
|
it.consume { messageResourceId ->
|
||||||
(activity as MainActivity).showSnackBar(messageResourceId)
|
(activity as MainActivity).showSnackBar(messageResourceId)
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
|
@ -128,19 +127,19 @@ class MasterCallLogsFragment : MasterFragment() {
|
||||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||||
binding.callLogsList.addItemDecoration(headerItemDecoration)
|
binding.callLogsList.addItemDecoration(headerItemDecoration)
|
||||||
|
|
||||||
listViewModel.callLogs.observe(viewLifecycleOwner, Observer { callLogs ->
|
listViewModel.callLogs.observe(viewLifecycleOwner, { callLogs ->
|
||||||
if (listViewModel.missedCallLogsSelected.value == false) {
|
if (listViewModel.missedCallLogsSelected.value == false) {
|
||||||
adapter.submitList(callLogs)
|
adapter.submitList(callLogs)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.missedCallLogs.observe(viewLifecycleOwner, Observer { callLogs ->
|
listViewModel.missedCallLogs.observe(viewLifecycleOwner, { callLogs ->
|
||||||
if (listViewModel.missedCallLogsSelected.value == true) {
|
if (listViewModel.missedCallLogsSelected.value == true) {
|
||||||
adapter.submitList(callLogs)
|
adapter.submitList(callLogs)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.missedCallLogsSelected.observe(viewLifecycleOwner, Observer {
|
listViewModel.missedCallLogsSelected.observe(viewLifecycleOwner, {
|
||||||
if (it) {
|
if (it) {
|
||||||
adapter.submitList(listViewModel.missedCallLogs.value)
|
adapter.submitList(listViewModel.missedCallLogs.value)
|
||||||
} else {
|
} else {
|
||||||
|
@ -148,20 +147,20 @@ class MasterCallLogsFragment : MasterFragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
listViewModel.contactsUpdatedEvent.observe(viewLifecycleOwner, Observer {
|
listViewModel.contactsUpdatedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
adapter.notifyDataSetChanged()
|
adapter.notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.selectedCallLogEvent.observe(viewLifecycleOwner, Observer {
|
adapter.selectedCallLogEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { callLog ->
|
it.consume { callLog ->
|
||||||
sharedViewModel.selectedCallLogGroup.value = callLog
|
sharedViewModel.selectedCallLogGroup.value = callLog
|
||||||
navigateToCallHistory()
|
navigateToCallHistory()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
adapter.startCallToEvent.observe(viewLifecycleOwner, Observer {
|
adapter.startCallToEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { address ->
|
it.consume { address ->
|
||||||
if (coreContext.core.callsNb > 0) {
|
if (coreContext.core.callsNb > 0) {
|
||||||
Log.i("[History] Starting dialer with pre-filled URI ${address.asStringUriOnly()}, is transfer? ${sharedViewModel.pendingCallTransfer}")
|
Log.i("[History] Starting dialer with pre-filled URI ${address.asStringUriOnly()}, is transfer? ${sharedViewModel.pendingCallTransfer}")
|
||||||
|
|
|
@ -26,7 +26,6 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.recordings.viewmodels.RecordingViewModel
|
import org.linphone.activities.main.recordings.viewmodels.RecordingViewModel
|
||||||
|
@ -72,7 +71,7 @@ class RecordingsListAdapter(val selectionViewModel: ListTopBarViewModel) : Lifec
|
||||||
|
|
||||||
// This is for item selection through ListTopBarFragment
|
// This is for item selection through ListTopBarFragment
|
||||||
selectionListViewModel = selectionViewModel
|
selectionListViewModel = selectionViewModel
|
||||||
selectionViewModel.isEditionEnabled.observe(this@ViewHolder, Observer {
|
selectionViewModel.isEditionEnabled.observe(this@ViewHolder, {
|
||||||
position = adapterPosition
|
position = adapterPosition
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -82,7 +81,7 @@ class RecordingsListAdapter(val selectionViewModel: ListTopBarViewModel) : Lifec
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
recording.isVideoRecordingPlayingEvent.observe(this@ViewHolder, Observer {
|
recording.isVideoRecordingPlayingEvent.observe(this@ViewHolder, {
|
||||||
it.consume { value ->
|
it.consume { value ->
|
||||||
if (value) {
|
if (value) {
|
||||||
recording.setTextureView(videoSurface)
|
recording.setTextureView(videoSurface)
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
|
@ -80,7 +79,7 @@ class RecordingsFragment : MasterFragment() {
|
||||||
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
val headerItemDecoration = RecyclerViewHeaderDecoration(adapter)
|
||||||
binding.recordingsList.addItemDecoration(headerItemDecoration)
|
binding.recordingsList.addItemDecoration(headerItemDecoration)
|
||||||
|
|
||||||
viewModel.recordingsList.observe(viewLifecycleOwner, Observer { recordings ->
|
viewModel.recordingsList.observe(viewLifecycleOwner, { recordings ->
|
||||||
adapter.submitList(recordings)
|
adapter.submitList(recordings)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -105,7 +104,7 @@ class RecordingsFragment : MasterFragment() {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
adapter.isVideoRecordingPlayingEvent.observe(viewLifecycleOwner, Observer {
|
adapter.isVideoRecordingPlayingEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { value ->
|
it.consume { value ->
|
||||||
viewModel.isVideoVisible.value = value
|
viewModel.isVideoVisible.value = value
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -64,7 +63,7 @@ class AccountSettingsFragment : Fragment() {
|
||||||
binding.setBackClickListener { findNavController().popBackStack() }
|
binding.setBackClickListener { findNavController().popBackStack() }
|
||||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||||
|
|
||||||
viewModel.linkPhoneNumberEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.linkPhoneNumberEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (findNavController().currentDestination?.id == R.id.accountSettingsFragment) {
|
if (findNavController().currentDestination?.id == R.id.accountSettingsFragment) {
|
||||||
val authInfo = viewModel.proxyConfig.findAuthInfo()
|
val authInfo = viewModel.proxyConfig.findAuthInfo()
|
||||||
|
@ -84,7 +83,7 @@ class AccountSettingsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.proxyConfigRemovedEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.proxyConfigRemovedEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
sharedViewModel.proxyConfigRemoved.value = true
|
sharedViewModel.proxyConfigRemoved.value = true
|
||||||
findNavController().navigateUp()
|
findNavController().navigateUp()
|
||||||
|
|
|
@ -30,7 +30,6 @@ import android.view.ViewGroup
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -64,7 +63,7 @@ class AdvancedSettingsFragment : Fragment() {
|
||||||
binding.setBackClickListener { findNavController().popBackStack() }
|
binding.setBackClickListener { findNavController().popBackStack() }
|
||||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||||
|
|
||||||
viewModel.setNightModeEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.setNightModeEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { value ->
|
it.consume { value ->
|
||||||
AppCompatDelegate.setDefaultNightMode(
|
AppCompatDelegate.setDefaultNightMode(
|
||||||
when (value) {
|
when (value) {
|
||||||
|
@ -78,7 +77,7 @@ class AdvancedSettingsFragment : Fragment() {
|
||||||
|
|
||||||
viewModel.backgroundModeEnabled.value = !DeviceUtils.isAppUserRestricted(requireContext())
|
viewModel.backgroundModeEnabled.value = !DeviceUtils.isAppUserRestricted(requireContext())
|
||||||
|
|
||||||
viewModel.goToBatterySettingsEvent.observe(viewLifecycleOwner, Observer { it.consume {
|
viewModel.goToBatterySettingsEvent.observe(viewLifecycleOwner, { it.consume {
|
||||||
try {
|
try {
|
||||||
val intent = Intent("android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS")
|
val intent = Intent("android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS")
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
|
@ -88,7 +87,7 @@ class AdvancedSettingsFragment : Fragment() {
|
||||||
} })
|
} })
|
||||||
|
|
||||||
viewModel.powerManagerSettingsVisibility.value = PowerManagerUtils.getDevicePowerManagerIntent(requireContext()) != null
|
viewModel.powerManagerSettingsVisibility.value = PowerManagerUtils.getDevicePowerManagerIntent(requireContext()) != null
|
||||||
viewModel.goToPowerManagerSettingsEvent.observe(viewLifecycleOwner, Observer { it.consume {
|
viewModel.goToPowerManagerSettingsEvent.observe(viewLifecycleOwner, { it.consume {
|
||||||
val intent = PowerManagerUtils.getDevicePowerManagerIntent(requireActivity())
|
val intent = PowerManagerUtils.getDevicePowerManagerIntent(requireActivity())
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
try {
|
try {
|
||||||
|
@ -99,7 +98,7 @@ class AdvancedSettingsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
} })
|
} })
|
||||||
|
|
||||||
viewModel.goToAndroidSettingsEvent.observe(viewLifecycleOwner, Observer { it.consume {
|
viewModel.goToAndroidSettingsEvent.observe(viewLifecycleOwner, { it.consume {
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
|
intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
|
||||||
intent.addCategory(Intent.CATEGORY_DEFAULT)
|
intent.addCategory(Intent.CATEGORY_DEFAULT)
|
||||||
|
|
|
@ -27,7 +27,6 @@ import android.view.ViewGroup
|
||||||
import androidx.databinding.DataBindingUtil
|
import androidx.databinding.DataBindingUtil
|
||||||
import androidx.databinding.ViewDataBinding
|
import androidx.databinding.ViewDataBinding
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.BR
|
import org.linphone.BR
|
||||||
|
@ -63,14 +62,14 @@ class AudioSettingsFragment : Fragment() {
|
||||||
binding.setBackClickListener { findNavController().popBackStack() }
|
binding.setBackClickListener { findNavController().popBackStack() }
|
||||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||||
|
|
||||||
viewModel.askAudioRecordPermissionForEchoCancellerCalibrationEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.askAudioRecordPermissionForEchoCancellerCalibrationEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
Log.i("[Audio Settings] Asking for RECORD_AUDIO permission for echo canceller calibration")
|
Log.i("[Audio Settings] Asking for RECORD_AUDIO permission for echo canceller calibration")
|
||||||
requestPermissions(arrayOf(android.Manifest.permission.RECORD_AUDIO), 1)
|
requestPermissions(arrayOf(android.Manifest.permission.RECORD_AUDIO), 1)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.askAudioRecordPermissionForEchoTesterEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.askAudioRecordPermissionForEchoTesterEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
Log.i("[Audio Settings] Asking for RECORD_AUDIO permission for echo tester")
|
Log.i("[Audio Settings] Asking for RECORD_AUDIO permission for echo tester")
|
||||||
requestPermissions(arrayOf(android.Manifest.permission.RECORD_AUDIO), 2)
|
requestPermissions(arrayOf(android.Manifest.permission.RECORD_AUDIO), 2)
|
||||||
|
|
|
@ -28,7 +28,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -61,7 +60,7 @@ class CallSettingsFragment : Fragment() {
|
||||||
binding.setBackClickListener { findNavController().popBackStack() }
|
binding.setBackClickListener { findNavController().popBackStack() }
|
||||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||||
|
|
||||||
viewModel.overlayEnabledEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.overlayEnabledEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
if (!Compatibility.canDrawOverlay(requireContext())) {
|
if (!Compatibility.canDrawOverlay(requireContext())) {
|
||||||
val intent = Intent("android.settings.action.MANAGE_OVERLAY_PERMISSION", Uri.parse("package:${requireContext().packageName}"))
|
val intent = Intent("android.settings.action.MANAGE_OVERLAY_PERMISSION", Uri.parse("package:${requireContext().packageName}"))
|
||||||
|
@ -70,7 +69,7 @@ class CallSettingsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.goToAndroidNotificationSettingsEvent.observe(viewLifecycleOwner, Observer { it.consume {
|
viewModel.goToAndroidNotificationSettingsEvent.observe(viewLifecycleOwner, { it.consume {
|
||||||
if (Build.VERSION.SDK_INT >= Version.API26_O_80) {
|
if (Build.VERSION.SDK_INT >= Version.API26_O_80) {
|
||||||
val i = Intent()
|
val i = Intent()
|
||||||
i.action = Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS
|
i.action = Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS
|
||||||
|
|
|
@ -27,7 +27,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
|
@ -60,7 +59,7 @@ class ChatSettingsFragment : Fragment() {
|
||||||
binding.setBackClickListener { findNavController().popBackStack() }
|
binding.setBackClickListener { findNavController().popBackStack() }
|
||||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||||
|
|
||||||
viewModel.launcherShortcutsEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.launcherShortcutsEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { newValue ->
|
it.consume { newValue ->
|
||||||
if (newValue) {
|
if (newValue) {
|
||||||
Compatibility.createShortcutsToChatRooms(requireContext())
|
Compatibility.createShortcutsToChatRooms(requireContext())
|
||||||
|
@ -70,7 +69,7 @@ class ChatSettingsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.goToAndroidNotificationSettingsEvent.observe(viewLifecycleOwner, Observer { it.consume {
|
viewModel.goToAndroidNotificationSettingsEvent.observe(viewLifecycleOwner, { it.consume {
|
||||||
if (Build.VERSION.SDK_INT >= Version.API26_O_80) {
|
if (Build.VERSION.SDK_INT >= Version.API26_O_80) {
|
||||||
val i = Intent()
|
val i = Intent()
|
||||||
i.action = Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS
|
i.action = Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS
|
||||||
|
|
|
@ -25,7 +25,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
@ -61,7 +60,7 @@ class ContactsSettingsFragment : Fragment() {
|
||||||
binding.setBackClickListener { findNavController().popBackStack() }
|
binding.setBackClickListener { findNavController().popBackStack() }
|
||||||
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
binding.back.visibility = if (resources.getBoolean(R.bool.isTablet)) View.INVISIBLE else View.VISIBLE
|
||||||
|
|
||||||
viewModel.launcherShortcutsEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.launcherShortcutsEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume { newValue ->
|
it.consume { newValue ->
|
||||||
if (newValue) {
|
if (newValue) {
|
||||||
Compatibility.createShortcutsToContacts(requireContext())
|
Compatibility.createShortcutsToContacts(requireContext())
|
||||||
|
@ -74,7 +73,7 @@ class ContactsSettingsFragment : Fragment() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.askWriteContactsPermissionForPresenceStorageEvent.observe(viewLifecycleOwner, Observer {
|
viewModel.askWriteContactsPermissionForPresenceStorageEvent.observe(viewLifecycleOwner, {
|
||||||
it.consume {
|
it.consume {
|
||||||
Log.i("[Contacts Settings] Asking for WRITE_CONTACTS permission to be able to store presence")
|
Log.i("[Contacts Settings] Asking for WRITE_CONTACTS permission to be able to store presence")
|
||||||
requestPermissions(arrayOf(android.Manifest.permission.WRITE_CONTACTS), 1)
|
requestPermissions(arrayOf(android.Manifest.permission.WRITE_CONTACTS), 1)
|
||||||
|
|
|
@ -24,7 +24,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import org.linphone.activities.main.*
|
import org.linphone.activities.main.*
|
||||||
|
@ -65,7 +64,7 @@ class SettingsFragment : Fragment() {
|
||||||
|
|
||||||
binding.setBackClickListener { findNavController().popBackStack() }
|
binding.setBackClickListener { findNavController().popBackStack() }
|
||||||
|
|
||||||
sharedViewModel.proxyConfigRemoved.observe(viewLifecycleOwner, Observer {
|
sharedViewModel.proxyConfigRemoved.observe(viewLifecycleOwner, {
|
||||||
Log.i("[Settings] Proxy config removed, update accounts list")
|
Log.i("[Settings] Proxy config removed, update accounts list")
|
||||||
viewModel.updateAccountsList()
|
viewModel.updateAccountsList()
|
||||||
})
|
})
|
||||||
|
|
|
@ -152,7 +152,7 @@ class VideoSettingsViewModel : GenericSettingsViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
videoSizeLabels.value = labels
|
videoSizeLabels.value = labels
|
||||||
videoSizeIndex.value = labels.indexOf(core.preferredVideoDefinition?.name)
|
videoSizeIndex.value = labels.indexOf(core.preferredVideoDefinition.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initVideoPresetList() {
|
private fun initVideoPresetList() {
|
||||||
|
|
|
@ -29,7 +29,6 @@ import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
|
@ -76,7 +75,7 @@ class SideMenuFragment : Fragment() {
|
||||||
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
ViewModelProvider(this).get(SharedMainViewModel::class.java)
|
||||||
} ?: throw Exception("Invalid Activity")
|
} ?: throw Exception("Invalid Activity")
|
||||||
|
|
||||||
sharedViewModel.proxyConfigRemoved.observe(viewLifecycleOwner, Observer {
|
sharedViewModel.proxyConfigRemoved.observe(viewLifecycleOwner, {
|
||||||
Log.i("[Side Menu] Proxy config removed, update accounts list")
|
Log.i("[Side Menu] Proxy config removed, update accounts list")
|
||||||
viewModel.updateAccountsList()
|
viewModel.updateAccountsList()
|
||||||
})
|
})
|
||||||
|
|
|
@ -20,23 +20,20 @@
|
||||||
package org.linphone.compatibility
|
package org.linphone.compatibility
|
||||||
|
|
||||||
import android.annotation.TargetApi
|
import android.annotation.TargetApi
|
||||||
import android.app.*
|
|
||||||
import android.app.usage.UsageStatsManager
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.pm.ShortcutManager
|
||||||
|
import org.linphone.core.ChatRoom
|
||||||
|
|
||||||
@TargetApi(28)
|
@TargetApi(30)
|
||||||
class Api28Compatibility {
|
class Api30Compatibility {
|
||||||
companion object {
|
companion object {
|
||||||
fun isAppUserRestricted(context: Context): Boolean {
|
fun removeChatRoomShortcut(context: Context, chatRoom: ChatRoom) {
|
||||||
val activityManager =
|
val peerAddress = chatRoom.peerAddress.asStringUriOnly()
|
||||||
context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
|
val localAddress = chatRoom.localAddress.asStringUriOnly()
|
||||||
return activityManager.isBackgroundRestricted
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getAppStandbyBucket(context: Context): Int {
|
val shortcutManager = context.getSystemService(ShortcutManager::class.java)
|
||||||
val usageStatsManager =
|
val shortcutsToRemoveList = arrayListOf("$localAddress#$peerAddress")
|
||||||
context.getSystemService(Context.USAGE_STATS_SERVICE) as UsageStatsManager
|
shortcutManager.removeLongLivedShortcuts(shortcutsToRemoveList)
|
||||||
return usageStatsManager.appStandbyBucket
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -139,7 +139,7 @@ class Compatibility {
|
||||||
|
|
||||||
fun removeChatRoomShortcut(context: Context, chatRoom: ChatRoom) {
|
fun removeChatRoomShortcut(context: Context, chatRoom: ChatRoom) {
|
||||||
if (Version.sdkAboveOrEqual(Version.API30_ANDROID_11)) {
|
if (Version.sdkAboveOrEqual(Version.API30_ANDROID_11)) {
|
||||||
// TODO Use removeLongLivedShortcuts()
|
Api30Compatibility.removeChatRoomShortcut(context, chatRoom)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ class PhoneNumberUtils {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission", "HardwareIds")
|
||||||
fun getDevicePhoneNumber(context: Context): String? {
|
fun getDevicePhoneNumber(context: Context): String? {
|
||||||
if (PermissionHelper.get().hasReadPhoneState()) {
|
if (PermissionHelper.get().hasReadPhoneState()) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -105,17 +105,12 @@
|
||||||
android:layout_below="@id/select_country_label"/>
|
android:layout_below="@id/select_country_label"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:orientation="vertical"
|
android:orientation="horizontal"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/select_country">
|
android:layout_below="@id/select_country">
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputLayout
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
android:layout_width="100dp"
|
android:layout_width="100dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -154,8 +149,6 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -212,7 +205,7 @@
|
||||||
<TextView
|
<TextView
|
||||||
android:onClick="@{forgotPasswordClickListener}"
|
android:onClick="@{forgotPasswordClickListener}"
|
||||||
android:textColor="?attr/accentColor"
|
android:textColor="?attr/accentColor"
|
||||||
android:textSize="8sp"
|
android:textSize="12sp"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="right"
|
android:layout_gravity="right"
|
||||||
|
|
|
@ -119,11 +119,6 @@
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<RadioGroup
|
<RadioGroup
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -168,8 +163,6 @@
|
||||||
|
|
||||||
</RadioGroup>
|
</RadioGroup>
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:onClick="@{() -> viewModel.createProxyConfig()}"
|
android:onClick="@{() -> viewModel.createProxyConfig()}"
|
||||||
android:enabled="@{viewModel.loginEnabled, default=false}"
|
android:enabled="@{viewModel.loginEnabled, default=false}"
|
||||||
|
|
|
@ -9,16 +9,12 @@
|
||||||
type="org.linphone.activities.call.viewmodels.StatisticsListViewModel" />
|
type="org.linphone.activities.call.viewmodels.StatisticsListViewModel" />
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
<RelativeLayout
|
<ScrollView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?attr/backgroundColor"
|
android:background="?attr/backgroundColor"
|
||||||
android:clickable="true">
|
android:clickable="true">
|
||||||
|
|
||||||
<ScrollView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -29,6 +25,4 @@
|
||||||
|
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
</layout>
|
</layout>
|
|
@ -48,6 +48,7 @@
|
||||||
android:layout_width="20dp"
|
android:layout_width="20dp"
|
||||||
android:layout_height="20dp"
|
android:layout_height="20dp"
|
||||||
android:src="@drawable/recording_play_pause"
|
android:src="@drawable/recording_play_pause"
|
||||||
|
android:contentDescription="@string/content_description_chat_message_video_attachment"
|
||||||
android:layout_centerInParent="true"/>
|
android:layout_centerInParent="true"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
|
@ -43,13 +43,14 @@
|
||||||
android:layout_width="20dp"
|
android:layout_width="20dp"
|
||||||
android:layout_height="20dp"
|
android:layout_height="20dp"
|
||||||
android:src="@drawable/recording_play_pause"
|
android:src="@drawable/recording_play_pause"
|
||||||
|
android:contentDescription="@string/content_description_chat_message_video_attachment"
|
||||||
android:layout_centerInParent="true"/>
|
android:layout_centerInParent="true"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:onClick="@{() -> data.openFile()}"
|
android:onClick="@{() -> data.openFile()}"
|
||||||
android:onLongClick="@{longClickListener}"
|
android:onLongClick="@{longClickListener}"
|
||||||
android:textColor="?attr/secondaryTextColor"
|
android:textColor="?attr/secondaryTextColor"
|
||||||
android:textSize="11.7sp"
|
android:textSize="12sp"
|
||||||
android:fontFamily="sans-serif"
|
android:fontFamily="sans-serif"
|
||||||
android:textStyle="normal"
|
android:textStyle="normal"
|
||||||
android:text="@{data.content.name}"
|
android:text="@{data.content.name}"
|
||||||
|
|
|
@ -161,7 +161,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginRight="5dp"
|
android:layout_marginRight="5dp"
|
||||||
android:textColor="@color/primary_color"
|
android:textColor="@color/primary_color"
|
||||||
android:textSize="10sp"
|
android:textSize="12sp"
|
||||||
android:fontFamily="sans-serif"
|
android:fontFamily="sans-serif"
|
||||||
android:textStyle="normal"
|
android:textStyle="normal"
|
||||||
android:lineSpacingExtra="3.3sp" />
|
android:lineSpacingExtra="3.3sp" />
|
||||||
|
|
|
@ -62,7 +62,7 @@
|
||||||
android:contentDescription="@string/content_description_e2e_encryption_disabled"
|
android:contentDescription="@string/content_description_e2e_encryption_disabled"
|
||||||
android:src="@drawable/security_toogle_icon_grey"/>
|
android:src="@drawable/security_toogle_icon_grey"/>
|
||||||
|
|
||||||
<Switch
|
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||||
android:checked="@={viewModel.isEncrypted}"
|
android:checked="@={viewModel.isEncrypted}"
|
||||||
android:layout_width="50dp"
|
android:layout_width="50dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
android:padding="10dp"
|
android:padding="10dp"
|
||||||
android:src="@drawable/avatar"
|
android:src="@drawable/avatar"
|
||||||
|
android:contentDescription="@string/content_description_change_own_picture"
|
||||||
glideAvatarFallback="@{viewModel.defaultAccountAvatar}" />
|
glideAvatarFallback="@{viewModel.defaultAccountAvatar}" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
<item quantity="one">%d day</item>
|
<item quantity="one">%d day</item>
|
||||||
<item quantity="other">%d days</item>
|
<item quantity="other">%d days</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="share_uploaded_logs_link">Share logs link using...</string>
|
<string name="share_uploaded_logs_link">Share logs link using…</string>
|
||||||
|
|
||||||
<!-- Errors -->
|
<!-- Errors -->
|
||||||
<string name="invalid_email">Invalid email</string>
|
<string name="invalid_email">Invalid email</string>
|
||||||
|
@ -640,6 +640,7 @@
|
||||||
<string name="content_description_cancel_contact_edit">Discard changes</string>
|
<string name="content_description_cancel_contact_edit">Discard changes</string>
|
||||||
<string name="content_description_confirm_contact_edit">Save changes</string>
|
<string name="content_description_confirm_contact_edit">Save changes</string>
|
||||||
<string name="content_description_change_contact_picture">Change contact picture</string>
|
<string name="content_description_change_contact_picture">Change contact picture</string>
|
||||||
|
<string name="content_description_change_own_picture">Change own picture</string>
|
||||||
<string name="content_description_call_direction">Call direction</string>
|
<string name="content_description_call_direction">Call direction</string>
|
||||||
<string name="content_description_show_call_details">Go to call details</string>
|
<string name="content_description_show_call_details">Go to call details</string>
|
||||||
<string name="content_description_exit_edition_mode">Quit edition mode</string>
|
<string name="content_description_exit_edition_mode">Quit edition mode</string>
|
||||||
|
@ -687,4 +688,5 @@
|
||||||
<string name="content_description_call_secured">Call is secured</string>
|
<string name="content_description_call_secured">Call is secured</string>
|
||||||
<string name="content_description_call_security_pending">Call security is pending</string>
|
<string name="content_description_call_security_pending">Call security is pending</string>
|
||||||
<string name="content_description_toggle_call_stats">Show or hide call statistics</string>
|
<string name="content_description_toggle_call_stats">Show or hide call statistics</string>
|
||||||
|
<string name="content_description_chat_message_video_attachment">Video attachment</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -98,11 +98,6 @@
|
||||||
<item name="android:textSize">18sp</item>
|
<item name="android:textSize">18sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="contact_edit_form_font" parent="@android:style/TextAppearance.Medium">
|
|
||||||
<item name="android:textColor">?attr/primaryTextColor</item>
|
|
||||||
<item name="android:textSize">18sp</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="big_contact_name_font" parent="@android:style/TextAppearance.Medium">
|
<style name="big_contact_name_font" parent="@android:style/TextAppearance.Medium">
|
||||||
<item name="android:textColor">?attr/primaryTextColor</item>
|
<item name="android:textColor">?attr/primaryTextColor</item>
|
||||||
<item name="android:textSize">30sp</item>
|
<item name="android:textSize">30sp</item>
|
||||||
|
|
Loading…
Reference in a new issue