Fixed call related layout issues + added setting for early media
This commit is contained in:
parent
c657156ee8
commit
eadb55e9c4
9 changed files with 142 additions and 73 deletions
|
@ -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) {
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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}"
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
Loading…
Reference in a new issue