Improved code related to hiding empty one to one chat rooms

This commit is contained in:
Sylvain Berfini 2019-03-21 13:59:14 +01:00
parent 3c61e0e418
commit 0132c224c7
4 changed files with 18 additions and 10 deletions

View file

@ -23,12 +23,12 @@ import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.R;
import org.linphone.core.ChatRoom; import org.linphone.core.ChatRoom;
import org.linphone.utils.LinphoneUtils; import org.linphone.utils.LinphoneUtils;
import org.linphone.utils.SelectableAdapter; import org.linphone.utils.SelectableAdapter;
@ -72,9 +72,13 @@ public class ChatRoomsAdapter extends SelectableAdapter<ChatRoomViewHolder> {
} }
public void refresh() { public void refresh() {
mRooms = ChatRoom[] rooms = LinphoneManager.getLc().getChatRooms();
LinphoneUtils.removeEmptyOneToOneChatRooms( if (mContext.getResources().getBoolean(R.bool.hide_empty_one_to_one_chat_rooms)) {
new ArrayList<>(Arrays.asList(LinphoneManager.getLc().getChatRooms()))); mRooms = LinphoneUtils.removeEmptyOneToOneChatRooms(rooms);
} else {
mRooms = Arrays.asList(rooms);
}
Collections.sort( Collections.sort(
mRooms, mRooms,
new Comparator<ChatRoom>() { new Comparator<ChatRoom>() {
@ -85,6 +89,7 @@ public class ChatRoomsAdapter extends SelectableAdapter<ChatRoomViewHolder> {
return 1; return 1;
} }
}); });
notifyDataSetChanged(); notifyDataSetChanged();
} }

View file

@ -35,7 +35,6 @@ import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import org.linphone.LinphoneActivity; import org.linphone.LinphoneActivity;
@ -75,11 +74,7 @@ public class ChatRoomsFragment extends Fragment
@Override @Override
public View onCreateView( public View onCreateView(
final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
mRooms =
LinphoneUtils.removeEmptyOneToOneChatRooms(
new ArrayList<>(Arrays.asList(LinphoneManager.getLc().getChatRooms())));
mContext = getActivity().getApplicationContext(); mContext = getActivity().getApplicationContext();
View view = inflater.inflate(R.layout.chatlist, container, false); 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); mBackToCallButton = view.findViewById(R.id.back_in_call);
mNoChatHistory = view.findViewById(R.id.noChatHistory); 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); mSelectionHelper = new SelectableHelper(view, this);
mChatRoomsAdapter = mChatRoomsAdapter =
new ChatRoomsAdapter( new ChatRoomsAdapter(

View file

@ -489,7 +489,7 @@ public final class LinphoneUtils {
return sContext; return sContext;
} }
public static ArrayList<ChatRoom> removeEmptyOneToOneChatRooms(ArrayList<ChatRoom> rooms) { public static ArrayList<ChatRoom> removeEmptyOneToOneChatRooms(ChatRoom[] rooms) {
ArrayList<ChatRoom> newRooms = new ArrayList<>(); ArrayList<ChatRoom> newRooms = new ArrayList<>();
for (ChatRoom room : rooms) { for (ChatRoom room : rooms) {
if (room.hasCapability(ChatRoomCapabilities.OneToOne.toInt()) if (room.hasCapability(ChatRoomCapabilities.OneToOne.toInt())

View file

@ -101,6 +101,7 @@
<bool name="use_new_chat_bubbles_layout">true</bool> <bool name="use_new_chat_bubbles_layout">true</bool>
<bool name="use_big_pictures_to_preview_images_file_transfers">true</bool> <bool name="use_big_pictures_to_preview_images_file_transfers">true</bool>
<bool name="show_sip_uri_in_chat">false</bool> <bool name="show_sip_uri_in_chat">false</bool>
<bool name="hide_empty_one_to_one_chat_rooms">true</bool>
<!-- Contacts --> <!-- Contacts -->
<bool name="hide_contact_phone_numbers">false</bool> <bool name="hide_contact_phone_numbers">false</bool>