From 0f661de5915c3af1af2938b1276490f6bdb506bc Mon Sep 17 00:00:00 2001 From: Lucas Legrand Date: Mon, 30 Jul 2018 15:36:09 +0200 Subject: [PATCH] All code added/edited during RecyclerView conversion cleansed. --- .../org/linphone/call/CallHistoryAdapter.java | 21 ++--- .../linphone/chat/ChatBubbleViewHolder.java | 9 +- .../linphone/chat/ChatCreationFragment.java | 30 +++---- .../org/linphone/chat/ChatEventsAdapter.java | 21 +---- .../org/linphone/chat/ChatListFragment.java | 66 +++++++------- .../org/linphone/chat/ChatRoomsAdapter.java | 89 ------------------- .../org/linphone/chat/GroupChatFragment.java | 17 ---- .../org/linphone/chat/GroupInfoAdapter.java | 5 +- .../org/linphone/chat/GroupInfoFragment.java | 3 +- .../contacts/ContactsListAdapter.java | 7 +- .../contacts/ContactsListFragment.java | 50 +---------- .../contacts/SearchContactsListAdapter.java | 80 +---------------- .../fragments/HistoryListFragment.java | 70 ++++----------- .../org/linphone/ui/SelectableAdapter.java | 24 ----- .../org/linphone/ui/SelectableHelper.java | 8 +- .../org/linphone/ui/SwipeController.java | 5 ++ 16 files changed, 91 insertions(+), 414 deletions(-) diff --git a/src/android/org/linphone/call/CallHistoryAdapter.java b/src/android/org/linphone/call/CallHistoryAdapter.java index 99ee0eed6..c55137f0e 100644 --- a/src/android/org/linphone/call/CallHistoryAdapter.java +++ b/src/android/org/linphone/call/CallHistoryAdapter.java @@ -7,9 +7,7 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.BaseAdapter; import android.widget.CheckBox; -import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; @@ -18,7 +16,6 @@ import android.widget.TextView; import org.linphone.LinphoneUtils; import org.linphone.R; import org.linphone.activities.LinphoneActivity; -import org.linphone.contacts.ContactsListAdapter; import org.linphone.contacts.ContactsManager; import org.linphone.contacts.LinphoneContact; import org.linphone.core.Address; @@ -32,6 +29,9 @@ import java.util.Calendar; import java.util.List; public class CallHistoryAdapter extends SelectableAdapter { + + //This ViewHolder links fields from the xml to variables that will display values provided by the adapter + public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener{ public TextView contact; @@ -40,7 +40,6 @@ public class CallHistoryAdapter extends SelectableAdapter(); @@ -128,7 +122,7 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen mContactsFetchInProgress = view.findViewById(R.id.contactsFetchInProgress); mContactsFetchInProgress.setVisibility(View.VISIBLE); - mSearchAdapter = new SearchContactsListAdapter(null, mInflater, mContactsFetchInProgress, this); + mSearchAdapter = new SearchContactsListAdapter(null, mContactsFetchInProgress, this); mSearchField = view.findViewById(R.id.searchField); mSearchField.addTextChangedListener(new TextWatcher() { @@ -149,19 +143,24 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen mSearchAdapter.searchContacts(mSearchField.getText().toString(), mContactsList); } }); + + //Declares the layout manager, allowing customization of RecyclerView displaying LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity().getApplicationContext()); + + + mContactsList.setAdapter(mSearchAdapter); - //Divider between items + //Divider between items + binds layout manager to our RecyclerView DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mContactsList.getContext(), layoutManager.getOrientation()); dividerItemDecoration.setDrawable(getActivity().getApplicationContext().getResources().getDrawable(R.drawable.divider)); mContactsList.addItemDecoration(dividerItemDecoration); - - mContactsList.setLayoutManager(layoutManager); -// mContactsList.setOnItemClickListener(this); + + + if (savedInstanceState != null && savedInstanceState.getStringArrayList("mContactsSelected") != null) { mContactsSelectedLayout.removeAllViews(); // We need to get all contacts not only sip @@ -362,6 +361,8 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen super.onSaveInstanceState(outState); } + + //Removed all selection mode related code, as it is now located into SelectableHelper. @Override public void onClick(View view) { int id = view.getId(); @@ -427,7 +428,6 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen @Override public void onItemClicked(int position) { -// public void onItemClick(AdapterView adapterView, View view, int i, long l) { ContactAddress ca = mSearchAdapter.getContacts().get(position); Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); ProxyConfig lpc = lc.getDefaultProxyConfig(); diff --git a/src/android/org/linphone/chat/ChatEventsAdapter.java b/src/android/org/linphone/chat/ChatEventsAdapter.java index 3e7470bc1..e7fc32a3d 100644 --- a/src/android/org/linphone/chat/ChatEventsAdapter.java +++ b/src/android/org/linphone/chat/ChatEventsAdapter.java @@ -37,7 +37,6 @@ import android.os.Environment; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.v4.content.FileProvider; -import android.support.v7.widget.RecyclerView; import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; @@ -57,14 +56,10 @@ import org.linphone.contacts.LinphoneContact; import org.linphone.core.Address; import org.linphone.core.ChatMessage; import org.linphone.core.ChatMessageListenerStub; -import org.linphone.core.ChatRoom; import org.linphone.core.Content; -import org.linphone.core.Event; import org.linphone.core.EventLog; import org.linphone.core.LimeState; import org.linphone.mediastream.Log; -import org.linphone.ui.ListSelectionAdapter; -import org.linphone.ui.ListSelectionHelper; import org.linphone.ui.SelectableAdapter; import org.linphone.ui.SelectableHelper; @@ -138,6 +133,8 @@ public class ChatEventsAdapter extends SelectableAdapter { View v = LayoutInflater.from(parent.getContext()) .inflate(this.itemResource, parent, false); ChatBubbleViewHolder VH = new ChatBubbleViewHolder(this.mContext,v, clickListener); + + //Allows onLongClick ContextMenu on bubbles mFragment.registerForContextMenu(v); v.setTag(VH); return VH; @@ -222,7 +219,7 @@ public class ChatEventsAdapter extends SelectableAdapter { holder.imdmLabel.setTextColor(mContext.getResources().getColor(R.color.colorI)); } - + //layoutParams allow bubbles alignment during selection mode if (isEditionEnabled()) { layoutParams.addRule(RelativeLayout.LEFT_OF, holder.delete.getId()); layoutParams.setMargins(SIDE_MARGIN, MARGIN_BETWEEN_MESSAGES/2, 0, MARGIN_BETWEEN_MESSAGES/2); @@ -398,11 +395,6 @@ public class ChatEventsAdapter extends SelectableAdapter { } } - @Override - public long getItemId(int i) { - return i; - } - @Override public int getItemCount() { return this.mHistory.size(); @@ -432,21 +424,14 @@ public class ChatEventsAdapter extends SelectableAdapter { mHistory.clear(); } -// @Override public int getCount() { return this.mHistory.size(); } -// @Override public Object getItem(int i) { return mHistory.get(i); } - @NonNull - - - - public void removeItem(int i) { mHistory.remove(i); notifyDataSetChanged(); diff --git a/src/android/org/linphone/chat/ChatListFragment.java b/src/android/org/linphone/chat/ChatListFragment.java index 726dc568a..fb73be78a 100644 --- a/src/android/org/linphone/chat/ChatListFragment.java +++ b/src/android/org/linphone/chat/ChatListFragment.java @@ -21,18 +21,15 @@ package org.linphone.chat; import android.app.Fragment; import android.content.Context; -import android.graphics.Canvas; import android.os.Bundle; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.helper.ItemTouchHelper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; -import android.widget.TextView; import org.linphone.LinphoneManager; import org.linphone.R; @@ -47,8 +44,6 @@ import org.linphone.core.CoreListenerStub; import org.linphone.core.EventLog; import org.linphone.fragments.FragmentsAvailable; import org.linphone.ui.SelectableHelper; -import org.linphone.ui.SwipeController; -import org.linphone.ui.SwipeControllerActions; import java.io.File; import java.util.ArrayList; @@ -58,13 +53,12 @@ import java.util.List; import static org.linphone.fragments.FragmentsAvailable.CHAT_LIST; /* -* Sources: Linphone + https://enoent.fr/blog/2015/01/18/recyclerview-basics/ +* Main sources: Linphone + https://enoent.fr/blog/2015/01/18/recyclerview-basics/ * */ public class ChatListFragment extends Fragment implements ContactsUpdatedListener, ChatRoomsAdapter.ChatRoomViewHolder.ClickListener, SelectableHelper.DeleteListener { private RecyclerView mChatRoomsList; - private TextView mNoChatHistory; private ImageView mNewDiscussionButton, mBackToCallButton; private ChatRoomsAdapter mChatRoomsAdapter; private CoreListenerStub mListener; @@ -91,7 +85,7 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene mNewDiscussionButton = view.findViewById(R.id.new_discussion); mBackToCallButton = view.findViewById(R.id.back_in_call); - //Creation and affectation of adapter to the RecyclerView + //Creation and affectation of adapter to the RecyclerView and SelectionHelper mSelectionHelper = new SelectableHelper(view, this); mChatRoomsAdapter = new ChatRoomsAdapter(mContext, R.layout.chatlist_cell, mRooms,this, mSelectionHelper); @@ -117,39 +111,39 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene - //All commentend code below, until line 145, have to be uncommented to allow swipe actions. + //All commentend code below, from line 123 to line 148, have to be uncommented to allow swipe actions. - //Actions allowed by swipe buttons + //Actions allowed by swipe buttons - final SwipeController swipeController = new SwipeController(new SwipeControllerActions() { +// final SwipeController swipeController = new SwipeController(new SwipeControllerActions() { +//// @Override +//// public void onLeftClicked(int position) { +//// super.onLeftClicked(position); +//// } +// // @Override -// public void onLeftClicked(int position) { -// super.onLeftClicked(position); +// public void onRightClicked(int position) { +// mChatRoomsAdapter.removeItem(position); +// mChatRoomsAdapter.notifyDataSetChanged(); // } - - @Override - public void onRightClicked(int position) { - mChatRoomsAdapter.removeItem(position); - mChatRoomsAdapter.notifyDataSetChanged(); - } - }); - - //Initialize swipe detection +// }); +// +// //Initialize swipe detection +// +// +// ItemTouchHelper itemTouchHelper = new ItemTouchHelper(swipeController); +// itemTouchHelper.attachToRecyclerView(mChatRoomsList); +// +// //Add swipe buttons +// mChatRoomsList.addItemDecoration(new RecyclerView.ItemDecoration() { +// @Override +// public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { +// swipeController.onDraw(c); +// } +// }); - ItemTouchHelper itemTouchHelper = new ItemTouchHelper(swipeController); - itemTouchHelper.attachToRecyclerView(mChatRoomsList); - - //Add swipe buttons - mChatRoomsList.addItemDecoration(new RecyclerView.ItemDecoration() { - @Override - public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { - swipeController.onDraw(c); - } - }); - - - // Buttons onClickListeners definitions + // Buttons onClickListeners definitions @@ -201,10 +195,10 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene } } }; - return view; } + //On a click on an item, go to the selected ChatRoom if no SelectionMode chosen, select the item if it does @Override public void onItemClicked(int position) { if (mChatRoomsAdapter.isEditionEnabled()) { diff --git a/src/android/org/linphone/chat/ChatRoomsAdapter.java b/src/android/org/linphone/chat/ChatRoomsAdapter.java index 72e6cb41d..f94d66328 100644 --- a/src/android/org/linphone/chat/ChatRoomsAdapter.java +++ b/src/android/org/linphone/chat/ChatRoomsAdapter.java @@ -36,16 +36,12 @@ import org.linphone.activities.LinphoneActivity; import org.linphone.contacts.ContactsManager; import org.linphone.contacts.LinphoneContact; import org.linphone.core.Address; -import org.linphone.core.ChatMessage; import org.linphone.core.ChatRoom; import org.linphone.core.ChatRoomCapabilities; import org.linphone.core.ChatRoomListenerStub; -import org.linphone.core.Core; -import org.linphone.core.EventLog; import org.linphone.ui.SelectableAdapter; import org.linphone.ui.SelectableHelper; -import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -96,14 +92,12 @@ public class ChatRoomsAdapter extends SelectableAdapter(Arrays.asList(LinphoneManager.getLc().getChatRooms())); Collections.sort(mRooms, new Comparator() { @@ -260,77 +242,6 @@ public class ChatRoomsAdapter extends SelectableAdapter positions) { -// // Reverse-sort the list -// Collections.sort(positions, new Comparator() { -// @Override -// public int compare(Integer lhs, Integer rhs) { -// return rhs - lhs; -// } -// }); -// -// // Split the list in ranges -// while (!positions.isEmpty()) { -// if (positions.size() == 1) { -// removeItem(positions.get(0)); -// positions.remove(0); -// -// } else { -// int count = 1; -// while (positions.size() > count && positions.get(count).equals(positions.get(count - 1) - 1)) { -// ++count; -// } -// -// if (count == 1) { -// removeItem(positions.get(0)); -// } else { -// removeRange(positions.get(count - 1), count); -// } -// -// for (int i = 0; i < count; ++i) { -// positions.remove(0); -// } -// } -// } -// } -// -// private void removeRange(int positionStart, int itemCount) { -// for (int i = 0; i < itemCount; ++i) { -// Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); -// cleanRoom(positionStart); -// lc.deleteChatRoom(mRooms.get(positionStart)); -// mRooms.remove(positionStart); -// } -// notifyItemRangeRemoved(positionStart, itemCount); -// } -// -// //Delete downloaded file from incoming message that will be deleted - private void cleanRoom (int position) { - - for (EventLog eventLog : mRooms.get(position).getHistoryEvents(0)) { - if (eventLog.getType() == EventLog.Type.ConferenceChatMessage) { - ChatMessage message = eventLog.getChatMessage(); - if (message.getAppdata() != null && !message.isOutgoing()) { - File file = new File(message.getAppdata()); - if (file.exists()) { - file.delete(); - } - } - } - } - } - - - /** * Adapter's methods */ diff --git a/src/android/org/linphone/chat/GroupChatFragment.java b/src/android/org/linphone/chat/GroupChatFragment.java index 174c07d3a..c6e77ccc2 100644 --- a/src/android/org/linphone/chat/GroupChatFragment.java +++ b/src/android/org/linphone/chat/GroupChatFragment.java @@ -34,7 +34,6 @@ import android.os.Bundle; import android.os.Environment; import android.os.Parcelable; import android.provider.MediaStore; -import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.Editable; @@ -48,7 +47,6 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; -import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; @@ -106,7 +104,6 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con private Address mRemoteSipAddress, mRemoteParticipantAddress; private ChatRoom mChatRoom; private ArrayList mParticipants; - private ArrayList mHistory; private LinearLayoutManager layoutManager; private int mContextMenuMessagePosition; @Override @@ -223,10 +220,6 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con layoutManager = new LinearLayoutManager(mContext); mChatEventsList.setLayoutManager(layoutManager); -// registerForContextMenu(mChatEventsList); - - - if (getArguments() != null) { String fileSharedUri = getArguments().getString("fileSharedUri"); if (fileSharedUri != null) { @@ -366,7 +359,6 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con mContextMenuMessagePosition = holder.getAdapterPosition(); EventLog event = (EventLog) mEventsAdapter.getItem(mContextMenuMessagePosition); -// EventLog event = log.getEventLog(); if (event.getType() != EventLog.Type.ConferenceChatMessage) { return; } @@ -393,13 +385,8 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con @Override public boolean onContextItemSelected(MenuItem item) { -// AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); -// - - EventLog event = (EventLog) mEventsAdapter.getItem(mContextMenuMessagePosition); -// EventLog event = (EventLog) mEventsAdapter.getItem(info.position); if (event.getType() != EventLog.Type.ConferenceChatMessage) { return super.onContextItemSelected(item); @@ -582,11 +569,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con } public void scrollToBottom() { -// 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); -// } } public String getRemoteSipUri() { diff --git a/src/android/org/linphone/chat/GroupInfoAdapter.java b/src/android/org/linphone/chat/GroupInfoAdapter.java index 317f3a853..4c504c86b 100644 --- a/src/android/org/linphone/chat/GroupInfoAdapter.java +++ b/src/android/org/linphone/chat/GroupInfoAdapter.java @@ -42,7 +42,6 @@ import java.util.ArrayList; import java.util.List; public class GroupInfoAdapter extends RecyclerView.Adapter { -//public class GroupInfoAdapter extends BaseAdapter { public static class ViewHolder extends RecyclerView.ViewHolder{ public TextView name; @@ -66,7 +65,6 @@ public class GroupInfoAdapter extends RecyclerView.Adapter mItems; private View.OnClickListener mDeleteListener; private boolean mHideAdminFeatures; @@ -75,8 +73,7 @@ public class GroupInfoAdapter extends RecyclerView.Adapter items, boolean hideAdminFeatures, boolean isCreation) { - mInflater = inflater; + public GroupInfoAdapter(List items, boolean hideAdminFeatures, boolean isCreation) { mItems = items; mHideAdminFeatures = hideAdminFeatures || isCreation; diff --git a/src/android/org/linphone/chat/GroupInfoFragment.java b/src/android/org/linphone/chat/GroupInfoFragment.java index 50eedf6c0..fb13c102b 100644 --- a/src/android/org/linphone/chat/GroupInfoFragment.java +++ b/src/android/org/linphone/chat/GroupInfoFragment.java @@ -36,7 +36,6 @@ import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.ListView; import android.widget.RelativeLayout; import org.linphone.LinphoneManager; @@ -115,7 +114,7 @@ public class GroupInfoFragment extends Fragment implements ChatRoomListener { } mParticipantsList = view.findViewById(R.id.chat_room_participants); - mAdapter = new GroupInfoAdapter(mInflater, mParticipants, !mIsEditionEnabled, !mIsAlreadyCreatedGroup); + mAdapter = new GroupInfoAdapter(mParticipants, !mIsEditionEnabled, !mIsAlreadyCreatedGroup); mAdapter.setOnDeleteClickListener(new View.OnClickListener() { @Override public void onClick(View view) { diff --git a/src/android/org/linphone/contacts/ContactsListAdapter.java b/src/android/org/linphone/contacts/ContactsListAdapter.java index 597b1a1ee..10560f9f1 100644 --- a/src/android/org/linphone/contacts/ContactsListAdapter.java +++ b/src/android/org/linphone/contacts/ContactsListAdapter.java @@ -7,7 +7,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; -import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.SectionIndexer; @@ -26,8 +25,7 @@ import java.util.Locale; import java.util.Map; public class ContactsListAdapter extends SelectableAdapter implements SectionIndexer { -//public class ContactsListAdapter extends RecyclerView.Adapter implements SectionIndexer { -// class ContactsListAdapter extends BaseAdapter implements SectionIndexer { + public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener{ public CheckBox delete; @@ -148,9 +146,6 @@ public class ContactsListAdapter extends SelectableAdapter= getItemCount()) return null; return contacts.get(position); } - public boolean isSearchMode(){ - return this.isSearchMode; - } public void setSearchMode(boolean set){ isSearchMode = set; diff --git a/src/android/org/linphone/contacts/ContactsListFragment.java b/src/android/org/linphone/contacts/ContactsListFragment.java index da99a5072..3e2aa6f15 100644 --- a/src/android/org/linphone/contacts/ContactsListFragment.java +++ b/src/android/org/linphone/contacts/ContactsListFragment.java @@ -20,12 +20,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import android.app.Dialog; import android.app.Fragment; import android.content.Context; -import android.graphics.Color; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -33,46 +30,29 @@ import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; -import android.view.View.OnClickListener; import android.view.ViewGroup; -import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; -import android.widget.BaseAdapter; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ListView; import android.widget.ProgressBar; -import android.widget.SectionIndexer; import android.widget.TextView; -import org.linphone.core.ChatRoom; -import org.linphone.fragments.FragmentsAvailable; import org.linphone.LinphoneManager; -import org.linphone.LinphoneUtils; import org.linphone.R; import org.linphone.activities.LinphoneActivity; +import org.linphone.fragments.FragmentsAvailable; import org.linphone.ui.SelectableHelper; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Locale; -import java.util.Map; public class ContactsListFragment extends Fragment implements OnItemClickListener, ContactsUpdatedListener, ContactsListAdapter.ViewHolder.ClickListener ,SelectableHelper.DeleteListener { -//public class ContactsListFragment extends Fragment implements OnClickListener, OnItemClickListener, ContactsUpdatedListener { - private LayoutInflater mInflater; private RecyclerView contactsList; private TextView noSipContact, noContact; private ImageView allContacts, linphoneContacts, newContact, edit; private boolean onlyDisplayLinphoneContacts; private View allContactsSelected, linphoneContactsSelected; - private LinearLayout topbar; private int lastKnownPosition; private boolean editOnClick = false, editConsumed = false, onlyDisplayChatAddress = false; private String sipAddressToAdd, displayName = null; @@ -86,7 +66,6 @@ public class ContactsListFragment extends Fragment implements OnItemClickListene @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - mInflater = inflater; View view = inflater.inflate(R.layout.contacts_list, container, false); mContext = getActivity().getApplicationContext(); mSelectionHelper = new SelectableHelper(view, this); @@ -107,7 +86,6 @@ public class ContactsListFragment extends Fragment implements OnItemClickListene linphoneContacts = (ImageView) view.findViewById(R.id.linphone_contacts); allContactsSelected = view.findViewById(R.id.all_contacts_select); linphoneContactsSelected = view.findViewById(R.id.linphone_contacts_select); - topbar = (LinearLayout) view.findViewById(R.id.top_bar); edit = (ImageView) view.findViewById(R.id.edit); contactsFetchInProgress = (ProgressBar) view.findViewById(R.id.contactsFetchInProgress); newContact = (ImageView) view.findViewById(R.id.newContact); @@ -202,26 +180,6 @@ public class ContactsListFragment extends Fragment implements OnItemClickListene return view; } -// public int getNbItemsChecked(){ -// int size = mContactAdapter.getItemCount(); -//// int size = contactsList.getAdapter().getItemCount(); -// int nb = 0; -// for(int i=0; i 0) { ContactsListAdapter mAdapt = (ContactsListAdapter)contactsList.getAdapter(); @@ -231,13 +189,8 @@ public class ContactsListFragment extends Fragment implements OnItemClickListene } } -// private void searchContacts() { -// searchContacts(searchField.getText().toString()); -// } - private void searchContacts(String search) { boolean isEditionEnabled = false; -// mSelectionHelper.quitEditionMode(); if (search == null || search.length() == 0) { changeContactsAdapter(); return; @@ -298,7 +251,6 @@ public class ContactsListFragment extends Fragment implements OnItemClickListene mContactAdapter = new ContactsListAdapter(mContext, listContact, this, mSelectionHelper); -// mContactAdapter.setSearchMode(false); mSelectionHelper.setAdapter(mContactAdapter); diff --git a/src/android/org/linphone/contacts/SearchContactsListAdapter.java b/src/android/org/linphone/contacts/SearchContactsListAdapter.java index 3654319f3..df300bae6 100644 --- a/src/android/org/linphone/contacts/SearchContactsListAdapter.java +++ b/src/android/org/linphone/contacts/SearchContactsListAdapter.java @@ -24,9 +24,7 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.BaseAdapter; import android.widget.ImageView; -import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; @@ -34,7 +32,6 @@ import org.linphone.LinphoneManager; import org.linphone.LinphoneUtils; import org.linphone.R; import org.linphone.activities.LinphoneActivity; -import org.linphone.chat.ChatBubbleViewHolder; import org.linphone.core.Address; import org.linphone.core.Factory; import org.linphone.core.ProxyConfig; @@ -44,7 +41,6 @@ import java.util.ArrayList; import java.util.List; public class SearchContactsListAdapter extends RecyclerView.Adapter { -//public class SearchContactsListAdapter extends BaseAdapter { @SuppressWarnings("unused") private static final String TAG = SearchContactsListAdapter.class.getSimpleName(); @@ -76,18 +72,16 @@ public class SearchContactsListAdapter extends RecyclerView.Adapter contacts; private List contactsSelected; - private LayoutInflater mInflater; private ProgressBar progressBar; private boolean mOnlySipContact = false; private ViewHolder.ClickListener listener; -// private View.OnClickListener listener; public List getContacts() { return contacts; @@ -101,9 +95,8 @@ public class SearchContactsListAdapter extends RecyclerView.Adapter contactsList, LayoutInflater inflater, ProgressBar pB, ViewHolder.ClickListener clickListener) { + public SearchContactsListAdapter(List contactsList, ProgressBar pB, ViewHolder.ClickListener clickListener) { this.listener=clickListener; - mInflater = inflater; progressBar = pB; setContactsSelectedList(null); setContactsList(contactsList); @@ -164,9 +157,6 @@ public class SearchContactsListAdapter extends RecyclerView.Adapter result = new ArrayList<>(); String domain = ""; @@ -298,70 +287,5 @@ public class SearchContactsListAdapter extends RecyclerView.Adapter exte mListHelper = helper; } -// private CompoundButton.OnCheckedChangeListener mDeleteCheckboxListener = new CompoundButton.OnCheckedChangeListener() { -// @Override -// public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { -// mListHelper.updateSelectionButtons(mSelectedItems.size() == 0, mSelectedItems.size() == getItemCount()); -// } -// }; -// public CompoundButton.OnCheckedChangeListener getDeleteListener() { -// return mDeleteCheckboxListener; -// } public boolean isEditionEnabled() { return mIsEditionEnabled; } @@ -62,17 +52,6 @@ public abstract class SelectableAdapter exte notifyItemChanged(position); } - /** - * Clear the selection status for all items - */ -// public void clearSelection() { -// List selection = getSelectedItems(); -// mSelectedItems.clear(); -// for (Integer i : selection) { -// notifyItemChanged(i); -// } -// } - /** * Count the selected items * @return Selected items count @@ -96,13 +75,10 @@ public abstract class SelectableAdapter exte public void selectAll() { for (Integer i = 0; i < getItemCount(); i++) { mSelectedItems.put(i, true); -// notifyItemChanged(i); notifyDataSetChanged(); - } mListHelper.updateSelectionButtons(false, true); -// notifyDataSetChanged(); } public void deselectAll() { diff --git a/src/android/org/linphone/ui/SelectableHelper.java b/src/android/org/linphone/ui/SelectableHelper.java index 9b35b5581..33af0296a 100644 --- a/src/android/org/linphone/ui/SelectableHelper.java +++ b/src/android/org/linphone/ui/SelectableHelper.java @@ -51,6 +51,8 @@ public class SelectableHelper { mContext = view.getContext(); mDeleteListener = listener; + //Define XML layout items used for selection mode + mEditTopBar = view.findViewById(R.id.edit_list); mTopBar = view.findViewById(R.id.top_bar); @@ -63,12 +65,13 @@ public class SelectableHelper { }); mEditButton = view.findViewById(R.id.edit); + + //Set visibility behaviour on click on edit button + enter Edition Mode mEditButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mAdapter.getItemCount() > 0) { enterEditionMode(); -// mAdapter.enableEdition(true); mTopBar.setVisibility(View.GONE); mEditTopBar.setVisibility(View.VISIBLE); } @@ -132,12 +135,15 @@ public class SelectableHelper { public void updateSelectionButtons(boolean isSelectionEmpty, boolean isSelectionFull) { + + //Delete button availability if (isSelectionEmpty) { mDeleteSelectionButton.setEnabled(false); } else { mDeleteSelectionButton.setEnabled(true); } + //(De)select button visibility if (isSelectionFull) { mSelectAllButton.setVisibility(View.GONE); mDeselectAllButton.setVisibility(View.VISIBLE); diff --git a/src/android/org/linphone/ui/SwipeController.java b/src/android/org/linphone/ui/SwipeController.java index 3673c7314..20e1458c4 100644 --- a/src/android/org/linphone/ui/SwipeController.java +++ b/src/android/org/linphone/ui/SwipeController.java @@ -22,6 +22,11 @@ enum ButtonsState { * https://codeburst.io/android-swipe-menu-with-recyclerview-8f28a235ff28 * */ + +/* +* All commented code is meant to preserve left swipe behaviour for future work +* */ + public class SwipeController extends Callback { private boolean swipeBack = false;