From 0b5055895113e6ae663c03a0ee3c30cbeaee516e Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Tue, 28 Nov 2023 16:10:55 +0200
Subject: [PATCH] Change composer menu

---
 .../java/org/futo/circles/view/Callback.kt    | 11 ---
 .../futo/circles/view/MessageComposerMode.kt  | 28 ------
 .../futo/circles/view/MessageComposerView.kt  | 34 -------
 .../circles/view/RichTextComposerLayout.kt    | 96 ++++---------------
 app/src/main/res/drawable/bg_code_block.xml   | 24 +----
 .../res/drawable/bg_rich_text_menu_button.xml | 18 +---
 .../res/drawable/ic_composer_code_block.xml   |  3 +-
 .../main/res/drawable/ic_composer_indent.xml  |  1 +
 .../main/res/drawable/ic_composer_quote.xml   | 17 ++--
 .../res/drawable/ic_composer_underlined.xml   |  5 +-
 .../res/drawable/ic_composer_unindent.xml     |  5 +-
 .../res/layout/composer_rich_text_layout.xml  |  9 +-
 app/src/main/res/layout/view_preview_post.xml | 20 ----
 .../res/layout/view_rich_text_menu_button.xml | 30 ++++--
 14 files changed, 71 insertions(+), 230 deletions(-)
 delete mode 100644 app/src/main/java/org/futo/circles/view/Callback.kt
 delete mode 100644 app/src/main/java/org/futo/circles/view/MessageComposerMode.kt
 delete mode 100644 app/src/main/java/org/futo/circles/view/MessageComposerView.kt

diff --git a/app/src/main/java/org/futo/circles/view/Callback.kt b/app/src/main/java/org/futo/circles/view/Callback.kt
deleted file mode 100644
index 28f3adb08..000000000
--- a/app/src/main/java/org/futo/circles/view/Callback.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.futo.circles.view
-
-
-interface Callback : ComposerEditText.Callback {
-    fun onCloseRelatedMessage()
-    fun onSendMessage(text: CharSequence)
-    fun onAddAttachment()
-    fun onExpandOrCompactChange()
-    fun onFullScreenModeChanged()
-    fun onSetLink(isTextSupported: Boolean, initialLink: String?)
-}
\ No newline at end of file
diff --git a/app/src/main/java/org/futo/circles/view/MessageComposerMode.kt b/app/src/main/java/org/futo/circles/view/MessageComposerMode.kt
deleted file mode 100644
index c9ebbf983..000000000
--- a/app/src/main/java/org/futo/circles/view/MessageComposerMode.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2022 New Vector Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.futo.circles.view
-
-
-import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
-
-sealed interface MessageComposerMode {
-    data class Normal(val content: CharSequence?) : MessageComposerMode
-
-    sealed class Special(open val event: TimelineEvent, open val defaultContent: CharSequence) : MessageComposerMode
-    data class Edit(override val event: TimelineEvent, override val defaultContent: CharSequence) : Special(event, defaultContent)
-    data class Quote(override val event: TimelineEvent, override val defaultContent: CharSequence) : Special(event, defaultContent)
-    data class Reply(override val event: TimelineEvent, override val defaultContent: CharSequence) : Special(event, defaultContent)
-}
diff --git a/app/src/main/java/org/futo/circles/view/MessageComposerView.kt b/app/src/main/java/org/futo/circles/view/MessageComposerView.kt
deleted file mode 100644
index 70c6a953e..000000000
--- a/app/src/main/java/org/futo/circles/view/MessageComposerView.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2022 New Vector Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.futo.circles.view
-
-import android.text.Editable
-import android.widget.EditText
-import android.widget.ImageButton
-
-interface MessageComposerView {
-
-    val text: Editable?
-    val formattedText: String?
-    val editText: EditText
-    val emojiButton: ImageButton?
-
-    var callback: Callback?
-
-    fun setTextIfDifferent(text: CharSequence?): Boolean
-}
-
diff --git a/app/src/main/java/org/futo/circles/view/RichTextComposerLayout.kt b/app/src/main/java/org/futo/circles/view/RichTextComposerLayout.kt
index a630af30e..4076c2ec5 100644
--- a/app/src/main/java/org/futo/circles/view/RichTextComposerLayout.kt
+++ b/app/src/main/java/org/futo/circles/view/RichTextComposerLayout.kt
@@ -9,18 +9,15 @@ import android.view.LayoutInflater
 import android.view.MotionEvent
 import android.view.View
 import android.widget.EditText
