From 3c0640ce11ceffc651dd4512da065c532737e436 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 3 Oct 2023 12:11:15 +0200 Subject: [PATCH] Updated remote recording to show toast --- .../java/org/linphone/ui/call/CallActivity.kt | 23 +++++++++------- .../ui/call/fragment/ActiveCallFragment.kt | 21 +++++++++++++++ .../ui/call/viewmodel/CurrentCallViewModel.kt | 26 +++++-------------- .../main/res/layout/call_active_fragment.xml | 20 -------------- 4 files changed, 41 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/call/CallActivity.kt b/app/src/main/java/org/linphone/ui/call/CallActivity.kt index 61242f8a4..3f373fa93 100644 --- a/app/src/main/java/org/linphone/ui/call/CallActivity.kt +++ b/app/src/main/java/org/linphone/ui/call/CallActivity.kt @@ -60,8 +60,6 @@ import org.linphone.utils.slideInToastFromTopForDuration class CallActivity : AppCompatActivity() { companion object { private const val TAG = "[Call Activity]" - - private const val PERSISTENT_TOAST_TAG = "PERSISTENT" } private lateinit var binding: CallActivityBinding @@ -112,13 +110,15 @@ class CallActivity : AppCompatActivity() { callViewModel.showLowWifiSignalEvent.observe(this) { it.consume { show -> + val tag = "LOW_WIFI_SIGNAL" if (show) { showPersistentRedToast( getString(R.string.toast_alert_low_wifi_signal), - R.drawable.wifi_low + R.drawable.wifi_low, + tag ) } else { - removePersistentRedToasts() + removePersistentRedToast(tag) showGreenToast( getString(R.string.toast_alert_low_wifi_signal_cleared), R.drawable.wifi_high, @@ -130,13 +130,15 @@ class CallActivity : AppCompatActivity() { callViewModel.showLowCellularSignalEvent.observe(this) { it.consume { show -> + val tag = "LOW_CELLULAR_SIGNAL" if (show) { showPersistentRedToast( getString(R.string.toast_alert_low_cellular_signal), - R.drawable.cell_signal_low + R.drawable.cell_signal_low, + tag ) } else { - removePersistentRedToasts() + removePersistentRedToast(tag) showGreenToast( getString(R.string.toast_alert_low_cellular_signal_cleared), R.drawable.cell_signal_full, @@ -312,13 +314,14 @@ class CallActivity : AppCompatActivity() { ) } - private fun showPersistentRedToast( + fun showPersistentRedToast( message: String, @DrawableRes icon: Int, + tag: String, doNotTint: Boolean = false ) { val redToast = AppUtils.getRedToast(this, binding.toastsArea, message, icon, doNotTint) - redToast.root.tag = PERSISTENT_TOAST_TAG + redToast.root.tag = tag binding.toastsArea.addView(redToast.root) redToast.root.slideInToastFromTop( @@ -327,9 +330,9 @@ class CallActivity : AppCompatActivity() { ) } - private fun removePersistentRedToasts() { + fun removePersistentRedToast(tag: String) { for (child in binding.toastsArea.children) { - if (child.tag == PERSISTENT_TOAST_TAG) { + if (child.tag == tag) { binding.toastsArea.removeView(child) } } diff --git a/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt index 4b73b1376..42417be67 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/ActiveCallFragment.kt @@ -231,6 +231,27 @@ class ActiveCallFragment : GenericCallFragment() { } } + callViewModel.isRemoteRecordingEvent.observe(viewLifecycleOwner) { + it.consume { pair -> + val isRemoteRecording = pair.first + val displayName = pair.second + val toastTag = "REMOTE_RECORDING" + + if (isRemoteRecording) { + Log.i("$TAG Showing [$displayName] is recording toast") + val message = getString(R.string.call_remote_is_recording, displayName) + (requireActivity() as CallActivity).showPersistentRedToast( + message, + R.drawable.record_fill, + toastTag + ) + } else { + Log.i("$TAG Removing [$displayName] is recording toast") + (requireActivity() as CallActivity).removePersistentRedToast(toastTag) + } + } + } + actionsBottomSheetBehavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() { override fun onStateChanged(bottomSheet: View, newState: Int) { when (newState) { diff --git a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt index 84957191e..281a39cd7 100644 --- a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt @@ -74,10 +74,6 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { val isRecording = MutableLiveData() - val isRemoteRecording = MutableLiveData() - - val remoteRecordingLabel = MutableLiveData() - val canBePaused = MutableLiveData() val isPaused = MutableLiveData() @@ -102,6 +98,10 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { MutableLiveData() } + val isRemoteRecordingEvent: MutableLiveData>> by lazy { + MutableLiveData>>() + } + val goToInitiateBlindTransferEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -171,15 +171,7 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { override fun onRemoteRecording(call: Call, recording: Boolean) { Log.i("$TAG Remote recording changed: $recording") - isRemoteRecording.postValue(recording) - if (recording) { - remoteRecordingLabel.postValue( - AppUtils.getFormattedString( - R.string.call_remote_is_recording, - displayedName.value.orEmpty() - ) - ) - } + isRemoteRecordingEvent.postValue(Event(Pair(recording, displayedName.value.orEmpty()))) } @WorkerThread @@ -747,12 +739,8 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { } isRecording.postValue(call.params.isRecording) - isRemoteRecording.postValue(call.remoteParams?.isRecording) - remoteRecordingLabel.postValue( - AppUtils.getFormattedString( - R.string.call_remote_is_recording, - displayedName.value.orEmpty() - ) + isRemoteRecordingEvent.postValue( + Event(Pair(call.remoteParams?.isRecording ?: false, displayedName.value.orEmpty())) ) callDuration.postValue(call.duration) diff --git a/app/src/main/res/layout/call_active_fragment.xml b/app/src/main/res/layout/call_active_fragment.xml index 16dead8fb..8fa423e55 100644 --- a/app/src/main/res/layout/call_active_fragment.xml +++ b/app/src/main/res/layout/call_active_fragment.xml @@ -224,26 +224,6 @@ app:layout_constraintHeight_max="200dp" app:layout_constraintWidth_max="200dp" /> - -