Skip to content
Snippets Groups Projects
Commit 9c6c73e3 authored by Taras's avatar Taras
Browse files

Implement edit text message

parent 3f4706b5
No related branches found
No related tags found
No related merge requests found
......@@ -138,7 +138,9 @@ class DMTimelineDialogFragment :
}
override fun onEditActionClicked(eventId: String, message: String) {
binding.vSendMessage.setTextForEdit(eventId, message)
binding.vSendMessage.setTextForEdit(message) { newMessage ->
viewModel.editTextMessage(eventId, args.roomId, newMessage)
}
}
override fun onSaveToDevice(content: PostContent) {
......
......@@ -4,14 +4,20 @@ import android.content.Context
import android.text.Editable
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.content.ContextCompat.getSystemService
import androidx.core.widget.doAfterTextChanged
import org.futo.circles.core.extensions.getText
import org.futo.circles.core.extensions.gone
import org.futo.circles.core.extensions.setIsVisible
import org.futo.circles.core.extensions.visible
import org.futo.circles.databinding.ViewSendMessageBinding
import org.futo.circles.feature.direct.timeline.listeners.SendDmMessageListener
class SendMessageView(
context: Context,
attrs: AttributeSet? = null,
......@@ -20,17 +26,26 @@ class SendMessageView(
private val binding = ViewSendMessageBinding.inflate(LayoutInflater.from(context), this)
private var sendDmMessageListener: SendDmMessageListener? = null
private val emptyText = ""
init {
isClickable = true
setBackgroundColor(
ContextCompat.getColor(
context,
org.futo.circles.core.R.color.post_card_background_color
)
)
binding.etMessage.doAfterTextChanged { text: Editable? ->
binding.ivAddImage.setIsVisible(text.isNullOrBlank())
binding.ivSend.setIsVisible(text?.isNotBlank() == true)
with(binding) {
etMessage.doAfterTextChanged { text: Editable? ->
ivAddImage.setIsVisible(text.isNullOrBlank())
ivSend.setIsVisible(text?.isNotBlank() == true)
}
ivCancelEdit.setOnClickListener {
etMessage.setText(emptyText)
lEditActions.gone()
lSendActions.visible()
}
}
}
......@@ -41,7 +56,6 @@ class SendMessageView(
ivAddImage.setOnClickListener { sendDmMessageListener?.onSendMediaButtonClicked() }
ivSend.setOnClickListener {
sendDmMessageListener?.onSendTextMessageClicked(tilMessage.getText())
val emptyText = ""
etMessage.setText(emptyText)
}
}
......@@ -53,8 +67,30 @@ class SendMessageView(
binding.etMessage.setSelection(selection + unicode.length)
}
fun setTextForEdit(eventId: String, message: String) {
binding.etMessage.setText(message)
fun setTextForEdit(
message: String,
onEditConfirmed: (String) -> Unit
) {
with(binding) {
lSendActions.gone()
lEditActions.visible()
etMessage.setText(message)
showSoftKeyboard(etMessage)
ivConfirmEdit.setOnClickListener {
onEditConfirmed(tilMessage.getText())
etMessage.setText(emptyText)
lEditActions.gone()
lSendActions.visible()
}
}
}
private fun showSoftKeyboard(view: View) {
view.requestFocus()
view.postDelayed({
val imm = getSystemService(context, InputMethodManager::class.java)
imm?.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}, 100L)
}
}
\ No newline at end of file
......@@ -37,11 +37,12 @@
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="96dp"
android:minHeight="48dp"
app:boxBackgroundMode="none"
app:hintEnabled="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/ivAddImage"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/ivEmoji"
app:layout_constraintTop_toTopOf="parent">
......@@ -49,6 +50,8 @@
android:id="@+id/etMessage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:hint="@string/message"
android:inputType="textCapSentences|textMultiLine"
android:minHeight="48dp"
......@@ -58,34 +61,77 @@
</com.google.android.material.textfield.TextInputLayout>
<ImageView
android:id="@+id/ivAddImage"
android:layout_width="48dp"
<LinearLayout
android:id="@+id/lSendActions"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
android:padding="12dp"
android:src="@drawable/ic_image"
app:layout_constraintBottom_toBottomOf="@id/tilMessage"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toStartOf="@id/ivSend"
app:tint="@color/menu_icon_color" />
app:layout_constraintEnd_toEndOf="parent">
<ImageView
android:id="@+id/ivAddImage"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
android:padding="12dp"
android:src="@drawable/ic_image"
app:tint="@color/menu_icon_color" />
<ImageView
android:id="@+id/ivSend"
android:layout_width="48dp"
<ImageView
android:id="@+id/ivSend"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
android:padding="12dp"
android:src="@drawable/ic_send"
android:visibility="gone"
app:tint="@color/blue"
tools:visibility="visible" />
</LinearLayout>
<LinearLayout
android:id="@+id/lEditActions"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
android:padding="12dp"
android:src="@drawable/ic_send"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/tilMessage"
app:layout_constraintEnd_toEndOf="parent"
app:tint="@color/blue"
tools:visibility="visible" />
tools:visibility="visible">
<ImageView
android:id="@+id/ivCancelEdit"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
android:padding="12dp"
android:src="@drawable/ic_close"
app:tint="@color/menu_icon_color" />
<ImageView
android:id="@+id/ivConfirmEdit"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
android:padding="12dp"
android:src="@drawable/ic_check"
app:layout_constraintBottom_toBottomOf="@id/tilMessage"
app:layout_constraintEnd_toEndOf="parent"
app:tint="@color/blue" />
</LinearLayout>
</merge>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment