mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
Editor | Refact | Recycle click listener for text holders (#1826)
* fix * recycle click listeners
This commit is contained in:
parent
4c35354be9
commit
bfa6bdc68f
9 changed files with 11 additions and 49 deletions
|
@ -668,6 +668,13 @@ class BlockAdapter(
|
|||
false
|
||||
}
|
||||
}
|
||||
holder.content.setOnClickListener { view ->
|
||||
val pos = holder.bindingAdapterPosition
|
||||
if (pos != RecyclerView.NO_POSITION) {
|
||||
view.context.imm().showSoftInput(view, InputMethodManager.SHOW_FORCED)
|
||||
onTextInputClicked(blocks[pos].id)
|
||||
}
|
||||
}
|
||||
holder.content.onFocusChangeListener = LockableFocusChangeListener { hasFocus ->
|
||||
val pos = holder.bindingAdapterPosition
|
||||
if (pos != RecyclerView.NO_POSITION) {
|
||||
|
@ -678,7 +685,8 @@ class BlockAdapter(
|
|||
onFocusChanged(item.id, hasFocus)
|
||||
if (Build.VERSION.SDK_INT == N || Build.VERSION.SDK_INT == N_MR1) {
|
||||
if (hasFocus) {
|
||||
holder.content.context.imm().showSoftInput(holder.content, InputMethodManager.SHOW_FORCED)
|
||||
holder.content.context.imm()
|
||||
.showSoftInput(holder.content, InputMethodManager.SHOW_FORCED)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1005,14 +1013,12 @@ class BlockAdapter(
|
|||
holder.bind(
|
||||
block = blocks[position] as BlockView.Text.Header.One,
|
||||
onTextBlockTextChanged = onTextBlockTextChanged,
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = onClickListener,
|
||||
onMentionEvent = onMentionEvent,
|
||||
onSlashEvent = onSlashEvent,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
)
|
||||
}
|
||||
|
@ -1020,14 +1026,12 @@ class BlockAdapter(
|
|||
holder.bind(
|
||||
block = blocks[position] as BlockView.Text.Header.Two,
|
||||
onTextBlockTextChanged = onTextBlockTextChanged,
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = onClickListener,
|
||||
onMentionEvent = onMentionEvent,
|
||||
onSlashEvent = onSlashEvent,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
)
|
||||
}
|
||||
|
@ -1035,14 +1039,12 @@ class BlockAdapter(
|
|||
holder.bind(
|
||||
block = blocks[position] as BlockView.Text.Header.Three,
|
||||
onTextBlockTextChanged = onTextBlockTextChanged,
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = onClickListener,
|
||||
onMentionEvent = onMentionEvent,
|
||||
onSlashEvent = onSlashEvent,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
)
|
||||
}
|
||||
|
@ -1066,14 +1068,12 @@ class BlockAdapter(
|
|||
holder.bind(
|
||||
item = blocks[position] as BlockView.Text.Bulleted,
|
||||
onTextBlockTextChanged = onTextBlockTextChanged,
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = onClickListener,
|
||||
onMentionEvent = onMentionEvent,
|
||||
onSlashEvent = onSlashEvent,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
)
|
||||
}
|
||||
|
@ -1081,14 +1081,12 @@ class BlockAdapter(
|
|||
holder.bind(
|
||||
item = blocks[position] as BlockView.Text.Numbered,
|
||||
onTextBlockTextChanged = onTextBlockTextChanged,
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = onClickListener,
|
||||
onMentionEvent = onMentionEvent,
|
||||
onSlashEvent = onSlashEvent,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
)
|
||||
}
|
||||
|
@ -1096,7 +1094,6 @@ class BlockAdapter(
|
|||
holder.bind(
|
||||
item = blocks[position] as BlockView.Text.Toggle,
|
||||
onTextBlockTextChanged = onTextBlockTextChanged,
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
onTogglePlaceholderClicked = onTogglePlaceholderClicked,
|
||||
onToggleClicked = onToggleClicked,
|
||||
clicked = onClickListener,
|
||||
|
@ -1105,7 +1102,6 @@ class BlockAdapter(
|
|||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
)
|
||||
}
|
||||
|
@ -1221,7 +1217,8 @@ class BlockAdapter(
|
|||
is Video -> {
|
||||
holder.bind(
|
||||
item = blocks[position] as BlockView.Media.Video,
|
||||
clicked = onClickListener)
|
||||
clicked = onClickListener
|
||||
)
|
||||
}
|
||||
is VideoUpload -> {
|
||||
holder.bind(
|
||||
|
|
|
@ -35,14 +35,12 @@ class Bulleted(
|
|||
fun bind(
|
||||
item: BlockView.Text.Bulleted,
|
||||
onTextBlockTextChanged: (BlockView.Text) -> Unit,
|
||||
onSelectionChanged: (String, IntRange) -> Unit,
|
||||
clicked: (ListenerType) -> Unit,
|
||||
onMentionEvent: (MentionEvent) -> Unit,
|
||||
onSlashEvent: (SlashEvent) -> Unit,
|
||||
onSplitLineEnterClicked: (String, Editable, IntRange) -> Unit,
|
||||
onEmptyBlockBackspaceClicked: (String) -> Unit,
|
||||
onNonEmptyBlockBackspaceClicked: (String, Editable) -> Unit,
|
||||
onTextInputClicked: (String) -> Unit,
|
||||
onBackPressedCallback: () -> Boolean
|
||||
) = super.bind(
|
||||
item = item,
|
||||
|
@ -53,12 +51,10 @@ class Bulleted(
|
|||
}
|
||||
onTextBlockTextChanged(item)
|
||||
},
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = clicked,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
).also {
|
||||
setupMentionWatcher(onMentionEvent)
|
||||
|
|
|
@ -53,12 +53,10 @@ class Checkbox(
|
|||
}
|
||||
onTextBlockTextChanged(item)
|
||||
},
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = clicked,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
).also {
|
||||
checkbox.isActivated = item.isChecked
|
||||
|
|
|
@ -23,18 +23,15 @@ abstract class Header(
|
|||
fun bind(
|
||||
block: BlockView.Text.Header,
|
||||
onTextBlockTextChanged: (BlockView.Text) -> Unit,
|
||||
onSelectionChanged: (String, IntRange) -> Unit,
|
||||
clicked: (ListenerType) -> Unit,
|
||||
onMentionEvent: (MentionEvent) -> Unit,
|
||||
onSlashEvent: (SlashEvent) -> Unit,
|
||||
onSplitLineEnterClicked: (String, Editable, IntRange) -> Unit,
|
||||
onEmptyBlockBackspaceClicked: (String) -> Unit,
|
||||
onNonEmptyBlockBackspaceClicked: (String, Editable) -> Unit,
|
||||
onTextInputClicked: (String) -> Unit,
|
||||
onBackPressedCallback: () -> Boolean
|
||||
) = super.bind(
|
||||
item = block,
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
onTextChanged = { _, editable ->
|
||||
block.apply {
|
||||
text = editable.toString()
|
||||
|
@ -46,7 +43,6 @@ abstract class Header(
|
|||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
).also {
|
||||
setupMentionWatcher(onMentionEvent)
|
||||
|
|
|
@ -51,12 +51,10 @@ class Highlight(
|
|||
}
|
||||
onTextBlockTextChanged(item)
|
||||
},
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = clicked,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
).also {
|
||||
setupMentionWatcher(onMentionEvent)
|
||||
|
|
|
@ -36,14 +36,12 @@ class Numbered(
|
|||
fun bind(
|
||||
item: BlockView.Text.Numbered,
|
||||
onTextBlockTextChanged: (BlockView.Text) -> Unit,
|
||||
onSelectionChanged: (String, IntRange) -> Unit,
|
||||
clicked: (ListenerType) -> Unit,
|
||||
onMentionEvent: (MentionEvent) -> Unit,
|
||||
onSlashEvent: (SlashEvent) -> Unit,
|
||||
onSplitLineEnterClicked: (String, Editable, IntRange) -> Unit,
|
||||
onEmptyBlockBackspaceClicked: (String) -> Unit,
|
||||
onNonEmptyBlockBackspaceClicked: (String, Editable) -> Unit,
|
||||
onTextInputClicked: (String) -> Unit,
|
||||
onBackPressedCallback: () -> Boolean
|
||||
) = super.bind(
|
||||
item = item,
|
||||
|
@ -54,12 +52,10 @@ class Numbered(
|
|||
}
|
||||
onTextBlockTextChanged(item)
|
||||
},
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = clicked,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
).also {
|
||||
setNumber(item)
|
||||
|
|
|
@ -40,12 +40,10 @@ class Paragraph(
|
|||
) = super.bind(
|
||||
item = item,
|
||||
onTextChanged = onTextChanged,
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = clicked,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
).also {
|
||||
setupMentionWatcher(onMentionEvent)
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
package com.anytypeio.anytype.core_ui.features.editor.holders.text
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Build.VERSION_CODES.N
|
||||
import android.os.Build.VERSION_CODES.N_MR1
|
||||
import android.text.Editable
|
||||
import android.view.View
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import com.anytypeio.anytype.core_ui.R
|
||||
import com.anytypeio.anytype.core_ui.common.getBlockTextColor
|
||||
import com.anytypeio.anytype.core_ui.extensions.applyMovementMethod
|
||||
|
@ -13,7 +9,6 @@ import com.anytypeio.anytype.core_ui.extensions.color
|
|||
import com.anytypeio.anytype.core_ui.features.editor.BlockViewHolder
|
||||
import com.anytypeio.anytype.core_ui.features.editor.TextBlockHolder
|
||||
import com.anytypeio.anytype.core_ui.tools.DefaultTextWatcher
|
||||
import com.anytypeio.anytype.core_utils.ext.imm
|
||||
import com.anytypeio.anytype.presentation.editor.editor.listener.ListenerType
|
||||
import com.anytypeio.anytype.presentation.editor.editor.model.BlockView
|
||||
import com.anytypeio.anytype.presentation.editor.editor.model.Checkable
|
||||
|
@ -26,11 +21,9 @@ abstract class Text(
|
|||
item: BlockView.TextBlockProps,
|
||||
clicked: (ListenerType) -> Unit,
|
||||
onTextChanged: (String, Editable) -> Unit,
|
||||
onSelectionChanged: (String, IntRange) -> Unit,
|
||||
onSplitLineEnterClicked: (String, Editable, IntRange) -> Unit,
|
||||
onEmptyBlockBackspaceClicked: (String) -> Unit,
|
||||
onNonEmptyBlockBackspaceClicked: (String, Editable) -> Unit,
|
||||
onTextInputClicked: (String) -> Unit,
|
||||
onBackPressedCallback: (() -> Boolean)? = null
|
||||
) {
|
||||
indentize(item)
|
||||
|
@ -69,12 +62,6 @@ abstract class Text(
|
|||
}
|
||||
|
||||
content.apply {
|
||||
setOnClickListener {
|
||||
if (Build.VERSION.SDK_INT == N || Build.VERSION.SDK_INT == N_MR1) {
|
||||
content.context.imm().showSoftInput(content, InputMethodManager.SHOW_FORCED)
|
||||
}
|
||||
onTextInputClicked(item.id)
|
||||
}
|
||||
enableEnterKeyDetector(
|
||||
onEnterClicked = { range ->
|
||||
content.text?.let { editable ->
|
||||
|
|
|
@ -36,7 +36,6 @@ class Toggle(
|
|||
fun bind(
|
||||
item: BlockView.Text.Toggle,
|
||||
onTextBlockTextChanged: (BlockView.Text) -> Unit,
|
||||
onSelectionChanged: (String, IntRange) -> Unit,
|
||||
onToggleClicked: (String) -> Unit,
|
||||
onTogglePlaceholderClicked: (String) -> Unit,
|
||||
clicked: (ListenerType) -> Unit,
|
||||
|
@ -45,7 +44,6 @@ class Toggle(
|
|||
onSplitLineEnterClicked: (String, Editable, IntRange) -> Unit,
|
||||
onEmptyBlockBackspaceClicked: (String) -> Unit,
|
||||
onNonEmptyBlockBackspaceClicked: (String, Editable) -> Unit,
|
||||
onTextInputClicked: (String) -> Unit,
|
||||
onBackPressedCallback: () -> Boolean
|
||||
) = super.bind(
|
||||
item = item,
|
||||
|
@ -56,12 +54,10 @@ class Toggle(
|
|||
}
|
||||
onTextBlockTextChanged(item)
|
||||
},
|
||||
onSelectionChanged = onSelectionChanged,
|
||||
clicked = clicked,
|
||||
onEmptyBlockBackspaceClicked = onEmptyBlockBackspaceClicked,
|
||||
onSplitLineEnterClicked = onSplitLineEnterClicked,
|
||||
onNonEmptyBlockBackspaceClicked = onNonEmptyBlockBackspaceClicked,
|
||||
onTextInputClicked = onTextInputClicked,
|
||||
onBackPressedCallback = onBackPressedCallback
|
||||
).also {
|
||||
toggle.rotation = if (item.toggled) EXPANDED_ROTATION else COLLAPSED_ROTATION
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue