Reworked layouts to use ConstraintLayout properly

This commit is contained in:
Sylvain Berfini 2022-03-10 13:37:16 +01:00
parent 6044ed07f8
commit 6559cc24ec
15 changed files with 941 additions and 893 deletions

View file

@ -18,136 +18,117 @@
<ImageView <ImageView
android:id="@+id/hangup" android:id="@+id/hangup"
android:onClick="@{() -> controlsViewModel.hangUp()}"
android:layout_height="match_parent"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/button_call_terminate_background" android:background="@drawable/button_call_terminate_background"
android:src="@drawable/icon_call_hangup"
android:padding="5dp"
android:contentDescription="@string/content_description_terminate_call" android:contentDescription="@string/content_description_terminate_call"
android:onClick="@{() -> controlsViewModel.hangUp()}"
android:padding="5dp"
android:src="@drawable/icon_call_hangup"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="W,1.26:1" app:layout_constraintDimensionRatio="W,1.26:1"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintStart_toStartOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/hangup"
app:layout_constraintEnd_toStartOf="@id/more">
<ImageView <ImageView
android:onClick="@{() -> controlsViewModel.toggleMuteMicrophone()}" android:id="@+id/microphone"
android:selected="@{controlsViewModel.isMicrophoneMuted}"
android:enabled="@{controlsViewModel.isMuteMicrophoneEnabled}"
android:layout_height="match_parent"
android:layout_width="0dp" android:layout_width="0dp"
android:background="@drawable/button_background_reverse" android:layout_height="match_parent"
android:src="@drawable/icon_toggle_mic"
android:padding="5dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:contentDescription="@{controlsViewModel.isMicrophoneMuted ? @string/content_description_disable_mic_mute : @string/content_description_enable_mic_mute}"
app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/speaker"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/speaker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<ImageView
android:onClick="@{() -> controlsViewModel.toggleSpeaker()}"
android:selected="@{controlsViewModel.isSpeakerSelected}"
android:visibility="@{controlsViewModel.audioRoutesEnabled ? View.GONE : View.VISIBLE}"
android:layout_height="match_parent"
android:layout_width="0dp"
android:background="@drawable/button_background_reverse" android:background="@drawable/button_background_reverse"
android:src="@drawable/icon_toggle_speaker" android:contentDescription="@{controlsViewModel.isMicrophoneMuted ? @string/content_description_disable_mic_mute : @string/content_description_enable_mic_mute}"
android:enabled="@{controlsViewModel.isMuteMicrophoneEnabled}"
android:onClick="@{() -> controlsViewModel.toggleMuteMicrophone()}"
android:padding="5dp" android:padding="5dp"
android:contentDescription="@{controlsViewModel.isSpeakerSelected ? @string/content_description_disable_speaker : @string/content_description_enable_speaker}" android:selected="@{controlsViewModel.isMicrophoneMuted}"
app:layout_constraintDimensionRatio="W,1:1" android:src="@drawable/icon_toggle_mic"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintEnd_toEndOf="parent"/> app:layout_constraintEnd_toStartOf="@id/speaker"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toEndOf="@id/hangup" />
<ImageView <ImageView
android:onClick="@{() -> controlsViewModel.toggleRoutesMenu()}" android:id="@+id/speaker"
android:selected="@{controlsViewModel.audioRoutesSelected}"
android:visibility="@{controlsViewModel.audioRoutesEnabled ? View.VISIBLE : View.GONE, default=gone}"
android:layout_height="match_parent"
android:layout_width="0dp" android:layout_width="0dp"
android:background="@drawable/button_toggle_background_reverse" android:layout_height="match_parent"
android:src="@drawable/icon_audio_routes" android:background="@drawable/button_background_reverse"
android:contentDescription="@{controlsViewModel.isSpeakerSelected ? @string/content_description_disable_speaker : @string/content_description_enable_speaker}"
android:onClick="@{() -> controlsViewModel.toggleSpeaker()}"
android:padding="5dp" android:padding="5dp"
android:contentDescription="@string/content_description_toggle_audio_menu" android:selected="@{controlsViewModel.isSpeakerSelected}"
app:layout_constraintDimensionRatio="W,1:1" android:src="@drawable/icon_toggle_speaker"
android:visibility="@{controlsViewModel.audioRoutesEnabled ? View.GONE : View.VISIBLE}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintEnd_toEndOf="parent"/> app:layout_constraintEnd_toStartOf="@id/audio_routes"
app:layout_constraintStart_toEndOf="@id/microphone" />
</androidx.constraintlayout.widget.ConstraintLayout> <ImageView
android:id="@+id/audio_routes"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/button_toggle_background_reverse"
android:contentDescription="@string/content_description_toggle_audio_menu"
android:onClick="@{() -> controlsViewModel.toggleRoutesMenu()}"
android:padding="5dp"
android:selected="@{controlsViewModel.audioRoutesSelected}"
android:src="@drawable/icon_audio_routes"
android:visibility="@{controlsViewModel.audioRoutesEnabled ? View.VISIBLE : View.GONE, default=gone}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintEnd_toStartOf="@id/video"
app:layout_constraintStart_toEndOf="@id/speaker" />
<ImageView <ImageView
android:id="@+id/video" android:id="@+id/video"
android:onClick="@{() -> controlsViewModel.toggleVideo()}"
android:selected="@{controlsViewModel.isVideoEnabled &amp;&amp; controlsViewModel.isVideoSendReceive}"
android:enabled="@{controlsViewModel.isVideoAvailable &amp;&amp; !controlsViewModel.isVideoUpdateInProgress}"
android:layout_height="match_parent"
android:layout_width="0dp" android:layout_width="0dp"
android:background="@drawable/button_background_reverse" android:layout_height="match_parent"
android:src="@drawable/icon_toggle_camera"
android:padding="5dp"
android:layout_marginStart="5dp" android:layout_marginStart="5dp"
android:background="@drawable/button_background_reverse"
android:contentDescription="@{controlsViewModel.isVideoEnabled &amp;&amp; controlsViewModel.isVideoSendReceive ? @string/content_description_disable_video : @string/content_description_enable_video}" android:contentDescription="@{controlsViewModel.isVideoEnabled &amp;&amp; controlsViewModel.isVideoSendReceive ? @string/content_description_disable_video : @string/content_description_enable_video}"
app:layout_constraintDimensionRatio="W,1:1" android:enabled="@{controlsViewModel.isVideoAvailable &amp;&amp; !controlsViewModel.isVideoUpdateInProgress}"
android:onClick="@{() -> controlsViewModel.toggleVideo()}"
android:padding="5dp"
android:selected="@{controlsViewModel.isVideoEnabled &amp;&amp; controlsViewModel.isVideoSendReceive}"
android:src="@drawable/icon_toggle_camera"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/speaker"/> app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintEnd_toStartOf="@id/more"
app:layout_constraintStart_toEndOf="@id/audio_routes" />
<ProgressBar <ProgressBar
android:visibility="@{controlsViewModel.isVideoUpdateInProgress ? View.VISIBLE : View.GONE, default=gone}"
style="?android:attr/progressBarStyle" style="?android:attr/progressBarStyle"
android:layout_height="match_parent"
android:layout_width="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@id/video"
app:layout_constraintEnd_toEndOf="@id/video" />
</androidx.constraintlayout.widget.ConstraintLayout>
<RelativeLayout
android:id="@+id/more"
android:onClick="@{() -> controlsViewModel.showExtraButtons()}"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
app:layout_constraintDimensionRatio="W,1:1" android:visibility="@{controlsViewModel.isVideoUpdateInProgress ? View.VISIBLE : View.GONE, default=gone}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"> app:layout_constraintEnd_toEndOf="@id/video"
app:layout_constraintStart_toStartOf="@id/video" />
<ImageView <ImageView
android:layout_width="match_parent" android:id="@+id/more"
android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@drawable/button_background" android:background="@drawable/button_background"
android:contentDescription="@string/content_description_call_context_menu"
android:onClick="@{() -> controlsViewModel.showExtraButtons()}"
android:padding="5dp" android:padding="5dp"
android:src="@drawable/icon_call_more" android:src="@drawable/icon_call_more"
android:contentDescription="@string/content_description_call_context_menu"/> app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintEnd_toEndOf="parent" />
<TextView <TextView
style="@style/unread_count_font" style="@style/unread_count_font"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:background="@drawable/unread_message_count_bg" android:background="@drawable/unread_message_count_bg"
android:gravity="center" android:gravity="center"
android:translationY="@{controlsViewModel.bouncyCounterTranslateY}"
android:text="@{String.valueOf(callsViewModel.chatAndCallsCount), default=2}" android:text="@{String.valueOf(callsViewModel.chatAndCallsCount), default=2}"
android:visibility="@{callsViewModel.chatAndCallsCount == 0 ? View.GONE : View.VISIBLE}" /> android:translationY="@{controlsViewModel.bouncyCounterTranslateY}"
android:visibility="@{callsViewModel.chatAndCallsCount == 0 ? View.GONE : View.VISIBLE}"
</RelativeLayout> app:layout_constraintEnd_toEndOf="@id/more"
app:layout_constraintTop_toTopOf="@id/more"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />
@ -15,165 +16,175 @@
type="org.linphone.activities.voip.viewmodels.ConferenceViewModel" /> type="org.linphone.activities.voip.viewmodels.ConferenceViewModel" />
</data> </data>
<LinearLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/voip_call_extra_buttons_height" android:layout_height="@dimen/voip_call_extra_buttons_height"
android:gravity="center"
android:layout_marginEnd="15dp"
android:layout_marginStart="15dp" android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:background="@drawable/shape_extra_buttons_background" android:background="@drawable/shape_extra_buttons_background"
android:orientation="vertical"> android:gravity="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView <TextView
android:id="@+id/numpad"
style="@style/call_options_font"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:onClick="@{() -> controlsViewModel.showNumpad()}" android:onClick="@{() -> controlsViewModel.showNumpad()}"
android:layout_width="0dp" android:text="@string/call_action_numpad"
android:layout_height="wrap_content"
android:layout_weight="1"
app:drawableTopCompat="@drawable/icon_call_numpad" app:drawableTopCompat="@drawable/icon_call_numpad"
android:gravity="center" app:layout_constraintBottom_toBottomOf="@id/chat"
style="@style/call_options_font" app:layout_constraintEnd_toStartOf="@id/call_stats"
android:text="@string/call_action_numpad"/> app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/chat"/>
<TextView <TextView
android:onClick="@{() -> controlsViewModel.showCallStats(false)}" android:id="@+id/call_stats"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:drawableTopCompat="@drawable/icon_call_stats"
android:gravity="center"
style="@style/call_options_font" style="@style/call_options_font"
android:text="@string/call_action_statistics"/>
<RelativeLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"> android:gravity="center"
android:onClick="@{() -> controlsViewModel.showCallStats(false)}"
android:text="@string/call_action_statistics"
app:drawableTopCompat="@drawable/icon_call_stats"
app:layout_constraintBottom_toBottomOf="@id/chat"
app:layout_constraintEnd_toStartOf="@id/chat"
app:layout_constraintStart_toEndOf="@id/numpad"
app:layout_constraintTop_toTopOf="@id/chat" />
<TextView <TextView
android:id="@+id/chat" android:id="@+id/chat"
style="@style/call_options_font" style="@style/call_options_font"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:gravity="center" android:gravity="center"
android:onClick="@{() -> controlsViewModel.goToChat()}" android:onClick="@{() -> controlsViewModel.goToChat()}"
android:text="@string/call_action_chat" android:text="@string/call_action_chat"
app:drawableTopCompat="@drawable/icon_call_chat" /> app:drawableTopCompat="@drawable/icon_call_chat"
app:layout_constraintBottom_toTopOf="@id/calls"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/call_stats"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="spread" />
<TextView <TextView
style="@style/unread_count_font" style="@style/unread_count_font"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentTop="true" android:layout_marginLeft="60dp"
android:layout_toEndOf="@id/chat"
android:background="@drawable/unread_message_count_bg" android:background="@drawable/unread_message_count_bg"
android:gravity="center" android:gravity="center"
android:translationY="@{controlsViewModel.bouncyCounterTranslateY}"
android:text="@{String.valueOf(callsViewModel.currentCallUnreadChatMessageCount), default=1}" android:text="@{String.valueOf(callsViewModel.currentCallUnreadChatMessageCount), default=1}"
android:visibility="@{callsViewModel.currentCallUnreadChatMessageCount == 0 ? View.GONE : View.VISIBLE}" /> android:translationY="@{controlsViewModel.bouncyCounterTranslateY}"
android:visibility="@{callsViewModel.currentCallUnreadChatMessageCount == 0 ? View.GONE : View.VISIBLE}"
app:layout_constraintEnd_toEndOf="@id/chat"
app:layout_constraintStart_toStartOf="@id/chat"
app:layout_constraintTop_toTopOf="@id/chat" />
<ProgressBar <ProgressBar
android:visibility="@{controlsViewModel.chatRoomCreationInProgress ? View.VISIBLE : View.GONE, default=gone}"
style="?android:attr/progressBarStyle" style="?android:attr/progressBarStyle"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content"/>
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal"> android:visibility="@{controlsViewModel.chatRoomCreationInProgress ? View.VISIBLE : View.GONE, default=gone}"
app:layout_constraintBottom_toBottomOf="@id/chat"
app:layout_constraintEnd_toEndOf="@id/chat"
app:layout_constraintStart_toStartOf="@id/chat"
app:layout_constraintTop_toTopOf="@id/chat"/>
<TextView <TextView
android:id="@+id/transfer_call"
style="@style/call_options_font"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:onClick="@{() -> controlsViewModel.goToDialerForCallTransfer()}" android:onClick="@{() -> controlsViewModel.goToDialerForCallTransfer()}"
android:visibility="@{conferenceViewModel.conferenceExists ? View.GONE : View.VISIBLE}" android:text="@string/call_action_transfer_call"
android:layout_width="0dp" android:visibility="@{conferenceViewModel.conferenceExists ? View.GONE : View.VISIBLE, default=gone}"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="20dp"
app:drawableTopCompat="@drawable/icon_call_forward" app:drawableTopCompat="@drawable/icon_call_forward"
android:gravity="center" app:layout_constraintBottom_toBottomOf="parent"
style="@style/call_options_font" app:layout_constraintEnd_toStartOf="@id/conference_participants"
android:text="@string/call_action_transfer_call"/> app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/numpad"/>
<TextView <TextView
android:id="@+id/conference_participants"
style="@style/call_options_font"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:onClick="@{() -> controlsViewModel.goToConferenceParticipantsList()}" android:onClick="@{() -> controlsViewModel.goToConferenceParticipantsList()}"
android:visibility="@{conferenceViewModel.conferenceExists ? View.VISIBLE : View.GONE, default=gone}" android:text="@string/call_action_participants_list"
android:layout_width="0dp" android:visibility="@{conferenceViewModel.conferenceExists ? View.VISIBLE : View.GONE}"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="20dp"
app:drawableTopCompat="@drawable/icon_call_participants" app:drawableTopCompat="@drawable/icon_call_participants"
android:gravity="center" app:layout_constraintBottom_toBottomOf="@id/calls"
style="@style/call_options_font" app:layout_constraintEnd_toStartOf="@id/add_call"
android:text="@string/call_action_participants_list"/> app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toEndOf="@id/transfer_call"
app:layout_constraintTop_toTopOf="@id/calls"/>
<TextView <TextView
android:id="@+id/add_call"
style="@style/call_options_font"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:onClick="@{() -> controlsViewModel.goToDialerForNewCall()}" android:onClick="@{() -> controlsViewModel.goToDialerForNewCall()}"
android:visibility="@{conferenceViewModel.conferenceExists ? View.GONE : View.VISIBLE}" android:text="@string/call_action_add_call"
android:layout_width="0dp" android:visibility="@{conferenceViewModel.conferenceExists ? View.GONE : View.VISIBLE, default=gone}"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="20dp"
app:drawableTopCompat="@drawable/icon_call_add" app:drawableTopCompat="@drawable/icon_call_add"
android:gravity="center" app:layout_constraintBottom_toBottomOf="@id/calls"
style="@style/call_options_font" app:layout_constraintEnd_toStartOf="@id/conference_layout"
android:text="@string/call_action_add_call"/> app:layout_constraintStart_toEndOf="@id/conference_participants"
app:layout_constraintTop_toTopOf="@id/calls"/>
<TextView <TextView
android:onClick="@{() -> controlsViewModel.goToConferenceLayout()}" android:id="@+id/conference_layout"
android:visibility="@{conferenceViewModel.conferenceExists ? View.VISIBLE : View.GONE, default=gone}"
android:enabled="@{conferenceViewModel.isVideoConference}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="20dp"
android:drawableTop="@{conferenceViewModel.conferenceActiveSpeakerDisplayMode ? @drawable/icon_conference_layout_active_speaker : conferenceViewModel.conferenceAudioOnlyDisplayMode ? @drawable/icon_conference_layout_audio_only : @drawable/icon_conference_layout_grid, default=@drawable/icon_conference_layout_grid}"
android:gravity="center"
style="@style/call_options_font" style="@style/call_options_font"
android:text="@string/call_action_change_conf_layout"/>
<RelativeLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:drawableTop="@{conferenceViewModel.conferenceActiveSpeakerDisplayMode ? @drawable/icon_conference_layout_active_speaker : conferenceViewModel.conferenceAudioOnlyDisplayMode ? @drawable/icon_conference_layout_audio_only : @drawable/icon_conference_layout_grid, default=@drawable/icon_conference_layout_grid}"
android:layout_marginTop="20dp"> android:enabled="@{conferenceViewModel.isVideoConference}"
android:gravity="center"
android:onClick="@{() -> controlsViewModel.goToConferenceLayout()}"
android:text="@string/call_action_change_conf_layout"
android:visibility="@{conferenceViewModel.conferenceExists ? View.VISIBLE : View.GONE}"
app:layout_constraintBottom_toBottomOf="@id/calls"
app:layout_constraintEnd_toStartOf="@id/calls"
app:layout_constraintStart_toEndOf="@id/add_call"
app:layout_constraintTop_toTopOf="@id/calls"
tools:ignore="UseCompatTextViewDrawableXml" />
<TextView <TextView
android:id="@+id/calls" android:id="@+id/calls"
style="@style/call_options_font" style="@style/call_options_font"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center" android:gravity="center"
android:onClick="@{() -> controlsViewModel.goToCallsList()}" android:onClick="@{() -> controlsViewModel.goToCallsList()}"
android:text="@string/call_action_calls_list" android:text="@string/call_action_calls_list"
app:drawableTopCompat="@drawable/icon_calls_list" /> app:drawableTopCompat="@drawable/icon_calls_list"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/conference_layout"
app:layout_constraintTop_toBottomOf="@id/chat" />
<TextView <TextView
style="@style/unread_count_font" style="@style/unread_count_font"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentTop="true" android:layout_marginLeft="60dp"
android:layout_toEndOf="@id/calls"
android:background="@drawable/unread_message_count_bg" android:background="@drawable/unread_message_count_bg"
android:gravity="center" android:gravity="center"
android:translationY="@{controlsViewModel.bouncyCounterTranslateY}"
android:text="@{String.valueOf(callsViewModel.inactiveCallsCount), default=1}" android:text="@{String.valueOf(callsViewModel.inactiveCallsCount), default=1}"
android:visibility="@{callsViewModel.inactiveCallsCount == 0 ? View.GONE : View.VISIBLE}" /> android:translationY="@{controlsViewModel.bouncyCounterTranslateY}"
android:visibility="@{callsViewModel.inactiveCallsCount == 0 ? View.GONE : View.VISIBLE}"
app:layout_constraintEnd_toEndOf="@id/calls"
app:layout_constraintStart_toStartOf="@id/calls"
app:layout_constraintTop_toTopOf="@id/calls" />
</RelativeLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</LinearLayout>
</layout> </layout>

