Started conference extra actions menu

This commit is contained in:
Sylvain Berfini 2023-10-26 13:50:49 +02:00
parent 36f57be6cc
commit 425722ef65
11 changed files with 298 additions and 29 deletions

View file

@ -274,8 +274,6 @@ class ActiveCallFragment : GenericCallFragment() {
override fun onSlide(bottomSheet: View, slideOffset: Float) {}
})
binding.bottomBar.chat.isEnabled = false // TODO FIXME : remove later when chat will be available
}
@SuppressLint("ClickableViewAccessibility")

View file

@ -209,9 +209,6 @@ class ContactFragment : GenericFragment() {
goBack()
}
}
// TODO: remove later
binding.chat.isEnabled = false
}
override fun onPause() {

View file

@ -128,9 +128,6 @@ class HistoryContactFragment : GenericFragment() {
goBack() // TODO FIXME : issue with tablet when pane can't be closed
}
}
// TODO: remove later
binding.chat.isEnabled = false
}
private fun copyNumberOrAddressToClipboard(value: String) {

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="256"
android:viewportHeight="256">
<path
android:pathData="M184,112a8,8 0,0 1,-8 8L112,120a8,8 0,0 1,0 -16h64A8,8 0,0 1,184 112ZM176,136L112,136a8,8 0,0 0,0 16h64a8,8 0,0 0,0 -16ZM224,48L224,208a16,16 0,0 1,-16 16L48,224a16,16 0,0 1,-16 -16L32,48A16,16 0,0 1,48 32L208,32A16,16 0,0 1,224 48ZM48,208L72,208L72,48L48,48ZM208,208L208,48L88,48L88,208L208,208Z"
android:fillColor="#4e6074"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="256"
android:viewportHeight="256">
<path
android:pathData="M232,56L232,200a16,16 0,0 1,-16 16L144,216a8,8 0,0 1,0 -16h72L216,56L40,56L40,96a8,8 0,0 1,-16 0L24,56A16,16 0,0 1,40 40L216,40A16,16 0,0 1,232 56ZM32,184a8,8 0,0 0,0 16,8 8,0 0,1 8,8 8,8 0,0 0,16 0A24,24 0,0 0,32 184ZM32,152a8,8 0,0 0,0 16,40 40,0 0,1 40,40 8,8 0,0 0,16 0A56.06,56.06 0,0 0,32 152ZM32,120a8,8 0,0 0,0 16,72.08 72.08,0 0,1 72,72 8,8 0,0 0,16 0A88.1,88.1 0,0 0,32 120Z"
android:fillColor="#4e6074"/>
</vector>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="48dp" />
<stroke android:color="@color/gray_main2_400" android:width="1dp"/>
</shape>

View file

@ -104,7 +104,7 @@
app:layout_constraintEnd_toEndOf="@id/calls_list"/>
<ImageView
android:id="@+id/dialer"
android:id="@+id/layout"
android:onClick="@{() -> viewModel.showNumpad()}"
android:layout_width="0dp"
android:layout_height="@dimen/call_button_size"
@ -113,8 +113,8 @@
android:padding="@dimen/call_button_icon_padding"
android:src="@drawable/dialer"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="@id/dialer_label"
app:layout_constraintStart_toStartOf="@id/dialer_label"
app:layout_constraintEnd_toEndOf="@id/layout_label"
app:layout_constraintStart_toStartOf="@id/layout_label"
app:layout_constraintTop_toBottomOf="@id/main_actions"
app:tint="@color/in_call_button_tint_color" />
@ -198,13 +198,13 @@
android:layout_height="wrap_content"
android:paddingBottom="15dp"
android:text="@string/call_action_go_to_calls_list"
app:layout_constraintEnd_toStartOf="@id/dialer_label"
app:layout_constraintEnd_toStartOf="@id/layout_label"
app:layout_constraintStart_toEndOf="@id/new_call_label"
app:layout_constraintTop_toBottomOf="@id/calls_list"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/in_call_extra_action_label_style"
android:id="@+id/dialer_label"
android:id="@+id/layout_label"
android:onClick="@{() -> viewModel.showNumpad()}"
android:layout_width="0dp"
android:layout_height="wrap_content"
@ -222,7 +222,7 @@
android:paddingBottom="15dp"
android:text="@string/call_action_show_messages"
app:layout_constraintEnd_toStartOf="@id/pause_call_label"
app:layout_constraintStart_toEndOf="@id/dialer_label"
app:layout_constraintStart_toEndOf="@id/layout_label"
app:layout_constraintTop_toBottomOf="@id/chat" />
<androidx.appcompat.widget.AppCompatTextView

View file

@ -7,7 +7,7 @@
<import type="android.view.View" />
<import type="org.linphone.core.ChatRoom.SecurityLevel" />
<variable
name="newCallClickListener"
name="shareConferenceClickListener"
type="View.OnClickListener" />
<variable
name="callsListClickListener"
@ -77,6 +77,28 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_600"
android:id="@+id/share_conference_link"
android:onClick="@{shareConferenceClickListener}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:background="@drawable/shape_squircle_main2_400_background"
android:text="@string/conference_share_link_title"
android:textSize="18sp"
android:textColor="@color/gray_main2_400"
android:drawableStart="@drawable/share_network"
android:drawablePadding="8dp"
app:drawableTint="@color/gray_main2_400"
app:layout_constraintTop_toBottomOf="@id/waiting_for_others"
app:layout_constraintStart_toStartOf="@id/background"
app:layout_constraintEnd_toEndOf="@id/background"/>
<androidx.constraintlayout.widget.Group
android:id="@+id/header_info_visibility"
android:layout_width="wrap_content"
@ -175,10 +197,9 @@
<include
android:id="@+id/bottom_bar"
android:visibility="@{viewModel.fullScreenMode || viewModel.pipMode ? View.INVISIBLE : View.VISIBLE}"
layout="@layout/call_extra_actions"
layout="@layout/call_extra_conference_actions"
bind:viewModel="@{viewModel}"
bind:callsViewModel="@{callsViewModel}"
bind:newCallClickListener="@{newCallClickListener}"
bind:callsListClickListener="@{callsListClickListener}"/>
<include

View file

@ -11,9 +11,6 @@
<variable
name="callsListClickListener"
type="View.OnClickListener" />
<variable
name="chatClickListener"
type="View.OnClickListener" />
<variable
name="viewModel"
type="org.linphone.ui.call.viewmodel.CurrentCallViewModel" />
@ -104,7 +101,7 @@
app:layout_constraintEnd_toEndOf="@id/calls_list"/>
<ImageView
android:id="@+id/dialer"
android:id="@+id/layout"
android:onClick="@{() -> viewModel.showNumpad()}"
android:layout_width="0dp"
android:layout_height="@dimen/call_button_size"
@ -114,20 +111,19 @@
android:src="@drawable/dialer"
app:tint="@color/in_call_button_tint_color"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="@id/dialer_label"
app:layout_constraintEnd_toEndOf="@id/dialer_label"
app:layout_constraintStart_toStartOf="@id/layout_label"
app:layout_constraintEnd_toEndOf="@id/layout_label"
app:layout_constraintTop_toBottomOf="@id/main_actions" />
<ImageView
android:id="@+id/chat"
android:onClick="@{chatClickListener}"
android:layout_width="0dp"
android:layout_height="@dimen/call_button_size"
android:layout_marginTop="@dimen/call_extra_button_top_margin"
android:padding="@dimen/call_button_icon_padding"
android:background="@drawable/in_call_button_background"
android:src="@drawable/chat_teardrop_text"
app:tint="@color/in_call_button_tint_color"
android:background="@drawable/shape_round_in_call_disabled_button_background"
app:tint="@color/gray_500"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintTop_toBottomOf="@id/transfer_label"
app:layout_constraintStart_toStartOf="@id/transfer"
@ -197,16 +193,16 @@
android:text="@string/call_action_go_to_calls_list"
app:layout_constraintTop_toBottomOf="@id/calls_list"
app:layout_constraintStart_toEndOf="@id/new_call_label"
app:layout_constraintEnd_toStartOf="@id/dialer_label" />
app:layout_constraintEnd_toStartOf="@id/layout_label" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/in_call_extra_action_label_style"
android:id="@+id/dialer_label"
android:id="@+id/layout_label"
android:onClick="@{() -> viewModel.showNumpad()}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/call_action_show_dialer"
app:layout_constraintTop_toBottomOf="@id/dialer"
app:layout_constraintTop_toBottomOf="@id/layout"
app:layout_constraintStart_toEndOf="@id/calls_list_label"
app:layout_constraintEnd_toEndOf="parent" />

View file

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<variable
name="callsListClickListener"
type="View.OnClickListener" />
<variable
name="viewModel"
type="org.linphone.ui.call.viewmodel.CurrentCallViewModel" />
<variable
name="callsViewModel"
type="org.linphone.ui.call.viewmodel.CallsViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/call_all_actions_menu_height"
android:background="@color/gray_900"
app:behavior_hideable="false"
app:behavior_peekHeight="@dimen/call_main_actions_menu_height"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<include
android:id="@+id/main_actions"
layout="@layout/call_main_actions"
android:layout_width="0dp"
android:layout_height="@dimen/call_main_actions_menu_height"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
bind:showExpandToggle="@{true}"
bind:viewModel="@{viewModel}" />
<ImageView
android:id="@+id/screen_sharing"
android:layout_width="0dp"
android:layout_height="@dimen/call_button_size"
android:layout_marginTop="@dimen/call_extra_button_top_margin"
android:padding="@dimen/call_button_icon_padding"
android:src="@drawable/screencast"
android:background="@drawable/shape_round_in_call_disabled_button_background"
app:tint="@color/gray_500"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="@id/screen_sharing_label"
app:layout_constraintEnd_toEndOf="@id/screen_sharing_label"
app:layout_constraintTop_toBottomOf="@id/main_actions" />
<ImageView
android:id="@+id/participants"
android:layout_width="0dp"
android:layout_height="@dimen/call_button_size"
android:layout_marginTop="@dimen/call_extra_button_top_margin"
android:padding="@dimen/call_button_icon_padding"
android:background="@drawable/in_call_button_background"
android:src="@drawable/users"
app:tint="@color/in_call_button_tint_color"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="@id/participants_label"
app:layout_constraintEnd_toEndOf="@id/participants_label"
app:layout_constraintTop_toBottomOf="@id/main_actions" />
<ImageView
android:id="@+id/calls_list"
android:onClick="@{callsListClickListener}"
android:layout_width="0dp"
android:layout_height="@dimen/call_button_size"
android:layout_marginTop="@dimen/call_extra_button_top_margin"
android:padding="@dimen/call_button_icon_padding"
android:background="@drawable/in_call_button_background"
android:src="@drawable/calls_list"
app:tint="@color/in_call_button_tint_color"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="@id/calls_list_label"
app:layout_constraintEnd_toEndOf="@id/calls_list_label"
app:layout_constraintTop_toBottomOf="@id/main_actions" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:id="@+id/calls_count"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="40dp"
android:layout_marginTop="25dp"
android:gravity="center"
android:background="@drawable/shape_red_round"
android:text="@{String.valueOf(callsViewModel.callsCount), default=`1`}"
android:textColor="@color/white"
android:textSize="13sp"
android:paddingBottom="2dp"
android:visibility="@{callsViewModel.callsCount > 1 ? View.VISIBLE : View.GONE}"
app:layout_constraintTop_toBottomOf="@id/main_actions"
app:layout_constraintStart_toStartOf="@id/calls_list"
app:layout_constraintEnd_toEndOf="@id/calls_list"/>
<ImageView
android:id="@+id/layout"
android:layout_width="0dp"
android:layout_height="@dimen/call_button_size"
android:layout_marginTop="@dimen/call_extra_button_top_margin"
android:padding="@dimen/call_button_icon_padding"
android:background="@drawable/in_call_button_background"
android:src="@drawable/notebook"
app:tint="@color/in_call_button_tint_color"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="@id/layout_label"
app:layout_constraintEnd_toEndOf="@id/layout_label"
app:layout_constraintTop_toBottomOf="@id/main_actions" />
<ImageView
android:id="@+id/chat"
android:layout_width="0dp"
android:layout_height="@dimen/call_button_size"
android:layout_marginTop="@dimen/call_extra_button_top_margin"
android:padding="@dimen/call_button_icon_padding"
android:src="@drawable/chat_teardrop_text"
android:background="@drawable/shape_round_in_call_disabled_button_background"
app:tint="@color/gray_500"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintTop_toBottomOf="@id/screen_sharing_label"
app:layout_constraintStart_toStartOf="@id/screen_sharing"
app:layout_constraintEnd_toEndOf="@id/screen_sharing"/>
<ImageView
android:id="@+id/pause_call"
android:enabled="@{viewModel.canBePaused}"
android:selected="@{viewModel.isPaused}"
android:layout_width="0dp"
android:layout_height="@dimen/call_button_size"
android:layout_marginTop="@dimen/call_extra_button_top_margin"
android:padding="@dimen/call_button_icon_padding"
android:src="@drawable/pause_call"
android:background="@drawable/shape_round_in_call_disabled_button_background"
app:tint="@color/gray_500"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintTop_toBottomOf="@id/participants_label"
app:layout_constraintStart_toStartOf="@id/participants"
app:layout_constraintEnd_toEndOf="@id/participants"/>
<ImageView
android:id="@+id/record_call"
android:layout_width="0dp"
android:layout_height="@dimen/call_button_size"
android:layout_marginTop="@dimen/call_extra_button_top_margin"
android:padding="@dimen/call_button_icon_padding"
android:src="@drawable/record_fill"
android:selected="@{viewModel.isRecording()}"
android:background="@drawable/shape_round_in_call_disabled_button_background"
app:tint="@color/gray_500"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintTop_toBottomOf="@id/calls_list_label"
app:layout_constraintStart_toStartOf="@id/calls_list"
app:layout_constraintEnd_toEndOf="@id/calls_list" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/in_call_extra_action_label_style"
android:id="@+id/screen_sharing_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/conference_action_screen_sharing"
app:layout_constraintTop_toBottomOf="@id/screen_sharing"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/participants_label"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/in_call_extra_action_label_style"
android:id="@+id/participants_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/conference_action_show_participants"
app:layout_constraintTop_toBottomOf="@id/participants"
app:layout_constraintStart_toEndOf="@id/screen_sharing_label"
app:layout_constraintEnd_toStartOf="@id/calls_list_label" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/in_call_extra_action_label_style"
android:id="@+id/calls_list_label"
android:onClick="@{callsListClickListener}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/call_action_go_to_calls_list"
app:layout_constraintTop_toBottomOf="@id/calls_list"
app:layout_constraintStart_toEndOf="@id/participants_label"
app:layout_constraintEnd_toStartOf="@id/layout_label" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/in_call_extra_action_label_style"
android:id="@+id/layout_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/call_action_change_layout"
app:layout_constraintTop_toBottomOf="@id/layout"
app:layout_constraintStart_toEndOf="@id/calls_list_label"
app:layout_constraintEnd_toEndOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/in_call_extra_action_label_style"
android:id="@+id/chat_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingBottom="15dp"
android:text="@string/call_action_show_messages"
app:layout_constraintTop_toBottomOf="@id/chat"
app:layout_constraintStart_toStartOf="@id/screen_sharing_label"
app:layout_constraintEnd_toEndOf="@id/screen_sharing_label" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/in_call_extra_action_label_style"
android:id="@+id/pause_call_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingBottom="15dp"
android:text="@string/call_action_pause_call"
app:layout_constraintTop_toBottomOf="@id/pause_call"
app:layout_constraintStart_toStartOf="@id/participants_label"
app:layout_constraintEnd_toEndOf="@id/participants_label" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/in_call_extra_action_label_style"
android:id="@+id/record_call_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingBottom="15dp"
android:text="@string/call_action_record_call"
app:layout_constraintTop_toBottomOf="@id/record_call"
app:layout_constraintStart_toStartOf="@id/calls_list_label"
app:layout_constraintEnd_toEndOf="@id/calls_list_label" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View file

@ -411,6 +411,7 @@
<string name="call_action_resume_call">Resume</string>
<string name="call_action_record_call">Record</string>
<string name="call_action_hang_up">Hang up</string>
<string name="call_action_change_layout">Layout</string>
<string name="call_state_outgoing_progress">In progress</string>
<string name="call_state_outgoing_ringing">Ringing</string>
<string name="call_state_incoming_received">Incoming</string>
@ -428,7 +429,10 @@
<string name="calls_count_label">%s calls</string>
<string name="calls_paused_count_label">%s paused calls</string>
<string name="conference_share_link_title">Share invitation</string>
<string name="conference_call_empty">Waiting for other participants…</string>
<string name="conference_action_screen_sharing">Screen share</string>
<string name="conference_action_show_participants">Participants</string>
<string name="connection_error_for_non_default_account">Account connection error</string>