From eca542ae280a5038910950f7f151ef211739a98e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 20 Nov 2019 16:22:24 +0100 Subject: [PATCH] Fixed back button on chat room group info during creation process --- .../java/org/linphone/chat/ChatActivity.java | 14 +++++++- .../org/linphone/chat/ChatRoomsFragment.java | 4 +-- .../org/linphone/chat/GroupInfoFragment.java | 35 +++++++------------ 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/org/linphone/chat/ChatActivity.java b/app/src/main/java/org/linphone/chat/ChatActivity.java index 2db78e9b9..0b72c846c 100644 --- a/app/src/main/java/org/linphone/chat/ChatActivity.java +++ b/app/src/main/java/org/linphone/chat/ChatActivity.java @@ -20,6 +20,7 @@ package org.linphone.chat; import android.app.Fragment; +import android.app.FragmentManager; import android.content.Intent; import android.net.Uri; import android.os.Bundle; @@ -258,7 +259,18 @@ public class ChatActivity extends MainActivity { ArrayList participants, String subject, boolean encrypted, - boolean isGroupChatRoom) { + boolean isGroupChatRoom, + boolean cleanBackStack) { + if (cleanBackStack) { + FragmentManager fm = getFragmentManager(); + while (fm.getBackStackEntryCount() > 0) { + fm.popBackStackImmediate(); + } + if (isTablet()) { + showEmptyChildFragment(); + } + } + Bundle extras = new Bundle(); if (peerAddress != null) { extras.putSerializable("RemoteSipUri", peerAddress.asStringUriOnly()); diff --git a/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java b/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java index da96af6cc..63866eb37 100644 --- a/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java @@ -108,7 +108,7 @@ public class ChatRoomsFragment extends Fragment @Override public void onClick(View v) { ((ChatActivity) getActivity()) - .showChatRoomCreation(null, null, null, false, false); + .showChatRoomCreation(null, null, null, false, false, false); } }); @@ -117,7 +117,7 @@ public class ChatRoomsFragment extends Fragment @Override public void onClick(View v) { ((ChatActivity) getActivity()) - .showChatRoomCreation(null, null, null, false, true); + .showChatRoomCreation(null, null, null, false, true, false); } }); diff --git a/app/src/main/java/org/linphone/chat/GroupInfoFragment.java b/app/src/main/java/org/linphone/chat/GroupInfoFragment.java index 1b9a0976f..bfb632412 100644 --- a/app/src/main/java/org/linphone/chat/GroupInfoFragment.java +++ b/app/src/main/java/org/linphone/chat/GroupInfoFragment.java @@ -23,7 +23,6 @@ import static android.content.Context.INPUT_METHOD_SERVICE; import android.app.Dialog; import android.app.Fragment; -import android.app.FragmentManager; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; @@ -146,7 +145,11 @@ public class GroupInfoFragment extends Fragment { new View.OnClickListener() { @Override public void onClick(View view) { - ((ChatActivity) getActivity()).goBack(); + if (mIsAlreadyCreatedGroup) { + ((ChatActivity) getActivity()).goBack(); + } else { + goBackToChatCreationFragment(); + } } }); @@ -300,26 +303,14 @@ public class GroupInfoFragment extends Fragment { } private void goBackToChatCreationFragment() { - boolean previousFragmentInBackStackIsChatRoomCreation = false; - FragmentManager fragmentManager = getActivity().getFragmentManager(); - int count = fragmentManager.getBackStackEntryCount(); - if (count > 1) { - FragmentManager.BackStackEntry entry = fragmentManager.getBackStackEntryAt(count - 1); - if ("Chat room creation".equals(entry.getName())) { - previousFragmentInBackStackIsChatRoomCreation = true; - ((ChatActivity) getActivity()).goBack(); - } - } - - if (!previousFragmentInBackStackIsChatRoomCreation) { - ((ChatActivity) getActivity()) - .showChatRoomCreation( - mGroupChatRoomAddress, - mParticipants, - mSubject, - mIsEncryptionEnabled, - true); - } + ((ChatActivity) getActivity()) + .showChatRoomCreation( + mGroupChatRoomAddress, + mParticipants, + mSubject, + mIsEncryptionEnabled, + true, + !mIsAlreadyCreatedGroup); } private void refreshParticipantsList() {