View file

@ -11,50 +11,38 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/voip_buttons_fragment_size" android:layout_height="@dimen/voip_buttons_fragment_size">
android:layout_margin="10dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/middle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<ImageView <ImageView
android:onClick="@{() -> viewModel.hangUp()}" android:id="@+id/hangup"
android:layout_height="match_parent"
android:layout_width="0dp" android:layout_width="0dp"
android:background="@drawable/button_call_terminate_background" android:layout_height="match_parent"
android:src="@drawable/icon_call_hangup"
android:padding="5dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:background="@drawable/button_call_terminate_background"
android:contentDescription="@string/content_description_terminate_call" android:contentDescription="@string/content_description_terminate_call"
app:layout_constraintDimensionRatio="W,1.26:1" android:onClick="@{() -> viewModel.hangUp()}"
android:padding="5dp"
android:src="@drawable/icon_call_hangup"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/middle"/> app:layout_constraintDimensionRatio="W,1.26:1"
app:layout_constraintEnd_toStartOf="@id/answer"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"/>
<ImageView <ImageView
android:onClick="@{() -> viewModel.answer()}" android:id="@+id/answer"
android:layout_height="match_parent"
android:layout_width="0dp" android:layout_width="0dp"
android:background="@drawable/button_call_answer_background" android:layout_height="match_parent"
android:src="@drawable/icon_call_answer"
android:padding="5dp"
android:layout_marginStart="5dp" android:layout_marginStart="5dp"
android:background="@drawable/button_call_answer_background"
android:contentDescription="@string/content_description_answer_call" android:contentDescription="@string/content_description_answer_call"
app:layout_constraintDimensionRatio="W,1.26:1" android:onClick="@{() -> viewModel.answer()}"
android:padding="5dp"
android:src="@drawable/icon_call_answer"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@id/middle"/> app:layout_constraintDimensionRatio="W,1.26:1"
app:layout_constraintEnd_toEndOf="parent"
</androidx.constraintlayout.widget.ConstraintLayout> app:layout_constraintStart_toEndOf="@id/hangup" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -11,88 +11,69 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/voip_buttons_fragment_size" android:layout_height="@dimen/voip_buttons_fragment_size">
android:layout_margin="10dp">
<ImageView <ImageView
android:id="@+id/hangup" android:id="@+id/hangup"
android:onClick="@{() -> controlsViewModel.hangUp()}"
android:layout_height="match_parent"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/button_call_terminate_background" android:background="@drawable/button_call_terminate_background"
android:src="@drawable/icon_call_hangup"
android:padding="5dp"
android:contentDescription="@string/content_description_terminate_call" android:contentDescription="@string/content_description_terminate_call"
app:layout_constraintDimensionRatio="W,1.26:1" android:onClick="@{() -> controlsViewModel.hangUp()}"
android:padding="5dp"
android:src="@drawable/icon_call_hangup"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="W,1.26:1"
app:layout_constraintStart_toStartOf="parent"/> app:layout_constraintStart_toStartOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/hangup"
app:layout_constraintEnd_toStartOf="@id/numpad">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/middle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<ImageView <ImageView
android:onClick="@{() -> controlsViewModel.toggleMuteMicrophone()}" android:id="@+id/microphone"
android:selected="@{controlsViewModel.isMicrophoneMuted}"
android:enabled="@{controlsViewModel.isMuteMicrophoneEnabled}"
android:layout_height="match_parent"
android:layout_width="0dp" android:layout_width="0dp"
android:background="@drawable/button_background_reverse" android:layout_height="match_parent"
android:src="@drawable/icon_toggle_mic"
android:padding="5dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:background="@drawable/button_background_reverse"
android:contentDescription="@{controlsViewModel.isMicrophoneMuted ? @string/content_description_disable_mic_mute : @string/content_description_enable_mic_mute}" android:contentDescription="@{controlsViewModel.isMicrophoneMuted ? @string/content_description_disable_mic_mute : @string/content_description_enable_mic_mute}"
app:layout_constraintDimensionRatio="W,1:1" android:enabled="@{controlsViewModel.isMuteMicrophoneEnabled}"
android:onClick="@{() -> controlsViewModel.toggleMuteMicrophone()}"
android:padding="5dp"
android:selected="@{controlsViewModel.isMicrophoneMuted}"
android:src="@drawable/icon_toggle_mic"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/middle"/> app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintEnd_toStartOf="@id/speaker"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="@id/hangup"/>
<ImageView <ImageView
android:onClick="@{() -> controlsViewModel.toggleSpeaker()}" android:id="@+id/speaker"
android:selected="@{controlsViewModel.isSpeakerSelected}"
android:layout_height="match_parent"
android:layout_width="0dp" android:layout_width="0dp"
android:background="@drawable/button_background_reverse" android:layout_height="match_parent"
android:src="@drawable/icon_toggle_speaker"
android:padding="5dp"
android:layout_marginStart="5dp" android:layout_marginStart="5dp"
android:background="@drawable/button_background_reverse"
android:contentDescription="@{controlsViewModel.isSpeakerSelected ? @string/content_description_disable_speaker : @string/content_description_enable_speaker}" android:contentDescription="@{controlsViewModel.isSpeakerSelected ? @string/content_description_disable_speaker : @string/content_description_enable_speaker}"
app:layout_constraintDimensionRatio="W,1:1" android:onClick="@{() -> controlsViewModel.toggleSpeaker()}"
android:padding="5dp"
android:selected="@{controlsViewModel.isSpeakerSelected}"
android:src="@drawable/icon_toggle_speaker"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@id/middle" app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintEnd_toEndOf="@id/numpad"
app:layout_constraintStart_toEndOf="@id/microphone"/>
<ImageView
android:id="@+id/numpad"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/button_background"
android:contentDescription="@string/content_description_show_numpad"
android:onClick="@{() -> controlsViewModel.showNumpad()}"
android:padding="10dp"
android:src="@drawable/icon_call_numpad"
android:visibility="@{controlsViewModel.isOutgoingEarlyMedia ? View.VISIBLE : View.GONE, default=gone}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintEnd_toEndOf="parent"/> app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<RelativeLayout
android:id="@+id/numpad"
android:visibility="@{controlsViewModel.isOutgoingEarlyMedia ? View.VISIBLE : View.INVISIBLE, default=invisible}"
android:onClick="@{() -> controlsViewModel.showNumpad()}"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintDimensionRatio="W,1:1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/button_background"
android:padding="10dp"
android:src="@drawable/icon_call_numpad"
android:contentDescription="@string/content_description_show_numpad"/>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>

