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.ViewModel
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
|
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||||
import org.linphone.core.*
|
import org.linphone.core.*
|
||||||
|
|
||||||
class IncomingCallViewModelFactory(private val call: Call) :
|
class IncomingCallViewModelFactory(private val call: Call) :
|
||||||
|
@ -43,8 +44,10 @@ class IncomingCallViewModel(call: Call) : CallViewModel(call) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
screenLocked.value = false
|
screenLocked.value = false
|
||||||
inviteWithVideo.value = call.currentParams.videoEnabled()
|
inviteWithVideo.value = call.remoteParams?.videoEnabled()
|
||||||
earlyMediaVideoEnabled.value = call.state == Call.State.IncomingEarlyMedia && call.currentParams.videoEnabled()
|
earlyMediaVideoEnabled.value = corePreferences.acceptEarlyMedia &&
|
||||||
|
call.state == Call.State.IncomingEarlyMedia &&
|
||||||
|
call.currentParams.videoEnabled()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun answer(doAction: Boolean) {
|
fun answer(doAction: Boolean) {
|
||||||
|
|
|
@ -125,6 +125,13 @@ class CallSettingsViewModel : GenericSettingsViewModel() {
|
||||||
}
|
}
|
||||||
val voiceMailUri = MutableLiveData<String>()
|
val voiceMailUri = MutableLiveData<String>()
|
||||||
|
|
||||||
|
val acceptEarlyMediaListener = object : SettingListenerStub() {
|
||||||
|
override fun onBoolValueChanged(newValue: Boolean) {
|
||||||
|
prefs.acceptEarlyMedia = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val acceptEarlyMedia = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
val goToAndroidNotificationSettingsListener = object : SettingListenerStub() {
|
val goToAndroidNotificationSettingsListener = object : SettingListenerStub() {
|
||||||
override fun onClicked() {
|
override fun onClicked() {
|
||||||
goToAndroidNotificationSettingsEvent.value = Event(true)
|
goToAndroidNotificationSettingsEvent.value = Event(true)
|
||||||
|
@ -147,6 +154,7 @@ class CallSettingsViewModel : GenericSettingsViewModel() {
|
||||||
autoAnswerDelay.value = prefs.autoAnswerDelay
|
autoAnswerDelay.value = prefs.autoAnswerDelay
|
||||||
incomingTimeout.value = core.incTimeout
|
incomingTimeout.value = core.incTimeout
|
||||||
voiceMailUri.value = prefs.voiceMailUri
|
voiceMailUri.value = prefs.voiceMailUri
|
||||||
|
acceptEarlyMedia.value = prefs.acceptEarlyMedia
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initEncryptionList() {
|
private fun initEncryptionList() {
|
||||||
|
|
|
@ -157,6 +157,12 @@ class CorePreferences constructor(private val context: Context) {
|
||||||
config.setBool("app", "incoming_call_vibration", value)
|
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
|
var autoAnswerEnabled: Boolean
|
||||||
get() = config.getBool("app", "auto_answer", false)
|
get() = config.getBool("app", "auto_answer", false)
|
||||||
set(value) {
|
set(value) {
|
||||||
|
|
|
@ -42,14 +42,15 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingTop="5dp" />
|
android:paddingTop="10dp" />
|
||||||
|
|
||||||
<Chronometer
|
<Chronometer
|
||||||
android:id="@+id/active_call_timer"
|
android:id="@+id/active_call_timer"
|
||||||
style="@style/sip_uri_font"
|
style="@style/sip_uri_font"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center" />
|
android:layout_gravity="center"
|
||||||
|
android:paddingBottom="10dp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
@ -42,14 +42,15 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingTop="5dp" />
|
android:paddingTop="10dp" />
|
||||||
|
|
||||||
<Chronometer
|
<Chronometer
|
||||||
android:id="@+id/active_call_timer"
|
android:id="@+id/active_call_timer"
|
||||||
style="@style/sip_uri_font"
|
style="@style/sip_uri_font"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center" />
|
android:layout_gravity="center"
|
||||||
|
android:paddingBottom="10dp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
|
@ -39,50 +39,85 @@
|
||||||
|
|
||||||
</RelativeLayout>
|
</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
|
<TextureView
|
||||||
android:id="@+id/remote_video_surface"
|
android:id="@+id/remote_video_surface"
|
||||||
android:visibility="@{viewModel.earlyMediaVideoEnabled ? View.VISIBLE : View.GONE}"
|
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_above="@id/buttons"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="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
|
<org.linphone.activities.call.views.AnswerDeclineIncomingCallButtons
|
||||||
android:id="@+id/buttons"
|
android:id="@+id/buttons"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
|
|
|
@ -51,39 +51,45 @@
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<TextView
|
<RelativeLayout
|
||||||
android:id="@+id/contact_name"
|
android:layout_width="match_parent"
|
||||||
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_height="wrap_content"
|
||||||
android:layout_below="@id/top_bar"
|
android:layout_centerInParent="true">
|
||||||
android:layout_centerHorizontal="true"
|
|
||||||
android:gravity="center_vertical|center_horizontal"
|
|
||||||
android:paddingTop="5dp" />
|
|
||||||
|
|
||||||
<org.linphone.views.MarqueeTextView
|
<TextView
|
||||||
android:id="@+id/contact_number"
|
android:id="@+id/contact_name"
|
||||||
android:text="@{viewModel.address}"
|
android:text="@{viewModel.contact.fullName ?? viewModel.displayName}"
|
||||||
style="@style/sip_uri_font"
|
style="@style/big_contact_name_font"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/contact_name"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_centerHorizontal="true"
|
android:gravity="center_vertical|center_horizontal"
|
||||||
android:layout_gravity="center_vertical|center_horizontal"
|
android:paddingTop="10dp" />
|
||||||
android:singleLine="true"
|
|
||||||
android:paddingBottom="10dp" />
|
|
||||||
|
|
||||||
<org.linphone.contact.BigContactAvatarView
|
<org.linphone.views.MarqueeTextView
|
||||||
android:id="@+id/avatar"
|
android:id="@+id/contact_number"
|
||||||
android:layout_width="200dp"
|
android:text="@{viewModel.address}"
|
||||||
android:layout_height="200dp"
|
style="@style/sip_uri_font"
|
||||||
android:layout_margin="5dp"
|
android:layout_width="wrap_content"
|
||||||
android:layout_below="@id/contact_number"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_below="@id/contact_name"
|
||||||
android:gravity="center"
|
android:layout_centerHorizontal="true"
|
||||||
tools:layout="@layout/contact_avatar_big"
|
android:layout_gravity="center_vertical|center_horizontal"
|
||||||
app:viewModel="@{viewModel}"/>
|
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
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -157,6 +157,13 @@
|
||||||
linphone:defaultValue="@{viewModel.voiceMailUri}"
|
linphone:defaultValue="@{viewModel.voiceMailUri}"
|
||||||
linphone:inputType="@{InputType.TYPE_TEXT_VARIATION_URI}"/>
|
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
|
<include
|
||||||
layout="@layout/settings_widget_basic"
|
layout="@layout/settings_widget_basic"
|
||||||
linphone:listener="@{viewModel.goToAndroidNotificationSettingsListener}"
|
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_title">Incoming call timeout</string>
|
||||||
<string name="call_settings_incoming_timeout_summary">in seconds</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_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_voice_mail_uri_summary"></string>
|
||||||
<string name="call_settings_go_to_android_notification_settings">Android notification settings</string>
|
<string name="call_settings_go_to_android_notification_settings">Android notification settings</string>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue