From 7da9c475e38923791bd28f683e72eef6da9327b5 Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Sun, 29 Jan 2023 12:52:34 -0600 Subject: [PATCH 1/4] Added A scroll down button + new icon + new styles for that button Signed-off-by: Julius Linus --- .../talk/controllers/ChatController.kt | 17 +++++++++++++++++ ...c_baseline_keyboard_double_arrow_down_24.xml | 8 ++++++++ app/src/main/res/layout/controller_chat.xml | 16 ++++++++++++++++ app/src/main/res/values-night/colors.xml | 4 ++++ app/src/main/res/values/colors.xml | 4 ++++ 5 files changed, 49 insertions(+) create mode 100644 app/src/main/res/drawable/ic_baseline_keyboard_double_arrow_down_24.xml diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index f734e9517..3850c8c65 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -673,6 +673,8 @@ class ChatController(args: Bundle) : } } + binding?.scrollDownButton?.setOnClickListener { binding?.messagesListView?.smoothScrollToPosition(0) } + binding?.let { viewThemeUtils.material.colorMaterialButtonPrimaryFilled(it.popupBubbleView) } binding?.messageInputView?.setPadding(0, 0, 0, 0) @@ -682,6 +684,21 @@ class ChatController(args: Bundle) : super.onScrollStateChanged(recyclerView, newState) if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { + + val offset = recyclerView.computeVerticalScrollOffset() + val extent = recyclerView.computeVerticalScrollExtent() + val range = recyclerView.computeVerticalScrollRange() + + // 0.0 is the top of the chat, 100.0 is the bottom of the chat + val scrollPercentage = 100.0f * offset / (range - extent).toFloat() + + if (scrollPercentage <= 90) { + binding?.scrollDownButton?.visibility = View.VISIBLE + + } else { + binding?.scrollDownButton?.visibility = View.INVISIBLE + } + if (newMessagesCount != 0 && layoutManager != null) { if (layoutManager!!.findFirstCompletelyVisibleItemPosition() < newMessagesCount) { newMessagesCount = 0 diff --git a/app/src/main/res/drawable/ic_baseline_keyboard_double_arrow_down_24.xml b/app/src/main/res/drawable/ic_baseline_keyboard_double_arrow_down_24.xml new file mode 100644 index 000000000..a864e6be6 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_keyboard_double_arrow_down_24.xml @@ -0,0 +1,8 @@ + + + + diff --git a/app/src/main/res/layout/controller_chat.xml b/app/src/main/res/layout/controller_chat.xml index 97c2b3646..67958a959 100644 --- a/app/src/main/res/layout/controller_chat.xml +++ b/app/src/main/res/layout/controller_chat.xml @@ -3,6 +3,8 @@ ~ ~ @author Mario Danic ~ @author Andy Scherzinger + ~ @author Julius Linus + ~ Copyright (C) 2023 Julius Linus ~ Copyright (C) 2021 Andy Scherzinger ~ Copyright (C) 2017-2018 Mario Danic ~ @@ -108,6 +110,20 @@ app:cornerRadius="@dimen/button_corner_radius" app:icon="@drawable/ic_baseline_arrow_downward_24px" /> + + #353535 + + #141F25 + #99C3DA + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 741d89889..44fda2106 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -102,6 +102,10 @@ #1F121212 #EEEEEE + + #E5F0F5 + #002A41 + #FFFFFF From 7ad16c22eb9d43800ca1692159f700130ae2bc5e Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Sun, 29 Jan 2023 13:50:13 -0600 Subject: [PATCH 2/4] forgot to add the copyright text that nobody reads in the icon file Signed-off-by: Julius Linus --- .../ic_baseline_keyboard_double_arrow_down_24.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/src/main/res/drawable/ic_baseline_keyboard_double_arrow_down_24.xml b/app/src/main/res/drawable/ic_baseline_keyboard_double_arrow_down_24.xml index a864e6be6..f4bb1a756 100644 --- a/app/src/main/res/drawable/ic_baseline_keyboard_double_arrow_down_24.xml +++ b/app/src/main/res/drawable/ic_baseline_keyboard_double_arrow_down_24.xml @@ -1,3 +1,16 @@ + From df3a27a8aadccd0f7855d7ae5ac7bcc6675095af Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Sat, 4 Feb 2023 17:39:15 -0600 Subject: [PATCH 3/4] Implemented scroll suggestions from marcel Signed-off-by: Julius Linus --- .../com/nextcloud/talk/controllers/ChatController.kt | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index 3850c8c65..11fb1eef3 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -685,16 +685,8 @@ class ChatController(args: Bundle) : if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { - val offset = recyclerView.computeVerticalScrollOffset() - val extent = recyclerView.computeVerticalScrollExtent() - val range = recyclerView.computeVerticalScrollRange() - - // 0.0 is the top of the chat, 100.0 is the bottom of the chat - val scrollPercentage = 100.0f * offset / (range - extent).toFloat() - - if (scrollPercentage <= 90) { + if (layoutManager!!.findFirstCompletelyVisibleItemPosition() > 0) { binding?.scrollDownButton?.visibility = View.VISIBLE - } else { binding?.scrollDownButton?.visibility = View.INVISIBLE } From 85ad4d499e188592bea250d2ce4b252be812ee76 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Mon, 6 Feb 2023 17:52:07 +0100 Subject: [PATCH 4/4] optimize for rtl/ltr and improve a11y Signed-off-by: Andy Scherzinger --- app/src/main/res/layout/controller_chat.xml | 7 ++++--- app/src/main/res/values/strings.xml | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/layout/controller_chat.xml b/app/src/main/res/layout/controller_chat.xml index 67958a959..6225d6d53 100644 --- a/app/src/main/res/layout/controller_chat.xml +++ b/app/src/main/res/layout/controller_chat.xml @@ -114,15 +114,16 @@ android:id="@+id/scrollDownButton" android:layout_width="44dp" android:layout_height="44dp" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" android:layout_marginEnd="6dp" android:layout_marginBottom="16dp" android:background="@drawable/shape_oval" android:backgroundTint="@color/scroll_down_chat_button" + android:contentDescription="@string/scroll_to_bottom" android:src="@drawable/ic_baseline_keyboard_double_arrow_down_24" - app:tint="@color/scroll_down_chat_button_icon" - android:visibility="invisible" /> + android:visibility="invisible" + app:tint="@color/scroll_down_chat_button_icon" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 591023e4a..e9063fe6a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -630,5 +630,6 @@ You are not allowed to activate audio! You are not allowed to activate video! + Scroll to bottom