View file

@ -12,7 +12,7 @@
type="org.linphone.activities.voip.viewmodels.ControlsViewModel" /> type="org.linphone.activities.voip.viewmodels.ControlsViewModel" />
</data> </data>
<RelativeLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/voipBackgroundColor"> android:background="?attr/voipBackgroundColor">
@ -22,100 +22,93 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/top_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<ProgressBar <ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:indeterminate="true" android:indeterminate="true"
android:indeterminateDrawable="@drawable/icon_spinner_rotating"/> android:indeterminateDrawable="@drawable/icon_spinner_rotating"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/incoming_call_title"
style="@style/call_header_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
style="@style/call_header_title" android:text="@string/call_incoming_title"
android:text="@string/call_incoming_title"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progress" />
<Chronometer <Chronometer
android:id="@+id/incoming_call_timer" android:id="@+id/incoming_call_timer"
style="@style/call_header_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
style="@style/call_header_title" /> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
</LinearLayout> app:layout_constraintTop_toBottomOf="@id/incoming_call_title" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/buttons"
android:layout_below="@id/top_info"
android:layout_centerInParent="true"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp"
android:gravity="center"
android:orientation="vertical">
<include <include
android:id="@+id/avatar" android:id="@+id/avatar"
layout="@layout/voip_contact_avatar_alt" layout="@layout/voip_contact_avatar_alt"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" android:layout_margin="10dp"
app:data="@{callsViewModel.currentCallData}" /> app:data="@{callsViewModel.currentCallData}"
app:layout_constraintBottom_toTopOf="@id/caller_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_max="@dimen/voip_contact_avatar_max_height"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/incoming_call_timer"
app:layout_constraintVertical_chainStyle="packed" />
<TextView <TextView
android:id="@+id/caller_name"
style="@style/call_header_title" style="@style/call_header_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:text="@{callsViewModel.currentCallData.contact.fullName ?? callsViewModel.currentCallData.displayName, default=`Bilbo Baggins`}" /> android:maxLines="1"
android:text="@{callsViewModel.currentCallData.contact.fullName ?? callsViewModel.currentCallData.displayName, default=`Bilbo Baggins`}"
app:layout_constraintBottom_toTopOf="@id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/avatar" />
<TextView <TextView
android:id="@+id/textView"
style="@style/call_header_subtitle" style="@style/call_header_subtitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_margin="5dp"
android:ellipsize="end"
android:gravity="center" android:gravity="center"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:text="@{callsViewModel.currentCallData.address, default=`sip:bilbo.baggins@sip.linphone.org`}"
android:text="@{callsViewModel.currentCallData.address, default=`sip:bilbo.baggins@sip.linphone.org`}" /> app:layout_constraintBottom_toTopOf="@id/buttons"
app:layout_constraintEnd_toEndOf="parent"
</LinearLayout> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/caller_name" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp">
<include <include
android:id="@+id/buttons"
layout="@layout/voip_buttons_incoming" layout="@layout/voip_buttons_incoming"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="@dimen/voip_buttons_fragment_size" android:layout_height="@dimen/voip_buttons_fragment_size"
app:layout_constraintStart_toStartOf="parent" android:layout_margin="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_max="@dimen/voip_buttons_max_width" app:layout_constraintWidth_max="@dimen/voip_buttons_max_width"
app:viewModel="@{controlsViewModel}" /> app:viewModel="@{controlsViewModel}" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
</layout> </layout>

