From 3fe92f7f713918ec021e84802048c33d066d7b3d Mon Sep 17 00:00:00 2001 From: Lucas Legrand Date: Fri, 20 Jul 2018 15:45:17 +0200 Subject: [PATCH] No chat_bubble displayed, save this stage to go back and remove code to go forward step by step --- res/layout/chat.xml | 4 +- .../linphone/chat/ChatBubbleViewHolder.java | 59 +- .../org/linphone/chat/ChatEventsAdapter.java | 526 ++++++++---------- .../org/linphone/chat/ChatListFragment.java | 3 +- .../org/linphone/chat/GroupChatFragment.java | 59 +- .../org/linphone/chat/ImdnFragment.java | 2 +- .../org/linphone/ui/SelectableAdapter.java | 2 +- 7 files changed, 327 insertions(+), 328 deletions(-) diff --git a/res/layout/chat.xml b/res/layout/chat.xml index bc66da93e..7d8a36867 100644 --- a/res/layout/chat.xml +++ b/res/layout/chat.xml @@ -173,7 +173,9 @@ android:layout_height="wrap_content" android:layout_above="@id/footer"/> - + { +public class ChatEventsAdapter extends SelectableAdapter { +//public class ChatEventsAdapter extends RecyclerView.Adapter { private Context mContext; private List mHistory; private List mParticipants; private LayoutInflater mLayoutInflater; -// private int itemResource; private Bitmap mDefaultBitmap; private GroupChatFragment mFragment; private ChatMessageListenerStub mListener; + private ChatBubbleViewHolder.ClickListener clickListener; // public ChatEventsAdapter(GroupChatFragment fragment, ListSelectionHelper helper, LayoutInflater inflater, EventLog[] history, ArrayList participants) { - public ChatEventsAdapter(GroupChatFragment fragment, ListSelectionHelper helper, LayoutInflater inflater, EventLog[] history, ArrayList participants) { -// public ChatRoomsAdapter(Context context, int itemResource, List mRooms, ChatRoomViewHolder.ClickListener clickListener, SelectableHelper helper) { + public ChatEventsAdapter(GroupChatFragment fragment, SelectableHelper helper, LayoutInflater inflater, ArrayList mHistory, ArrayList participants, ChatBubbleViewHolder.ClickListener clickListener) { +// public ChatEventsAdapter(GroupChatFragment fragment, SelectableHelper helper, LayoutInflater inflater, ArrayList mHistory, ArrayList participants, ChatBubbleViewHolder.ClickListener clickListener) { - super(); - mFragment = fragment; - mContext = mFragment.getActivity(); + super(helper); + this.mFragment = fragment; + this.mContext = mFragment.getActivity(); // itemResource = inflater.; - mLayoutInflater = inflater; - mHistory = new ArrayList<>(Arrays.asList(history)); - mParticipants = participants; + this.mLayoutInflater = inflater; + this.mHistory = mHistory; + this.mParticipants = participants; mListener = new ChatMessageListenerStub() { @Override @@ -132,58 +134,260 @@ public class ChatEventsAdapter extends RecyclerView.Adapter(Arrays.asList(history)); +// mHistory = new ArrayList<>(Arrays.asList(history)); notifyDataSetChanged(); } @@ -244,264 +448,6 @@ public class ChatEventsAdapter extends RecyclerView.Adapter mParticipants; + private ArrayList mHistory; + private LinearLayoutManager layoutManager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -116,11 +122,14 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con mRemoteSipUri = getArguments().getString("SipUri"); mRemoteSipAddress = LinphoneManager.getLc().createAddress(mRemoteSipUri); } - - mInflater = inflater; + this.mContext = getActivity().getApplicationContext(); View view = inflater.inflate(R.layout.chat, container, false); + mChatEventsList = view.findViewById(R.id.chat_message_list); + mSelectionHelper = new SelectableHelper(view, this); - mSelectionHelper = new ListSelectionHelper(view, this); + + layoutManager = new LinearLayoutManager(mContext); + mChatEventsList.setLayoutManager(layoutManager); mBackButton = view.findViewById(R.id.back); mBackButton.setOnClickListener(new View.OnClickListener() { @@ -551,18 +560,26 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con private void displayChatRoomHistory() { if (mChatRoom == null) return; if (mChatRoom.hasCapability(ChatRoomCapabilities.OneToOne.toInt())) { - mEventsAdapter = new ChatEventsAdapter(this, mSelectionHelper, mInflater, mChatRoom.getHistoryMessageEvents(0), mParticipants); + EventLog[] history = mChatRoom.getHistoryMessageEvents(0); + mHistory = new ArrayList<>(Arrays.asList(history)); + mEventsAdapter = new ChatEventsAdapter(this, mSelectionHelper, mInflater, mHistory, mParticipants, this); // mChatRoomsAdapter = new ChatRoomsAdapter(mContext, R.layout.chatlist_cell, mRooms,this, mSelectionHelper); } else { - mEventsAdapter = new ChatEventsAdapter(this, mSelectionHelper, mInflater, mChatRoom.getHistoryEvents(0), mParticipants); + EventLog[] history = mChatRoom.getHistoryEvents(0); + mHistory = new ArrayList<>(Arrays.asList(history)); + mEventsAdapter = new ChatEventsAdapter(this, mSelectionHelper, mInflater, mHistory, mParticipants, this); } - mSelectionHelper.setAdapter(mEventsAdapter); mChatEventsList.setAdapter(mEventsAdapter); - } + mSelectionHelper.setAdapter(mEventsAdapter); + + + } public void scrollToBottom() { - if (((mChatEventsList.getLastVisiblePosition() >= (mEventsAdapter.getCount() - 1)) && (mChatEventsList.getFirstVisiblePosition() <= (mEventsAdapter.getCount() - 1)))) { - mChatEventsList.setSelection(mEventsAdapter.getCount() - 1); + if (((layoutManager.findLastVisibleItemPosition() >= (mEventsAdapter.getCount() - 1)) && (layoutManager.findFirstVisibleItemPosition() <= (mEventsAdapter.getCount() - 1)))) { +// if (((mChatEventsList.getLastVisiblePosition() >= (mEventsAdapter.getCount() - 1)) && (mChatEventsList.getFirstVisiblePosition() <= (mEventsAdapter.getCount() - 1)))) { + mChatEventsList.getLayoutManager().scrollToPosition(mEventsAdapter.getCount() - 1); +// mChatEventsList.setSelection(mEventsAdapter.getCount() - 1); } } @@ -570,6 +587,20 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con return mRemoteSipUri; } + + /* + *if isEditionEnabled() true, select the message + * */ + + + @Override + public void onItemClicked(int position) { + if (mEventsAdapter.isEditionEnabled()) { + mEventsAdapter.toggleSelection(position); + } + } + + /** * File transfer related */ diff --git a/src/android/org/linphone/chat/ImdnFragment.java b/src/android/org/linphone/chat/ImdnFragment.java index d3ecd797a..ebd7b6249 100644 --- a/src/android/org/linphone/chat/ImdnFragment.java +++ b/src/android/org/linphone/chat/ImdnFragment.java @@ -47,7 +47,7 @@ import org.linphone.core.ChatRoom; import org.linphone.core.Core; import org.linphone.core.ParticipantImdnState; -public class ImdnFragment extends Fragment { +public class ImdnFragment extends Fragment{ private LayoutInflater mInflater; private LinearLayout mRead, mReadHeader, mDelivered, mDeliveredHeader, mSent, mSentHeader, mUndelivered, mUndeliveredHeader; private ImageView mBackButton; diff --git a/src/android/org/linphone/ui/SelectableAdapter.java b/src/android/org/linphone/ui/SelectableAdapter.java index f76976d94..ecbda50e4 100644 --- a/src/android/org/linphone/ui/SelectableAdapter.java +++ b/src/android/org/linphone/ui/SelectableAdapter.java @@ -17,8 +17,8 @@ public abstract class SelectableAdapter exte public SelectableAdapter(SelectableHelper helper) { mSelectedItems = new SparseBooleanArray(); mListHelper = helper; - } + private CompoundButton.OnCheckedChangeListener mDeleteCheckboxListener = new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {