From 3343b728fa8f56c1a5da9dcf54c0ab8f24d2f6bb Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 2 May 2024 16:57:44 +0200 Subject: [PATCH] Added no participants selected placeholder --- .../org/linphone/utils/DataBindingUtils.kt | 33 ++++++++++++++++++- .../res/layout/address_selected_list_cell.xml | 2 +- .../generic_add_participants_fragment.xml | 3 +- ...ple_participants_selection_placeholder.xml | 11 +++++++ .../main/res/layout/start_call_fragment.xml | 3 +- .../main/res/layout/start_chat_fragment.xml | 3 +- app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/dimen.xml | 2 ++ app/src/main/res/values/strings.xml | 1 + 9 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/layout/multiple_participants_selection_placeholder.xml diff --git a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt index 1acba743f..a1a347501 100644 --- a/app/src/main/java/org/linphone/utils/DataBindingUtils.kt +++ b/app/src/main/java/org/linphone/utils/DataBindingUtils.kt @@ -86,7 +86,18 @@ fun setEntries( entries: List?, layoutId: Int ) { - setEntries(viewGroup, entries, layoutId, null) + setEntries(viewGroup, entries, layoutId, null, null) +} + +@UiThread +@BindingAdapter("entries", "layout", "emptyPlaceholder") +fun setEntries( + viewGroup: ViewGroup, + entries: List?, + layoutId: Int, + emptyPlaceholderLayoutId: Int +) { + setEntries(viewGroup, entries, layoutId, emptyPlaceholderLayoutId, null) } @UiThread @@ -96,8 +107,21 @@ fun setEntries( entries: List?, layoutId: Int, onLongClick: View.OnLongClickListener? +) { + setEntries(viewGroup, entries, layoutId, null, onLongClick) +} + +@UiThread +@BindingAdapter("entries", "layout", "emptyPlaceholder", "onLongClick") +fun setEntries( + viewGroup: ViewGroup, + entries: List?, + layoutId: Int, + emptyPlaceholderLayoutId: Int?, + onLongClick: View.OnLongClickListener? ) { viewGroup.removeAllViews() + if (!entries.isNullOrEmpty()) { val inflater = viewGroup.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater for (entry in entries) { @@ -124,6 +148,13 @@ fun setEntries( viewGroup.addView(binding.root) } + } else if (emptyPlaceholderLayoutId != null) { + val placeholder = LayoutInflater.from(viewGroup.context).inflate( + emptyPlaceholderLayoutId, + viewGroup, + false + ) + viewGroup.addView(placeholder) } } diff --git a/app/src/main/res/layout/address_selected_list_cell.xml b/app/src/main/res/layout/address_selected_list_cell.xml index a396010c0..3c81d5dfb 100644 --- a/app/src/main/res/layout/address_selected_list_cell.xml +++ b/app/src/main/res/layout/address_selected_list_cell.xml @@ -12,7 +12,7 @@ diff --git a/app/src/main/res/layout/generic_add_participants_fragment.xml b/app/src/main/res/layout/generic_add_participants_fragment.xml index 264613398..70ad7af83 100644 --- a/app/src/main/res/layout/generic_add_participants_fragment.xml +++ b/app/src/main/res/layout/generic_add_participants_fragment.xml @@ -82,7 +82,8 @@ android:layout_height="wrap_content" android:orientation="horizontal" entries="@{viewModel.selection}" - layout="@{@layout/address_selected_list_cell}"/> + layout="@{@layout/address_selected_list_cell}" + emptyPlaceholder="@{@layout/multiple_participants_selection_placeholder}"/> diff --git a/app/src/main/res/layout/multiple_participants_selection_placeholder.xml b/app/src/main/res/layout/multiple_participants_selection_placeholder.xml new file mode 100644 index 000000000..342894087 --- /dev/null +++ b/app/src/main/res/layout/multiple_participants_selection_placeholder.xml @@ -0,0 +1,11 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/start_call_fragment.xml b/app/src/main/res/layout/start_call_fragment.xml index 00a383d48..440ceb585 100644 --- a/app/src/main/res/layout/start_call_fragment.xml +++ b/app/src/main/res/layout/start_call_fragment.xml @@ -96,7 +96,8 @@ android:layout_height="wrap_content" android:orientation="horizontal" entries="@{viewModel.selection}" - layout="@{@layout/address_selected_list_cell}"/> + layout="@{@layout/address_selected_list_cell}" + emptyPlaceholder="@{@layout/multiple_participants_selection_placeholder}"/> diff --git a/app/src/main/res/layout/start_chat_fragment.xml b/app/src/main/res/layout/start_chat_fragment.xml index 9cdc56753..f0d02c4b7 100644 --- a/app/src/main/res/layout/start_chat_fragment.xml +++ b/app/src/main/res/layout/start_chat_fragment.xml @@ -92,7 +92,8 @@ android:layout_height="wrap_content" android:orientation="horizontal" entries="@{viewModel.selection}" - layout="@{@layout/address_selected_list_cell}"/> + layout="@{@layout/address_selected_list_cell}" + emptyPlaceholder="@{@layout/multiple_participants_selection_placeholder}"/> diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 48371f5f9..5a4e6111e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -636,6 +636,7 @@ Violet + Les participants selectionnés apparaîtront ici Erreur de connexion au compte Vous n\'êtes pas connecté à internet Opération en cours, merci de patienter… diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml index d15a533a0..ff69e0685 100644 --- a/app/src/main/res/values/dimen.xml +++ b/app/src/main/res/values/dimen.xml @@ -39,6 +39,8 @@ 21sp 36sp + 90dp + 11dp 20dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 405e3e56e..2ef50995c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -672,6 +672,7 @@ Purple + Selected participants will appear here Account connection error You aren\'t connected to internet Operation in progress, please wait