View file

@ -12,115 +12,108 @@
type="org.linphone.activities.voip.viewmodels.ControlsViewModel" /> type="org.linphone.activities.voip.viewmodels.ControlsViewModel" />
</data> </data>
<RelativeLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/voipBackgroundColor"> android:background="?attr/voipBackgroundColor">
<LinearLayout
android:id="@+id/top_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<ProgressBar <ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:indeterminate="true" android:indeterminate="true"
android:indeterminateDrawable="@drawable/icon_spinner_rotating"/> android:indeterminateDrawable="@drawable/icon_spinner_rotating"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/outgoing_call_title"
style="@style/call_header_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
style="@style/call_header_title" android:text="@string/call_outgoing_title"
android:text="@string/call_outgoing_title"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progress" />
<Chronometer <Chronometer
android:id="@+id/outgoing_call_timer" android:id="@+id/outgoing_call_timer"
style="@style/call_header_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
style="@style/call_header_title" /> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
</LinearLayout> app:layout_constraintTop_toBottomOf="@id/outgoing_call_title" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/buttons"
android:layout_below="@id/top_info"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical">
<include <include
android:id="@+id/avatar" android:id="@+id/avatar"
layout="@layout/voip_contact_avatar_alt" layout="@layout/voip_contact_avatar_alt"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" android:layout_margin="10dp"
app:data="@{callsViewModel.currentCallData}" app:data="@{callsViewModel.currentCallData}"
app:isConferenceCall="@{callsViewModel.currentCallData.remoteConferenceSubject.length > 0}" /> app:isConferenceCall="@{callsViewModel.currentCallData.remoteConferenceSubject.length > 0}"
app:layout_constraintBottom_toTopOf="@id/callee_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_max="@dimen/voip_contact_avatar_max_height"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/outgoing_call_timer"
app:layout_constraintVertical_chainStyle="packed" />
<TextView <TextView
android:id="@+id/callee_name"
style="@style/call_header_title" style="@style/call_header_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:text="@{callsViewModel.currentCallData.remoteConferenceSubject ?? callsViewModel.currentCallData.contact.fullName ?? callsViewModel.currentCallData.displayName, default=`Bilbo Baggins`}" /> android:maxLines="1"
android:text="@{callsViewModel.currentCallData.remoteConferenceSubject ?? callsViewModel.currentCallData.contact.fullName ?? callsViewModel.currentCallData.displayName, default=`Bilbo Baggins`}"
app:layout_constraintBottom_toTopOf="@id/callee_address"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/avatar" />
<TextView <TextView
android:id="@+id/callee_address"
style="@style/call_header_subtitle" style="@style/call_header_subtitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_margin="5dp"
android:ellipsize="end"
android:gravity="center" android:gravity="center"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:text="@{callsViewModel.currentCallData.remoteConferenceSubject.length > 0 ? @string/conference : callsViewModel.currentCallData.address, default=`sip:bilbo.baggins@sip.linphone.org`}"
android:text="@{callsViewModel.currentCallData.remoteConferenceSubject.length > 0 ? @string/conference : callsViewModel.currentCallData.address, default=`sip:bilbo.baggins@sip.linphone.org`}" /> app:layout_constraintBottom_toTopOf="@id/buttons"
app:layout_constraintEnd_toEndOf="parent"
</LinearLayout> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/callee_name" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp">
<include <include
android:id="@+id/buttons"
layout="@layout/voip_buttons_outgoing" layout="@layout/voip_buttons_outgoing"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="@dimen/voip_buttons_fragment_size" android:layout_height="@dimen/voip_buttons_fragment_size"
app:layout_constraintStart_toStartOf="parent" android:layout_margin="10dp"
app:layout_constraintEnd_toEndOf="parent" app:controlsViewModel="@{controlsViewModel}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintWidth_max="350dp" app:layout_constraintEnd_toEndOf="parent"
app:controlsViewModel="@{controlsViewModel}" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_max="350dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ViewStub <ViewStub
android:id="@+id/stub_numpad" android:id="@+id/stub_numpad"
android:layout="@layout/voip_numpad"
android:visibility="@{controlsViewModel.numpadVisible ? View.VISIBLE : View.GONE, default=gone}"
app:inflatedVisibility="@{controlsViewModel.numpadVisible ? View.VISIBLE : View.GONE}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:controlsViewModel="@{controlsViewModel}"/> android:layout="@layout/voip_numpad"
android:visibility="@{controlsViewModel.numpadVisible ? View.VISIBLE : View.GONE, default=gone}"
app:controlsViewModel="@{controlsViewModel}"
app:inflatedVisibility="@{controlsViewModel.numpadVisible ? View.VISIBLE : View.GONE}" />
</RelativeLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />
@ -11,47 +12,54 @@
type="Integer" /> type="Integer" />
</data> </data>
<RelativeLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:visibility="@{inflatedVisibility}" android:background="@color/voip_translucent_popup_background"
android:focusable="true"
android:clickable="true" android:clickable="true"
android:background="@color/voip_translucent_popup_background"> android:focusable="true"
android:visibility="@{inflatedVisibility}">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical">
<ImageView <ImageView
android:onClick="@{() -> data.resume()}" android:id="@+id/resume_call"
android:layout_width="200dp" android:layout_width="200dp"
android:layout_height="200dp" android:layout_height="200dp"
android:padding="40dp"
android:background="@drawable/shape_orange_circle" android:background="@drawable/shape_orange_circle"
android:contentDescription="@null"
android:onClick="@{() -> data.resume()}"
android:padding="40dp"
android:src="@drawable/voip_conference_play_big" android:src="@drawable/voip_conference_play_big"
android:contentDescription="@null"/> app:layout_constraintBottom_toTopOf="@id/paused_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<TextView <TextView
android:id="@+id/paused_title"
style="@style/conference_paused_title_font"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:gravity="center" android:gravity="center"
style="@style/conference_paused_title_font" android:text="@string/call_locally_paused_title"
android:text="@string/call_locally_paused_title"/> app:layout_constraintBottom_toTopOf="@id/paused_subtitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/resume_call" />
<TextView <TextView
android:id="@+id/paused_subtitle"
style="@style/conference_paused_subtitle_font"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
style="@style/conference_paused_subtitle_font" android:text="@string/call_locally_paused_subtitle"
android:text="@string/call_locally_paused_subtitle"/> app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/paused_title" />
</LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
</layout> </layout>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />
@ -8,34 +9,41 @@
type="Integer" /> type="Integer" />
</data> </data>
<RelativeLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:visibility="@{inflatedVisibility}" android:background="@color/voip_translucent_popup_background"
android:focusable="true"
android:clickable="true" android:clickable="true"
android:background="@color/voip_translucent_popup_background"> android:focusable="true"
android:visibility="@{inflatedVisibility}">
<ImageView <ImageView
android:id="@+id/paused_icon" android:id="@+id/paused_call"
android:layout_width="200dp" android:layout_width="200dp"
android:layout_height="200dp" android:layout_height="200dp"
android:layout_centerInParent="true"
android:background="@drawable/shape_orange_circle" android:background="@drawable/shape_orange_circle"
android:contentDescription="@null" android:contentDescription="@null"
android:padding="40dp" android:padding="40dp"
android:src="@drawable/voip_conference_paused_big" /> android:src="@drawable/voip_conference_paused_big"
app:layout_constraintBottom_toTopOf="@id/paused_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<TextView <TextView
android:id="@+id/paused_title"
style="@style/conference_paused_title_font" style="@style/conference_paused_title_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/paused_icon"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:gravity="center" android:gravity="center"
android:text="@string/call_remotely_paused_title" /> android:text="@string/call_remotely_paused_title"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/paused_call" />
</RelativeLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>

