Code improvements

This commit is contained in:
Sylvain Berfini 2020-08-21 11:29:03 +02:00
parent d611d20cfd
commit c582b18b28
61 changed files with 222 additions and 289 deletions

View file

@ -57,7 +57,7 @@ android {
buildToolsVersion '30.0.2'
defaultConfig {
minSdkVersion 23
targetSdkVersion 29
targetSdkVersion 30
versionCode 4999
versionName "${project.version}"
applicationId getPackageName()

View file

@ -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)

View file

@ -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()
}

View file

@ -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)

View file

@ -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()

View file

@ -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)

View file

@ -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()

View file

@ -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) {

View file

@ -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 -> {

View file

@ -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()

View file

@ -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) {

View file

@ -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)
})
}

View file

@ -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

View file

@ -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()

View file

@ -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)
}

View file

@ -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)

View file

@ -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)
}

View file

@ -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

View file

@ -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
})

View file

@ -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

View file

@ -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
})

View file

@ -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) {

View file

@ -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)
}

View file

@ -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)

View file

@ -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)
}

View file

@ -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)
})

View file

@ -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)
}

View file

@ -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
})

View file

@ -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

View file

@ -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)
}

View file

@ -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()
})

View file

@ -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)
}

View file

@ -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)

View file

@ -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) {

View file

@ -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
})

View file

@ -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)
}

View file

@ -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}")

View file

@ -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)

View file

@ -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
}

View file

@ -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()

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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()
})

View file

@ -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() {

View file

@ -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()
})

View file

@ -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)
}
}
}

View file

@ -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)
}
}

View file

@ -39,7 +39,7 @@ class PhoneNumberUtils {
return null
}
@SuppressLint("MissingPermission")
@SuppressLint("MissingPermission", "HardwareIds")
fun getDevicePhoneNumber(context: Context): String? {
if (PermissionHelper.get().hasReadPhoneState()) {
try {

View file

@ -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"

View file

@ -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()}"

View file

@ -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>

View file

@ -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

View file

@ -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}"

View file

@ -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" />

View file

@ -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"

View file

@ -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

View file

@ -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>

View file

@ -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>