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:
parent
9c1fc98bb1
commit
dbba5ca413
4 changed files with 117 additions and 106 deletions
|
@ -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=""/>
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
Loading…
Reference in a new issue