From 7da9c475e38923791bd28f683e72eef6da9327b5 Mon Sep 17 00:00:00 2001 From: rapterjet2004 Date: Sun, 29 Jan 2023 12:52:34 -0600 Subject: [PATCH] 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