Selection of events done, removal to do

This commit is contained in:
Sylvain Berfini 2017-11-03 11:21:06 +01:00
parent 33e9b04f5d
commit 7c747ec700
2 changed files with 71 additions and 12 deletions

View file

@ -80,7 +80,21 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
private List<LinphoneContact> mParticipants;
private LayoutInflater mLayoutInflater;
private Bitmap mDefaultBitmap;
private boolean mIsEditionEnabled;
private List<Integer> mSelectedItems;
private CompoundButton.OnCheckedChangeListener mDeleteCheckboxListener = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
Integer position = (Integer)compoundButton.getTag();
if (checked) {
mSelectedItems.add(position);
} else {
mSelectedItems.remove(position);
}
mFragment.updateSelectionButtons(mSelectedItems.size() == 0, mSelectedItems.size() == mHistory.size());
}
};
public ChatEventsAdapter(Context context, GroupChatFragment fragment, LayoutInflater inflater, EventLog[] history, ArrayList<LinphoneContact> participants) {
mContext = context;
@ -89,6 +103,7 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
mHistory = new ArrayList<>(Arrays.asList(history));
mParticipants = participants;
mIsEditionEnabled = false;
mSelectedItems = new ArrayList<>();
}
public void addToHistory(EventLog log) {
@ -100,11 +115,44 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
mParticipants = participants;
}
/**
* List edition
*/
public void enableEdition(boolean enable) {
mIsEditionEnabled = enable;
notifyDataSetInvalidated();
mSelectedItems.clear();
}
public EventLog[] getSelectedItems() {
EventLog logs[] = new EventLog[mSelectedItems.size()];
int index = 0;
for (Integer i : mSelectedItems) {
logs[index] = (EventLog)getItem(i);
index++;
}
return logs;
}
public void selectAll() {
for (Integer i = 0; i < mHistory.size(); i++) {
mSelectedItems.add(i);
}
mFragment.updateSelectionButtons(false, true);
notifyDataSetInvalidated();
}
public void deselectAll() {
mSelectedItems.clear();
mFragment.updateSelectionButtons(true, false);
notifyDataSetInvalidated();
}
/**
* Adapter's methods
*/
@Override
public int getCount() {
return mHistory.size();
@ -146,12 +194,10 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
holder.imdmLayout.setVisibility(View.INVISIBLE);
if (mIsEditionEnabled) {
holder.delete.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
//TODO
}
});
holder.delete.setOnCheckedChangeListener(null);
holder.delete.setChecked(mSelectedItems.contains(i));
holder.delete.setTag(i);
holder.delete.setOnCheckedChangeListener(mDeleteCheckboxListener);
}
EventLog event = (EventLog)getItem(i);

View file

@ -177,9 +177,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
mSelectAllButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSelectAllButton.setVisibility(View.GONE);
mDeselectAllButton.setVisibility(View.VISIBLE);
mDeleteSelectionButton.setEnabled(true);
mEventsAdapter.selectAll();
}
});
@ -187,9 +185,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
mDeselectAllButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSelectAllButton.setVisibility(View.VISIBLE);
mDeselectAllButton.setVisibility(View.GONE);
mDeleteSelectionButton.setEnabled(false);
mEventsAdapter.deselectAll();
}
});
@ -345,9 +341,26 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
*/
private void deleteSelectedEvents() {
EventLog logs[] = mEventsAdapter.getSelectedItems();
//TODO
}
public void updateSelectionButtons(boolean isSelectionEmpty, boolean isSelectionFull) {
if (isSelectionEmpty) {
mDeleteSelectionButton.setEnabled(false);
} else {
mDeleteSelectionButton.setEnabled(true);
}
if (isSelectionFull) {
mSelectAllButton.setVisibility(View.GONE);
mDeselectAllButton.setVisibility(View.VISIBLE);
} else {
mSelectAllButton.setVisibility(View.VISIBLE);
mDeselectAllButton.setVisibility(View.GONE);
}
}
private void quitEditionMode() {
mEventsAdapter.enableEdition(false);
mTopBar.setVisibility(View.VISIBLE);