mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-25 16:42:30 -06:00
251 lines
9.5 KiB
Java
251 lines
9.5 KiB
Java
package androidx.recyclerview.widget;
|
|
|
|
import androidx.recyclerview.widget.AdapterHelper;
|
|
import java.util.List;
|
|
|
|
/* loaded from: classes2.dex */
|
|
class OpReorderer {
|
|
final Callback mCallback;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* loaded from: classes2.dex */
|
|
public interface Callback {
|
|
AdapterHelper.UpdateOp obtainUpdateOp(int i, int i2, int i3, Object obj);
|
|
|
|
void recycleUpdateOp(AdapterHelper.UpdateOp updateOp);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public OpReorderer(Callback callback) {
|
|
this.mCallback = callback;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void reorderOps(List<AdapterHelper.UpdateOp> list) {
|
|
while (true) {
|
|
int lastMoveOutOfOrder = getLastMoveOutOfOrder(list);
|
|
if (lastMoveOutOfOrder == -1) {
|
|
return;
|
|
} else {
|
|
swapMoveOp(list, lastMoveOutOfOrder, lastMoveOutOfOrder + 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void swapMoveOp(List<AdapterHelper.UpdateOp> list, int i, int i2) {
|
|
AdapterHelper.UpdateOp updateOp = list.get(i);
|
|
AdapterHelper.UpdateOp updateOp2 = list.get(i2);
|
|
int i3 = updateOp2.cmd;
|
|
if (i3 == 1) {
|
|
swapMoveAdd(list, i, updateOp, i2, updateOp2);
|
|
} else if (i3 == 2) {
|
|
swapMoveRemove(list, i, updateOp, i2, updateOp2);
|
|
} else {
|
|
if (i3 != 4) {
|
|
return;
|
|
}
|
|
swapMoveUpdate(list, i, updateOp, i2, updateOp2);
|
|
}
|
|
}
|
|
|
|
void swapMoveRemove(List<AdapterHelper.UpdateOp> list, int i, AdapterHelper.UpdateOp updateOp, int i2, AdapterHelper.UpdateOp updateOp2) {
|
|
boolean z;
|
|
boolean z2 = false;
|
|
if (updateOp.positionStart < updateOp.itemCount) {
|
|
if (updateOp2.positionStart == updateOp.positionStart && updateOp2.itemCount == updateOp.itemCount - updateOp.positionStart) {
|
|
z = false;
|
|
z2 = true;
|
|
} else {
|
|
z = false;
|
|
}
|
|
} else if (updateOp2.positionStart == updateOp.itemCount + 1 && updateOp2.itemCount == updateOp.positionStart - updateOp.itemCount) {
|
|
z = true;
|
|
z2 = true;
|
|
} else {
|
|
z = true;
|
|
}
|
|
if (updateOp.itemCount < updateOp2.positionStart) {
|
|
updateOp2.positionStart--;
|
|
} else if (updateOp.itemCount < updateOp2.positionStart + updateOp2.itemCount) {
|
|
updateOp2.itemCount--;
|
|
updateOp.cmd = 2;
|
|
updateOp.itemCount = 1;
|
|
if (updateOp2.itemCount == 0) {
|
|
list.remove(i2);
|
|
this.mCallback.recycleUpdateOp(updateOp2);
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
AdapterHelper.UpdateOp updateOp3 = null;
|
|
if (updateOp.positionStart <= updateOp2.positionStart) {
|
|
updateOp2.positionStart++;
|
|
} else if (updateOp.positionStart < updateOp2.positionStart + updateOp2.itemCount) {
|
|
updateOp3 = this.mCallback.obtainUpdateOp(2, updateOp.positionStart + 1, (updateOp2.positionStart + updateOp2.itemCount) - updateOp.positionStart, null);
|
|
updateOp2.itemCount = updateOp.positionStart - updateOp2.positionStart;
|
|
}
|
|
if (z2) {
|
|
list.set(i, updateOp2);
|
|
list.remove(i2);
|
|
this.mCallback.recycleUpdateOp(updateOp);
|
|
return;
|
|
}
|
|
if (z) {
|
|
if (updateOp3 != null) {
|
|
if (updateOp.positionStart > updateOp3.positionStart) {
|
|
updateOp.positionStart -= updateOp3.itemCount;
|
|
}
|
|
if (updateOp.itemCount > updateOp3.positionStart) {
|
|
updateOp.itemCount -= updateOp3.itemCount;
|
|
}
|
|
}
|
|
if (updateOp.positionStart > updateOp2.positionStart) {
|
|
updateOp.positionStart -= updateOp2.itemCount;
|
|
}
|
|
if (updateOp.itemCount > updateOp2.positionStart) {
|
|
updateOp.itemCount -= updateOp2.itemCount;
|
|
}
|
|
} else {
|
|
if (updateOp3 != null) {
|
|
if (updateOp.positionStart >= updateOp3.positionStart) {
|
|
updateOp.positionStart -= updateOp3.itemCount;
|
|
}
|
|
if (updateOp.itemCount >= updateOp3.positionStart) {
|
|
updateOp.itemCount -= updateOp3.itemCount;
|
|
}
|
|
}
|
|
if (updateOp.positionStart >= updateOp2.positionStart) {
|
|
updateOp.positionStart -= updateOp2.itemCount;
|
|
}
|
|
if (updateOp.itemCount >= updateOp2.positionStart) {
|
|
updateOp.itemCount -= updateOp2.itemCount;
|
|
}
|
|
}
|
|
list.set(i, updateOp2);
|
|
if (updateOp.positionStart != updateOp.itemCount) {
|
|
list.set(i2, updateOp);
|
|
} else {
|
|
list.remove(i2);
|
|
}
|
|
if (updateOp3 != null) {
|
|
list.add(i, updateOp3);
|
|
}
|
|
}
|
|
|
|
private void swapMoveAdd(List<AdapterHelper.UpdateOp> list, int i, AdapterHelper.UpdateOp updateOp, int i2, AdapterHelper.UpdateOp updateOp2) {
|
|
int i3 = updateOp.itemCount < updateOp2.positionStart ? -1 : 0;
|
|
if (updateOp.positionStart < updateOp2.positionStart) {
|
|
i3++;
|
|
}
|
|
if (updateOp2.positionStart <= updateOp.positionStart) {
|
|
updateOp.positionStart += updateOp2.itemCount;
|
|
}
|
|
if (updateOp2.positionStart <= updateOp.itemCount) {
|
|
updateOp.itemCount += updateOp2.itemCount;
|
|
}
|
|
updateOp2.positionStart += i3;
|
|
list.set(i, updateOp2);
|
|
list.set(i2, updateOp);
|
|
}
|
|
|
|
/* JADX WARN: Removed duplicated region for block: B:10:0x005d */
|
|
/* JADX WARN: Removed duplicated region for block: B:12:0x006b */
|
|
/* JADX WARN: Removed duplicated region for block: B:14:0x0070 */
|
|
/* JADX WARN: Removed duplicated region for block: B:17:? A[RETURN, SYNTHETIC] */
|
|
/* JADX WARN: Removed duplicated region for block: B:18:0x0061 */
|
|
/* JADX WARN: Removed duplicated region for block: B:19:0x0035 */
|
|
/* JADX WARN: Removed duplicated region for block: B:7:0x002f */
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
void swapMoveUpdate(java.util.List<androidx.recyclerview.widget.AdapterHelper.UpdateOp> r8, int r9, androidx.recyclerview.widget.AdapterHelper.UpdateOp r10, int r11, androidx.recyclerview.widget.AdapterHelper.UpdateOp r12) {
|
|
/*
|
|
r7 = this;
|
|
int r0 = r10.itemCount
|
|
int r1 = r12.positionStart
|
|
r2 = 4
|
|
r3 = 1
|
|
r4 = 0
|
|
if (r0 >= r1) goto Lf
|
|
int r0 = r12.positionStart
|
|
int r0 = r0 - r3
|
|
r12.positionStart = r0
|
|
goto L28
|
|
Lf:
|
|
int r0 = r10.itemCount
|
|
int r1 = r12.positionStart
|
|
int r5 = r12.itemCount
|
|
int r1 = r1 + r5
|
|
if (r0 >= r1) goto L28
|
|
int r0 = r12.itemCount
|
|
int r0 = r0 - r3
|
|
r12.itemCount = r0
|
|
androidx.recyclerview.widget.OpReorderer$Callback r0 = r7.mCallback
|
|
int r1 = r10.positionStart
|
|
java.lang.Object r5 = r12.payload
|
|
androidx.recyclerview.widget.AdapterHelper$UpdateOp r0 = r0.obtainUpdateOp(r2, r1, r3, r5)
|
|
goto L29
|
|
L28:
|
|
r0 = r4
|
|
L29:
|
|
int r1 = r10.positionStart
|
|
int r5 = r12.positionStart
|
|
if (r1 > r5) goto L35
|
|
int r1 = r12.positionStart
|
|
int r1 = r1 + r3
|
|
r12.positionStart = r1
|
|
goto L56
|
|
L35:
|
|
int r1 = r10.positionStart
|
|
int r5 = r12.positionStart
|
|
int r6 = r12.itemCount
|
|
int r5 = r5 + r6
|
|
if (r1 >= r5) goto L56
|
|
int r1 = r12.positionStart
|
|
int r4 = r12.itemCount
|
|
int r1 = r1 + r4
|
|
int r4 = r10.positionStart
|
|
int r1 = r1 - r4
|
|
androidx.recyclerview.widget.OpReorderer$Callback r4 = r7.mCallback
|
|
int r5 = r10.positionStart
|
|
int r5 = r5 + r3
|
|
java.lang.Object r3 = r12.payload
|
|
androidx.recyclerview.widget.AdapterHelper$UpdateOp r4 = r4.obtainUpdateOp(r2, r5, r1, r3)
|
|
int r2 = r12.itemCount
|
|
int r2 = r2 - r1
|
|
r12.itemCount = r2
|
|
L56:
|
|
r8.set(r11, r10)
|
|
int r10 = r12.itemCount
|
|
if (r10 <= 0) goto L61
|
|
r8.set(r9, r12)
|
|
goto L69
|
|
L61:
|
|
r8.remove(r9)
|
|
androidx.recyclerview.widget.OpReorderer$Callback r7 = r7.mCallback
|
|
r7.recycleUpdateOp(r12)
|
|
L69:
|
|
if (r0 == 0) goto L6e
|
|
r8.add(r9, r0)
|
|
L6e:
|
|
if (r4 == 0) goto L73
|
|
r8.add(r9, r4)
|
|
L73:
|
|
return
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: androidx.recyclerview.widget.OpReorderer.swapMoveUpdate(java.util.List, int, androidx.recyclerview.widget.AdapterHelper$UpdateOp, int, androidx.recyclerview.widget.AdapterHelper$UpdateOp):void");
|
|
}
|
|
|
|
private int getLastMoveOutOfOrder(List<AdapterHelper.UpdateOp> list) {
|
|
boolean z = false;
|
|
for (int size = list.size() - 1; size >= 0; size--) {
|
|
if (list.get(size).cmd != 8) {
|
|
z = true;
|
|
} else if (z) {
|
|
return size;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
}
|