Selection of events done, removal to do
This commit is contained in:
parent
33e9b04f5d
commit
7c747ec700
2 changed files with 71 additions and 12 deletions
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue