diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 02c61ce59..4f139ee78 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -149,7 +149,7 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C ) { Log.i("$TAG Call [${call.remoteAddress.asStringUriOnly()}] state changed [$state]") when (state) { - Call.State.OutgoingProgress -> { + Call.State.OutgoingInit -> { val conferenceInfo = core.findConferenceInformationFromUri(call.remoteAddress) // Do not show outgoing call view for conference calls, wait for connected state if (conferenceInfo == null) { @@ -163,8 +163,11 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C } } Call.State.Connected -> { - postOnMainThread { - showCallActivity() + val conferenceInfo = core.findConferenceInformationFromUri(call.remoteAddress) + if (conferenceInfo != null) { + postOnMainThread { + showCallActivity() + } } } else -> { @@ -415,7 +418,7 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C @WorkerThread fun showSwitchCameraButton(): Boolean { - return core.videoDevicesList.size > 2 // Count StaticImage camera + return core.isVideoCaptureEnabled && core.videoDevicesList.size > 2 // Count StaticImage camera } @WorkerThread 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 9292934fb..441649c3e 100644 --- a/app/src/main/java/org/linphone/ui/call/CallActivity.kt +++ b/app/src/main/java/org/linphone/ui/call/CallActivity.kt @@ -91,16 +91,16 @@ class CallActivity : GenericActivity() { ViewModelProvider(this)[SharedCallViewModel::class.java] } - callsViewModel = run { - ViewModelProvider(this)[CallsViewModel::class.java] - } - binding.callsViewModel = callsViewModel - callViewModel = run { ViewModelProvider(this)[CurrentCallViewModel::class.java] } binding.callViewModel = callViewModel + callsViewModel = run { + ViewModelProvider(this)[CallsViewModel::class.java] + } + binding.callsViewModel = callsViewModel + callViewModel.showAudioDevicesListEvent.observe(this) { it.consume { devices -> showAudioRoutesMenu(devices) 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 f0ee0b31d..e10050bbb 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 @@ -99,6 +99,8 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { val isMediaEncrypted = MutableLiveData() + val hideVideo = MutableLiveData() + val incomingCallTitle: MutableLiveData by lazy { MutableLiveData() } @@ -372,12 +374,12 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { } init { - isVideoEnabled.value = false - isMicrophoneMuted.value = false - fullScreenMode.value = false - coreContext.postOnCoreThread { core -> core.addListener(coreListener) + + hideVideo.postValue(!core.isVideoEnabled) + showSwitchCamera.postValue(coreContext.showSwitchCameraButton()) + val call = core.currentCall ?: core.calls.firstOrNull() if (call != null) { @@ -386,10 +388,12 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { } else { Log.e("$TAG Failed to find call!") } - - showSwitchCamera.postValue(coreContext.showSwitchCameraButton()) } + isVideoEnabled.value = false + isMicrophoneMuted.value = false + fullScreenMode.value = false + numpadModel = NumpadModel( { digit -> // onDigitClicked appendDigitToSearchBarEvent.value = Event(digit) @@ -771,6 +775,7 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() { @WorkerThread private fun configureCall(call: Call) { + Log.i("$TAG Configuring call [$call] as current") contact.value?.destroy() currentCall = call diff --git a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt index a3c8331b8..543e4dcb0 100644 --- a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt @@ -54,6 +54,8 @@ class MeetingWaitingRoomViewModel @UiThread constructor() : ViewModel() { val isSwitchCameraAvailable = MutableLiveData() + val hideVideo = MutableLiveData() + val conferenceInfoFoundEvent = MutableLiveData>() val conferenceCreatedEvent: MutableLiveData> by lazy { @@ -78,6 +80,8 @@ class MeetingWaitingRoomViewModel @UiThread constructor() : ViewModel() { init { coreContext.postOnCoreThread { core -> core.addListener(coreListener) + + hideVideo.postValue(!core.isVideoEnabled) } } diff --git a/app/src/main/res/layout-land/bottom_nav_bar.xml b/app/src/main/res/layout-land/bottom_nav_bar.xml index b695c73da..dd8ef1063 100644 --- a/app/src/main/res/layout-land/bottom_nav_bar.xml +++ b/app/src/main/res/layout-land/bottom_nav_bar.xml @@ -91,7 +91,7 @@ android:textColor="?attr/color_main2_000" android:textSize="13sp" android:paddingBottom="2dp" - android:visibility="@{viewModel.unreadMessages > 0 ? View.VISIBLE : View.GONE}" + android:visibility="@{viewModel.unreadMessages > 0 && !viewModel.hideConversations ? View.VISIBLE : View.GONE}" app:layout_constraintTop_toTopOf="@id/conversations" app:layout_constraintEnd_toEndOf="@id/conversations"/> diff --git a/app/src/main/res/layout/bottom_nav_bar.xml b/app/src/main/res/layout/bottom_nav_bar.xml index 989df5588..bbb2c452a 100644 --- a/app/src/main/res/layout/bottom_nav_bar.xml +++ b/app/src/main/res/layout/bottom_nav_bar.xml @@ -106,7 +106,7 @@ android:textColor="?attr/color_main2_000" android:textSize="13sp" android:paddingBottom="2dp" - android:visibility="@{viewModel.unreadMessages > 0 ? View.VISIBLE : View.GONE}" + android:visibility="@{viewModel.unreadMessages > 0 && !viewModel.hideConversations ? View.VISIBLE : View.GONE}" app:layout_constraintTop_toTopOf="@id/conversations" app:layout_constraintStart_toStartOf="@id/conversations" app:layout_constraintEnd_toEndOf="@id/conversations"/> diff --git a/app/src/main/res/layout/call_common_actions.xml b/app/src/main/res/layout/call_common_actions.xml index 5600b4db7..636199873 100644 --- a/app/src/main/res/layout/call_common_actions.xml +++ b/app/src/main/res/layout/call_common_actions.xml @@ -55,6 +55,7 @@ android:layout_marginEnd="16dp" android:padding="@dimen/call_button_icon_padding" android:enabled="@{!viewModel.isPaused && !viewModel.isPausedByRemote}" + android:visibility="@{viewModel.hideVideo ? View.GONE : View.VISIBLE}" android:src="@{viewModel.isVideoEnabled ? @drawable/video_camera : @drawable/video_camera_slash, default=@drawable/video_camera}" android:background="@drawable/in_call_button_background_red" app:tint="@color/in_call_button_tint_color" diff --git a/app/src/main/res/layout/call_ended_actions.xml b/app/src/main/res/layout/call_ended_actions.xml index d0a0a8246..f7ee57e43 100644 --- a/app/src/main/res/layout/call_ended_actions.xml +++ b/app/src/main/res/layout/call_ended_actions.xml @@ -4,6 +4,9 @@ + + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:bind="http://schemas.android.com/tools"> @@ -178,6 +179,7 @@