RichTextParser$LinkMovementMethodExt.smali

.class public Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;
.super Landroid/text/method/LinkMovementMethod;


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lio/dcloud/feature/nativeObj/richtext/RichTextParser;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x9
    name = "LinkMovementMethodExt"
.end annotation


# instance fields
.field downLinks:[Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;

.field downTime:J

.field downX:F

.field downY:F

.field mAssets:Lio/dcloud/feature/nativeObj/richtext/IAssets;

.field mObserver:Lio/dcloud/common/DHInterface/ICallBack;

.field mWebview:Lio/dcloud/common/DHInterface/IWebview;


# direct methods
.method constructor <init>(Lio/dcloud/common/DHInterface/IWebview;Lio/dcloud/common/DHInterface/ICallBack;Lio/dcloud/feature/nativeObj/richtext/IAssets;)V
    .registers 6

    .line 1
    invoke-direct {p0}, Landroid/text/method/LinkMovementMethod;-><init>()V

    const/4 v0, 0x0

    .line 2
    iput-object v0, p0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downLinks:[Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;

    .line 4
    iput-object v0, p0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mWebview:Lio/dcloud/common/DHInterface/IWebview;

    .line 5
    iput-object v0, p0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mObserver:Lio/dcloud/common/DHInterface/ICallBack;

    .line 6
    iput-object v0, p0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mAssets:Lio/dcloud/feature/nativeObj/richtext/IAssets;

    const-wide/16 v0, 0x0

    .line 7
    iput-wide v0, p0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downTime:J

    .line 9
    iput-object p1, p0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mWebview:Lio/dcloud/common/DHInterface/IWebview;

    .line 10
    iput-object p2, p0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mObserver:Lio/dcloud/common/DHInterface/ICallBack;

    .line 11
    iput-object p3, p0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mAssets:Lio/dcloud/feature/nativeObj/richtext/IAssets;

    return-void
.end method


# virtual methods
.method public onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z
    .registers 21

    move-object/from16 v0, p0

    move-object/from16 v1, p1

    move-object/from16 v2, p2

    .line 1
    invoke-virtual/range {p3 .. p3}, Landroid/view/MotionEvent;->getAction()I

    move-result v3

    .line 2
    invoke-virtual/range {p3 .. p3}, Landroid/view/MotionEvent;->getX()F

    move-result v4

    float-to-int v4, v4

    .line 3
    invoke-virtual/range {p3 .. p3}, Landroid/view/MotionEvent;->getY()F

    move-result v5

    float-to-int v5, v5

    .line 5
    invoke-virtual/range {p1 .. p1}, Landroid/widget/TextView;->getTotalPaddingLeft()I

    move-result v6

    sub-int/2addr v4, v6

    .line 6
    invoke-virtual/range {p1 .. p1}, Landroid/widget/TextView;->getTotalPaddingTop()I

    move-result v6

    sub-int/2addr v5, v6

    .line 7
    invoke-virtual/range {p1 .. p1}, Landroid/widget/TextView;->getScrollX()I

    move-result v6

    add-int/2addr v4, v6

    .line 8
    invoke-virtual/range {p1 .. p1}, Landroid/widget/TextView;->getScrollY()I

    move-result v6

    add-int/2addr v5, v6

    .line 9
    invoke-virtual/range {p1 .. p1}, Landroid/widget/TextView;->getLayout()Landroid/text/Layout;

    move-result-object v6

    .line 10
    invoke-virtual {v6, v5}, Landroid/text/Layout;->getLineForVertical(I)I

    move-result v7

    int-to-float v8, v4

    .line 11
    invoke-virtual {v6, v7, v8}, Landroid/text/Layout;->getOffsetForHorizontal(IF)I

    move-result v8

    .line 12
    invoke-virtual {v6, v7}, Landroid/text/Layout;->getLineLeft(I)F

    move-result v9

    .line 13
    invoke-virtual {v6, v7}, Landroid/text/Layout;->getLineTop(I)I

    move-result v10

    int-to-float v10, v10

    .line 14
    invoke-virtual {v6, v7}, Landroid/text/Layout;->getLineRight(I)F

    move-result v11

    .line 15
    invoke-virtual {v6, v7}, Landroid/text/Layout;->getLineBottom(I)I

    move-result v6

    int-to-float v6, v6

    .line 16
    new-instance v7, Landroid/graphics/Rect;

    float-to-int v9, v9

    float-to-int v10, v10

    float-to-int v11, v11

    float-to-int v6, v6

    invoke-direct {v7, v9, v10, v11, v6}, Landroid/graphics/Rect;-><init>(IIII)V

    const-string v6, "false"

    .line 17
    invoke-virtual {v1, v6}, Landroid/widget/TextView;->setTag(Ljava/lang/Object;)V

    .line 19
    invoke-virtual {v7, v4, v5}, Landroid/graphics/Rect;->contains(II)Z

    move-result v4

    const-string v5, "true"

    const/4 v7, 0x0

    const/4 v9, 0x1

    if-eqz v4, :cond_124

    .line 20
    const-class v4, Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;

    invoke-interface {v2, v8, v8, v4}, Landroid/text/Spannable;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;

    move-result-object v4

    check-cast v4, [Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;

    if-eqz v4, :cond_122

    .line 21
    array-length v10, v4

    if-eqz v10, :cond_122

    if-ne v3, v9, :cond_d6

    .line 23
    iget-object v10, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downLinks:[Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;

    if-eqz v10, :cond_d2

    array-length v10, v10

    array-length v11, v4

    if-lt v10, v11, :cond_d2

    iget-object v10, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mAssets:Lio/dcloud/feature/nativeObj/richtext/IAssets;

    invoke-interface {v10}, Lio/dcloud/feature/nativeObj/richtext/IAssets;->isClick()Z

    move-result v10

    if-nez v10, :cond_d2

    move v10, v7

    .line 24
    :goto_7f
    array-length v11, v4

    if-ge v10, v11, :cond_d2

    .line 25
    aget-object v11, v4, v10

    .line 26
    iget-object v12, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downLinks:[Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;

    aget-object v12, v12, v10

    if-ne v11, v12, :cond_cf

    .line 27
    invoke-interface {v2, v11}, Landroid/text/Spannable;->getSpanFlags(Ljava/lang/Object;)I

    move-result v12

    .line 28
    invoke-interface {v2, v11}, Landroid/text/Spannable;->getSpanStart(Ljava/lang/Object;)I

    move-result v13

    .line 29
    invoke-interface {v2, v11}, Landroid/text/Spannable;->getSpanEnd(Ljava/lang/Object;)I

    move-result v14

    const/16 v15, 0x12

    if-eqz v13, :cond_a3

    .line 30
    invoke-interface/range {p2 .. p2}, Landroid/text/Spannable;->length()I

    move-result v6

    if-eq v14, v6, :cond_a3

    array-length v6, v4

    if-ne v6, v9, :cond_a4

    :cond_a3
    move v12, v15

    :cond_a4
    const/16 v6, 0x11

    if-ne v12, v6, :cond_ac

    if-lt v8, v13, :cond_ac

    if-lt v8, v14, :cond_c2

    :cond_ac
    if-ne v12, v15, :cond_b2

    if-lt v8, v13, :cond_b2

    if-le v8, v14, :cond_c2

    :cond_b2
    const/16 v6, 0x21

    if-ne v12, v6, :cond_ba

    if-le v8, v13, :cond_ba

    if-lt v8, v14, :cond_c2

    :cond_ba
    const/16 v6, 0x22

    if-ne v12, v6, :cond_cf

    if-le v8, v13, :cond_cf

    if-gt v8, v14, :cond_cf

    .line 39
    :cond_c2
    iget-object v6, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mWebview:Lio/dcloud/common/DHInterface/IWebview;

    invoke-interface {v11, v1, v6}, Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;->onClick(Landroid/view/View;Lio/dcloud/common/DHInterface/IWebview;)V

    .line 40
    iget-object v6, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mObserver:Lio/dcloud/common/DHInterface/ICallBack;

    if-eqz v6, :cond_d2

    invoke-interface {v6, v7, v11}, Lio/dcloud/common/DHInterface/ICallBack;->onCallBack(ILjava/lang/Object;)Ljava/lang/Object;

    goto :goto_d2

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

    goto :goto_7f

    :cond_d2
    :goto_d2
    const/4 v6, 0x0

    .line 46
    iput-object v6, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downLinks:[Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;

    goto :goto_10d

    :cond_d6
    if-nez v3, :cond_e7

    .line 48
    iput-object v4, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downLinks:[Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;

    .line 49
    invoke-virtual/range {p3 .. p3}, Landroid/view/MotionEvent;->getX()F

    move-result v6

    iput v6, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downX:F

    .line 50
    invoke-virtual/range {p3 .. p3}, Landroid/view/MotionEvent;->getY()F

    move-result v6

    iput v6, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downY:F

    goto :goto_10d

    :cond_e7
    const/4 v6, 0x2

    if-ne v3, v6, :cond_10d

    .line 52
    invoke-virtual/range {p3 .. p3}, Landroid/view/MotionEvent;->getX()F

    move-result v6

    iget v8, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downX:F

    sub-float/2addr v6, v8

    invoke-static {v6}, Ljava/lang/Math;->abs(F)F

    move-result v6

    const/high16 v8, 0x41a00000    # 20.0f

    cmpl-float v6, v6, v8

    if-gtz v6, :cond_10a

    invoke-virtual/range {p3 .. p3}, Landroid/view/MotionEvent;->getY()F

    move-result v6

    iget v10, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downY:F

    sub-float/2addr v6, v10

    invoke-static {v6}, Ljava/lang/Math;->abs(F)F

    move-result v6

    cmpl-float v6, v6, v8

    if-lez v6, :cond_10d

    :cond_10a
    const/4 v6, 0x0

    .line 53
    iput-object v6, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downLinks:[Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;

    :cond_10d
    :goto_10d
    move v6, v7

    .line 56
    :goto_10e
    array-length v8, v4

    if-ge v6, v8, :cond_122

    .line 57
    aget-object v8, v4, v6

    .line 58
    invoke-interface {v8}, Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;->hasClickEvent()Z

    move-result v8

    if-eqz v8, :cond_11f

    .line 59
    invoke-virtual {v1, v5}, Landroid/widget/TextView;->setTag(Ljava/lang/Object;)V

    move-object v6, v4

    move v4, v9

    goto :goto_126

    :cond_11f
    add-int/lit8 v6, v6, 0x1

    goto :goto_10e

    :cond_122
    move-object v6, v4

    goto :goto_125

    :cond_124
    const/4 v6, 0x0

    :goto_125
    move v4, v7

    .line 67
    :goto_126
    iget-object v8, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mAssets:Lio/dcloud/feature/nativeObj/richtext/IAssets;

    invoke-interface {v8}, Lio/dcloud/feature/nativeObj/richtext/IAssets;->isClick()Z

    move-result v8

    if-eqz v8, :cond_1cd

    .line 68
    invoke-virtual {v1, v5}, Landroid/widget/TextView;->setTag(Ljava/lang/Object;)V

    if-eqz v3, :cond_1c6

    if-eq v3, v9, :cond_13a

    const/4 v4, 0x3

    if-eq v3, v4, :cond_13a

    goto/16 :goto_1ce

    .line 76
    :cond_13a
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v3

    iget-wide v10, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downTime:J

    sub-long/2addr v3, v10

    const-wide/16 v10, 0x320

    cmp-long v3, v3, v10

    if-gez v3, :cond_1ce

    const-string v3, ""

    if-eqz v6, :cond_171

    .line 81
    array-length v4, v6

    if-lez v4, :cond_171

    .line 82
    aget-object v4, v6, v7

    if-eqz v4, :cond_171

    .line 84
    invoke-interface {v4}, Lio/dcloud/feature/nativeObj/richtext/span/ClickSpanAble;->getHref()Ljava/lang/String;

    move-result-object v5

    .line 85
    instance-of v6, v4, Lio/dcloud/feature/nativeObj/richtext/span/ImgSpan;

    if-eqz v6, :cond_168

    .line 86
    check-cast v4, Lio/dcloud/feature/nativeObj/richtext/span/ImgSpan;

    invoke-virtual {v4}, Lio/dcloud/feature/nativeObj/richtext/span/ImgSpan;->getSrc()Ljava/lang/String;

    move-result-object v3

    const-string v4, "img"

    :goto_162
    move-object/from16 v16, v4

    move-object v4, v3

    move-object/from16 v3, v16

    goto :goto_173

    .line 88
    :cond_168
    instance-of v4, v4, Lio/dcloud/feature/nativeObj/richtext/span/AHrefSpan;

    if-eqz v4, :cond_16f

    const-string v4, "a"

    goto :goto_162

    :cond_16f
    move-object v4, v3

    goto :goto_173

    :cond_171
    move-object v4, v3

    move-object v5, v4

    .line 93
    :goto_173
    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string v7, "{\"tagName\":\""

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v3, "\",\"href\":\""

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v3, "\",\"src\":\""

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v3, "\"}"

    invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    .line 94
    iget-object v10, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mWebview:Lio/dcloud/common/DHInterface/IWebview;

    iget-object v4, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mAssets:Lio/dcloud/feature/nativeObj/richtext/IAssets;

    invoke-interface {v4}, Lio/dcloud/feature/nativeObj/richtext/IAssets;->getOnClickCallBackId()Ljava/lang/String;

    move-result-object v11

    sget v13, Lio/dcloud/common/util/JSUtil;->OK:I

    const/4 v14, 0x1

    const/4 v15, 0x1

    move-object v12, v3

    invoke-static/range {v10 .. v15}, Lio/dcloud/common/util/JSUtil;->execCallback(Lio/dcloud/common/DHInterface/IWebview;Ljava/lang/String;Ljava/lang/String;IZZ)V

    .line 95
    iget-object v4, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mWebview:Lio/dcloud/common/DHInterface/IWebview;

    invoke-interface {v4}, Lio/dcloud/common/DHInterface/IWebview;->getOpener()Lio/dcloud/common/DHInterface/IWebview;

    move-result-object v4

    if-eqz v4, :cond_1ce

    .line 96
    iget-object v4, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mWebview:Lio/dcloud/common/DHInterface/IWebview;

    invoke-interface {v4}, Lio/dcloud/common/DHInterface/IWebview;->getOpener()Lio/dcloud/common/DHInterface/IWebview;

    move-result-object v10

    iget-object v4, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->mAssets:Lio/dcloud/feature/nativeObj/richtext/IAssets;

    invoke-interface {v4}, Lio/dcloud/feature/nativeObj/richtext/IAssets;->getOnClickCallBackId()Ljava/lang/String;

    move-result-object v11

    sget v13, Lio/dcloud/common/util/JSUtil;->OK:I

    const/4 v14, 0x1

    const/4 v15, 0x1

    move-object v12, v3

    invoke-static/range {v10 .. v15}, Lio/dcloud/common/util/JSUtil;->execCallback(Lio/dcloud/common/DHInterface/IWebview;Ljava/lang/String;Ljava/lang/String;IZZ)V

    goto :goto_1ce

    .line 97
    :cond_1c6
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v3

    iput-wide v3, v0, Lio/dcloud/feature/nativeObj/richtext/RichTextParser$LinkMovementMethodExt;->downTime:J

    goto :goto_1ce

    :cond_1cd
    move v9, v4

    :cond_1ce
    :goto_1ce
    if-eqz v9, :cond_1d1

    goto :goto_1d5

    .line 127
    :cond_1d1
    invoke-super/range {p0 .. p3}, Landroid/text/method/LinkMovementMethod;->onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z

    move-result v9

    :goto_1d5
    return v9
.end method