ExtendedGridLayoutManager.smali

.class public Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;
.super Landroidx/recyclerview/widget/GridLayoutManager;
.source "ExtendedGridLayoutManager.java"


# instance fields
.field private calculatedWidth:I

.field private firstRowMax:I

.field private itemSpans:Landroid/util/SparseIntArray;

.field private itemsToRow:Landroid/util/SparseIntArray;

.field private rowsCount:I


# direct methods
.method static constructor <clinit>()V
    .registers 1

    return-void
.end method

.method public constructor <init>(Landroid/content/Context;I)V
    .registers 4
    .param p1, "context"    # Landroid/content/Context;
    .param p2, "spanCount"    # I

    .line 21
    invoke-direct {p0, p1, p2}, Landroidx/recyclerview/widget/GridLayoutManager;-><init>(Landroid/content/Context;I)V

    .line 14
    new-instance v0, Landroid/util/SparseIntArray;

    invoke-direct {v0}, Landroid/util/SparseIntArray;-><init>()V

    iput-object v0, p0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemSpans:Landroid/util/SparseIntArray;

    .line 15
    new-instance v0, Landroid/util/SparseIntArray;

    invoke-direct {v0}, Landroid/util/SparseIntArray;-><init>()V

    iput-object v0, p0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemsToRow:Landroid/util/SparseIntArray;

    .line 22
    return-void
.end method

