mirror of
https://github.com/anyproto/anytype-kotlin.git
synced 2025-06-08 05:47:05 +09:00
DROID-474 Editor | Enhancement | Support nested decoration for file block in state "done" (#2652)
This commit is contained in:
parent
37d21a9ea5
commit
662eeabdfa
3 changed files with 57 additions and 7 deletions
|
@ -6,7 +6,10 @@ import android.text.format.Formatter
|
|||
import android.text.style.ForegroundColorSpan
|
||||
import android.text.style.RelativeSizeSpan
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.TextView
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import com.anytypeio.anytype.core_ui.BuildConfig
|
||||
import com.anytypeio.anytype.core_ui.R
|
||||
import com.anytypeio.anytype.core_ui.common.SearchHighlightSpan
|
||||
import com.anytypeio.anytype.core_ui.common.SearchTargetHighlightSpan
|
||||
|
@ -14,13 +17,16 @@ import com.anytypeio.anytype.core_ui.databinding.ItemBlockFileBinding
|
|||
import com.anytypeio.anytype.core_ui.extensions.color
|
||||
import com.anytypeio.anytype.core_ui.extensions.getMimeIcon
|
||||
import com.anytypeio.anytype.core_ui.features.editor.BlockViewDiffUtil
|
||||
import com.anytypeio.anytype.core_ui.features.editor.decoration.DecoratableViewHolder
|
||||
import com.anytypeio.anytype.core_ui.features.editor.decoration.EditorDecorationContainer
|
||||
import com.anytypeio.anytype.core_utils.ext.dimen
|
||||
import com.anytypeio.anytype.core_utils.ext.removeSpans
|
||||
import com.anytypeio.anytype.presentation.editor.editor.Markup
|
||||
import com.anytypeio.anytype.presentation.editor.editor.listener.ListenerType
|
||||
import com.anytypeio.anytype.presentation.editor.editor.model.BlockView
|
||||
import timber.log.Timber
|
||||
|
||||
class File(val binding: ItemBlockFileBinding) : Media(binding.root) {
|
||||
class File(val binding: ItemBlockFileBinding) : Media(binding.root), DecoratableViewHolder {
|
||||
|
||||
override val container = binding.root
|
||||
override val root: View = itemView
|
||||
|
@ -29,8 +35,12 @@ class File(val binding: ItemBlockFileBinding) : Media(binding.root) {
|
|||
private val name = binding.text
|
||||
private val guideline = binding.guideline
|
||||
|
||||
override val decoratableContainer: EditorDecorationContainer
|
||||
get() = binding.decorationContainer
|
||||
|
||||
init {
|
||||
clickContainer.setOnTouchListener { v, e -> editorTouchProcessor.process(v, e) }
|
||||
applyDefaultOffsets()
|
||||
}
|
||||
|
||||
fun bind(item: BlockView.Media.File, clicked: (ListenerType) -> Unit) {
|
||||
|
@ -104,7 +114,9 @@ class File(val binding: ItemBlockFileBinding) : Media(binding.root) {
|
|||
}
|
||||
|
||||
override fun indentize(item: BlockView.Indentable) {
|
||||
guideline.setGuidelineBegin(item.indent * dimen(R.dimen.indent))
|
||||
if (!BuildConfig.NESTED_DECORATION_ENABLED) {
|
||||
guideline.setGuidelineBegin(item.indent * dimen(R.dimen.indent))
|
||||
}
|
||||
}
|
||||
|
||||
override fun select(isSelected: Boolean) {
|
||||
|
@ -118,9 +130,39 @@ class File(val binding: ItemBlockFileBinding) : Media(binding.root) {
|
|||
if (payload.isSearchHighlightChanged) {
|
||||
applySearchHighlight(item)
|
||||
}
|
||||
if (payload.isBackgroundColorChanged) {
|
||||
if (payload.isBackgroundColorChanged && !BuildConfig.NESTED_DECORATION_ENABLED) {
|
||||
applyBackground(item.background)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun applyDefaultOffsets() {
|
||||
if (!BuildConfig.NESTED_DECORATION_ENABLED) {
|
||||
container.updateLayoutParams<FrameLayout.LayoutParams> {
|
||||
marginStart = dimen(R.dimen.default_document_item_padding_start)
|
||||
marginEnd = dimen(R.dimen.default_document_item_padding_end)
|
||||
topMargin = dimen(R.dimen.default_graphic_text_root_margin_top)
|
||||
bottomMargin = dimen(R.dimen.default_graphic_text_root_margin_bottom)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun applyDecorations(decorations: List<BlockView.Decoration>) {
|
||||
Timber.w("Trying to apply decorations $decorations")
|
||||
if (BuildConfig.NESTED_DECORATION_ENABLED) {
|
||||
decoratableContainer.decorate(decorations) { rect ->
|
||||
binding.container.updateLayoutParams<FrameLayout.LayoutParams> {
|
||||
marginStart = dimen(R.dimen.dp_8) + rect.left
|
||||
marginEnd = dimen(R.dimen.dp_8) + rect.right
|
||||
bottomMargin = if (rect.bottom > 0) {
|
||||
rect.bottom
|
||||
} else {
|
||||
dimen(R.dimen.dp_2)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -3,17 +3,22 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/root"
|
||||
style="@style/DefaultGraphicTextBlockRootStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:background="@color/anytype_background_green"
|
||||
tools:context="com.anytypeio.anytype.core_ui.features.editor.holders.media.File">
|
||||
|
||||
<com.anytypeio.anytype.core_ui.features.editor.decoration.EditorDecorationContainer
|
||||
android:id="@+id/decorationContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/container"
|
||||
style="@style/DefaultGraphicTextBlockContainerStyle"
|
||||
android:paddingStart="@dimen/default_document_content_padding_start"
|
||||
android:paddingEnd="@dimen/default_document_content_padding_start"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/item_block_multi_select_mode_selector"
|
||||
tools:background="@drawable/item_block_multi_select_selected">
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
|
|
|
@ -644,7 +644,10 @@ class DefaultBlockViewRenderer @Inject constructor(
|
|||
block = block,
|
||||
parentScheme = parentScheme,
|
||||
currentDecoration = DecorationData(
|
||||
style = DecorationData.Style.Card,
|
||||
style = if ((content.type == Content.File.Type.FILE || content.type == Content.File.Type.PDF) && content.state == Content.File.State.DONE)
|
||||
DecorationData.Style.None
|
||||
else
|
||||
DecorationData.Style.Card,
|
||||
background = block.parseThemeBackgroundColor()
|
||||
)
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue