From 7c7455587708dfb3d6136c5a04f7de41d624d453 Mon Sep 17 00:00:00 2001 From: Yuriy Liskov Date: Wed, 11 Jan 2023 04:03:14 +0200 Subject: [PATCH] add focus fix layout; message adapter small refactor --- MediaServiceCore | 2 +- .../chatkit/messages/MessagesListAdapter.java | 10 ++++++++ .../focus/FocusFixBrowseFrameLayout.java | 25 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/focus/FocusFixBrowseFrameLayout.java diff --git a/MediaServiceCore b/MediaServiceCore index 12f40c7c8..17acaaa2b 160000 --- a/MediaServiceCore +++ b/MediaServiceCore @@ -1 +1 @@ -Subproject commit 12f40c7c8ad61af354638eefa092056e2ca452b3 +Subproject commit 17acaaa2ba74e0ae321abf5d26df48b6af2c2312 diff --git a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java index 7b42465e6..cc2acb076 100644 --- a/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java +++ b/chatkit/src/main/java/com/stfalcon/chatkit/messages/MessagesListAdapter.java @@ -71,6 +71,7 @@ public class MessagesListAdapter private DateFormatter.Formatter dateHeadersFormatter; private SparseArray viewClickListenersArray = new SparseArray<>(); private boolean isTopDateEnabled; + private int currentPosition = -1; /** * For default list item layout and view holder. @@ -711,6 +712,15 @@ public class MessagesListAdapter }; } + private View.OnFocusChangeListener getMessageFocusChangeListener(final Wrapper wrapper) { + return (v, hasFocus) -> { + if (hasFocus) { + MESSAGE message = (wrapper.item); + currentPosition = getMessagePositionById(message.getId()); + } + }; + } + private String getSelectedText(Formatter formatter, boolean reverse) { StringBuilder builder = new StringBuilder(); diff --git a/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/focus/FocusFixBrowseFrameLayout.java b/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/focus/FocusFixBrowseFrameLayout.java new file mode 100644 index 000000000..255288430 --- /dev/null +++ b/smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/focus/FocusFixBrowseFrameLayout.java @@ -0,0 +1,25 @@ +package com.liskovsoft.smartyoutubetv2.tv.ui.widgets.focus; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import androidx.leanback.widget.BrowseFrameLayout; + +public class FocusFixBrowseFrameLayout extends BrowseFrameLayout { + public FocusFixBrowseFrameLayout(Context context) { + super(context); + } + + public FocusFixBrowseFrameLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public FocusFixBrowseFrameLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public View focusSearch(View focused, int direction) { + return focused; + } +}