Interface d origine conservee, ContextualActionBar definie a une hauteur de 1dp et background vide, inutilisee. L ActionMode fournit tout de meme ses services

This commit is contained in:
LuLe73 2018-05-29 15:50:56 +02:00 committed by Lucas Legrand
parent 9c1fc98bb1
commit dbba5ca413
4 changed files with 117 additions and 106 deletions

View file

@ -5,9 +5,9 @@
android:id="@+id/edit_list_menu" android:id="@+id/edit_list_menu"
android:orientation="horizontal" android:orientation="horizontal"
android:background="@color/colorA" android:background="@color/colorA"
android:height="100dp" android:height="1dp"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="100dp" android:layout_height="1dp"
android:visibility="gone" android:visibility="gone"
> >
@ -27,7 +27,7 @@
android:id="@+id/deselect_all" android:id="@+id/deselect_all"
android:icon="@drawable/deselect_all" android:icon="@drawable/deselect_all"
app:showAsAction="ifRoom" app:showAsAction="ifRoom"
android:orderInCategory="200" android:orderInCategory="100"
android:visible="false" android:visible="false"
android:title=""/> android:title=""/>

View file

@ -10,14 +10,14 @@
</style> </style>
<style name="NoTitle.ActionMode" parent="@style/Widget.AppCompat.ActionMode"> <style name="NoTitle.ActionMode" parent="@style/Widget.AppCompat.ActionMode">
<item name="android:background">@color/colorF</item> <item name="android:background"></item>
<item name="android:height">100dp</item> <item name="android:height">1dp</item>
</style> </style>
<style name="ActionModeButtonStyle" parent="Widget.AppCompat.ActionButton"> <style name="ActionModeButtonStyle" parent="Widget.AppCompat.ActionButton">
<item name="android:minWidth">30dp</item> <item name="android:minWidth">1dp</item>
<item name="android:maxWidth">48dp</item> <item name="android:maxWidth">1dp</item>
<item name="android:width">48dp</item> <item name="android:width">1dp</item>
</style> </style>

View file