View file

@ -18,37 +18,42 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/voip_translucent_popup_background"
android:clickable="true" android:clickable="true"
android:visibility="@{inflatedVisibility}" android:visibility="@{inflatedVisibility}">
android:background="@color/voip_translucent_popup_background">
<RelativeLayout <View
android:id="@+id/background"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="80dp"
android:layout_marginBottom="70dp"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginTop="80dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginBottom="70dp"
android:background="@drawable/shape_call_popup_background"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintWidth_max="@dimen/voip_views_max_width" app:layout_constraintStart_toStartOf="parent"
android:background="@drawable/shape_call_popup_background"> app:layout_constraintWidth_max="@dimen/voip_views_max_width" />
<ImageView <ImageView
android:id="@+id/hide_stats" android:id="@+id/hide_stats"
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="40dp" android:layout_height="40dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_margin="10dp" android:layout_margin="10dp"
android:contentDescription="@string/content_description_hide_statistics"
android:onClick="@{() -> controlsViewModel.hideCallStats()}" android:onClick="@{() -> controlsViewModel.hideCallStats()}"
android:src="@drawable/icon_cancel_alt" android:src="@drawable/icon_cancel_alt"
android:contentDescription="@string/content_description_hide_statistics"/> app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintTop_toTopOf="@id/background" />
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="0dp"
android:layout_below="@id/hide_stats" android:layout_below="@id/hide_stats"
app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintStart_toStartOf="@id/background"
app:layout_constraintTop_toBottomOf="@id/hide_stats"
app:layout_constraintBottom_toBottomOf="@id/background"
android:layout_marginBottom="10dp"> android:layout_marginBottom="10dp">
<LinearLayout <LinearLayout
@ -60,8 +65,6 @@
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>
<import type="android.view.View" /> <import type="android.view.View" />
@ -11,47 +12,54 @@
type="Integer" /> type="Integer" />
</data> </data>
<RelativeLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:visibility="@{inflatedVisibility}" android:background="@color/voip_translucent_popup_background"
android:focusable="true"
android:clickable="true" android:clickable="true"
android:background="@color/voip_translucent_popup_background"> android:focusable="true"
android:visibility="@{inflatedVisibility}">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical">
<ImageView <ImageView
android:onClick="@{() -> conferenceViewModel.resumeConference()}" android:id="@+id/resume_conference"
android:layout_width="200dp" android:layout_width="200dp"
android:layout_height="200dp" android:layout_height="200dp"
android:padding="40dp"
android:background="@drawable/shape_orange_circle" android:background="@drawable/shape_orange_circle"
android:contentDescription="@null"
android:onClick="@{() -> conferenceViewModel.resumeConference()}"
android:padding="40dp"
android:src="@drawable/voip_conference_play_big" android:src="@drawable/voip_conference_play_big"
android:contentDescription="@null"/> app:layout_constraintBottom_toTopOf="@id/out_of_conf_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<TextView <TextView
android:id="@+id/out_of_conf_title"
style="@style/conference_paused_title_font"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:gravity="center" android:gravity="center"
style="@style/conference_paused_title_font" android:text="@string/conference_paused_title"
android:text="@string/conference_paused_title"/> app:layout_constraintBottom_toTopOf="@id/out_of_conf_subtitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/resume_conference" />
<TextView <TextView
android:id="@+id/out_of_conf_subtitle"
style="@style/conference_paused_subtitle_font"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
style="@style/conference_paused_subtitle_font" android:text="@string/conference_paused_subtitle"
android:text="@string/conference_paused_subtitle"/> app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/out_of_conf_title" />
</LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
</layout> </layout>

