Display chat rooms event if they are empty
This commit is contained in:
parent
feaa564f80
commit
6a3e05b59c
6 changed files with 28 additions and 76 deletions
Binary file not shown.
|
@ -34,7 +34,7 @@ dtmf_player_amp=0.1
|
||||||
ec_calibrator_cool_tones=1
|
ec_calibrator_cool_tones=1
|
||||||
|
|
||||||
[misc]
|
[misc]
|
||||||
conference_factory_uri=sips:conference-factory@sip.linphone.org
|
conference_factory_uri=sip:conference-factory@conf.test.org
|
||||||
max_calls=10
|
max_calls=10
|
||||||
history_max_size=100
|
history_max_size=100
|
||||||
|
|
||||||
|
|
|
@ -123,12 +123,9 @@ import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.linphone.activities.LinphoneActivity.ChatRoomContainer.createChatroomContainer;
|
|
||||||
|
|
||||||
public class LinphoneActivity extends LinphoneGenericActivity implements OnClickListener, ContactPicked, ActivityCompat.OnRequestPermissionsResultCallback {
|
public class LinphoneActivity extends LinphoneGenericActivity implements OnClickListener, ContactPicked, ActivityCompat.OnRequestPermissionsResultCallback {
|
||||||
public static final String PREF_FIRST_LAUNCH = "pref_first_launch";
|
public static final String PREF_FIRST_LAUNCH = "pref_first_launch";
|
||||||
|
@ -909,62 +906,6 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick
|
||||||
return statusFragment;
|
return statusFragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
static class ChatRoomContainer{
|
|
||||||
private ChatRoom mCr;
|
|
||||||
long mTime;
|
|
||||||
static public ChatRoomContainer createChatroomContainer(ChatRoom chatRoom) {
|
|
||||||
if (chatRoom.getHistorySize() <= 0) return null;
|
|
||||||
return new ChatRoomContainer(chatRoom);
|
|
||||||
}
|
|
||||||
public ChatRoomContainer(ChatRoom chatroom){
|
|
||||||
mCr = chatroom;
|
|
||||||
ChatMessage[] lastMsg = chatroom.getHistory(1);
|
|
||||||
if (lastMsg != null && lastMsg.length > 0 && lastMsg[0] != null) {
|
|
||||||
mTime = lastMsg[0].getTime();
|
|
||||||
}else mTime = 0;
|
|
||||||
}
|
|
||||||
ChatRoom getChatRoom(){
|
|
||||||
return mCr;
|
|
||||||
}
|
|
||||||
long getTime(){
|
|
||||||
return mTime;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
public List<String> getChatList() {
|
|
||||||
ArrayList<String> chatList = new ArrayList<String>();
|
|
||||||
|
|
||||||
ChatRoom[] chats = LinphoneManager.getLc().getChatRooms();
|
|
||||||
List<ChatRoomContainer> rooms = new ArrayList<ChatRoomContainer>();
|
|
||||||
|
|
||||||
for (ChatRoom chatroom : chats) {
|
|
||||||
ChatRoomContainer crc = createChatroomContainer(chatroom);
|
|
||||||
if (crc != null) rooms.add(crc);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rooms.size() > 1) {
|
|
||||||
Collections.sort(rooms, new Comparator<ChatRoomContainer>() {
|
|
||||||
@Override
|
|
||||||
public int compare(ChatRoomContainer a, ChatRoomContainer b) {
|
|
||||||
long atime = a.getTime();
|
|
||||||
long btime = b.getTime();
|
|
||||||
|
|
||||||
if (atime > btime)
|
|
||||||
return -1;
|
|
||||||
else if (btime > atime)
|
|
||||||
return 1;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
for (ChatRoomContainer chatroomContainer : rooms) {
|
|
||||||
chatList.add(chatroomContainer.getChatRoom().getPeerAddress().asStringUriOnly());
|
|
||||||
}
|
|
||||||
|
|
||||||
return chatList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeFromChatList(String sipUri) {
|
public void removeFromChatList(String sipUri) {
|
||||||
ChatRoom chatroom = LinphoneManager.getLc().getChatRoomFromUri(sipUri);
|
ChatRoom chatroom = LinphoneManager.getLc().getChatRoomFromUri(sipUri);
|
||||||
chatroom.deleteHistory();
|
chatroom.deleteHistory();
|
||||||
|
|
|
@ -58,6 +58,7 @@ import org.linphone.core.Core;
|
||||||
import org.linphone.core.Factory;
|
import org.linphone.core.Factory;
|
||||||
import org.linphone.core.CoreListenerStub;
|
import org.linphone.core.CoreListenerStub;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.linphone.fragments.FragmentsAvailable.CHAT_LIST;
|
import static org.linphone.fragments.FragmentsAvailable.CHAT_LIST;
|
||||||
|
@ -189,8 +190,16 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void refreshConversations() {
|
||||||
|
mConversations = new ArrayList<>();
|
||||||
|
ChatRoom[] chats = LinphoneManager.getLc().getChatRooms();
|
||||||
|
for (ChatRoom room : chats) {
|
||||||
|
mConversations.add(room.getPeerAddress().asStringUriOnly());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
mConversations = LinphoneActivity.instance().getChatList();
|
refreshConversations();
|
||||||
hideAndDisplayMessageIfNoChat();
|
hideAndDisplayMessageIfNoChat();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,7 +271,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
|
||||||
String sipUri = chatList.getAdapter().getItem(info.position).toString();
|
String sipUri = chatList.getAdapter().getItem(info.position).toString();
|
||||||
|
|
||||||
LinphoneActivity.instance().removeFromChatList(sipUri);
|
LinphoneActivity.instance().removeFromChatList(sipUri);
|
||||||
mConversations = LinphoneActivity.instance().getChatList();
|
refreshConversations();
|
||||||
if (getResources().getBoolean(R.bool.isTablet)) {
|
if (getResources().getBoolean(R.bool.isTablet)) {
|
||||||
quitEditMode();
|
quitEditMode();
|
||||||
}
|
}
|
||||||
|
@ -421,19 +430,21 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
|
||||||
ChatRoom chatRoom = LinphoneManager.getLc().getChatRoom(address);
|
ChatRoom chatRoom = LinphoneManager.getLc().getChatRoom(address);
|
||||||
int unreadMessagesCount = chatRoom.getUnreadMessagesCount();
|
int unreadMessagesCount = chatRoom.getUnreadMessagesCount();
|
||||||
ChatMessage[] history = chatRoom.getHistory(1);
|
ChatMessage[] history = chatRoom.getHistory(1);
|
||||||
ChatMessage msg = history[0];
|
|
||||||
|
|
||||||
if (msg.getFileTransferInformation() != null || msg.getExternalBodyUrl() != null || msg.getAppdata() != null) {
|
if (history.length > 0) {
|
||||||
holder.lastMessageView.setBackgroundResource(R.drawable.chat_file_message);
|
ChatMessage msg = history[0];
|
||||||
time = msg.getTime();
|
if (msg.getFileTransferInformation() != null || msg.getExternalBodyUrl() != null || msg.getAppdata() != null) {
|
||||||
holder.date.setText(LinphoneUtils.timestampToHumanDate(getActivity(),time,getString(R.string.messages_list_date_format)));
|
holder.lastMessageView.setBackgroundResource(R.drawable.chat_file_message);
|
||||||
holder.lastMessageView.setText("");
|
time = msg.getTime();
|
||||||
} else if (msg.getText() != null && msg.getText().length() > 0 ){
|
holder.date.setText(LinphoneUtils.timestampToHumanDate(getActivity(),time,getString(R.string.messages_list_date_format)));
|
||||||
message = msg.getText();
|
holder.lastMessageView.setText("");
|
||||||
holder.lastMessageView.setBackgroundResource(0);
|
} else if (msg.getText() != null && msg.getText().length() > 0 ){
|
||||||
time = msg.getTime();
|
message = msg.getText();
|
||||||
holder.date.setText(LinphoneUtils.timestampToHumanDate(getActivity(),time,getString(R.string.messages_list_date_format)));
|
holder.lastMessageView.setBackgroundResource(0);
|
||||||
holder.lastMessageView.setText(message);
|
time = msg.getTime();
|
||||||
|
holder.date.setText(LinphoneUtils.timestampToHumanDate(getActivity(),time,getString(R.string.messages_list_date_format)));
|
||||||
|
holder.lastMessageView.setText(message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
holder.displayName.setSelected(true); // For animation
|
holder.displayName.setSelected(true); // For animation
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit c390646fe81934550781ec7470c0dcf440b03e58
|
Subproject commit c09442f1808a0fa9e040b48485a1fa7c4c9fd5a3
|
|
@ -1 +1 @@
|
||||||
Subproject commit 2f97587d53020be683a98a4b6404f76f9a8e24a5
|
Subproject commit c30a7b48f5f212609546650efd24340943bd1542
|
Loading…
Reference in a new issue