alexandroid/decompiled/jadx/sources/com/bumptech/glide/ListPreloader.java
KaKi87 a47fad5135 📦 Add decompiled Alexa 2.2.730155.0 (jadx, apktool, Hermes strings)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:04:16 +01:00

212 lines
7.2 KiB
Java

package com.bumptech.glide;
import android.graphics.drawable.Drawable;
import android.widget.AbsListView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.bumptech.glide.request.Request;
import com.bumptech.glide.request.target.SizeReadyCallback;
import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.request.transition.Transition;
import com.bumptech.glide.util.Util;
import java.util.List;
import java.util.Queue;
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
/* loaded from: classes6.dex */
public class ListPreloader<T> implements AbsListView.OnScrollListener {
private int lastEnd;
private int lastStart;
private final int maxPreload;
private final PreloadSizeProvider<T> preloadDimensionProvider;
private final PreloadModelProvider<T> preloadModelProvider;
private final PreloadTargetQueue preloadTargetQueue;
private final RequestManager requestManager;
private int totalItemCount;
private int lastFirstVisible = -1;
private boolean isIncreasing = true;
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
public interface PreloadModelProvider<U> {
@NonNull
List<U> getPreloadItems(int i);
@Nullable
RequestBuilder<?> getPreloadRequestBuilder(@NonNull U u);
}
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
public interface PreloadSizeProvider<T> {
@Nullable
int[] getPreloadSize(@NonNull T t, int i, int i2);
}
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
public static final class PreloadTargetQueue {
final Queue<PreloadTarget> queue;
public PreloadTargetQueue(int i) {
this.queue = Util.createQueue(i);
for (int i2 = 0; i2 < i; i2++) {
this.queue.offer(new PreloadTarget());
}
}
public PreloadTarget next(int i, int i2) {
PreloadTarget poll = this.queue.poll();
this.queue.offer(poll);
poll.photoWidth = i;
poll.photoHeight = i2;
return poll;
}
}
public ListPreloader(@NonNull RequestManager requestManager, @NonNull PreloadModelProvider<T> preloadModelProvider, @NonNull PreloadSizeProvider<T> preloadSizeProvider, int i) {
this.requestManager = requestManager;
this.preloadModelProvider = preloadModelProvider;
this.preloadDimensionProvider = preloadSizeProvider;
this.maxPreload = i;
this.preloadTargetQueue = new PreloadTargetQueue(i + 1);
}
private void cancelAll() {
for (int i = 0; i < this.preloadTargetQueue.queue.size(); i++) {
this.requestManager.clear(this.preloadTargetQueue.next(0, 0));
}
}
private void preload(int i, int i2) {
int min;
int i3;
if (i < i2) {
i3 = Math.max(this.lastEnd, i);
min = i2;
} else {
min = Math.min(this.lastStart, i);
i3 = i2;
}
int min2 = Math.min(this.totalItemCount, min);
int min3 = Math.min(this.totalItemCount, Math.max(0, i3));
if (i < i2) {
for (int i4 = min3; i4 < min2; i4++) {
preloadAdapterPosition(this.preloadModelProvider.getPreloadItems(i4), i4, true);
}
} else {
for (int i5 = min2 - 1; i5 >= min3; i5--) {
preloadAdapterPosition(this.preloadModelProvider.getPreloadItems(i5), i5, false);
}
}
this.lastStart = min3;
this.lastEnd = min2;
}
private void preloadAdapterPosition(List<T> list, int i, boolean z) {
int size = list.size();
if (z) {
for (int i2 = 0; i2 < size; i2++) {
preloadItem(list.get(i2), i, i2);
}
return;
}
for (int i3 = size - 1; i3 >= 0; i3--) {
preloadItem(list.get(i3), i, i3);
}
}
private void preloadItem(@Nullable T t, int i, int i2) {
int[] preloadSize;
RequestBuilder<?> preloadRequestBuilder;
if (t == null || (preloadSize = this.preloadDimensionProvider.getPreloadSize(t, i, i2)) == null || (preloadRequestBuilder = this.preloadModelProvider.getPreloadRequestBuilder(t)) == null) {
return;
}
preloadRequestBuilder.into((RequestBuilder<?>) this.preloadTargetQueue.next(preloadSize[0], preloadSize[1]));
}
@Override // android.widget.AbsListView.OnScrollListener
public void onScroll(AbsListView absListView, int i, int i2, int i3) {
if (this.totalItemCount == 0 && i3 == 0) {
return;
}
this.totalItemCount = i3;
int i4 = this.lastFirstVisible;
if (i > i4) {
preload(i2 + i, true);
} else if (i < i4) {
preload(i, false);
}
this.lastFirstVisible = i;
}
/* compiled from: r8-map-id-b9432e0f623b4a4bff4ba50a8a24c4aafad2c1e11092747b9fb5e6a22af5a940 */
public static final class PreloadTarget implements Target<Object> {
int photoHeight;
int photoWidth;
@Nullable
private Request request;
@Override // com.bumptech.glide.request.target.Target
@Nullable
public Request getRequest() {
return this.request;
}
@Override // com.bumptech.glide.request.target.Target
public void getSize(@NonNull SizeReadyCallback sizeReadyCallback) {
sizeReadyCallback.onSizeReady(this.photoWidth, this.photoHeight);
}
@Override // com.bumptech.glide.request.target.Target
public void setRequest(@Nullable Request request) {
this.request = request;
}
@Override // com.bumptech.glide.manager.LifecycleListener
public void onDestroy() {
}
@Override // com.bumptech.glide.manager.LifecycleListener
public void onStart() {
}
@Override // com.bumptech.glide.manager.LifecycleListener
public void onStop() {
}
@Override // com.bumptech.glide.request.target.Target
public void onLoadCleared(@Nullable Drawable drawable) {
}
@Override // com.bumptech.glide.request.target.Target
public void onLoadFailed(@Nullable Drawable drawable) {
}
@Override // com.bumptech.glide.request.target.Target
public void onLoadStarted(@Nullable Drawable drawable) {
}
@Override // com.bumptech.glide.request.target.Target
public void removeCallback(@NonNull SizeReadyCallback sizeReadyCallback) {
}
@Override // com.bumptech.glide.request.target.Target
public void onResourceReady(@NonNull Object obj, @Nullable Transition<? super Object> transition) {
}
}
@Override // android.widget.AbsListView.OnScrollListener
public void onScrollStateChanged(AbsListView absListView, int i) {
}
private void preload(int i, boolean z) {
if (this.isIncreasing != z) {
this.isIncreasing = z;
cancelAll();
}
int i2 = this.maxPreload;
if (!z) {
i2 = -i2;
}
preload(i, i2 + i);
}
}