113 lines
4.4 KiB
Java
113 lines
4.4 KiB
Java
package com.discord.utilities.mg_recycler;
|
|
|
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import d0.z.d.m;
|
|
import kotlin.jvm.internal.DefaultConstructorMarker;
|
|
/* compiled from: DragAndDropHelper.kt */
|
|
public final class DragAndDropHelper extends ItemTouchHelper.Callback {
|
|
public static final Companion Companion = new Companion(null);
|
|
private static final int DEFAULT_DRAG_SCROLL_SPEED = 15;
|
|
private final Adapter adapter;
|
|
private final int dragScrollSpeed;
|
|
|
|
/* compiled from: DragAndDropHelper.kt */
|
|
public interface Adapter {
|
|
boolean isValidMove(int i, int i2);
|
|
|
|
void onDrop();
|
|
|
|
void onItemMove(int i, int i2);
|
|
}
|
|
|
|
/* compiled from: DragAndDropHelper.kt */
|
|
public static final class Companion {
|
|
private Companion() {
|
|
}
|
|
|
|
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
|
|
this();
|
|
}
|
|
}
|
|
|
|
/* compiled from: DragAndDropHelper.kt */
|
|
public interface DraggableViewHolder {
|
|
boolean canDrag();
|
|
|
|
void onDragStateChanged(boolean z2);
|
|
}
|
|
|
|
public DragAndDropHelper(Adapter adapter) {
|
|
this(adapter, 0, 2, null);
|
|
}
|
|
|
|
public DragAndDropHelper(Adapter adapter, int i) {
|
|
m.checkNotNullParameter(adapter, "adapter");
|
|
this.adapter = adapter;
|
|
this.dragScrollSpeed = i;
|
|
}
|
|
|
|
/* JADX INFO: this call moved to the top of the method (can break code semantics) */
|
|
public /* synthetic */ DragAndDropHelper(Adapter adapter, int i, int i2, DefaultConstructorMarker defaultConstructorMarker) {
|
|
this(adapter, (i2 & 2) != 0 ? 15 : i);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
|
|
m.checkNotNullParameter(recyclerView, "recyclerView");
|
|
m.checkNotNullParameter(viewHolder, "viewHolder");
|
|
super.clearView(recyclerView, viewHolder);
|
|
((DraggableViewHolder) viewHolder).onDragStateChanged(false);
|
|
this.adapter.onDrop();
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
|
|
m.checkNotNullParameter(recyclerView, "recyclerView");
|
|
m.checkNotNullParameter(viewHolder, "viewHolder");
|
|
return ItemTouchHelper.Callback.makeMovementFlags((viewHolder instanceof DraggableViewHolder) && ((DraggableViewHolder) viewHolder).canDrag() ? 3 : 0, 0);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public int interpolateOutOfBoundsScroll(RecyclerView recyclerView, int i, int i2, int i3, long j) {
|
|
m.checkNotNullParameter(recyclerView, "recyclerView");
|
|
return this.dragScrollSpeed * ((int) Math.signum((float) i2));
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public boolean isItemViewSwipeEnabled() {
|
|
return false;
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public boolean isLongPressDragEnabled() {
|
|
return true;
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder viewHolder2) {
|
|
m.checkNotNullParameter(recyclerView, "recyclerView");
|
|
m.checkNotNullParameter(viewHolder, "source");
|
|
m.checkNotNullParameter(viewHolder2, "target");
|
|
if (!this.adapter.isValidMove(viewHolder.getAdapterPosition(), viewHolder2.getAdapterPosition())) {
|
|
return false;
|
|
}
|
|
this.adapter.onItemMove(viewHolder.getAdapterPosition(), viewHolder2.getAdapterPosition());
|
|
return true;
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int i) {
|
|
if (i == 2) {
|
|
DraggableViewHolder draggableViewHolder = (DraggableViewHolder) viewHolder;
|
|
m.checkNotNull(draggableViewHolder);
|
|
draggableViewHolder.onDragStateChanged(true);
|
|
}
|
|
super.onSelectedChanged(viewHolder, i);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.ItemTouchHelper.Callback
|
|
public void onSwiped(RecyclerView.ViewHolder viewHolder, int i) {
|
|
m.checkNotNullParameter(viewHolder, "viewHolder");
|
|
}
|
|
}
|