@ -25,22 +25,18 @@ import android.app.Fragment;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.text.Layout; import android.support.v7.widget.Toolbar;
import android.view.ActionMode; import android.view.ActionMode;
import android.support.v7.app.ActionBar;
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 android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
//import android.widget.Toolbar;
import android.support.v7.widget.Toolbar;
import org.linphone.LinphoneManager; import org.linphone.LinphoneManager;
import org.linphone.R; import org.linphone.R;
import org.linphone.activities.LinphoneActivity; import org.linphone.activities.LinphoneActivity;
@ -52,7 +48,6 @@ import org.linphone.core.ChatRoomListenerStub;
import org.linphone.core.Core; import org.linphone.core.Core;
import org.linphone.core.CoreListenerStub; import org.linphone.core.CoreListenerStub;
import org.linphone.fragments.FragmentsAvailable; import org.linphone.fragments.FragmentsAvailable;
import org.linphone.mediastream.Log;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -60,15 +55,18 @@ import java.util.List;
import static org.linphone.fragments.FragmentsAvailable.CHAT_LIST; import static org.linphone.fragments.FragmentsAvailable.CHAT_LIST;
public class ChatListFragment extends Fragment implements ContactsUpdatedListener, ListSelectionHelper.DeleteListener { //import android.widget.Toolbar;
//public class ChatListFragment extends Fragment implements ContactsUpdatedListener, ListSelectionHelper.DeleteListener {
public class ChatListFragment extends Fragment implements ContactsUpdatedListener, /**ListSelectionHelper.DeleteListener,*/ ChatRoomsAdapter.ChatRoomViewHolder.ClickListener {
//public class ChatListFragment extends Fragment { //public class ChatListFragment extends Fragment {
private ActionModeCallback actionModeCallback = new ActionModeCallback(); private ActionModeCallback actionModeCallback = new ActionModeCallback();
private ActionMode actionMode; private ActionMode actionMode;
private LinearLayout mTabBar; private LinearLayout mTabBar, mEditTopBar, mTopBar;
private DrawerLayout mSideMenu; private DrawerLayout mSideMenu;
private ImageView mEditButton; private ImageView mEditButton, mSelectAllButton, mDeselectAllButton,mDeleteButton, mCancelButton;
private MenuItem mSelectAllButton, mDeselectAllButton, mDeleteButton;
private RecyclerView mChatRoomsList; private RecyclerView mChatRoomsList;
private TextView mNoChatHistory; private TextView mNoChatHistory;
private ImageView mNewDiscussionButton, mBackToCallButton; private ImageView mNewDiscussionButton, mBackToCallButton;
@ -121,18 +119,11 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene
// mNoChatHistory = view.findViewById(R.id.noChatHistory); // mNoChatHistory = view.findViewById(R.id.noChatHistory);
// mNoChatHistory.setVisibility(View.GONE); // mNoChatHistory.setVisibility(View.GONE);
//mEditTopBar = view.findViewById(R.id.edit_list_menu); mEditTopBar = view.findViewById(R.id.edit_list);
mTopBar = view.findViewById(R.id.top_bar);
mSelectAllButton = view.findViewById(R.id.select_all);
mDeselectAllButton = view.findViewById(R.id.deselect_all);
// mTopBar = view.findViewById(R.id.top_bar); mDeleteButton= view.findViewById(R.id.delete);
// Toolbar toolbar = this.getActivity().findViewById(R.id.context_bar);
// mStatusBar = view.findViewById(R.id.status);
mEditButton = view.findViewById(R.id.edit); mEditButton = view.findViewById(R.id.edit);
mEditButton.setOnClickListener(new View.OnClickListener() { mEditButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
@ -140,22 +131,18 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene
actionMode = getActivity().startActionMode(actionModeCallback); actionMode = getActivity().startActionMode(actionModeCallback);
// getActivity().setActionBar(); // getActivity().setActionBar();
// mChatRoomsAdapter.setEditionMode(actionMode);
// mTopBar.setVisibility(View.GONE);
// mEditTopBar.setVisibility(View.VISIBLE);
} }
}); });
// mCancelButton = view.findViewById(R.id.cancel); mCancelButton = view.findViewById(R.id.cancel);
// mCancelButton.setOnClickListener(new View.OnClickListener() { // mCancelButton.setOnClickListener(new View.OnClickListener() {
// @Override // @Override
// public void onClick(View v) { // public void onClick(View v) {
// actionMode.invalidate(); // actionMode.invalidate();
// } // }
// }); // });
// mDeselectAllButton = view.findViewById(R.id.deselect_all);
// mSelectAllButton = view.findViewById(R.id.select_all); // mSelectAllButton = view.findViewById(R.id.select_all);
@ -240,19 +227,21 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene
// //
int count = mChatRoomsAdapter.getSelectedItemCount(); int count = mChatRoomsAdapter.getSelectedItemCount();
if (count < mChatRoomsAdapter.getItemCount()) { if (count < mChatRoomsAdapter.getItemCount()/* || (mChatRoomsAdapter.getItemCount()==1 && count == 1)*/) {
// actionMode.finish(); // actionMode.finish();
mDeselectAllButton.setVisible(false); mDeselectAllButton.setVisibility(View.GONE);
mSelectAllButton.setVisible(true); mSelectAllButton.setVisibility(View.VISIBLE);
} else { } /*else if (mChatRoomsAdapter.getItemCount()==1 && count == 1){
// actionMode.setTitle(String.valueOf(count)); // actionMode.setTitle(String.valueOf(count));
mDeselectAllButton.setVisible(true); mSelectAllButton.setVisibility(View.VISIBLE);
mSelectAllButton.setVisible(false); mDeselectAllButton.setVisibility(View.GONE);
} */else{
mSelectAllButton.setVisibility(View.GONE);
mDeselectAllButton.setVisibility(View.VISIBLE);
} }
getActivity().invalidateOptionsMenu(); mChatRoomsAdapter.notifyItemChanged(position);
actionMode.invalidate(); actionMode.invalidate();
} }
@ -263,39 +252,62 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene
@Override @Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) { public boolean onCreateActionMode(ActionMode mode, Menu menu) {
//mTopBar.setVisibility(View.GONE); actionMode=mode;
// Toolbar contextBar =
// (RelativeLayout) view.findViewById(R.id.status);
// getActivity().getContext();
// View v = View.inflate(R.layout.status, null);
// View view = (RelativeLayout)inflater.inflate(R.layout.chatlist, container, false);
// mStatusBar.setVisibility(View.VISIBLE);
mode.getMenuInflater().inflate (R.menu.edit_list_menu, menu);
// Menu contextBar = menu;
mDeselectAllButton = menu.findItem(R.id.deselect_all);
mSelectAllButton = menu.findItem(R.id.select_all);
mDeleteButton = menu.findItem(R.id.select_all);
mTabBar = (LinearLayout) getActivity().findViewById(R.id.footer);
mTabBar.setVisibility(View.INVISIBLE);
mSideMenu=(DrawerLayout) getActivity().findViewById(R.id.side_menu);
mSideMenu.setDrawerLockMode(1);
// SlidingDrawer simpleSlidingDrawer = (SlidingDrawer) getActivity().findViewById(R.id.side_menu); // initiate the SlidingDrawer
// simpleSlidingDrawer.lock(); // lock the sliderDrawer so that touch event are disabled
// menu.findItem(R.id.menu_search).getActionView();
// LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// View tv= inflater.inflate(R.layout.context_bar, null);
// mode.setCustomView(tv);
// (Toolbar) findViewById(R.id.status);
//mEditTopBar.setVisibility(View.VISIBLE);
for (Integer i = 0; i <= mChatRoomsAdapter.getItemCount(); i++) { for (Integer i = 0; i <= mChatRoomsAdapter.getItemCount(); i++) {
mChatRoomsAdapter.setEditionMode(mode); mChatRoomsAdapter.setEditionMode(mode);
} }
mTopBar.setVisibility(View.GONE);
mEditTopBar.setVisibility(View.VISIBLE);
// mode.getMenuInflater().inflate (R.menu.edit_list_menu, menu);
mCancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
actionMode.finish();
}
});
mTabBar = (LinearLayout) getActivity().findViewById(R.id.footer);
// mTabBar.setVisibility(View.GONE);
mSideMenu=(DrawerLayout) getActivity().findViewById(R.id.side_menu);
mSideMenu.setDrawerLockMode(1);
//Add all non-selected items to the selection
mSelectAllButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (Integer i = 0; i < mChatRoomsAdapter.getItemCount(); i++) {
if (!mChatRoomsAdapter.isSelected(i)) {
toggleSelection(i);
}
}
}
});
//Remove all selected items from the selection
mDeselectAllButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (Integer i = 0; i < mChatRoomsAdapter.getItemCount(); i++) {
if (mChatRoomsAdapter.isSelected(i)) {
toggleSelection(i);
}
}
}
});
mDeleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mChatRoomsAdapter.removeItems(mChatRoomsAdapter.getSelectedItems());
actionMode.finish();
}
});
return true; return true;
} }
@ -315,30 +327,30 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene
public boolean onActionItemClicked(ActionMode mode, MenuItem item) { public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.delete: // case R.id.delete:
// TODO: actually remove items // // TODO: actually remove items
// Log.d(TAG, "menu_remove"); //// Log.d(TAG, "menu_remove");
mChatRoomsAdapter.removeItems(mChatRoomsAdapter.getSelectedItems()); // mChatRoomsAdapter.removeItems(mChatRoomsAdapter.getSelectedItems());
mode.finish(); // mode.finish();
return true; // return true;
//
// case R.id.select_all:
// //Add all non-selected items to the selection
// for (Integer i = 0; i < mChatRoomsAdapter.getItemCount(); i++) {
// if (!mChatRoomsAdapter.isSelected(i)) {
// toggleSelection(i);
// }
// }
//
// return true;
case R.id.select_all: // case R.id.deselect_all:
//Add all non-selected items to the selection // for (Integer i = 0; i < mChatRoomsAdapter.getItemCount(); i++) {
for (Integer i = 0; i < mChatRoomsAdapter.getItemCount(); i++) { // if (mChatRoomsAdapter.isSelected(i)) {
if (!mChatRoomsAdapter.isSelected(i)) { // toggleSelection(i);
toggleSelection(i); // }
} // }
} // return true;
return true;
case R.id.deselect_all:
for (Integer i = 0; i < mChatRoomsAdapter.getItemCount(); i++) {
if (mChatRoomsAdapter.isSelected(i)) {
toggleSelection(i);
}
}
return true;
// case R.id.cancel: // case R.id.cancel:
// mode.finish(); // mode.finish();
default: default:
@ -351,9 +363,12 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene
public void onDestroyActionMode(ActionMode mode) { public void onDestroyActionMode(ActionMode mode) {
mChatRoomsAdapter.clearSelection(); mChatRoomsAdapter.clearSelection();
mTabBar.setVisibility(View.VISIBLE); // mTabBar.setVisibility(View.VISIBLE);
mTopBar.setVisibility(View.VISIBLE);
mEditTopBar.setVisibility(View.GONE);
mSideMenu.setDrawerLockMode(0); mSideMenu.setDrawerLockMode(0);
mChatRoomsAdapter.clearSelection();
actionMode = null; actionMode = null;
mChatRoomsAdapter.setEditionMode(actionMode); mChatRoomsAdapter.setEditionMode(actionMode);
@ -392,7 +407,7 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene
if (LinphoneManager.getLc().getCallsNb() > 0) { if (LinphoneManager.getLc().getCallsNb() > 0) {
mBackToCallButton.setVisibility(View.VISIBLE); mBackToCallButton.setVisibility(View.VISIBLE);
} else { } else {
mBackToCallButton.setVisibility(View.INVISIBLE); mBackToCallButton.setVisibility(View.GONE);
} }
if (LinphoneActivity.isInstanciated()) { if (LinphoneActivity.isInstanciated()) {
@ -417,13 +432,8 @@ public class ChatListFragment extends Fragment implements ContactsUpdatedListene
ContactsManager.removeContactsListener(this); ContactsManager.removeContactsListener(this);
mChatRoomsAdapter.clearSelection();
// mTabBar.setVisibility(View.VISIBLE);
actionMode = null; // mChatRoomsAdapter.clear();
mChatRoomsAdapter.setEditionMode(actionMode);
mChatRoomsAdapter.clear();
super.onPause(); super.onPause();
} }

View file

@ -302,6 +302,7 @@ public class ChatRoomsAdapter extends RecyclerView.Adapter<ChatRoomsAdapter.Chat
if (positions.size() == 1) { if (positions.size() == 1) {
removeItem(positions.get(0)); removeItem(positions.get(0));
positions.remove(0); positions.remove(0);
} else { } else {
int count = 1; int count = 1;
while (positions.size() > count && positions.get(count).equals(positions.get(count - 1) - 1)) { while (positions.size() > count && positions.get(count).equals(positions.get(count - 1) - 1)) {