.method private checkLayout()V
    .registers 3

    .line 107
    iget-object v0, p0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemSpans:Landroid/util/SparseIntArray;

    invoke-virtual {v0}, Landroid/util/SparseIntArray;->size()I

    move-result v0

    invoke-virtual {p0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->getFlowItemCount()I

    move-result v1

    if-ne v0, v1, :cond_14

    iget v0, p0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->calculatedWidth:I

    invoke-virtual {p0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->getWidth()I

    move-result v1

    if-eq v0, v1, :cond_22

    .line 108
    :cond_14
    invoke-virtual {p0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->getWidth()I

    move-result v0

    iput v0, p0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->calculatedWidth:I

    .line 109
    invoke-virtual {p0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->getWidth()I

    move-result v0

    int-to-float v0, v0

    invoke-direct {p0, v0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->prepareLayout(F)V

    .line 111
    :cond_22
    return-void
.end method

.method private prepareLayout(F)V
    .registers 21
    .param p1, "viewPortAvailableSize"    # F

    .line 30
    move-object/from16 v0, p0

    const/4 v1, 0x0

    cmpl-float v1, p1, v1

    if-nez v1, :cond_a

    .line 31
    const/high16 v1, 0x42c80000    # 100.0f

    .end local p1    # "viewPortAvailableSize":F
    .local v1, "viewPortAvailableSize":F
    goto :goto_c

    .line 30
    .end local v1    # "viewPortAvailableSize":F
    .restart local p1    # "viewPortAvailableSize":F
    :cond_a
    move/from16 v1, p1

    .line 33
    .end local p1    # "viewPortAvailableSize":F
    .restart local v1    # "viewPortAvailableSize":F
    :goto_c
    iget-object v2, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemSpans:Landroid/util/SparseIntArray;

    invoke-virtual {v2}, Landroid/util/SparseIntArray;->clear()V

    .line 34
    iget-object v2, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemsToRow:Landroid/util/SparseIntArray;

    invoke-virtual {v2}, Landroid/util/SparseIntArray;->clear()V

    .line 35
    const/4 v2, 0x0

    iput v2, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->rowsCount:I

    .line 36
    iput v2, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->firstRowMax:I

    .line 38
    const/high16 v3, 0x42c80000    # 100.0f

    invoke-static {v3}, Lim/tpelyyftgw/messenger/AndroidUtilities;->dp(F)I

    move-result v3

    .line 39
    .local v3, "preferredRowSize":I
    invoke-virtual/range {p0 .. p0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->getFlowItemCount()I

    move-result v4

    .line 40
    .local v4, "itemsCount":I
    invoke-virtual/range {p0 .. p0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->getSpanCount()I

    move-result v5

    .line 41
    .local v5, "spanCount":I
    move v6, v5

    .line 42
    .local v6, "spanLeft":I
    const/4 v7, 0x0

    .line 43
    .local v7, "currentItemsInRow":I
    const/4 v8, 0x0

    .line 44
    .local v8, "currentItemsSpanAmount":I
    const/4 v9, 0x0

    .local v9, "a":I
    :goto_2d
    if-ge v9, v4, :cond_d3

    .line 45
    invoke-direct {v0, v9}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->sizeForItem(I)Lim/tpelyyftgw/ui/components/Size;

    move-result-object v11

    .line 46
    .local v11, "size":Lim/tpelyyftgw/ui/components/Size;
    int-to-float v12, v5

    iget v13, v11, Lim/tpelyyftgw/ui/components/Size;->width:F

    iget v14, v11, Lim/tpelyyftgw/ui/components/Size;->height:F

    div-float/2addr v13, v14

    int-to-float v14, v3

    mul-float v13, v13, v14

    div-float/2addr v13, v1

    mul-float v12, v12, v13

    float-to-double v12, v12

    invoke-static {v12, v13}, Ljava/lang/Math;->floor(D)D

    move-result-wide v12

    double-to-int v12, v12

    invoke-static {v5, v12}, Ljava/lang/Math;->min(II)I

    move-result v12

    .line 47
    .local v12, "requiredSpan":I
    if-lt v6, v12, :cond_56

    const/16 v13, 0x21

    if-le v12, v13, :cond_54

    add-int/lit8 v13, v12, -0xf

    if-ge v6, v13, :cond_54

    goto :goto_56

    :cond_54
    const/4 v13, 0x0

    goto :goto_57

    :cond_56
    :goto_56
    const/4 v13, 0x1

    .line 48
    .local v13, "moveToNewRow":Z
    :goto_57
    if-eqz v13, :cond_a7

    .line 49
    if-eqz v6, :cond_9b

    .line 50
    div-int v14, v6, v7

    .line 51
    .local v14, "spanPerItem":I
    sub-int v15, v9, v7

    .local v15, "start":I
    move/from16 v16, v15

    move/from16 v2, v16

    .local v2, "b":I
    :goto_63
    add-int v10, v15, v7

    if-ge v2, v10, :cond_8f

    .line 52
    add-int v10, v15, v7

    const/16 v16, 0x1

    add-int/lit8 v10, v10, -0x1

    if-ne v2, v10, :cond_7d

    .line 53
    iget-object v10, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemSpans:Landroid/util/SparseIntArray;

    invoke-virtual {v10, v2}, Landroid/util/SparseIntArray;->get(I)I

    move-result v17

    move/from16 v18, v1

    .end local v1    # "viewPortAvailableSize":F
    .local v18, "viewPortAvailableSize":F
    add-int v1, v17, v6

    invoke-virtual {v10, v2, v1}, Landroid/util/SparseIntArray;->put(II)V

    goto :goto_89

    .line 55
    .end local v18    # "viewPortAvailableSize":F
    .restart local v1    # "viewPortAvailableSize":F
    :cond_7d
    move/from16 v18, v1

    .end local v1    # "viewPortAvailableSize":F
    .restart local v18    # "viewPortAvailableSize":F
    iget-object v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemSpans:Landroid/util/SparseIntArray;

    invoke-virtual {v1, v2}, Landroid/util/SparseIntArray;->get(I)I

    move-result v10

    add-int/2addr v10, v14

    invoke-virtual {v1, v2, v10}, Landroid/util/SparseIntArray;->put(II)V

    .line 57
    :goto_89
    sub-int/2addr v6, v14

    .line 51
    add-int/lit8 v2, v2, 0x1

    move/from16 v1, v18

    goto :goto_63

    .end local v18    # "viewPortAvailableSize":F
    .restart local v1    # "viewPortAvailableSize":F
    :cond_8f
    move/from16 v18, v1

    .line 59
    .end local v1    # "viewPortAvailableSize":F
    .end local v2    # "b":I
    .end local v15    # "start":I
    .restart local v18    # "viewPortAvailableSize":F
    iget-object v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemsToRow:Landroid/util/SparseIntArray;

    add-int/lit8 v2, v9, -0x1

    iget v10, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->rowsCount:I

    invoke-virtual {v1, v2, v10}, Landroid/util/SparseIntArray;->put(II)V

    goto :goto_9d

    .line 49
    .end local v14    # "spanPerItem":I
    .end local v18    # "viewPortAvailableSize":F
    .restart local v1    # "viewPortAvailableSize":F
    :cond_9b
    move/from16 v18, v1

    .line 61
    .end local v1    # "viewPortAvailableSize":F
    .restart local v18    # "viewPortAvailableSize":F
    :goto_9d
    iget v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->rowsCount:I

    const/4 v2, 0x1

    add-int/2addr v1, v2

    iput v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->rowsCount:I

    .line 62
    const/4 v8, 0x0

    .line 63
    const/4 v7, 0x0

    .line 64
    move v6, v5

    goto :goto_ac

    .line 66
    .end local v18    # "viewPortAvailableSize":F
    .restart local v1    # "viewPortAvailableSize":F
    :cond_a7
    move/from16 v18, v1

    .end local v1    # "viewPortAvailableSize":F
    .restart local v18    # "viewPortAvailableSize":F
    if-ge v6, v12, :cond_ac

    .line 67
    move v12, v6

    .line 70
    :cond_ac
    :goto_ac
    iget v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->rowsCount:I

    if-nez v1, :cond_b8

    .line 71
    iget v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->firstRowMax:I

    invoke-static {v1, v9}, Ljava/lang/Math;->max(II)I

    move-result v1

    iput v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->firstRowMax:I

    .line 73
    :cond_b8
    add-int/lit8 v1, v4, -0x1

    if-ne v9, v1, :cond_c3

    .line 74
    iget-object v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemsToRow:Landroid/util/SparseIntArray;

    iget v2, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->rowsCount:I

    invoke-virtual {v1, v9, v2}, Landroid/util/SparseIntArray;->put(II)V

    .line 76
    :cond_c3
    add-int/2addr v8, v12

    .line 77
    const/4 v1, 0x1

    add-int/2addr v7, v1

    .line 78
    sub-int/2addr v6, v12

    .line 80
    iget-object v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemSpans:Landroid/util/SparseIntArray;

    invoke-virtual {v1, v9, v12}, Landroid/util/SparseIntArray;->put(II)V

    .line 44
    .end local v11    # "size":Lim/tpelyyftgw/ui/components/Size;
    .end local v12    # "requiredSpan":I
    .end local v13    # "moveToNewRow":Z
    add-int/lit8 v9, v9, 0x1

    move/from16 v1, v18

    const/4 v2, 0x0

    goto/16 :goto_2d

    .end local v18    # "viewPortAvailableSize":F
    .restart local v1    # "viewPortAvailableSize":F
    :cond_d3
    move/from16 v18, v1

    .line 82
    .end local v1    # "viewPortAvailableSize":F
    .end local v9    # "a":I
    .restart local v18    # "viewPortAvailableSize":F
    if-eqz v4, :cond_dd

    .line 83
    iget v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->rowsCount:I

    const/4 v2, 0x1

    add-int/2addr v1, v2

    iput v1, v0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->rowsCount:I

    .line 85
    :cond_dd
    return-void
.end method

.method private sizeForItem(I)Lim/tpelyyftgw/ui/components/Size;
    .registers 6
    .param p1, "i"    # I

    .line 88
    invoke-virtual {p0, p1}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->getSizeForItem(I)Lim/tpelyyftgw/ui/components/Size;

    move-result-object v0

    .line 89
    .local v0, "size":Lim/tpelyyftgw/ui/components/Size;
    iget v1, v0, Lim/tpelyyftgw/ui/components/Size;->width:F

    const/high16 v2, 0x42c80000    # 100.0f

    const/4 v3, 0x0

    cmpl-float v1, v1, v3

    if-nez v1, :cond_f

    .line 90
    iput v2, v0, Lim/tpelyyftgw/ui/components/Size;->width:F

    .line 92
    :cond_f
    iget v1, v0, Lim/tpelyyftgw/ui/components/Size;->height:F

    cmpl-float v1, v1, v3

    if-nez v1, :cond_17

    .line 93
    iput v2, v0, Lim/tpelyyftgw/ui/components/Size;->height:F

    .line 95
    :cond_17
    iget v1, v0, Lim/tpelyyftgw/ui/components/Size;->width:F

    iget v2, v0, Lim/tpelyyftgw/ui/components/Size;->height:F

    div-float/2addr v1, v2

    .line 96
    .local v1, "aspect":F
    const/high16 v2, 0x40800000    # 4.0f

    cmpl-float v2, v1, v2

    if-gtz v2, :cond_29

    const v2, 0x3e4ccccd    # 0.2f

    cmpg-float v2, v1, v2

    if-gez v2, :cond_35

    .line 97
    :cond_29
    iget v2, v0, Lim/tpelyyftgw/ui/components/Size;->width:F

    iget v3, v0, Lim/tpelyyftgw/ui/components/Size;->height:F

    invoke-static {v2, v3}, Ljava/lang/Math;->max(FF)F

    move-result v2

    iput v2, v0, Lim/tpelyyftgw/ui/components/Size;->width:F

    iput v2, v0, Lim/tpelyyftgw/ui/components/Size;->height:F

    .line 99
    :cond_35
    return-object v0
.end method


# virtual methods
.method protected getFlowItemCount()I
    .registers 2

    .line 136
    invoke-virtual {p0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->getItemCount()I

    move-result v0

    return v0
.end method

.method public getRowsCount(I)I
    .registers 3
    .param p1, "width"    # I

    .line 119
    iget v0, p0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->rowsCount:I

    if-nez v0, :cond_8

    .line 120
    int-to-float v0, p1

    invoke-direct {p0, v0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->prepareLayout(F)V

    .line 122
    :cond_8
    iget v0, p0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->rowsCount:I

    return v0
.end method

.method protected getSizeForItem(I)Lim/tpelyyftgw/ui/components/Size;
    .registers 4
    .param p1, "i"    # I

    .line 103
    new-instance v0, Lim/tpelyyftgw/ui/components/Size;

    const/high16 v1, 0x42c80000    # 100.0f

    invoke-direct {v0, v1, v1}, Lim/tpelyyftgw/ui/components/Size;-><init>(FF)V

    return-object v0
.end method

.method public getSpanSizeForItem(I)I
    .registers 3
    .param p1, "i"    # I

    .line 114
    invoke-direct {p0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->checkLayout()V

    .line 115
    iget-object v0, p0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemSpans:Landroid/util/SparseIntArray;

    invoke-virtual {v0, p1}, Landroid/util/SparseIntArray;->get(I)I

    move-result v0

    return v0
.end method

.method public isFirstRow(I)Z
    .registers 3
    .param p1, "i"    # I

    .line 131
    invoke-direct {p0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->checkLayout()V

    .line 132
    iget v0, p0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->firstRowMax:I

    if-gt p1, v0, :cond_9

    const/4 v0, 0x1

    goto :goto_a

    :cond_9
    const/4 v0, 0x0

    :goto_a
    return v0
.end method

.method public isLastInRow(I)Z
    .registers 4
    .param p1, "i"    # I

    .line 126
    invoke-direct {p0}, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->checkLayout()V

    .line 127
    iget-object v0, p0, Lim/tpelyyftgw/ui/components/ExtendedGridLayoutManager;->itemsToRow:Landroid/util/SparseIntArray;

    const v1, 0x7fffffff

    invoke-virtual {v0, p1, v1}, Landroid/util/SparseIntArray;->get(II)I

    move-result v0

    if-eq v0, v1, :cond_10

    const/4 v0, 0x1

    goto :goto_11

    :cond_10
    const/4 v0, 0x0

    :goto_11
    return v0
.end method

.method public supportsPredictiveItemAnimations()Z
    .registers 2

    .line 26
    const/4 v0, 0x0

    return v0
.end method