From f9038107f7f6b8b6561dabaa5dc4e96510f6bd62 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 31 May 2022 10:17:18 -0500 Subject: [PATCH] Return to previously selected tab when opening a conversation If user manually selects a tab, remember that. --- .../eu/siacs/conversations/entities/Conversation.java | 7 +++++++ .../eu/siacs/conversations/ui/ConversationFragment.java | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index 3e6cdcaf8d57c6f9a9e520b8636cb9ea2efa7589..c53a4e304fa3ed618993f932b645edf12a080db4 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -85,6 +85,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl private ChatState mOutgoingChatState = Config.DEFAULT_CHAT_STATE; private ChatState mIncomingChatState = Config.DEFAULT_CHAT_STATE; private String mFirstMamReference = null; + protected int mCurrentTab = -1; public Conversation(final String name, final Account account, final Jid contactJid, final int mode) { @@ -1110,7 +1111,13 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl return getName().toString(); } + public void setCurrentTab(int tab) { + mCurrentTab = tab; + } + public int getCurrentTab() { + if (mCurrentTab >= 0) return mCurrentTab; + if (!isRead() || getContact().resourceWhichSupport(Namespace.COMMANDS) == null) { return 0; } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 6d450de861e6094ceb232e4aa983a81b4aaa2ab6..bd4ead7ea2b004d5a94e868665894d1c54e080b7 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -1248,6 +1248,14 @@ public class ConversationFragment extends XmppFragment )); binding.tabLayout.setupWithViewPager(binding.conversationViewPager); binding.conversationViewPager.setCurrentItem(conversation.getCurrentTab()); + binding.conversationViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + public void onPageScrollStateChanged(int state) { } + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } + + public void onPageSelected(int position) { + conversation.setCurrentTab(position); + } + }); commandAdapter = new CommandAdapter((XmppActivity) getActivity()); binding.commandsView.setAdapter(commandAdapter);