RecyclerViewItemRangeSelector.smali
.class public Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;
.super Ljava/lang/Object;
.source "RecyclerViewItemRangeSelector.java"
# interfaces
.implements Landroidx/recyclerview/widget/RecyclerView$OnItemTouchListener;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;
}
.end annotation
# static fields
.field private static final AUTO_SCROLL_DELAY:I
# instance fields
.field private autoScrollRunnable:Ljava/lang/Runnable;
.field private autoScrollVelocity:I
.field private delegate:Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;
.field private dragSelectActive:Z
.field private hotspotBottomBoundEnd:I
.field private hotspotBottomBoundStart:I
.field private hotspotHeight:I
.field private hotspotOffsetBottom:I
.field private hotspotOffsetTop:I
.field private hotspotTopBoundEnd:I
.field private hotspotTopBoundStart:I
.field private inBottomHotspot:Z
.field private inTopHotspot:Z
.field private initialSelection:I
.field private isAutoScrolling:Z
.field private lastDraggedIndex:I
.field private recyclerView:Landroidx/recyclerview/widget/RecyclerView;
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x1560
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->AUTO_SCROLL_DELAY:I
return-void
.end method
.method public constructor <init>(Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;)V
.registers 3
.param p1, "recyclerViewItemRangeSelectorDelegate" # Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;
.line 60
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 14
const/4 v0, -0x1
iput v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->lastDraggedIndex:I
.line 28
const/high16 v0, 0x42a00000 # 80.0f
invoke-static {v0}, Lim/tpelyyftgw/messenger/AndroidUtilities;->dp(F)I
move-result v0
iput v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotHeight:I
.line 44
new-instance v0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$1;
invoke-direct {v0, p0}, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$1;-><init>(Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;)V
iput-object v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollRunnable:Ljava/lang/Runnable;
.line 61
iput-object p1, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->delegate:Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;
.line 62
return-void
.end method
.method static synthetic access$000(Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;)Landroidx/recyclerview/widget/RecyclerView;
.registers 2
.param p0, "x0" # Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;
.line 10
iget-object v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->recyclerView:Landroidx/recyclerview/widget/RecyclerView;
return-object v0
.end method
.method static synthetic access$100(Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;)Z
.registers 2
.param p0, "x0" # Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;
.line 10
iget-boolean v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inTopHotspot:Z
return v0
.end method
.method static synthetic access$200(Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;)I
.registers 2
.param p0, "x0" # Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;
.line 10
iget v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollVelocity:I
return v0
.end method
.method static synthetic access$300(Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;)Z
.registers 2
.param p0, "x0" # Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;
.line 10
iget-boolean v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inBottomHotspot:Z
return v0
.end method
.method private disableAutoScroll()V
.registers 2
.line 65
const/4 v0, -0x1
iput v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotHeight:I
.line 66
iput v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotOffsetTop:I
.line 67
iput v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotOffsetBottom:I
.line 68
return-void
.end method
.method private onDragSelectionStop()V
.registers 3
.line 184
const/4 v0, 0x0
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->dragSelectActive:Z
.line 185
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inTopHotspot:Z
.line 186
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inBottomHotspot:Z
.line 187
iget-object v1, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollRunnable:Ljava/lang/Runnable;
invoke-static {v1}, Lim/tpelyyftgw/messenger/AndroidUtilities;->cancelRunOnUIThread(Ljava/lang/Runnable;)V
.line 188
iget-object v1, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->delegate:Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;
invoke-interface {v1, v0}, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;->onStartStopSelection(Z)V
.line 189
return-void
.end method
# virtual methods
.method public onInterceptTouchEvent(Landroidx/recyclerview/widget/RecyclerView;Landroid/view/MotionEvent;)Z
.registers 8
.param p1, "rv" # Landroidx/recyclerview/widget/RecyclerView;
.param p2, "e" # Landroid/view/MotionEvent;
.line 72
invoke-virtual {p1}, Landroidx/recyclerview/widget/RecyclerView;->getAdapter()Landroidx/recyclerview/widget/RecyclerView$Adapter;
move-result-object v0
const/4 v1, 0x0
const/4 v2, 0x1
if-eqz v0, :cond_15
invoke-virtual {p1}, Landroidx/recyclerview/widget/RecyclerView;->getAdapter()Landroidx/recyclerview/widget/RecyclerView$Adapter;
move-result-object v0
invoke-virtual {v0}, Landroidx/recyclerview/widget/RecyclerView$Adapter;->getItemCount()I
move-result v0
if-nez v0, :cond_13
goto :goto_15
:cond_13
const/4 v0, 0x0
goto :goto_16
:cond_15
:goto_15
const/4 v0, 0x1
.line 73
.local v0, "adapterIsEmpty":Z
:goto_16
iget-boolean v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->dragSelectActive:Z
if-eqz v3, :cond_1d
if-nez v0, :cond_1d
const/4 v1, 0x1
.line 75
.local v1, "result":Z
:cond_1d
if-eqz v1, :cond_42
.line 76
iput-object p1, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->recyclerView:Landroidx/recyclerview/widget/RecyclerView;
.line 78
iget v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotHeight:I
const/4 v4, -0x1
if-le v3, v4, :cond_42
.line 79
iget v4, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotOffsetTop:I
iput v4, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotTopBoundStart:I
.line 80
add-int/2addr v4, v3
iput v4, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotTopBoundEnd:I
.line 81
invoke-virtual {p1}, Landroidx/recyclerview/widget/RecyclerView;->getMeasuredHeight()I
move-result v3
iget v4, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotHeight:I
sub-int/2addr v3, v4
iget v4, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotOffsetBottom:I
sub-int/2addr v3, v4
iput v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotBottomBoundStart:I
.line 82
invoke-virtual {p1}, Landroidx/recyclerview/widget/RecyclerView;->getMeasuredHeight()I
move-result v3
iget v4, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotOffsetBottom:I
sub-int/2addr v3, v4
iput v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotBottomBoundEnd:I
.line 86
:cond_42
if-eqz v1, :cond_4d
invoke-virtual {p2}, Landroid/view/MotionEvent;->getAction()I
move-result v3
if-ne v3, v2, :cond_4d
.line 87
invoke-direct {p0}, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->onDragSelectionStop()V
.line 89
:cond_4d
return v1
.end method
.method public onRequestDisallowInterceptTouchEvent(Z)V
.registers 2
.param p1, "disallowIntercept" # Z
.line 152
return-void
.end method
.method public onTouchEvent(Landroidx/recyclerview/widget/RecyclerView;Landroid/view/MotionEvent;)V
.registers 12
.param p1, "rv" # Landroidx/recyclerview/widget/RecyclerView;
.param p2, "e" # Landroid/view/MotionEvent;
.line 94
invoke-virtual {p2}, Landroid/view/MotionEvent;->getX()F
move-result v0
invoke-virtual {p2}, Landroid/view/MotionEvent;->getY()F
move-result v1
invoke-virtual {p1, v0, v1}, Landroidx/recyclerview/widget/RecyclerView;->findChildViewUnder(FF)Landroid/view/View;
move-result-object v0
.line 96
.local v0, "v":Landroid/view/View;
if-eqz v0, :cond_13
.line 97
invoke-virtual {p1, v0}, Landroidx/recyclerview/widget/RecyclerView;->getChildAdapterPosition(Landroid/view/View;)I
move-result v1
.local v1, "itemPosition":I
goto :goto_14
.line 99
.end local v1 # "itemPosition":I
:cond_13
const/4 v1, -0x1
.line 101
.restart local v1 # "itemPosition":I
:goto_14
invoke-virtual {p2}, Landroid/view/MotionEvent;->getY()F
move-result v2
.line 102
.local v2, "y":F
invoke-virtual {p2}, Landroid/view/MotionEvent;->getAction()I
move-result v3
const/4 v4, 0x1
if-eq v3, v4, :cond_b1
const/4 v5, 0x2
if-eq v3, v5, :cond_24
goto/16 :goto_b0
.line 108
:cond_24
iget v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotHeight:I
const/4 v6, -0x1
if-le v3, v6, :cond_9c
.line 109
iget v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotTopBoundStart:I
int-to-float v3, v3
const/4 v7, 0x0
cmpl-float v3, v2, v3
if-ltz v3, :cond_5a
iget v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotTopBoundEnd:I
int-to-float v3, v3
cmpg-float v3, v2, v3
if-gtz v3, :cond_5a
.line 110
iput-boolean v7, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inBottomHotspot:Z
.line 111
iget-boolean v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inTopHotspot:Z
if-nez v3, :cond_4a
.line 112
iput-boolean v4, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inTopHotspot:Z
.line 113
iget-object v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollRunnable:Ljava/lang/Runnable;
invoke-static {v3}, Lim/tpelyyftgw/messenger/AndroidUtilities;->cancelRunOnUIThread(Ljava/lang/Runnable;)V
.line 114
iget-object v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollRunnable:Ljava/lang/Runnable;
invoke-static {v3}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;)V
.line 116
:cond_4a
iget v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotTopBoundEnd:I
iget v7, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotTopBoundStart:I
sub-int/2addr v3, v7
int-to-float v3, v3
.line 117
.local v3, "simulatedFactor":F
int-to-float v7, v7
sub-float v7, v2, v7
.line 118
.local v7, "simulatedY":F
sub-float v8, v3, v7
float-to-int v8, v8
div-int/2addr v8, v5
iput v8, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollVelocity:I
.line 119
.end local v3 # "simulatedFactor":F
.end local v7 # "simulatedY":F
goto :goto_9c
:cond_5a
iget v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotBottomBoundStart:I
int-to-float v3, v3
cmpl-float v3, v2, v3
if-ltz v3, :cond_89
iget v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotBottomBoundEnd:I
int-to-float v3, v3
cmpg-float v3, v2, v3
if-gtz v3, :cond_89
.line 120
iput-boolean v7, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inTopHotspot:Z
.line 121
iget-boolean v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inBottomHotspot:Z
if-nez v3, :cond_7a
.line 122
iput-boolean v4, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inBottomHotspot:Z
.line 123
iget-object v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollRunnable:Ljava/lang/Runnable;
invoke-static {v3}, Lim/tpelyyftgw/messenger/AndroidUtilities;->cancelRunOnUIThread(Ljava/lang/Runnable;)V
.line 124
iget-object v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollRunnable:Ljava/lang/Runnable;
invoke-static {v3}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;)V
.line 126
:cond_7a
iget v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotBottomBoundEnd:I
int-to-float v7, v3
add-float/2addr v7, v2
.line 127
.restart local v7 # "simulatedY":F
iget v8, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->hotspotBottomBoundStart:I
add-int/2addr v8, v3
int-to-float v3, v8
.line 128
.restart local v3 # "simulatedFactor":F
sub-float v8, v7, v3
float-to-int v8, v8
div-int/2addr v8, v5
iput v8, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollVelocity:I
.end local v3 # "simulatedFactor":F
.end local v7 # "simulatedY":F
goto :goto_92
.line 129
:cond_89
iget-boolean v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inTopHotspot:Z
if-nez v3, :cond_93
iget-boolean v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inBottomHotspot:Z
if-eqz v3, :cond_92
goto :goto_93
:cond_92
:goto_92
goto :goto_9c
.line 130
:cond_93
:goto_93
iget-object v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollRunnable:Ljava/lang/Runnable;
invoke-static {v3}, Lim/tpelyyftgw/messenger/AndroidUtilities;->cancelRunOnUIThread(Ljava/lang/Runnable;)V
.line 131
iput-boolean v7, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inTopHotspot:Z
.line 132
iput-boolean v7, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inBottomHotspot:Z
.line 136
:cond_9c
:goto_9c
if-eq v1, v6, :cond_b0
.line 137
iget v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->lastDraggedIndex:I
if-ne v3, v1, :cond_a3
.line 138
return-void
.line 140
:cond_a3
iput v1, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->lastDraggedIndex:I
.line 141
iget-object v3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->delegate:Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;
invoke-interface {v3, v1}, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;->isSelected(I)Z
move-result v5
xor-int/2addr v4, v5
invoke-interface {v3, v0, v1, v4}, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;->setSelected(Landroid/view/View;IZ)V
.line 142
return-void
.line 147
:cond_b0
:goto_b0
return-void
.line 104
:cond_b1
invoke-direct {p0}, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->onDragSelectionStop()V
.line 105
return-void
.end method
.method public setIsActive(Landroid/view/View;ZIZ)Z
.registers 8
.param p1, "view" # Landroid/view/View;
.param p2, "active" # Z
.param p3, "selection" # I
.param p4, "select" # Z
.line 155
const/4 v0, 0x0
if-eqz p2, :cond_8
iget-boolean v1, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->dragSelectActive:Z
if-eqz v1, :cond_8
.line 156
return v0
.line 159
:cond_8
const/4 v1, -0x1
iput v1, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->lastDraggedIndex:I
.line 160
iget-object v2, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->autoScrollRunnable:Ljava/lang/Runnable;
invoke-static {v2}, Lim/tpelyyftgw/messenger/AndroidUtilities;->cancelRunOnUIThread(Ljava/lang/Runnable;)V
.line 161
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inTopHotspot:Z
.line 162
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->inBottomHotspot:Z
.line 164
if-nez p2, :cond_19
.line 165
iput v1, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->initialSelection:I
.line 166
return v0
.line 169
:cond_19
iget-object v2, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->delegate:Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;
invoke-interface {v2, p3}, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;->isIndexSelectable(I)Z
move-result v2
if-nez v2, :cond_26
.line 170
iput-boolean v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->dragSelectActive:Z
.line 171
iput v1, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->initialSelection:I
.line 172
return v0
.line 175
:cond_26
iget-object v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->delegate:Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;
const/4 v1, 0x1
invoke-interface {v0, v1}, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;->onStartStopSelection(Z)V
.line 176
iget-object v0, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->delegate:Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;
iget v2, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->initialSelection:I
invoke-interface {v0, p1, v2, p4}, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector$RecyclerViewItemRangeSelectorDelegate;->setSelected(Landroid/view/View;IZ)V
.line 177
iput-boolean p2, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->dragSelectActive:Z
.line 178
iput p3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->initialSelection:I
iput p3, p0, Lim/tpelyyftgw/ui/components/RecyclerViewItemRangeSelector;->lastDraggedIndex:I
.line 180
return v1
.end method