View file

@ -15,7 +15,7 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:maxHeight="200dp"> android:maxHeight="@dimen/voip_contact_avatar_max_height">
<ImageView <ImageView
android:layout_width="match_parent" android:layout_width="match_parent"

View file

@ -9,85 +9,106 @@
type="org.linphone.activities.main.viewmodels.DialogViewModel" /> type="org.linphone.activities.main.viewmodels.DialogViewModel" />
</data> </data>
<LinearLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center" android:clickable="true"
android:orientation="vertical" android:focusable="true">
android:focusable="true"
android:clickable="true">
<LinearLayout <View
android:id="@+id/background"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="0dp"
android:layout_margin="10dp" android:layout_marginStart="10dp"
android:orientation="vertical" android:layout_marginEnd="10dp"
android:background="@drawable/shape_dialog_background"> android:background="@drawable/shape_dialog_background"
app:layout_constraintTop_toTopOf="@id/dialog_message"
app:layout_constraintBottom_toBottomOf="@id/bottom_barrier"/>
<TextView <TextView
android:id="@+id/cancel_button"
style="@style/big_orange_button_font"
android:layout_width="0dp"
app:layout_constraintWidth_max="@dimen/voip_dialog_button_max_width"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:background="@drawable/shape_rect_gray_button"
android:gravity="center"
android:onClick="@{() -> viewModel.onCancelClicked()}"
android:padding="10dp"
android:text="@{viewModel.cancelLabel, default=Cancel}"
android:visibility="@{viewModel.showCancel ? View.VISIBLE : View.GONE}"
app:layout_constraintEnd_toStartOf="@id/delete_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@id/background"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"/>
<TextView
android:id="@+id/delete_button"
style="@style/big_orange_button_font"
android:layout_width="0dp"
app:layout_constraintWidth_max="@dimen/voip_dialog_button_max_width"
android:layout_height="wrap_content"
android:background="@drawable/shape_rect_orange_button"
android:gravity="center"
android:onClick="@{() -> viewModel.onDeleteClicked()}"
android:padding="10dp"
android:text="@{viewModel.deleteLabel, default=Delete}"
android:visibility="@{viewModel.showDelete ? View.VISIBLE : View.GONE}"
app:layout_constraintEnd_toStartOf="@id/ok_button"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/cancel_button" />
<TextView
android:id="@+id/ok_button"
style="@style/big_orange_button_font"
android:layout_width="0dp"
app:layout_constraintWidth_max="@dimen/voip_dialog_button_max_width"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:background="@drawable/shape_rect_green_button"
android:gravity="center"
android:onClick="@{() -> viewModel.onOkClicked()}"
android:padding="10dp"
android:text="@{viewModel.okLabel, default=OK}"
android:visibility="@{viewModel.showOk ? View.VISIBLE : View.GONE}"
app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/delete_button" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/top_barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="top"
app:barrierMargin="-10dp"
app:constraint_referenced_ids="ok_button,delete_button,cancel_button"/>
<androidx.constraintlayout.widget.Barrier
android:id="@+id/bottom_barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:barrierMargin="20dp"
app:constraint_referenced_ids="ok_button,delete_button,cancel_button"/>
<TextView
android:id="@+id/dialog_message"
style="@style/dialog_message_font"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:padding="10dp"
android:layout_marginTop="20dp"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
style="@style/dialog_message_font"
android:text="@{viewModel.message, default=Message}"/>
<com.google.android.flexbox.FlexboxLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:gravity="center" android:gravity="center"
app:flexWrap="nowrap" android:text="@{viewModel.message, default=Message}"
app:alignItems="center" app:layout_constraintBottom_toTopOf="@id/top_barrier"
app:justifyContent="space_around"> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView </androidx.constraintlayout.widget.ConstraintLayout>
android:onClick="@{() -> viewModel.onCancelClicked()}"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:padding="10dp"
android:gravity="center"
android:background="@drawable/shape_rect_gray_button"
android:visibility="@{viewModel.showCancel ? View.VISIBLE : View.GONE}"
android:text="@{viewModel.cancelLabel, default=Cancel}"
style="@style/big_orange_button_font"/>
<TextView
android:onClick="@{() -> viewModel.onDeleteClicked()}"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:padding="10dp"
android:gravity="center"
android:background="@drawable/shape_rect_orange_button"
android:visibility="@{viewModel.showDelete ? View.VISIBLE : View.GONE}"
android:text="@{viewModel.deleteLabel, default=Delete}"
style="@style/big_orange_button_font"/>
<TextView
android:onClick="@{() -> viewModel.onOkClicked()}"
android:layout_width="137dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:padding="10dp"
android:gravity="center"
android:background="@drawable/shape_rect_green_button"
android:visibility="@{viewModel.showOk ? View.VISIBLE : View.GONE}"
android:text="@{viewModel.okLabel, default=OK}"
style="@style/big_orange_button_font"/>
</com.google.android.flexbox.FlexboxLayout>
</LinearLayout>
</LinearLayout>
</layout> </layout>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>
<import type="android.view.View"/> <import type="android.view.View"/>
@ -11,49 +12,59 @@
type="android.view.View.OnClickListener" /> type="android.view.View.OnClickListener" />
</data> </data>
<LinearLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center" android:background="@color/voip_translucent_popup_background"
android:orientation="vertical"
android:focusable="true"
android:clickable="true" android:clickable="true"
android:background="@color/voip_translucent_popup_background"> android:focusable="true">
<LinearLayout <View
android:id="@+id/background"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="0dp"
android:layout_margin="10dp" android:layout_marginStart="10dp"
android:orientation="vertical" android:layout_marginTop="-20dp"
android:background="@drawable/shape_dialog_background"> android:layout_marginEnd="10dp"
android:layout_marginBottom="-20dp"
android:background="@drawable/shape_dialog_background"
app:layout_constraintBottom_toBottomOf="@id/ok_button"
app:layout_constraintTop_toTopOf="@id/dialog_message"/>
<TextView <TextView
android:layout_width="match_parent" android:id="@+id/dialog_message"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="20dp"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
style="@style/dialog_message_font" style="@style/dialog_message_font"
android:text="@{dialogMessage}"/> android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:layout_marginEnd="30dp"
android:layout_marginBottom="20dp"
android:gravity="center"
android:text="@{dialogMessage}"
app:layout_constraintBottom_toTopOf="@id/ok_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<TextView <TextView
android:onClick="@{dismissClickListener}" android:id="@+id/ok_button"
style="@style/big_orange_button_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_marginTop="20dp"
android:layout_marginBottom="20dp"
android:background="@drawable/shape_rect_orange_button"
android:onClick="@{dismissClickListener}"
android:paddingLeft="40dp" android:paddingLeft="40dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingRight="40dp" android:paddingRight="40dp"
android:paddingBottom="8dp" android:paddingBottom="8dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:layout_gravity="center"
android:background="@drawable/shape_rect_orange_button"
android:text="@string/dialog_ok" android:text="@string/dialog_ok"
style="@style/big_orange_button_font"/> app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</layout> </layout>

