Skip to content

Commit 2ec4807

Browse files
committed
Move listener to AztecText, add config methods to Aztec
1 parent c0ed37e commit 2ec4807

File tree

3 files changed

+40
-16
lines changed

3 files changed

+40
-16
lines changed

aztec/src/main/kotlin/org/wordpress/aztec/Aztec.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ open class Aztec private constructor(val visualEditor: AztecText, val toolbar: I
2424
private var onAudioTappedListener: AztecText.OnAudioTappedListener? = null
2525
private var onMediaDeletedListener: AztecText.OnMediaDeletedListener? = null
2626
private var onVideoInfoRequestedListener: AztecText.OnVideoInfoRequestedListener? = null
27+
private var onLinkTappedListener: AztecText.OnLinkTappedListener? = null
28+
private var isLinkTapEnabled: Boolean = false
2729
private var plugins: ArrayList<IAztecPlugin> = visualEditor.plugins
2830
var sourceEditor: SourceViewEditText? = null
2931

@@ -134,6 +136,18 @@ open class Aztec private constructor(val visualEditor: AztecText, val toolbar: I
134136
return this
135137
}
136138

139+
fun setOnLinkTappedListener(onLinkTappedListener: AztecText.OnLinkTappedListener): Aztec {
140+
this.onLinkTappedListener = onLinkTappedListener
141+
initLinkTappedListener()
142+
return this
143+
}
144+
145+
fun setLinkTapEnabled(isLinkTapEnabled: Boolean): Aztec {
146+
this.isLinkTapEnabled = isLinkTapEnabled
147+
initLinkTapEnabled()
148+
return this
149+
}
150+
137151
fun addPlugin(plugin: IAztecPlugin): Aztec {
138152
plugins.add(plugin)
139153

@@ -219,4 +233,14 @@ open class Aztec private constructor(val visualEditor: AztecText, val toolbar: I
219233
visualEditor.setOnVideoInfoRequestedListener(onVideoInfoRequestedListener!!)
220234
}
221235
}
236+
237+
private fun initLinkTappedListener() {
238+
if (onLinkTappedListener != null) {
239+
visualEditor.setOnLinkTappedListener(onLinkTappedListener!!)
240+
}
241+
}
242+
243+
private fun initLinkTapEnabled() {
244+
visualEditor.setLinkTapEnabled(isLinkTapEnabled)
245+
}
222246
}

aztec/src/main/kotlin/org/wordpress/aztec/AztecText.kt

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,10 @@ open class AztecText : AppCompatEditText, TextWatcher, UnknownHtmlSpan.OnUnknown
321321
fun onBackspaceKey() : Boolean
322322
}
323323

324+
interface OnLinkTappedListener {
325+
fun onLinkTapped(widget: View, url: String)
326+
}
327+
324328
constructor(context: Context) : super(context) {
325329
init(null)
326330
}
@@ -785,6 +789,14 @@ open class AztecText : AppCompatEditText, TextWatcher, UnknownHtmlSpan.OnUnknown
785789
this.onVideoInfoRequestedListener = listener
786790
}
787791

792+
fun setOnLinkTappedListener(listener: OnLinkTappedListener) {
793+
EnhancedMovementMethod.linkTappedListener = listener
794+
}
795+
796+
fun setLinkTapEnabled(isLinkTapEnabled: Boolean) {
797+
EnhancedMovementMethod.isLinkTapEnabled = isLinkTapEnabled
798+
}
799+
788800
override fun onKeyPreIme(keyCode: Int, event: KeyEvent): Boolean {
789801
if (event.keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) {
790802
onImeBackListener?.onImeBack()
@@ -1766,11 +1778,4 @@ open class AztecText : AppCompatEditText, TextWatcher, UnknownHtmlSpan.OnUnknown
17661778
return if (accessibilityDelegate.onHoverEvent(event)) true else super.dispatchHoverEvent(event)
17671779
}
17681780

1769-
fun setUrlClickable(urlClickable: Boolean) {
1770-
EnhancedMovementMethod.clickableUrlSpan = urlClickable
1771-
}
1772-
1773-
fun setOnUrlClickListener(listener: EnhancedMovementMethod.OnUrlClickListener?) {
1774-
EnhancedMovementMethod.urlClickListener = listener
1775-
}
17761781
}

aztec/src/main/kotlin/org/wordpress/aztec/EnhancedMovementMethod.kt

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import android.text.Spannable
55
import android.text.method.ArrowKeyMovementMethod
66
import android.text.style.ClickableSpan
77
import android.view.MotionEvent
8-
import android.view.View
98
import android.widget.TextView
109
import org.wordpress.aztec.spans.AztecMediaClickableSpan
1110
import org.wordpress.aztec.spans.AztecURLSpan
@@ -15,8 +14,8 @@ import org.wordpress.aztec.spans.UnknownClickableSpan
1514
* http://stackoverflow.com/a/23566268/569430
1615
*/
1716
object EnhancedMovementMethod : ArrowKeyMovementMethod() {
18-
var clickableUrlSpan = false
19-
var urlClickListener: OnUrlClickListener? = null
17+
var isLinkTapEnabled = false
18+
var linkTappedListener: AztecText.OnLinkTappedListener? = null
2019

2120
override fun onTouchEvent(widget: TextView, text: Spannable, event: MotionEvent): Boolean {
2221
val action = event.action
@@ -81,17 +80,13 @@ object EnhancedMovementMethod : ArrowKeyMovementMethod() {
8180
if (link is AztecMediaClickableSpan || link is UnknownClickableSpan) {
8281
link.onClick(widget)
8382
return true
84-
} else if (link is AztecURLSpan && clickableUrlSpan) {
85-
urlClickListener?.onClick(widget, link.url) ?: link.onClick(widget)
83+
} else if (link is AztecURLSpan && isLinkTapEnabled) {
84+
linkTappedListener?.onLinkTapped(widget, link.url) ?: link.onClick(widget)
8685
return true
8786
}
8887
}
8988
}
9089

9190
return super.onTouchEvent(widget, text, event)
9291
}
93-
94-
interface OnUrlClickListener {
95-
fun onClick(widget: View, url: String)
96-
}
9792
}

0 commit comments

Comments
 (0)