mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-28 03:36:45 +02:00
Disable multiple select on swiping
This commit is contained in:
@@ -134,6 +134,7 @@ public class FragmentMessages extends FragmentBase {
|
||||
private AdapterMessage adapter;
|
||||
|
||||
private AdapterMessage.ViewType viewType;
|
||||
private SelectionPredicateMessage selectionPredicate = null;
|
||||
private SelectionTracker<Long> selectionTracker = null;
|
||||
|
||||
private Long previous = null;
|
||||
@@ -424,7 +425,7 @@ public class FragmentMessages extends FragmentBase {
|
||||
});
|
||||
|
||||
} else {
|
||||
final SelectionPredicateMessage predicate = new SelectionPredicateMessage(rvMessage);
|
||||
selectionPredicate = new SelectionPredicateMessage(rvMessage);
|
||||
|
||||
selectionTracker = new SelectionTracker.Builder<>(
|
||||
"messages-selection",
|
||||
@@ -432,7 +433,7 @@ public class FragmentMessages extends FragmentBase {
|
||||
new ItemKeyProviderMessage(rvMessage),
|
||||
new ItemDetailsLookupMessage(rvMessage),
|
||||
StorageStrategy.createLongStorage())
|
||||
.withSelectionPredicate(predicate)
|
||||
.withSelectionPredicate(selectionPredicate)
|
||||
.build();
|
||||
adapter.setSelectionTracker(selectionTracker);
|
||||
|
||||
@@ -690,6 +691,9 @@ public class FragmentMessages extends FragmentBase {
|
||||
AdapterMessage.ViewHolder holder = ((AdapterMessage.ViewHolder) viewHolder);
|
||||
holder.setDisplacement(dX);
|
||||
|
||||
if (selectionPredicate != null)
|
||||
selectionPredicate.setEnabled(!isCurrentlyActive);
|
||||
|
||||
TupleMessageEx message = getMessage(viewHolder);
|
||||
if (message == null)
|
||||
return;
|
||||
|
||||
@@ -24,14 +24,23 @@ import androidx.recyclerview.selection.SelectionTracker;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
public class SelectionPredicateMessage extends SelectionTracker.SelectionPredicate<Long> {
|
||||
private boolean enabled;
|
||||
private RecyclerView recyclerView;
|
||||
|
||||
SelectionPredicateMessage(RecyclerView recyclerView) {
|
||||
this.enabled = true;
|
||||
this.recyclerView = recyclerView;
|
||||
}
|
||||
|
||||
void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSetStateForKey(@NonNull Long key, boolean nextState) {
|
||||
if (!enabled)
|
||||
return false;
|
||||
|
||||
AdapterMessage adapter = (AdapterMessage) recyclerView.getAdapter();
|
||||
TupleMessageEx message = adapter.getItemForKey(key);
|
||||
|
||||
@@ -43,6 +52,9 @@ public class SelectionPredicateMessage extends SelectionTracker.SelectionPredica
|
||||
|
||||
@Override
|
||||
public boolean canSetStateAtPosition(int position, boolean nextState) {
|
||||
if (!enabled)
|
||||
return false;
|
||||
|
||||
AdapterMessage adapter = (AdapterMessage) recyclerView.getAdapter();
|
||||
TupleMessageEx message = adapter.getItemAtPosition(position);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user