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