-import android.widget.ImageButton
 import android.widget.LinearLayout
 import androidx.annotation.DrawableRes
 import androidx.annotation.StringRes
+import androidx.cardview.widget.CardView
 import androidx.core.view.isVisible
-import androidx.core.widget.doOnTextChanged
 import io.element.android.wysiwyg.EditorEditText
-import io.element.android.wysiwyg.display.KeywordDisplayHandler
 import io.element.android.wysiwyg.display.LinkDisplayHandler
 import io.element.android.wysiwyg.display.TextDisplay
 import io.element.android.wysiwyg.view.models.InlineFormat
-import io.element.android.wysiwyg.view.models.LinkAction
 import org.futo.circles.R
 import org.futo.circles.databinding.ComposerRichTextLayoutBinding
 import org.futo.circles.databinding.ViewRichTextMenuButtonBinding
@@ -32,66 +29,46 @@ internal class RichTextComposerLayout @JvmOverloads constructor(
     context: Context,
     attrs: AttributeSet? = null,
     defStyleAttr: Int = 0
-) : LinearLayout(context, attrs, defStyleAttr), MessageComposerView {
+) : LinearLayout(context, attrs, defStyleAttr) {
 
     private val views: ComposerRichTextLayoutBinding
 
-    override var callback: Callback? = null
-
-    override val text: Editable?
+    private val text: Editable?
         get() = editText.text
-    override val formattedText: String?
-        get() = (editText as? EditorEditText)?.getContentAsMessageHtml()
-    override val editText: EditText
+
+    private val editText: EditText
         get() = views.richTextComposerEditText
 
-    override val emojiButton: ImageButton?
-        get() = null
 
-    var pillDisplayHandler: PillDisplayHandler? = null
+    private var pillDisplayHandler: PillDisplayHandler? = null
 
     init {
         inflate(context, R.layout.composer_rich_text_layout, this)
         views = ComposerRichTextLayoutBinding.bind(this)
 
-        // Workaround to avoid cut-off text caused by padding in scrolled TextView (there is no clipToPadding).
-        // In TextView, clipTop = padding, but also clipTop -= shadowRadius. So if we set the shadowRadius to padding, they cancel each other
         views.richTextComposerEditText.setShadowLayer(
-            views.richTextComposerEditText.paddingBottom.toFloat(),
-            0f,
-            0f,
-            0
+            views.richTextComposerEditText.paddingBottom.toFloat(), 0f, 0f, 0
         )
 
-        views.richTextComposerEditText.doOnTextChanged { s, _, _, _ ->
-            callback?.onTextChanged(s ?: "")
-        }
-
         disallowParentInterceptTouchEvent(views.richTextComposerEditText)
 
         setupRichTextMenu()
+
         views.richTextComposerEditText.linkDisplayHandler = LinkDisplayHandler { text, url ->
             pillDisplayHandler?.resolveLinkDisplay(text, url) ?: TextDisplay.Plain
         }
-        views.richTextComposerEditText.keywordDisplayHandler = object : KeywordDisplayHandler {
-            override val keywords: List<String>
-                get() = pillDisplayHandler?.keywords.orEmpty()
-
-            override fun resolveKeywordDisplay(text: String): TextDisplay =
-                pillDisplayHandler?.resolveKeywordDisplay(text) ?: TextDisplay.Plain
-        }
     }
 
     private fun setupRichTextMenu() {
         addRichTextMenuItem(
-            R.drawable.ic_composer_bold,
+            R.drawable.ic_bold,
             R.string.rich_text_editor_format_bold,
             ComposerAction.BOLD
         ) {
             views.richTextComposerEditText.toggleInlineFormat(InlineFormat.Bold)
         }
         addRichTextMenuItem(
-            R.drawable.ic_composer_italic,
+            R.drawable.ic_italic,
             R.string.rich_text_editor_format_italic,
             ComposerAction.ITALIC
         ) {
@@ -105,21 +82,21 @@ internal class RichTextComposerLayout @JvmOverloads constructor(
             views.richTextComposerEditText.toggleInlineFormat(InlineFormat.Underline)
         }
         addRichTextMenuItem(
-            R.drawable.ic_composer_strikethrough,
+            R.drawable.ic_strikethrough,
             R.string.rich_text_editor_format_strikethrough,
             ComposerAction.STRIKE_THROUGH
         ) {
             views.richTextComposerEditText.toggleInlineFormat(InlineFormat.StrikeThrough)
         }
         addRichTextMenuItem(
-            R.drawable.ic_composer_bullet_list,
+            R.drawable.ic_bullet_list,
             R.string.rich_text_editor_bullet_list,
             ComposerAction.UNORDERED_LIST
         ) {
             views.richTextComposerEditText.toggleList(ordered = false)
         }
         addRichTextMenuItem(
-            R.drawable.ic_composer_numbered_list,
+            R.drawable.ic_number_list,
             R.string.rich_text_editor_numbered_list,
             ComposerAction.ORDERED_LIST
         ) {
@@ -146,13 +123,6 @@ internal class RichTextComposerLayout @JvmOverloads constructor(
         ) {
             views.richTextComposerEditText.toggleQuote()
         }
-        addRichTextMenuItem(
-            R.drawable.ic_composer_inline_code,
-            R.string.rich_text_editor_inline_code,
-            ComposerAction.INLINE_CODE
-        ) {
-            views.richTextComposerEditText.toggleInlineFormat(InlineFormat.InlineCode)
-        }
         addRichTextMenuItem(
             R.drawable.ic_composer_code_block,
             R.string.rich_text_editor_code_block,
@@ -160,25 +130,6 @@ internal class RichTextComposerLayout @JvmOverloads constructor(
         ) {
             views.richTextComposerEditText.toggleCodeBlock()
         }
-        addRichTextMenuItem(
-            R.drawable.ic_composer_link,
-            R.string.rich_text_editor_link,
-            ComposerAction.LINK
-        ) {
-            views.richTextComposerEditText.getLinkAction()?.let {
-                when (it) {
-                    LinkAction.InsertLink -> callback?.onSetLink(
-                        isTextSupported = true,
-                        initialLink = null
-                    )
-
-                    is LinkAction.SetLink -> callback?.onSetLink(
-                        isTextSupported = false,
-                        initialLink = it.currentUrl
-                    )
-                }
-            }
-        }
     }
 
     fun setLink(link: String?) =
@@ -210,12 +161,9 @@ internal class RichTextComposerLayout @JvmOverloads constructor(
 
     override fun onAttachedToWindow() {
         super.onAttachedToWindow()
-
         views.richTextComposerEditText.actionStatesChangedListener =
             EditorEditText.OnActionStatesChangedListener { state ->
-                for (action in state.keys) {
-                    updateMenuStateFor(action, state)
-                }
+                for (action in state.keys) { updateMenuStateFor(action, state) }
             }
     }
 
@@ -227,14 +175,12 @@ internal class RichTextComposerLayout @JvmOverloads constructor(
         onClick: () -> Unit
     ) {
         val inflater = LayoutInflater.from(context)
-        val button = ViewRichTextMenuButtonBinding.inflate(inflater, views.richTextMenu, true)
-        button.root.tag = action
-        with(button.root) {
+        val item = ViewRichTextMenuButtonBinding.inflate(inflater, views.richTextMenu, true)
+        item.root.tag = action
+        with(item.root) {
             contentDescription = resources.getString(description)
-            setImageResource(iconId)
-            setOnClickListener {
-                onClick()
-            }
+            item.ivIcon.setImageResource(iconId)
+            setOnClickListener { onClick() }
         }
     }
 
@@ -242,7 +188,7 @@ internal class RichTextComposerLayout @JvmOverloads constructor(
         action: ComposerAction,
         menuState: Map<ComposerAction, ActionState>
     ) {
-        val button = findViewWithTag<ImageButton>(action) ?: return
+        val button = findViewWithTag<CardView>(action) ?: return
         val stateForAction = menuState[action]
         button.isEnabled = stateForAction != ActionState.DISABLED
         button.isSelected = stateForAction == ActionState.REVERSED
@@ -255,7 +201,7 @@ internal class RichTextComposerLayout @JvmOverloads constructor(
         }
     }
 
-    override fun setTextIfDifferent(text: CharSequence?): Boolean {
+    private fun setTextIfDifferent(text: CharSequence?): Boolean {
         return editText.setTextIfDifferent(text)
     }
 
diff --git a/app/src/main/res/drawable/bg_code_block.xml b/app/src/main/res/drawable/bg_code_block.xml
index e171c7d90..ef7227f68 100644
--- a/app/src/main/res/drawable/bg_code_block.xml
+++ b/app/src/main/res/drawable/bg_code_block.xml
@@ -1,22 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright 2018 The Android Open Source Project
-  ~ Modifications Copyright 2022 New Vector Ltd
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="@color/blue"/>
-    <stroke android:width="@dimen/code_block_border_width" android:color="@color/blue"/>
-    <corners android:radius="@dimen/code_block_border_radius"/>
+    <solid android:color="#F4F6FA" />
+    <stroke
+        android:width="@dimen/code_block_border_width"
+        android:color="#E3E8F0" />
+    <corners android:radius="@dimen/code_block_border_radius" />
 </shape>
diff --git a/app/src/main/res/drawable/bg_rich_text_menu_button.xml b/app/src/main/res/drawable/bg_rich_text_menu_button.xml
index 7b436920f..03af9b25b 100644
--- a/app/src/main/res/drawable/bg_rich_text_menu_button.xml
+++ b/app/src/main/res/drawable/bg_rich_text_menu_button.xml
@@ -1,18 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_hovered="true">
-        <shape android:shape="rectangle">
-            <corners android:radius="8dp" />
-            <solid android:color="@color/blue" />
-        </shape>
-    </item>
-    <item android:state_selected="true">
-        <shape android:shape="rectangle">
-            <corners android:radius="8dp" />
-            <solid android:color="@color/blue" />
-        </shape>
-    </item>
-    <item>
-        <ripple android:color="@color/blue" />
-    </item>
+    <item android:color="@color/blue" android:state_selected="true" />
+    <item android:color="@color/red" android:state_enabled="false" />
+    <item android:color="@color/post_card_background_color" />
 </selector>
diff --git a/app/src/main/res/drawable/ic_composer_code_block.xml b/app/src/main/res/drawable/ic_composer_code_block.xml
index 25155167b..aaa3dbe78 100644
--- a/app/src/main/res/drawable/ic_composer_code_block.xml
+++ b/app/src/main/res/drawable/ic_composer_code_block.xml
@@ -1,9 +1,10 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="44dp"
     android:height="44dp"
+    android:tint="@color/menu_icon_color"
     android:viewportWidth="44"
     android:viewportHeight="44">
     <path
-        android:fillColor="@color/blue"
+        android:fillColor="@color/white"
         android:pathData="m18,22c0.7,-0.72 1.4,-1.4 2.1,-2.1 0.68,-0.98 -0.93,-1.9 -1.5,-0.96 -0.87,0.88 -1.8,1.7 -2.6,2.6 -0.45,0.67 0.27,1.2 0.7,1.6 0.75,0.74 1.5,1.5 2.2,2.2 0.98,0.68 1.9,-0.93 0.96,-1.5l-1.9,-1.9zM26.6,22c-0.71,0.72 -1.5,1.4 -2.1,2.2 -0.68,0.98 0.93,1.9 1.5,0.96 0.88,-0.89 1.8,-1.8 2.6,-2.7 0.45,-0.67 -0.27,-1.2 -0.7,-1.6 -0.75,-0.74 -1.5,-1.5 -2.2,-2.2 -0.99,-0.66 -2,0.94 -0.96,1.5l1.9,1.9zM13.6,32c-1.1,0.021 -1.9,-1 -1.7,-2.1 0.005,-5.7 -0.011,-11 0.008,-17 0.088,-1 1.1,-1.7 2.1,-1.5 5.6,0.005 11,-0.011 17,0.008 1,0.088 1.7,1.1 1.5,2.1 -0.005,5.6 0.011,11 -0.008,17 -0.088,1 -1.1,1.7 -2.1,1.5h-17zM13.6,30.3h17v-17h-17v17z" />
 </vector>
diff --git a/app/src/main/res/drawable/ic_composer_indent.xml b/app/src/main/res/drawable/ic_composer_indent.xml
index 775d434e3..cbef73665 100644
--- a/app/src/main/res/drawable/ic_composer_indent.xml
+++ b/app/src/main/res/drawable/ic_composer_indent.xml
@@ -1,6 +1,7 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="44dp"
     android:height="44dp"
+    android:tint="@color/menu_icon_color"
     android:viewportWidth="44"
     android:viewportHeight="44">
     <group>
diff --git a/app/src/main/res/drawable/ic_composer_quote.xml b/app/src/main/res/drawable/ic_composer_quote.xml
index 78603bf36..f0b222fac 100644
--- a/app/src/main/res/drawable/ic_composer_quote.xml
+++ b/app/src/main/res/drawable/ic_composer_quote.xml
@@ -1,18 +1,19 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="36dp"
     android:height="44dp"
+    android:tint="@color/menu_icon_color"
     android:viewportWidth="36"
     android:viewportHeight="44">
     <path
-        android:pathData="M14.719,14.34C14.813,13.698 14.353,13.104 13.691,13.012C13.028,12.92 12.415,13.366 12.32,14.008L11.512,19.486C11.418,20.128 11.878,20.723 12.54,20.814C13.203,20.906 13.816,20.46 13.911,19.818L14.719,14.34Z"
-        android:fillColor="@color/blue" />
+        android:fillColor="@color/blue"
+        android:pathData="M14.719,14.34C14.813,13.698 14.353,13.104 13.691,13.012C13.028,12.92 12.415,13.366 12.32,14.008L11.512,19.486C11.418,20.128 11.878,20.723 12.54,20.814C13.203,20.906 13.816,20.46 13.911,19.818L14.719,14.34Z" />
     <path
-        android:pathData="M26.834,24.514C26.928,23.872 26.468,23.277 25.806,23.186C25.143,23.094 24.53,23.54 24.435,24.182L23.628,29.66C23.533,30.302 23.993,30.896 24.656,30.988C25.318,31.08 25.932,30.634 26.026,29.992L26.834,24.514Z"
-        android:fillColor="@color/blue" />
+        android:fillColor="@color/blue"
+        android:pathData="M26.834,24.514C26.928,23.872 26.468,23.277 25.806,23.186C25.143,23.094 24.53,23.54 24.435,24.182L23.628,29.66C23.533,30.302 23.993,30.896 24.656,30.988C25.318,31.08 25.932,30.634 26.026,29.992L26.834,24.514Z" />
     <path
-        android:pathData="M19.318,13.009C19.983,13.086 20.456,13.671 20.376,14.315L20.354,14.49C20.34,14.602 20.319,14.763 20.293,14.961C20.242,15.358 20.17,15.902 20.088,16.496C19.927,17.667 19.72,19.075 19.553,19.882C19.422,20.518 18.784,20.931 18.128,20.803C17.472,20.676 17.046,20.058 17.177,19.422C17.326,18.701 17.523,17.37 17.687,16.185C17.767,15.599 17.838,15.061 17.889,14.669C17.915,14.473 17.935,14.314 17.949,14.204L17.97,14.034C18.051,13.39 18.654,12.931 19.318,13.009Z"
-        android:fillColor="@color/blue" />
+        android:fillColor="@color/blue"
+        android:pathData="M19.318,13.009C19.983,13.086 20.456,13.671 20.376,14.315L20.354,14.49C20.34,14.602 20.319,14.763 20.293,14.961C20.242,15.358 20.17,15.902 20.088,16.496C19.927,17.667 19.72,19.075 19.553,19.882C19.422,20.518 18.784,20.931 18.128,20.803C17.472,20.676 17.046,20.058 17.177,19.422C17.326,18.701 17.523,17.37 17.687,16.185C17.767,15.599 17.838,15.061 17.889,14.669C17.915,14.473 17.935,14.314 17.949,14.204L17.97,14.034C18.051,13.39 18.654,12.931 19.318,13.009Z" />
     <path
-        android:pathData="M32.488,24.514C32.582,23.872 32.122,23.277 31.46,23.186C30.797,23.094 30.184,23.54 30.089,24.182L29.281,29.66C29.187,30.302 29.647,30.896 30.309,30.988C30.972,31.08 31.585,30.634 31.68,29.992L32.488,24.514Z"
-        android:fillColor="@color/blue" />
+        android:fillColor="@color/blue"
+        android:pathData="M32.488,24.514C32.582,23.872 32.122,23.277 31.46,23.186C30.797,23.094 30.184,23.54 30.089,24.182L29.281,29.66C29.187,30.302 29.647,30.896 30.309,30.988C30.972,31.08 31.585,30.634 31.68,29.992L32.488,24.514Z" />
 </vector>
diff --git a/app/src/main/res/drawable/ic_composer_underlined.xml b/app/src/main/res/drawable/ic_composer_underlined.xml
index 2e3d997d7..c0b515adf 100644
--- a/app/src/main/res/drawable/ic_composer_underlined.xml
+++ b/app/src/main/res/drawable/ic_composer_underlined.xml
@@ -1,12 +1,13 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="44dp"
     android:height="44dp"
+    android:tint="@color/menu_icon_color"
     android:viewportWidth="44"
     android:viewportHeight="44">
     <group>
         <clip-path android:pathData="M10,10h24v24h-24z" />
         <path
-            android:pathData="M22.79,26.95C25.82,26.56 28,23.84 28,20.79V14.25C28,13.56 27.44,13 26.75,13C26.06,13 25.5,13.56 25.5,14.25V20.9C25.5,22.57 24.37,24.09 22.73,24.42C20.48,24.89 18.5,23.17 18.5,21V14.25C18.5,13.56 17.94,13 17.25,13C16.56,13 16,13.56 16,14.25V21C16,24.57 19.13,27.42 22.79,26.95ZM15,30C15,30.55 15.45,31 16,31H28C28.55,31 29,30.55 29,30C29,29.45 28.55,29 28,29H16C15.45,29 15,29.45 15,30Z"
-            android:fillColor="@color/blue" />
+            android:fillColor="@color/blue"
+            android:pathData="M22.79,26.95C25.82,26.56 28,23.84 28,20.79V14.25C28,13.56 27.44,13 26.75,13C26.06,13 25.5,13.56 25.5,14.25V20.9C25.5,22.57 24.37,24.09 22.73,24.42C20.48,24.89 18.5,23.17 18.5,21V14.25C18.5,13.56 17.94,13 17.25,13C16.56,13 16,13.56 16,14.25V21C16,24.57 19.13,27.42 22.79,26.95ZM15,30C15,30.55 15.45,31 16,31H28C28.55,31 29,30.55 29,30C29,29.45 28.55,29 28,29H16C15.45,29 15,29.45 15,30Z" />
     </group>
 </vector>
diff --git a/app/src/main/res/drawable/ic_composer_unindent.xml b/app/src/main/res/drawable/ic_composer_unindent.xml
index f7f383c49..a4a7fc69a 100644
--- a/app/src/main/res/drawable/ic_composer_unindent.xml
+++ b/app/src/main/res/drawable/ic_composer_unindent.xml
@@ -1,12 +1,13 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="44dp"
     android:height="44dp"
+    android:tint="@color/menu_icon_color"
     android:viewportWidth="44"
     android:viewportHeight="44">
     <group>
         <clip-path android:pathData="M10,10h24v24h-24z" />
         <path
-            android:pathData="M22,27H30C30.55,27 31,26.55 31,26C31,25.45 30.55,25 30,25H22C21.45,25 21,25.45 21,26C21,26.55 21.45,27 22,27ZM13.35,22.35L16.14,25.14C16.46,25.46 17,25.24 17,24.79V19.21C17,18.76 16.46,18.54 16.15,18.86L13.36,21.65C13.16,21.84 13.16,22.16 13.35,22.35ZM14,31H30C30.55,31 31,30.55 31,30C31,29.45 30.55,29 30,29H14C13.45,29 13,29.45 13,30C13,30.55 13.45,31 14,31ZM13,14C13,14.55 13.45,15 14,15H30C30.55,15 31,14.55 31,14C31,13.45 30.55,13 30,13H14C13.45,13 13,13.45 13,14ZM22,19H30C30.55,19 31,18.55 31,18C31,17.45 30.55,17 30,17H22C21.45,17 21,17.45 21,18C21,18.55 21.45,19 22,19ZM22,23H30C30.55,23 31,22.55 31,22C31,21.45 30.55,21 30,21H22C21.45,21 21,21.45 21,22C21,22.55 21.45,23 22,23Z"
-            android:fillColor="@color/blue" />
+            android:fillColor="@color/blue"
+            android:pathData="M22,27H30C30.55,27 31,26.55 31,26C31,25.45 30.55,25 30,25H22C21.45,25 21,25.45 21,26C21,26.55 21.45,27 22,27ZM13.35,22.35L16.14,25.14C16.46,25.46 17,25.24 17,24.79V19.21C17,18.76 16.46,18.54 16.15,18.86L13.36,21.65C13.16,21.84 13.16,22.16 13.35,22.35ZM14,31H30C30.55,31 31,30.55 31,30C31,29.45 30.55,29 30,29H14C13.45,29 13,29.45 13,30C13,30.55 13.45,31 14,31ZM13,14C13,14.55 13.45,15 14,15H30C30.55,15 31,14.55 31,14C31,13.45 30.55,13 30,13H14C13.45,13 13,13.45 13,14ZM22,19H30C30.55,19 31,18.55 31,18C31,17.45 30.55,17 30,17H22C21.45,17 21,17.45 21,18C21,18.55 21.45,19 22,19ZM22,23H30C30.55,23 31,22.55 31,22C31,21.45 30.55,21 30,21H22C21.45,21 21,21.45 21,22C21,22.55 21.45,23 22,23Z" />
     </group>
 </vector>
diff --git a/app/src/main/res/layout/composer_rich_text_layout.xml b/app/src/main/res/layout/composer_rich_text_layout.xml
index bcfd40c54..85c45454c 100644
--- a/app/src/main/res/layout/composer_rich_text_layout.xml
+++ b/app/src/main/res/layout/composer_rich_text_layout.xml
@@ -17,25 +17,22 @@
             android:layout_width="0dp"
             android:layout_height="0dp"
             android:layout_marginStart="12dp"
+            android:background="@null"
             android:gravity="top"
-            android:hint="Room message placeholder"
+            android:hint="@string/enter_your_message_here"
             android:imeOptions="flagNoExtractUi"
             android:nextFocusLeft="@id/richTextComposerEditText"
             android:nextFocusUp="@id/richTextComposerEditText"
             app:bulletGap="8sp"
             app:bulletRadius="4sp"
             app:codeBlockBackgroundDrawable="@drawable/bg_code_block"
-            app:inlineCodeMultiLineBgLeft="@drawable/bg_inline_code_multi_line_left"
-            app:inlineCodeMultiLineBgMid="@drawable/bg_inline_code_multi_line_mid"
-            app:inlineCodeMultiLineBgRight="@drawable/bg_inline_code_multi_line_right"
-            app:inlineCodeSingleLineBg="@drawable/bg_inline_code_single_line"
             app:layout_constraintBottom_toTopOf="@id/richTextMenuScrollView"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintHeight_default="wrap"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintVertical_bias="0"
-            tools:text="@tools:sample/lorem/random" />
+            tools:text="some text" />
 
         <HorizontalScrollView
             android:id="@+id/richTextMenuScrollView"
diff --git a/app/src/main/res/layout/view_preview_post.xml b/app/src/main/res/layout/view_preview_post.xml
index d516d10c3..30c15715b 100644
--- a/app/src/main/res/layout/view_preview_post.xml
+++ b/app/src/main/res/layout/view_preview_post.xml
@@ -62,26 +62,6 @@
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
 
-            <!--            <io.element.android.wysiwyg.EditorEditText-->
-            <!--                android:id="@+id/etTextPost"-->
-            <!--                android:layout_width="0dp"-->
-            <!--                android:layout_height="0dp"-->
-            <!--                android:gravity="top"-->
-            <!--                android:hint="Hint"-->
-            <!--                app:bulletGap="8sp"-->
-            <!--                app:bulletRadius="4sp"-->
-            <!--                app:codeBlockBackgroundDrawable="@drawable/ic_text"-->
-            <!--                app:inlineCodeMultiLineBgLeft="@drawable/ic_text"-->
-            <!--                app:inlineCodeMultiLineBgMid="@drawable/ic_text"-->
-            <!--                app:inlineCodeMultiLineBgRight="@drawable/ic_text"-->
-            <!--                app:inlineCodeSingleLineBg="@drawable/ic_text"-->
-            <!--                app:layout_constraintBottom_toTopOf="@id/lMediaContent"-->
-            <!--                app:layout_constraintEnd_toEndOf="parent"-->
-            <!--                app:layout_constraintHeight_default="wrap"-->
-            <!--                app:layout_constraintStart_toStartOf="parent"-->
-            <!--                app:layout_constraintTop_toTopOf="parent"-->
-            <!--                tools:text="@tools:sample/lorem/random" />-->
-
 
             <include
                 android:id="@+id/lMediaContent"
diff --git a/app/src/main/res/layout/view_rich_text_menu_button.xml b/app/src/main/res/layout/view_rich_text_menu_button.xml
index b99a29da2..ced20d9a8 100644
--- a/app/src/main/res/layout/view_rich_text_menu_button.xml
+++ b/app/src/main/res/layout/view_rich_text_menu_button.xml
@@ -1,11 +1,23 @@
 <?xml version="1.0" encoding="utf-8"?>
-<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="@dimen/rich_text_composer_menu_item_size"
-    android:layout_height="@dimen/rich_text_composer_menu_item_size"
-    android:layout_marginHorizontal="2dp"
-    android:background="@drawable/bg_rich_text_menu_button"
-    app:tint="@color/selector_rich_text_menu_icon"
-    tools:src="@drawable/ic_composer_bold"
-    tools:ignore="ContentDescription" />
+    android:id="@+id/cvOption"
+    android:layout_width="48dp"
+    android:layout_height="48dp"
+    android:clickable="true"
+    android:elevation="4dp"
+    android:focusable="true"
+    android:foreground="?selectableItemBackground"
+    app:cardBackgroundColor="@drawable/bg_rich_text_menu_button"
+    app:cardCornerRadius="8dp"
+    app:cardUseCompatPadding="true">
+
+    <ImageView
+        android:id="@+id/ivIcon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:src="@drawable/ic_mention" />
+
+</androidx.cardview.widget.CardView>
+
-- 
GitLab