Fixes due to using 2 Adapters

This commit is contained in:
Sylvain Berfini 2018-11-27 15:47:36 +01:00
parent b194374bff
commit f5c6abbc83
5 changed files with 68 additions and 23 deletions

View file

@ -41,7 +41,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ChatMessagesAdapter extends SelectableAdapter<ChatMessageViewHolder> {
public class ChatMessagesAdapter extends SelectableAdapter<ChatMessageViewHolder> implements ChatMessagesGenericAdapter {
public static int MAX_TIME_TO_GROUP_MESSAGES = 60;
private Context mContext;

View file

@ -345,7 +345,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
removeVirtualKeyboardVisiblityListener();
LinphoneManager.getInstance().setCurrentChatRoomAddress(null);
if (mChatRoom != null) mChatRoom.removeListener(this);
if (mEventsAdapter != null) mEventsAdapter.clear();
if (mChatEventsList.getAdapter() != null) ((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).clear();
super.onPause();
}
@ -409,9 +409,9 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
eventLog.deleteFromDatabase();
}
if (mChatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) {
mEventsAdapter.refresh(mChatRoom.getHistoryMessageEvents(MESSAGES_PER_PAGE));
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).refresh(mChatRoom.getHistoryMessageEvents(MESSAGES_PER_PAGE));
} else {
mEventsAdapter.refresh(mChatRoom.getHistoryEvents(MESSAGES_PER_PAGE));
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).refresh(mChatRoom.getHistoryEvents(MESSAGES_PER_PAGE));
}
}
@ -428,7 +428,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
mContextMenuMessagePosition = holder.getAdapterPosition();
}
EventLog event = (EventLog) mEventsAdapter.getItem(mContextMenuMessagePosition);
EventLog event = (EventLog) ((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).getItem(mContextMenuMessagePosition);
if (event.getType() != EventLog.Type.ConferenceChatMessage) {
return;
}
@ -463,7 +463,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
@Override
public boolean onContextItemSelected(MenuItem item) {
EventLog event = (EventLog) mEventsAdapter.getItem(mContextMenuMessagePosition);
EventLog event = (EventLog) ((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).getItem(mContextMenuMessagePosition);
if (event.getType() != EventLog.Type.ConferenceChatMessage) {
return super.onContextItemSelected(item);
@ -473,7 +473,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
String messageId = message.getMessageId();
if (item.getItemId() == R.id.resend) {
mEventsAdapter.removeItem(mContextMenuMessagePosition);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).removeItem(mContextMenuMessagePosition);
message.resend();
return true;
}
@ -491,7 +491,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
}
if (item.getItemId() == R.id.delete_message) {
mChatRoom.deleteMessage(message);
mEventsAdapter.removeItem(mContextMenuMessagePosition);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).removeItem(mContextMenuMessagePosition);
return true;
}
if (item.getItemId() == R.id.add_to_contacts) {
@ -518,7 +518,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
}
EventLog[] newLogs = mChatRoom.getHistoryRangeEvents(totalItemsCount, upperBound);
ArrayList<EventLog> logsList = new ArrayList<>(Arrays.asList(newLogs));
mEventsAdapter.addAllToHistory(logsList);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).addAllToHistory(logsList);
}
}
});
@ -597,8 +597,8 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
mParticipantsLabel.setText(participantsLabel.toString());
}
if (mEventsAdapter != null) {
mEventsAdapter.setContacts(mParticipants);
if (mChatEventsList.getAdapter() != null) {
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).setContacts(mParticipants);
}
}
@ -761,8 +761,8 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
@Override
public void onItemClicked(int position) {
if (mEventsAdapter.isEditionEnabled()) {
mEventsAdapter.toggleSelection(position);
if (mSelectionHelper.getAdapter().isEditionEnabled()) {
mSelectionHelper.getAdapter().toggleSelection(position);
}
}
@ -944,7 +944,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
@Override
public void onChatMessageSent(ChatRoom cr, EventLog event) {
mEventsAdapter.addToHistory(event);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).addToHistory(event);
scrollToBottom();
}
@ -1031,7 +1031,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
LinphoneActivity.instance().checkAndRequestExternalStoragePermission();
}
mEventsAdapter.addToHistory(event);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).addToHistory(event);
scrollToBottom();
}
@ -1099,19 +1099,19 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
getContactsForParticipants();
displayChatRoomHeader();
mEventsAdapter.addToHistory(event);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).addToHistory(event);
scrollToBottom();
}
@Override
public void onConferenceLeft(ChatRoom cr, EventLog event) {
mEventsAdapter.addToHistory(event);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).addToHistory(event);
scrollToBottom();
}
@Override
public void onParticipantAdminStatusChanged(ChatRoom cr, EventLog event) {
mEventsAdapter.addToHistory(event);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).addToHistory(event);
scrollToBottom();
}
@ -1123,7 +1123,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
@Override
public void onParticipantRemoved(ChatRoom cr, EventLog event) {
getContactsForParticipants();
mEventsAdapter.addToHistory(event);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).addToHistory(event);
scrollToBottom();
}
@ -1145,7 +1145,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
@Override
public void onSecurityEvent(ChatRoom cr, EventLog eventLog) {
updateSecurityLevelIcon();
mEventsAdapter.addToHistory(eventLog);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).addToHistory(eventLog);
scrollToBottom();
}
@ -1159,14 +1159,14 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener,
@Override
public void onParticipantAdded(ChatRoom cr, EventLog event) {
getContactsForParticipants();
mEventsAdapter.addToHistory(event);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).addToHistory(event);
scrollToBottom();
}
@Override
public void onSubjectChanged(ChatRoom cr, EventLog event) {
mRoomLabel.setText(event.getSubject());
mEventsAdapter.addToHistory(event);
((ChatMessagesGenericAdapter)mChatEventsList.getAdapter()).addToHistory(event);
scrollToBottom();
}

View file

@ -0,0 +1,41 @@
package org.linphone.chat;
/*
ChatMessagesGenericAdapter.java
Copyright (C) 2018 Belledonne Communications, Grenoble, France
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import org.linphone.contacts.LinphoneContact;
import org.linphone.core.EventLog;
import java.util.ArrayList;
public interface ChatMessagesGenericAdapter {
void addToHistory(EventLog log);
void addAllToHistory(ArrayList<EventLog> logs);
void setContacts(ArrayList<LinphoneContact> participants);
void refresh(EventLog[] history);
void clear();
Object getItem(int i);
void removeItem(int i);
}

View file

@ -74,7 +74,7 @@ import java.util.List;
import static android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION;
public class ChatMessagesOldAdapter extends SelectableAdapter<ChatMessageOldViewHolder> {
public class ChatMessagesOldAdapter extends SelectableAdapter<ChatMessageOldViewHolder> implements ChatMessagesGenericAdapter {
private static int MARGIN_BETWEEN_MESSAGES = 10;
private static int SIDE_MARGIN = 100;

View file

@ -130,6 +130,10 @@ public class SelectableHelper {
mEditButton.setEnabled(mAdapter.getItemCount() != 0);
}
public SelectableAdapter getAdapter() {
return mAdapter;
}
public void updateSelectionButtons(boolean isSelectionEmpty, boolean isSelectionFull) {
if (isSelectionEmpty) {
mDeleteSelectionButton.setEnabled(false);