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