mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 11:28:06 +00:00
Fixed issue with video call layout + auto accept video requests
This commit is contained in:
parent
036301e34f
commit
c8ea1bcd8c
9 changed files with 49 additions and 22 deletions
|
|
@ -83,6 +83,14 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C
|
|||
showCallActivity()
|
||||
}
|
||||
}
|
||||
Call.State.UpdatedByRemote -> {
|
||||
// TODO FIXME: remove
|
||||
val params = core.createCallParams(call)
|
||||
params?.isVideoEnabled = true
|
||||
core.isVideoCaptureEnabled = true
|
||||
core.isVideoDisplayEnabled = true
|
||||
call.acceptUpdate(params)
|
||||
}
|
||||
else -> {
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -214,11 +214,11 @@ class ActiveCallFragment : GenericCallFragment() {
|
|||
if (feature.state == FoldingFeature.State.HALF_OPENED) {
|
||||
set.setGuidelinePercent(R.id.hinge_top, 0.5f)
|
||||
set.setGuidelinePercent(R.id.hinge_bottom, 0.5f)
|
||||
sharedViewModel.folded.value = true
|
||||
callViewModel.halfOpenedFolded.value = true
|
||||
} else {
|
||||
set.setGuidelinePercent(R.id.hinge_top, 0f)
|
||||
set.setGuidelinePercent(R.id.hinge_bottom, 1f)
|
||||
sharedViewModel.folded.value = false
|
||||
callViewModel.halfOpenedFolded.value = false
|
||||
}
|
||||
|
||||
set.applyTo(constraintLayout)
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@ class CurrentCallViewModel @UiThread constructor() : ViewModel() {
|
|||
|
||||
val pipMode = MutableLiveData<Boolean>()
|
||||
|
||||
val halfOpenedFolded = MutableLiveData<Boolean>()
|
||||
|
||||
// To synchronize chronometers in UI
|
||||
val callDuration = MutableLiveData<Int>()
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,4 @@ class SharedCallViewModel @UiThread constructor() : ViewModel() {
|
|||
val toggleFullScreenEvent = MutableLiveData<Event<Boolean>>()
|
||||
|
||||
val foldingState = MutableLiveData<FoldingFeature>()
|
||||
|
||||
val folded = MutableLiveData<Boolean>()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ import androidx.annotation.ColorRes
|
|||
import androidx.annotation.UiThread
|
||||
import androidx.appcompat.widget.AppCompatEditText
|
||||
import androidx.appcompat.widget.AppCompatTextView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
|
|
@ -307,6 +308,22 @@ fun AppCompatEditText.editTextSetting(lambda: () -> Unit) {
|
|||
})
|
||||
}
|
||||
|
||||
@BindingAdapter("android:layout_marginBottom")
|
||||
fun setConstraintLayoutBottomMargin(view: View, margins: Float) {
|
||||
val params = view.layoutParams as ConstraintLayout.LayoutParams
|
||||
val m = margins.toInt()
|
||||
params.setMargins(params.leftMargin, params.topMargin, params.rightMargin, m)
|
||||
view.layoutParams = params
|
||||
}
|
||||
|
||||
@BindingAdapter("android:layout_marginTop")
|
||||
fun setConstraintLayoutTopMargin(view: View, margins: Float) {
|
||||
val params = view.layoutParams as ConstraintLayout.LayoutParams
|
||||
val m = margins.toInt()
|
||||
params.setMargins(params.leftMargin, m, params.rightMargin, params.bottomMargin)
|
||||
view.layoutParams = params
|
||||
}
|
||||
|
||||
@BindingAdapter("focusNextOnInput")
|
||||
fun focusNextOnInput(editText: EditText, enabled: Boolean) {
|
||||
if (!enabled) return
|
||||
|
|
|
|||
|
|
@ -106,6 +106,8 @@
|
|||
android:id="@+id/remote_video_surface"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="@{viewModel.fullScreenMode || viewModel.pipMode || viewModel.halfOpenedFolded ? @dimen/zero : @dimen/in_call_main_actions_menu_height, default=@dimen/in_call_main_actions_menu_height}"
|
||||
android:layout_marginTop="@{viewModel.fullScreenMode || viewModel.pipMode || viewModel.halfOpenedFolded ? @dimen/zero : @dimen/in_call_top_bar_info_height, default=@dimen/in_call_top_bar_info_height}"
|
||||
android:onClick="@{() -> viewModel.toggleFullScreen()}"
|
||||
android:visibility="@{viewModel.isVideoEnabled ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
|
|
@ -122,8 +124,8 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/call_direction_icon"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@{viewModel.isOutgoing ? @drawable/outgoing_call : @drawable/incoming_call, default=@drawable/outgoing_call}"
|
||||
|
|
@ -135,7 +137,7 @@
|
|||
style="@style/default_text_style_800"
|
||||
android:id="@+id/call_direction_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="@dimen/in_call_top_bar_text_height"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
|
|
@ -150,33 +152,31 @@
|
|||
style="@style/default_text_style_800"
|
||||
android:id="@+id/separator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="@dimen/in_call_top_bar_text_height"
|
||||
android:layout_marginStart="5dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
android:text="@string/vertical_separator"
|
||||
app:layout_constraintStart_toEndOf="@id/call_direction_label"
|
||||
app:layout_constraintTop_toTopOf="@id/call_direction_label"
|
||||
app:layout_constraintBottom_toBottomOf="@id/call_direction_label"/>
|
||||
app:layout_constraintTop_toTopOf="@id/call_direction_label"/>
|
||||
|
||||
<Chronometer
|
||||
style="@style/default_text_style_800"
|
||||
android:id="@+id/chronometer"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="@dimen/in_call_top_bar_text_height"
|
||||
android:layout_marginStart="5dp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="16sp"
|
||||
app:layout_constraintStart_toEndOf="@id/separator"
|
||||
app:layout_constraintTop_toTopOf="@id/call_direction_label"
|
||||
app:layout_constraintBottom_toBottomOf="@id/call_direction_label"/>
|
||||
app:layout_constraintTop_toTopOf="@id/call_direction_label"/>
|
||||
|
||||
<ImageView
|
||||
android:onClick="@{() -> viewModel.switchCamera()}"
|
||||
android:id="@+id/switch_camera"
|
||||
android:layout_width="34dp"
|
||||
android:layout_height="34dp"
|
||||
android:padding="5dp"
|
||||
android:layout_width="@dimen/in_call_top_bar_info_height"
|
||||
android:layout_height="@dimen/in_call_top_bar_info_height"
|
||||
android:padding="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:src="@drawable/camera_rotate"
|
||||
android:visibility="@{!viewModel.fullScreenMode && !viewModel.pipMode && viewModel.isVideoEnabled && viewModel.showSwitchCamera ? View.VISIBLE : View.GONE}"
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/call_direction_icon"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/incoming_call"
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
style="@style/default_text_style_800"
|
||||
android:id="@+id/call_direction_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="@dimen/in_call_top_bar_text_height"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/call_direction_icon"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/outgoing_call"
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
style="@style/default_text_style_800"
|
||||
android:id="@+id/call_direction_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="@dimen/in_call_top_bar_text_height"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@
|
|||
<dimen name="top_bar_height">55dp</dimen>
|
||||
<dimen name="toast_top_margin">70dp</dimen> <!-- 15dp + top_bar_height -->
|
||||
|
||||
<dimen name="in_call_top_bar_text_height">28dp</dimen>
|
||||
<dimen name="in_call_top_bar_info_height">48dp</dimen> <!-- Size of top text + top & bottom margins -->
|
||||
<dimen name="in_call_main_actions_menu_height">110dp</dimen>
|
||||
<dimen name="in_call_extra_actions_menu_height">235dp</dimen>
|
||||
<dimen name="in_call_all_actions_menu_height">345dp</dimen> <!-- sum of above two -->
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue