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 List<LinphoneContact> mParticipants;
private LayoutInflater mLayoutInflater; private LayoutInflater mLayoutInflater;
private Bitmap mDefaultBitmap; private Bitmap mDefaultBitmap;
private boolean mIsEditionEnabled; 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) { public ChatEventsAdapter(Context context, GroupChatFragment fragment, LayoutInflater inflater, EventLog[] history, ArrayList<LinphoneContact> participants) {
mContext = context; mContext = context;
@ -89,6 +103,7 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
mHistory = new ArrayList<>(Arrays.asList(history)); mHistory = new ArrayList<>(Arrays.asList(history));
mParticipants = participants; mParticipants = participants;
mIsEditionEnabled = false; mIsEditionEnabled = false;
mSelectedItems = new ArrayList<>();
} }
public void addToHistory(EventLog log) { public void addToHistory(EventLog log) {
@ -100,11 +115,44 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
mParticipants = participants; mParticipants = participants;
} }
/**
* List edition
*/
public void enableEdition(boolean enable) { public void enableEdition(boolean enable) {
mIsEditionEnabled = enable; mIsEditionEnabled = enable;
notifyDataSetInvalidated(); 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 @Override
public int getCount() { public int getCount() {
return mHistory.size(); return mHistory.size();
@ -146,12 +194,10 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
holder.imdmLayout.setVisibility(View.INVISIBLE); holder.imdmLayout.setVisibility(View.INVISIBLE);
if (mIsEditionEnabled) { if (mIsEditionEnabled) {
holder.delete.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { holder.delete.setOnCheckedChangeListener(null);
@Override holder.delete.setChecked(mSelectedItems.contains(i));
public void onCheckedChanged(CompoundButton compoundButton, boolean b) { holder.delete.setTag(i);
//TODO holder.delete.setOnCheckedChangeListener(mDeleteCheckboxListener);
}
});
} }
EventLog event = (EventLog)getItem(i); EventLog event = (EventLog)getItem(i);

View file

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