View file

@ -15,144 +15,184 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/voip_translucent_popup_background"
android:clickable="true" android:clickable="true"
android:visibility="@{inflatedVisibility}" android:visibility="@{inflatedVisibility}">
android:background="@color/voip_translucent_popup_background">
<RelativeLayout <View
android:id="@+id/background"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginTop="80dp" android:layout_marginTop="80dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
android:layout_marginBottom="70dp" android:layout_marginBottom="70dp"
app:layout_constraintStart_toStartOf="parent" android:background="@drawable/shape_call_popup_background"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintWidth_max="@dimen/voip_views_max_width" app:layout_constraintStart_toStartOf="parent"
android:background="@drawable/shape_call_popup_background"> app:layout_constraintWidth_max="@dimen/voip_views_max_width" />
<ImageView <ImageView
android:id="@+id/hide_numpad" android:id="@+id/hide_numpad"
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="40dp" android:layout_height="40dp"
android:layout_alignParentTop="true" android:layout_margin="10dp"
android:layout_alignParentEnd="true"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp"
android:contentDescription="@string/content_description_hide_numpad" android:contentDescription="@string/content_description_hide_numpad"
android:onClick="@{() -> controlsViewModel.hideNumpad()}" android:onClick="@{() -> controlsViewModel.hideNumpad()}"
android:src="@drawable/icon_cancel_alt" /> android:src="@drawable/icon_cancel_alt"
app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintTop_toTopOf="@id/background" />
<TextView <TextView
android:id="@+id/entered_dtmfs" android:id="@+id/entered_dtmfs"
style="@style/call_dtmf_history_font" style="@style/call_dtmf_history_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/hide_numpad"
android:layout_centerHorizontal="true"
android:text="@{controlsViewModel.dtmfHistory}"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/entered_dtmfs">
<com.google.android.flexbox.FlexboxLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="wrap_content"
app:alignContent="space_around" android:layout_margin="10dp"
app:alignItems="center" android:gravity="center_horizontal"
app:flexWrap="wrap" android:text="@{controlsViewModel.dtmfHistory, default=`0123456`}"
app:justifyContent="space_around" app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="@id/background"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/hide_numpad" />
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHeight_max="350dp"
app:layout_constraintWidth_max="250dp">
<ImageView <ImageView
android:id="@+id/dtmf_1"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_1" android:contentDescription="@string/content_description_numpad_1"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('1')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('1')}"
android:src="@drawable/voip_numpad_1" /> android:src="@drawable/voip_numpad_1"
app:layout_constraintBottom_toTopOf="@id/dtmf_4"
app:layout_constraintEnd_toStartOf="@id/dtmf_2"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="@id/background"
app:layout_constraintTop_toBottomOf="@id/entered_dtmfs"
app:layout_constraintVertical_chainStyle="spread" />
<ImageView <ImageView
android:id="@+id/dtmf_2"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_2" android:contentDescription="@string/content_description_numpad_2"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('2')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('2')}"
android:src="@drawable/voip_numpad_2" /> android:src="@drawable/voip_numpad_2"
app:layout_constraintBottom_toTopOf="@id/dtmf_5"
app:layout_constraintEnd_toStartOf="@id/dtmf_3"
app:layout_constraintStart_toEndOf="@id/dtmf_1"
app:layout_constraintTop_toBottomOf="@id/entered_dtmfs"
app:layout_constraintVertical_chainStyle="spread" />
<ImageView <ImageView
android:id="@+id/dtmf_3"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_3" android:contentDescription="@string/content_description_numpad_3"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('3')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('3')}"
android:src="@drawable/voip_numpad_3" /> android:src="@drawable/voip_numpad_3"
app:layout_constraintBottom_toTopOf="@id/dtmf_6"
app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintStart_toEndOf="@id/dtmf_2"
app:layout_constraintTop_toBottomOf="@id/entered_dtmfs"
app:layout_constraintVertical_chainStyle="spread" />
<ImageView <ImageView
android:id="@+id/dtmf_4"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_4" android:contentDescription="@string/content_description_numpad_4"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('4')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('4')}"
android:src="@drawable/voip_numpad_4" android:src="@drawable/voip_numpad_4"
app:layout_wrapBefore="true" /> app:layout_constraintBottom_toTopOf="@id/dtmf_7"
app:layout_constraintEnd_toStartOf="@id/dtmf_5"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="@id/background"
app:layout_constraintTop_toBottomOf="@id/dtmf_1" />
<ImageView <ImageView
android:id="@+id/dtmf_5"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_5" android:contentDescription="@string/content_description_numpad_5"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('5')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('5')}"
android:src="@drawable/voip_numpad_5" /> android:src="@drawable/voip_numpad_5"
app:layout_constraintBottom_toTopOf="@id/dtmf_8"
app:layout_constraintEnd_toStartOf="@id/dtmf_6"
app:layout_constraintStart_toEndOf="@id/dtmf_4"
app:layout_constraintTop_toBottomOf="@id/dtmf_2" />
<ImageView <ImageView
android:id="@+id/dtmf_6"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_6" android:contentDescription="@string/content_description_numpad_6"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('6')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('6')}"
android:src="@drawable/voip_numpad_6" /> android:src="@drawable/voip_numpad_6"
app:layout_constraintBottom_toTopOf="@id/dtmf_9"
app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintStart_toEndOf="@id/dtmf_5"
app:layout_constraintTop_toBottomOf="@id/dtmf_3" />
<ImageView <ImageView
android:id="@+id/dtmf_7"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_7" android:contentDescription="@string/content_description_numpad_7"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('7')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('7')}"
android:src="@drawable/voip_numpad_7" android:src="@drawable/voip_numpad_7"
app:layout_wrapBefore="true" /> app:layout_constraintBottom_toTopOf="@id/dtmf_star"
app:layout_constraintEnd_toStartOf="@id/dtmf_8"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="@id/background"
app:layout_constraintTop_toBottomOf="@id/dtmf_4" />
<ImageView <ImageView
android:id="@+id/dtmf_8"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_8" android:contentDescription="@string/content_description_numpad_8"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('8')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('8')}"
android:src="@drawable/voip_numpad_8" /> android:src="@drawable/voip_numpad_8"
app:layout_constraintBottom_toTopOf="@id/dtmf_0"
app:layout_constraintEnd_toStartOf="@id/dtmf_9"
app:layout_constraintStart_toEndOf="@id/dtmf_7"
app:layout_constraintTop_toBottomOf="@id/dtmf_5" />
<ImageView <ImageView
android:id="@+id/dtmf_9"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_9" android:contentDescription="@string/content_description_numpad_9"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('9')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('9')}"
android:src="@drawable/voip_numpad_9" /> android:src="@drawable/voip_numpad_9"
app:layout_constraintBottom_toTopOf="@id/dtmf_sharp"
app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintStart_toEndOf="@id/dtmf_8"
app:layout_constraintTop_toBottomOf="@id/dtmf_6" />
<ImageView <ImageView
android:id="@+id/dtmf_star"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_star" android:contentDescription="@string/content_description_numpad_star"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('*')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('*')}"
android:src="@drawable/voip_numpad_star" android:src="@drawable/voip_numpad_star"
app:layout_wrapBefore="true" /> app:layout_constraintBottom_toBottomOf="@id/background"
app:layout_constraintEnd_toStartOf="@id/dtmf_0"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="@id/background"
app:layout_constraintTop_toBottomOf="@id/dtmf_7" />
<ImageView <ImageView
android:id="@+id/dtmf_0"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_0" android:contentDescription="@string/content_description_numpad_0"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('0')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('0')}"
android:src="@drawable/voip_numpad_0" /> android:src="@drawable/voip_numpad_0"
app:layout_constraintBottom_toBottomOf="@id/background"
app:layout_constraintEnd_toStartOf="@id/dtmf_sharp"
app:layout_constraintStart_toEndOf="@id/dtmf_star"
app:layout_constraintTop_toBottomOf="@id/dtmf_8" />
<ImageView <ImageView
android:id="@+id/dtmf_sharp"
style="@style/call_numpad_digit" style="@style/call_numpad_digit"
android:contentDescription="@string/content_description_numpad_sharp" android:contentDescription="@string/content_description_numpad_sharp"
android:onClick="@{() -> controlsViewModel.handleDtmfClick('#')}" android:onClick="@{() -> controlsViewModel.handleDtmfClick('#')}"
android:src="@drawable/voip_numpad_hash" /> android:src="@drawable/voip_numpad_hash"
app:layout_constraintBottom_toBottomOf="@id/background"
</com.google.android.flexbox.FlexboxLayout> app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintStart_toEndOf="@id/dtmf_0"
</androidx.constraintlayout.widget.ConstraintLayout> app:layout_constraintTop_toBottomOf="@id/dtmf_9" />
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -57,4 +57,6 @@
<dimen name="voip_call_header_height">60dp</dimen> <dimen name="voip_call_header_height">60dp</dimen>
<dimen name="voip_conference_active_speaker_miniature_avatar_size">50dp</dimen> <dimen name="voip_conference_active_speaker_miniature_avatar_size">50dp</dimen>
<dimen name="voip_conference_participant_mic_muted_icon_size">30dp</dimen> <dimen name="voip_conference_participant_mic_muted_icon_size">30dp</dimen>
<dimen name="voip_dialog_button_max_width">137dp</dimen>
<dimen name="voip_contact_avatar_max_height">200dp</dimen>
</resources> </resources>