1
0
Fork 0
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:
Evgenii Kozlov 2021-09-27 19:17:03 +03:00 committed by GitHub
parent 4c35354be9
commit bfa6bdc68f
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 11 additions and 49 deletions

View file

@ -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(

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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 ->

View file

@ -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