Added same animation for audio routes menu in waiting room than while in call (+ same animation for conference layouts)
This commit is contained in:
parent
ee2fd51103
commit
a56edd5f4f
3 changed files with 46 additions and 11 deletions
|
@ -20,17 +20,17 @@
|
|||
package org.linphone.activities.main.conference.viewmodels
|
||||
|
||||
import android.Manifest
|
||||
import android.animation.ValueAnimator
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.viewmodels.MessageNotifierViewModel
|
||||
import org.linphone.activities.voip.ConferenceDisplayMode
|
||||
import org.linphone.core.*
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.utils.AudioRouteUtils
|
||||
import org.linphone.utils.*
|
||||
import org.linphone.utils.Event
|
||||
import org.linphone.utils.LinphoneUtils
|
||||
import org.linphone.utils.PermissionHelper
|
||||
|
||||
class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() {
|
||||
val subject = MutableLiveData<String>()
|
||||
|
@ -81,6 +81,28 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() {
|
|||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
||||
val audioRoutesMenuTranslateY = MutableLiveData<Float>()
|
||||
private val audioRoutesMenuAnimator: ValueAnimator by lazy {
|
||||
ValueAnimator.ofFloat(AppUtils.getDimension(R.dimen.voip_audio_routes_menu_translate_y), 0f).apply {
|
||||
addUpdateListener {
|
||||
val value = it.animatedValue as Float
|
||||
audioRoutesMenuTranslateY.value = value
|
||||
}
|
||||
duration = if (corePreferences.enableAnimations) 500 else 0
|
||||
}
|
||||
}
|
||||
|
||||
val conferenceLayoutMenuTranslateY = MutableLiveData<Float>()
|
||||
private val conferenceLayoutMenuAnimator: ValueAnimator by lazy {
|
||||
ValueAnimator.ofFloat(AppUtils.getDimension(R.dimen.voip_audio_routes_menu_translate_y), 0f).apply {
|
||||
addUpdateListener {
|
||||
val value = it.animatedValue as Float
|
||||
conferenceLayoutMenuTranslateY.value = value
|
||||
}
|
||||
duration = if (corePreferences.enableAnimations) 500 else 0
|
||||
}
|
||||
}
|
||||
|
||||
private val callParams: CallParams = coreContext.core.createCallParams(null)!!
|
||||
|
||||
private val listener: CoreListenerStub = object : CoreListenerStub() {
|
||||
|
@ -132,6 +154,9 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() {
|
|||
val core = coreContext.core
|
||||
core.addListener(listener)
|
||||
|
||||
audioRoutesMenuTranslateY.value = AppUtils.getDimension(R.dimen.voip_audio_routes_menu_translate_y)
|
||||
conferenceLayoutMenuTranslateY.value = AppUtils.getDimension(R.dimen.voip_audio_routes_menu_translate_y)
|
||||
|
||||
val reachable = core.isNetworkReachable
|
||||
networkReachable.value = reachable
|
||||
if (!reachable) {
|
||||
|
@ -217,6 +242,11 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() {
|
|||
|
||||
fun toggleAudioRoutesMenu() {
|
||||
audioRoutesSelected.value = audioRoutesSelected.value != true
|
||||
if (audioRoutesSelected.value == true) {
|
||||
audioRoutesMenuAnimator.start()
|
||||
} else {
|
||||
audioRoutesMenuAnimator.reverse()
|
||||
}
|
||||
}
|
||||
|
||||
fun setBluetoothAudioRoute() {
|
||||
|
@ -254,6 +284,11 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() {
|
|||
|
||||
fun toggleLayoutMenu() {
|
||||
layoutMenuSelected.value = layoutMenuSelected.value != true
|
||||
if (layoutMenuSelected.value == true) {
|
||||
conferenceLayoutMenuAnimator.start()
|
||||
} else {
|
||||
conferenceLayoutMenuAnimator.reverse()
|
||||
}
|
||||
}
|
||||
|
||||
fun setMosaicLayout() {
|
||||
|
|
|
@ -133,8 +133,8 @@
|
|||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:background="@drawable/shape_audio_routes_background"
|
||||
android:orientation="vertical"
|
||||
android:visibility="@{viewModel.audioRoutesSelected ? View.VISIBLE : View.GONE, default=gone}">
|
||||
android:translationY="@{viewModel.audioRoutesMenuTranslateY, default=@dimen/voip_audio_routes_menu_translate_y}"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/voip_call_button_size"
|
||||
|
@ -176,8 +176,8 @@
|
|||
android:layout_marginEnd="15dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:background="@drawable/shape_audio_routes_background"
|
||||
android:orientation="vertical"
|
||||
android:visibility="@{viewModel.layoutMenuSelected ? View.VISIBLE : View.GONE, default=gone}">
|
||||
android:translationY="@{viewModel.conferenceLayoutMenuTranslateY, default=@dimen/voip_audio_routes_menu_translate_y}"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/voip_call_button_size"
|
||||
|
|
|
@ -137,8 +137,8 @@
|
|||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:background="@drawable/shape_audio_routes_background"
|
||||
android:orientation="vertical"
|
||||
android:visibility="@{viewModel.audioRoutesSelected ? View.VISIBLE : View.GONE, default=gone}">
|
||||
android:translationY="@{viewModel.audioRoutesMenuTranslateY, default=@dimen/voip_audio_routes_menu_translate_y}"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/voip_call_button_size"
|
||||
|
@ -180,8 +180,8 @@
|
|||
android:layout_marginEnd="15dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:background="@drawable/shape_audio_routes_background"
|
||||
android:orientation="vertical"
|
||||
android:visibility="@{viewModel.layoutMenuSelected ? View.VISIBLE : View.GONE, default=gone}">
|
||||
android:translationY="@{viewModel.conferenceLayoutMenuTranslateY, default=@dimen/voip_audio_routes_menu_translate_y}"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/voip_call_button_size"
|
||||
|
|
Loading…
Reference in a new issue