From 0132c224c7f70fb8060a2f44fce085777ae60852 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 21 Mar 2019 13:59:14 +0100 Subject: [PATCH] Improved code related to hiding empty one to one chat rooms --- .../java/org/linphone/chat/ChatRoomsAdapter.java | 13 +++++++++---- .../java/org/linphone/chat/ChatRoomsFragment.java | 12 +++++++----- .../main/java/org/linphone/utils/LinphoneUtils.java | 2 +- app/src/main/res/values/non_localizable_custom.xml | 1 + 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/linphone/chat/ChatRoomsAdapter.java b/app/src/main/java/org/linphone/chat/ChatRoomsAdapter.java index ebd2772bc..ed54cbfcc 100644 --- a/app/src/main/java/org/linphone/chat/ChatRoomsAdapter.java +++ b/app/src/main/java/org/linphone/chat/ChatRoomsAdapter.java @@ -23,12 +23,12 @@ import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import org.linphone.LinphoneManager; +import org.linphone.R; import org.linphone.core.ChatRoom; import org.linphone.utils.LinphoneUtils; import org.linphone.utils.SelectableAdapter; @@ -72,9 +72,13 @@ public class ChatRoomsAdapter extends SelectableAdapter { } public void refresh() { - mRooms = - LinphoneUtils.removeEmptyOneToOneChatRooms( - new ArrayList<>(Arrays.asList(LinphoneManager.getLc().getChatRooms()))); + ChatRoom[] rooms = LinphoneManager.getLc().getChatRooms(); + if (mContext.getResources().getBoolean(R.bool.hide_empty_one_to_one_chat_rooms)) { + mRooms = LinphoneUtils.removeEmptyOneToOneChatRooms(rooms); + } else { + mRooms = Arrays.asList(rooms); + } + Collections.sort( mRooms, new Comparator() { @@ -85,6 +89,7 @@ public class ChatRoomsAdapter extends SelectableAdapter { return 1; } }); + notifyDataSetChanged(); } diff --git a/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java b/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java index 0d6612cb9..d339ff346 100644 --- a/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatRoomsFragment.java @@ -35,7 +35,6 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import java.io.File; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.linphone.LinphoneActivity; @@ -75,11 +74,7 @@ public class ChatRoomsFragment extends Fragment @Override public View onCreateView( final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mRooms = - LinphoneUtils.removeEmptyOneToOneChatRooms( - new ArrayList<>(Arrays.asList(LinphoneManager.getLc().getChatRooms()))); mContext = getActivity().getApplicationContext(); View view = inflater.inflate(R.layout.chatlist, container, false); @@ -91,6 +86,13 @@ public class ChatRoomsFragment extends Fragment mBackToCallButton = view.findViewById(R.id.back_in_call); mNoChatHistory = view.findViewById(R.id.noChatHistory); + ChatRoom[] rooms = LinphoneManager.getLc().getChatRooms(); + if (mContext.getResources().getBoolean(R.bool.hide_empty_one_to_one_chat_rooms)) { + mRooms = LinphoneUtils.removeEmptyOneToOneChatRooms(rooms); + } else { + mRooms = Arrays.asList(rooms); + } + mSelectionHelper = new SelectableHelper(view, this); mChatRoomsAdapter = new ChatRoomsAdapter( diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.java b/app/src/main/java/org/linphone/utils/LinphoneUtils.java index c3ad59197..c251284b6 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.java +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.java @@ -489,7 +489,7 @@ public final class LinphoneUtils { return sContext; } - public static ArrayList removeEmptyOneToOneChatRooms(ArrayList rooms) { + public static ArrayList removeEmptyOneToOneChatRooms(ChatRoom[] rooms) { ArrayList newRooms = new ArrayList<>(); for (ChatRoom room : rooms) { if (room.hasCapability(ChatRoomCapabilities.OneToOne.toInt()) diff --git a/app/src/main/res/values/non_localizable_custom.xml b/app/src/main/res/values/non_localizable_custom.xml index 2fe0f208c..32a693080 100644 --- a/app/src/main/res/values/non_localizable_custom.xml +++ b/app/src/main/res/values/non_localizable_custom.xml @@ -101,6 +101,7 @@ true true false + true false