Fixed call related layout issues + added setting for early media

This commit is contained in:
Sylvain Berfini 2020-08-25 10:32:00 +02:00
parent c657156ee8
commit eadb55e9c4
9 changed files with 142 additions and 73 deletions

View file

@ -23,6 +23,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.core.*
class IncomingCallViewModelFactory(private val call: Call) :
@ -43,8 +44,10 @@ class IncomingCallViewModel(call: Call) : CallViewModel(call) {
init {
screenLocked.value = false
inviteWithVideo.value = call.currentParams.videoEnabled()
earlyMediaVideoEnabled.value = call.state == Call.State.IncomingEarlyMedia && call.currentParams.videoEnabled()
inviteWithVideo.value = call.remoteParams?.videoEnabled()
earlyMediaVideoEnabled.value = corePreferences.acceptEarlyMedia &&
call.state == Call.State.IncomingEarlyMedia &&
call.currentParams.videoEnabled()
}
fun answer(doAction: Boolean) {

View file

@ -125,6 +125,13 @@ class CallSettingsViewModel : GenericSettingsViewModel() {
}
val voiceMailUri = MutableLiveData<String>()
val acceptEarlyMediaListener = object : SettingListenerStub() {
override fun onBoolValueChanged(newValue: Boolean) {
prefs.acceptEarlyMedia = newValue
}
}
val acceptEarlyMedia = MutableLiveData<Boolean>()
val goToAndroidNotificationSettingsListener = object : SettingListenerStub() {
override fun onClicked() {
goToAndroidNotificationSettingsEvent.value = Event(true)
@ -147,6 +154,7 @@ class CallSettingsViewModel : GenericSettingsViewModel() {
autoAnswerDelay.value = prefs.autoAnswerDelay
incomingTimeout.value = core.incTimeout
voiceMailUri.value = prefs.voiceMailUri
acceptEarlyMedia.value = prefs.acceptEarlyMedia
}
private fun initEncryptionList() {

View file

@ -157,6 +157,12 @@ class CorePreferences constructor(private val context: Context) {
config.setBool("app", "incoming_call_vibration", value)
}
var acceptEarlyMedia: Boolean
get() = config.getBool("sip", "incoming_calls_early_media", false)
set(value) {
config.setBool("sip", "incoming_calls_early_media", value)
}
var autoAnswerEnabled: Boolean
get() = config.getBool("app", "auto_answer", false)
set(value) {

View file

@ -42,14 +42,15 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="5dp" />
android:paddingTop="10dp" />
<Chronometer
android:id="@+id/active_call_timer"
style="@style/sip_uri_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
android:layout_gravity="center"
android:paddingBottom="10dp" />
</LinearLayout>

View file

@ -42,14 +42,15 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="5dp" />
android:paddingTop="10dp" />
<Chronometer
android:id="@+id/active_call_timer"
style="@style/sip_uri_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
android:layout_gravity="center"
android:paddingBottom="10dp" />
</LinearLayout>

View file

@ -39,50 +39,85 @@
</RelativeLayout>
<TextView
android:id="@+id/contact_name"
android:text="@{viewModel.contact.fullName ?? viewModel.displayName}"
style="@style/big_contact_name_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/top_bar"
android:layout_centerHorizontal="true"
android:gravity="center_vertical|center_horizontal"
android:paddingTop="5dp" />
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_number"
android:text="@{viewModel.address}"
style="@style/sip_uri_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/contact_name"
android:layout_centerHorizontal="true"
android:layout_gravity="center_vertical|center_horizontal"
android:singleLine="true"
android:paddingBottom="10dp" />
<org.linphone.contact.BigContactAvatarView
android:id="@+id/avatar"
android:visibility="@{viewModel.earlyMediaVideoEnabled ? View.GONE : View.VISIBLE}"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_margin="5dp"
android:layout_below="@id/contact_number"
android:layout_above="@id/buttons"
android:layout_centerHorizontal="true"
android:gravity="center"
tools:layout="@layout/contact_avatar_big"
app:viewModel="@{viewModel}"/>
<TextureView
android:id="@+id/remote_video_surface"
android:visibility="@{viewModel.earlyMediaVideoEnabled ? View.VISIBLE : View.GONE}"
android:layout_below="@id/contact_number"
android:layout_below="@id/top_bar"
android:layout_above="@id/buttons"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:visibility="@{viewModel.earlyMediaVideoEnabled ? View.VISIBLE : View.GONE, default=gone}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/top_bar"
android:layout_centerHorizontal="true"
android:background="?attr/backgroundColor"
android:alpha="0.8"
android:orientation="vertical">
<TextView
android:text="@{viewModel.contact.fullName ?? viewModel.displayName}"
style="@style/big_contact_name_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="10dp" />
<org.linphone.views.MarqueeTextView
android:text="@{viewModel.address}"
style="@style/sip_uri_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:singleLine="true"
android:paddingBottom="10dp" />
</LinearLayout>
<RelativeLayout
android:visibility="@{viewModel.earlyMediaVideoEnabled ? View.GONE : View.VISIBLE}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<TextView
android:id="@+id/contact_name"
android:text="@{viewModel.contact.fullName ?? viewModel.displayName}"
style="@style/big_contact_name_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:gravity="center_vertical|center_horizontal"
android:paddingTop="10dp" />
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_number"
android:text="@{viewModel.address}"
style="@style/sip_uri_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/contact_name"
android:layout_centerHorizontal="true"
android:layout_gravity="center_vertical|center_horizontal"
android:singleLine="true"
android:paddingBottom="10dp" />
<org.linphone.contact.BigContactAvatarView
android:id="@+id/avatar"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_margin="5dp"
android:layout_below="@id/contact_number"
android:layout_centerHorizontal="true"
android:gravity="center"
tools:layout="@layout/contact_avatar_big"
app:viewModel="@{viewModel}"/>
</RelativeLayout>
<org.linphone.activities.call.views.AnswerDeclineIncomingCallButtons
android:id="@+id/buttons"
android:layout_alignParentBottom="true"

View file

@ -51,39 +51,45 @@
</RelativeLayout>
<TextView
android:id="@+id/contact_name"
android:text="@{viewModel.contact.fullName ?? viewModel.displayName}"
style="@style/big_contact_name_font"
android:layout_width="wrap_content"
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/top_bar"
android:layout_centerHorizontal="true"
android:gravity="center_vertical|center_horizontal"
android:paddingTop="5dp" />
android:layout_centerInParent="true">
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_number"
android:text="@{viewModel.address}"
style="@style/sip_uri_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/contact_name"
android:layout_centerHorizontal="true"
android:layout_gravity="center_vertical|center_horizontal"
android:singleLine="true"
android:paddingBottom="10dp" />
<TextView
android:id="@+id/contact_name"
android:text="@{viewModel.contact.fullName ?? viewModel.displayName}"
style="@style/big_contact_name_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:gravity="center_vertical|center_horizontal"
android:paddingTop="10dp" />
<org.linphone.contact.BigContactAvatarView
android:id="@+id/avatar"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_margin="5dp"
android:layout_below="@id/contact_number"
android:layout_centerHorizontal="true"
android:gravity="center"
tools:layout="@layout/contact_avatar_big"
app:viewModel="@{viewModel}"/>
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_number"
android:text="@{viewModel.address}"
style="@style/sip_uri_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/contact_name"
android:layout_centerHorizontal="true"
android:layout_gravity="center_vertical|center_horizontal"
android:singleLine="true"
android:paddingBottom="10dp" />
<org.linphone.contact.BigContactAvatarView
android:id="@+id/avatar"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_margin="5dp"
android:layout_below="@id/contact_number"
android:layout_centerHorizontal="true"
android:gravity="center"
tools:layout="@layout/contact_avatar_big"
app:viewModel="@{viewModel}"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"

View file

@ -157,6 +157,13 @@
linphone:defaultValue="@{viewModel.voiceMailUri}"
linphone:inputType="@{InputType.TYPE_TEXT_VARIATION_URI}"/>
<include
layout="@layout/settings_widget_switch"
linphone:title="@{@string/call_settings_accept_early_media_title}"
linphone:subtitle="@{@string/call_settings_accept_early_media_summary}"
linphone:listener="@{viewModel.acceptEarlyMediaListener}"
linphone:checked="@={viewModel.acceptEarlyMedia}"/>
<include
layout="@layout/settings_widget_basic"
linphone:listener="@{viewModel.goToAndroidNotificationSettingsListener}"

View file

@ -395,6 +395,8 @@
<string name="call_settings_incoming_timeout_title">Incoming call timeout</string>
<string name="call_settings_incoming_timeout_summary">in seconds</string>
<string name="call_settings_voice_mail_uri_title">Voice mail URI</string>
<string name="call_settings_accept_early_media_title">Accept early media</string>
<string name="call_settings_accept_early_media_summary"></string>
<string name="call_settings_voice_mail_uri_summary"></string>
<string name="call_settings_go_to_android_notification_settings">Android notification settings</string>