apkfuckery/com.discord/smali/androidx/recyclerview/widget/AsyncListUtil.smali

569 lines
16 KiB
Smali

.class public Landroidx/recyclerview/widget/AsyncListUtil;
.super Ljava/lang/Object;
.source "AsyncListUtil.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/recyclerview/widget/AsyncListUtil$ViewCallback;,
Landroidx/recyclerview/widget/AsyncListUtil$DataCallback;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Ljava/lang/Object;"
}
.end annotation
# static fields
.field static final DEBUG:Z = false
.field static final TAG:Ljava/lang/String; = "AsyncListUtil"
# instance fields
.field mAllowScrollHints:Z
.field private final mBackgroundCallback:Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback<",
"TT;>;"
}
.end annotation
.end field
.field final mBackgroundProxy:Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback<",
"TT;>;"
}
.end annotation
.end field
.field final mDataCallback:Landroidx/recyclerview/widget/AsyncListUtil$DataCallback;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/recyclerview/widget/AsyncListUtil$DataCallback<",
"TT;>;"
}
.end annotation
.end field
.field mDisplayedGeneration:I
.field mItemCount:I
.field private final mMainThreadCallback:Landroidx/recyclerview/widget/ThreadUtil$MainThreadCallback;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/recyclerview/widget/ThreadUtil$MainThreadCallback<",
"TT;>;"
}
.end annotation
.end field
.field final mMainThreadProxy:Landroidx/recyclerview/widget/ThreadUtil$MainThreadCallback;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/recyclerview/widget/ThreadUtil$MainThreadCallback<",
"TT;>;"
}
.end annotation
.end field
.field final mMissingPositions:Landroid/util/SparseIntArray;
.field final mPrevRange:[I
.field mRequestedGeneration:I
.field private mScrollHint:I
.field final mTClass:Ljava/lang/Class;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Class<",
"TT;>;"
}
.end annotation
.end field
.field final mTileList:Landroidx/recyclerview/widget/TileList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/recyclerview/widget/TileList<",
"TT;>;"
}
.end annotation
.end field
.field final mTileSize:I
.field final mTmpRange:[I
.field final mTmpRangeExtended:[I
.field final mViewCallback:Landroidx/recyclerview/widget/AsyncListUtil$ViewCallback;
# direct methods
.method public constructor <init>(Ljava/lang/Class;ILandroidx/recyclerview/widget/AsyncListUtil$DataCallback;Landroidx/recyclerview/widget/AsyncListUtil$ViewCallback;)V
.locals 2
.param p1 # Ljava/lang/Class;
.annotation build Landroidx/annotation/NonNull;
.end annotation
.end param
.param p3 # Landroidx/recyclerview/widget/AsyncListUtil$DataCallback;
.annotation build Landroidx/annotation/NonNull;
.end annotation
.end param
.param p4 # Landroidx/recyclerview/widget/AsyncListUtil$ViewCallback;
.annotation build Landroidx/annotation/NonNull;
.end annotation
.end param
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"TT;>;I",
"Landroidx/recyclerview/widget/AsyncListUtil$DataCallback<",
"TT;>;",
"Landroidx/recyclerview/widget/AsyncListUtil$ViewCallback;",
")V"
}
.end annotation
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x2
new-array v1, v0, [I
iput-object v1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRange:[I
new-array v1, v0, [I
iput-object v1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mPrevRange:[I
new-array v0, v0, [I
iput-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRangeExtended:[I
const/4 v0, 0x0
iput v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mScrollHint:I
iput v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mItemCount:I
iput v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mDisplayedGeneration:I
iget v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mDisplayedGeneration:I
iput v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mRequestedGeneration:I
new-instance v0, Landroid/util/SparseIntArray;
invoke-direct {v0}, Landroid/util/SparseIntArray;-><init>()V
iput-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mMissingPositions:Landroid/util/SparseIntArray;
new-instance v0, Landroidx/recyclerview/widget/AsyncListUtil$1;
invoke-direct {v0, p0}, Landroidx/recyclerview/widget/AsyncListUtil$1;-><init>(Landroidx/recyclerview/widget/AsyncListUtil;)V
iput-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mMainThreadCallback:Landroidx/recyclerview/widget/ThreadUtil$MainThreadCallback;
new-instance v0, Landroidx/recyclerview/widget/AsyncListUtil$2;
invoke-direct {v0, p0}, Landroidx/recyclerview/widget/AsyncListUtil$2;-><init>(Landroidx/recyclerview/widget/AsyncListUtil;)V
iput-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mBackgroundCallback:Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;
iput-object p1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTClass:Ljava/lang/Class;
iput p2, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTileSize:I
iput-object p3, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mDataCallback:Landroidx/recyclerview/widget/AsyncListUtil$DataCallback;
iput-object p4, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mViewCallback:Landroidx/recyclerview/widget/AsyncListUtil$ViewCallback;
new-instance p1, Landroidx/recyclerview/widget/TileList;
iget p2, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTileSize:I
invoke-direct {p1, p2}, Landroidx/recyclerview/widget/TileList;-><init>(I)V
iput-object p1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTileList:Landroidx/recyclerview/widget/TileList;
new-instance p1, Landroidx/recyclerview/widget/MessageThreadUtil;
invoke-direct {p1}, Landroidx/recyclerview/widget/MessageThreadUtil;-><init>()V
iget-object p2, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mMainThreadCallback:Landroidx/recyclerview/widget/ThreadUtil$MainThreadCallback;
invoke-interface {p1, p2}, Landroidx/recyclerview/widget/ThreadUtil;->getMainThreadProxy(Landroidx/recyclerview/widget/ThreadUtil$MainThreadCallback;)Landroidx/recyclerview/widget/ThreadUtil$MainThreadCallback;
move-result-object p2
iput-object p2, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mMainThreadProxy:Landroidx/recyclerview/widget/ThreadUtil$MainThreadCallback;
iget-object p2, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mBackgroundCallback:Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;
invoke-interface {p1, p2}, Landroidx/recyclerview/widget/ThreadUtil;->getBackgroundProxy(Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;)Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;
move-result-object p1
iput-object p1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mBackgroundProxy:Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;
invoke-virtual {p0}, Landroidx/recyclerview/widget/AsyncListUtil;->refresh()V
return-void
.end method
.method private isRefreshPending()Z
.locals 2
iget v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mRequestedGeneration:I
iget v1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mDisplayedGeneration:I
if-eq v0, v1, :cond_0
const/4 v0, 0x1
return v0
:cond_0
const/4 v0, 0x0
return v0
.end method
# virtual methods
.method public getItem(I)Ljava/lang/Object;
.locals 3
.annotation build Landroidx/annotation/Nullable;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(I)TT;"
}
.end annotation
if-ltz p1, :cond_1
iget v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mItemCount:I
if-ge p1, v0, :cond_1
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTileList:Landroidx/recyclerview/widget/TileList;
invoke-virtual {v0, p1}, Landroidx/recyclerview/widget/TileList;->getItemAt(I)Ljava/lang/Object;
move-result-object v0
if-nez v0, :cond_0
invoke-direct {p0}, Landroidx/recyclerview/widget/AsyncListUtil;->isRefreshPending()Z
move-result v1
if-nez v1, :cond_0
iget-object v1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mMissingPositions:Landroid/util/SparseIntArray;
const/4 v2, 0x0
invoke-virtual {v1, p1, v2}, Landroid/util/SparseIntArray;->put(II)V
:cond_0
return-object v0
:cond_1
new-instance v0, Ljava/lang/IndexOutOfBoundsException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string p1, " is not within 0 and "
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget p1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mItemCount:I
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/lang/IndexOutOfBoundsException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public getItemCount()I
.locals 1
iget v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mItemCount:I
return v0
.end method
.method varargs log(Ljava/lang/String;[Ljava/lang/Object;)V
.locals 3
const-string v0, "AsyncListUtil"
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "[MAIN] "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-static {p1, p2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {v0, p1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
return-void
.end method
.method public onRangeChanged()V
.locals 1
invoke-direct {p0}, Landroidx/recyclerview/widget/AsyncListUtil;->isRefreshPending()Z
move-result v0
if-eqz v0, :cond_0
return-void
:cond_0
invoke-virtual {p0}, Landroidx/recyclerview/widget/AsyncListUtil;->updateRange()V
const/4 v0, 0x1
iput-boolean v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mAllowScrollHints:Z
return-void
.end method
.method public refresh()V
.locals 2
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mMissingPositions:Landroid/util/SparseIntArray;
invoke-virtual {v0}, Landroid/util/SparseIntArray;->clear()V
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mBackgroundProxy:Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;
iget v1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mRequestedGeneration:I
add-int/lit8 v1, v1, 0x1
iput v1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mRequestedGeneration:I
invoke-interface {v0, v1}, Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;->refresh(I)V
return-void
.end method
.method updateRange()V
.locals 10
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mViewCallback:Landroidx/recyclerview/widget/AsyncListUtil$ViewCallback;
iget-object v1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRange:[I
invoke-virtual {v0, v1}, Landroidx/recyclerview/widget/AsyncListUtil$ViewCallback;->getItemRangeInto([I)V
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRange:[I
const/4 v1, 0x0
aget v2, v0, v1
const/4 v3, 0x1
aget v4, v0, v3
if-gt v2, v4, :cond_7
aget v2, v0, v1
if-gez v2, :cond_0
goto/16 :goto_2
:cond_0
aget v2, v0, v3
iget v4, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mItemCount:I
if-lt v2, v4, :cond_1
return-void
:cond_1
iget-boolean v2, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mAllowScrollHints:Z
if-nez v2, :cond_2
iput v1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mScrollHint:I
goto :goto_1
:cond_2
aget v2, v0, v1
iget-object v4, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mPrevRange:[I
aget v5, v4, v3
if-gt v2, v5, :cond_5
aget v2, v4, v1
aget v5, v0, v3
if-le v2, v5, :cond_3
goto :goto_0
:cond_3
aget v2, v0, v1
aget v5, v4, v1
if-ge v2, v5, :cond_4
iput v3, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mScrollHint:I
goto :goto_1
:cond_4
aget v0, v0, v1
aget v2, v4, v1
if-le v0, v2, :cond_6
const/4 v0, 0x2
iput v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mScrollHint:I
goto :goto_1
:cond_5
:goto_0
iput v1, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mScrollHint:I
:cond_6
:goto_1
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mPrevRange:[I
iget-object v2, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRange:[I
aget v4, v2, v1
aput v4, v0, v1
aget v4, v2, v3
aput v4, v0, v3
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mViewCallback:Landroidx/recyclerview/widget/AsyncListUtil$ViewCallback;
iget-object v4, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRangeExtended:[I
iget v5, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mScrollHint:I
invoke-virtual {v0, v2, v4, v5}, Landroidx/recyclerview/widget/AsyncListUtil$ViewCallback;->extendRangeInto([I[II)V
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRangeExtended:[I
iget-object v2, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRange:[I
aget v2, v2, v1
aget v4, v0, v1
invoke-static {v4, v1}, Ljava/lang/Math;->max(II)I
move-result v4
invoke-static {v2, v4}, Ljava/lang/Math;->min(II)I
move-result v2
aput v2, v0, v1
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRangeExtended:[I
iget-object v2, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRange:[I
aget v2, v2, v3
aget v4, v0, v3
iget v5, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mItemCount:I
sub-int/2addr v5, v3
invoke-static {v4, v5}, Ljava/lang/Math;->min(II)I
move-result v4
invoke-static {v2, v4}, Ljava/lang/Math;->max(II)I
move-result v2
aput v2, v0, v3
iget-object v4, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mBackgroundProxy:Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRange:[I
aget v5, v0, v1
aget v6, v0, v3
iget-object v0, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mTmpRangeExtended:[I
aget v7, v0, v1
aget v8, v0, v3
iget v9, p0, Landroidx/recyclerview/widget/AsyncListUtil;->mScrollHint:I
invoke-interface/range {v4 .. v9}, Landroidx/recyclerview/widget/ThreadUtil$BackgroundCallback;->updateRange(IIIII)V
return-void
:cond_7
:goto_2
return-void
.end method