Rabbit-R1/original r1/java/sources/androidx/recyclerview/widget/OpReorderer.java
2024-05-21 17:08:36 -04:00

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;
}
}