This commit is contained in:
Niels Andriesse 2021-06-18 16:24:56 +10:00
parent 9471db76c2
commit 2aaacbd029
4 changed files with 17 additions and 11 deletions

View File

@ -6,6 +6,7 @@ import android.content.res.Resources
import android.database.Cursor
import android.graphics.Rect
import android.os.Bundle
import android.util.Log
import android.view.ActionMode
import android.view.Menu
import android.view.MenuItem
@ -160,7 +161,7 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
additionalContentContainer.layoutParams = additionalContentContainerLayoutParams
// Attachment options
val attachmentButtonHeight = inputBar.attachmentsButtonContainer.height
val bottomMargin = (newValue - inputBar.inputBarAdditionalContentContainer.height - attachmentButtonHeight) / 2
val bottomMargin = (newValue - inputBar.additionalContentHeight - attachmentButtonHeight) / 2
val margin = toPx(8, resources)
val attachmentOptionsContainerLayoutParams = attachmentOptionsContainer.layoutParams as RelativeLayout.LayoutParams
attachmentOptionsContainerLayoutParams.bottomMargin = bottomMargin + attachmentButtonHeight + margin

View File

@ -5,6 +5,7 @@ import android.util.AttributeSet
import android.util.Log
import android.view.LayoutInflater
import android.view.MotionEvent
import android.widget.LinearLayout
import android.widget.RelativeLayout
import androidx.core.view.isVisible
import kotlinx.android.synthetic.main.view_input_bar.view.*
@ -19,6 +20,7 @@ import kotlin.math.max
class InputBar : RelativeLayout, InputBarEditTextDelegate, QuoteViewDelegate {
private val vMargin by lazy { toDp(4, resources) }
var delegate: InputBarDelegate? = null
var additionalContentHeight = 0
private val attachmentsButton by lazy { InputBarButton(context, R.drawable.ic_plus_24) }
private val microphoneButton by lazy { InputBarButton(context, R.drawable.ic_microphone) }
@ -87,13 +89,16 @@ class InputBar : RelativeLayout, InputBarEditTextDelegate, QuoteViewDelegate {
quoteView.delegate = this
inputBarAdditionalContentContainer.addView(quoteView)
quoteView.bind(message.individualRecipient.address.toString(), message.body, null, message.recipient)
val newHeight = max(inputBarEditText.height + 2 * vMargin, toPx(56, resources)) + quoteView.getIntrinsicHeight()
val quoteViewIntrinsicHeight = quoteView.getIntrinsicHeight()
val newHeight = max(inputBarEditText.height + 2 * vMargin, toPx(56, resources)) + quoteViewIntrinsicHeight
additionalContentHeight = quoteViewIntrinsicHeight
setHeight(newHeight)
}
override fun cancelQuoteDraft() {
inputBarAdditionalContentContainer.removeAllViews()
val newHeight = max(inputBarEditText.height + 2 * vMargin, toPx(56, resources))
additionalContentHeight = 0
setHeight(newHeight)
}
// endregion

View File

@ -14,7 +14,7 @@ import org.session.libsession.messaging.mentions.Mention
class MentionCandidatesView(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : ListView(context, attrs, defStyleAttr) {
private var candidates = listOf<Mention>()
set(newValue) { field = newValue; snAdapter.mentionCandidates = newValue }
set(newValue) { field = newValue; snAdapter.candidates = newValue }
var glide: GlideRequests? = null
set(newValue) { field = newValue; snAdapter.glide = newValue }
var openGroupServer: String? = null
@ -26,15 +26,15 @@ class MentionCandidatesView(context: Context, attrs: AttributeSet?, defStyleAttr
private val snAdapter by lazy { Adapter(context) }
private class Adapter(private val context: Context) : BaseAdapter() {
var mentionCandidates = listOf<Mention>()
var candidates = listOf<Mention>()
set(newValue) { field = newValue; notifyDataSetChanged() }
var glide: GlideRequests? = null
var openGroupServer: String? = null
var openGroupRoom: String? = null
override fun getCount(): Int { return mentionCandidates.count() }
override fun getCount(): Int { return candidates.count() }
override fun getItemId(position: Int): Long { return position.toLong() }
override fun getItem(position: Int): Mention { return mentionCandidates[position] }
override fun getItem(position: Int): Mention { return candidates[position] }
override fun getView(position: Int, cellToBeReused: View?, parent: ViewGroup): View {
val cell = cellToBeReused as MentionCandidateView? ?: MentionCandidateView.inflate(LayoutInflater.from(context), parent)
@ -53,21 +53,21 @@ class MentionCandidatesView(context: Context, attrs: AttributeSet?, defStyleAttr
init {
clipToOutline = true
adapter = snAdapter
snAdapter.mentionCandidates = candidates
snAdapter.candidates = candidates
setOnItemClickListener { _, _, position, _ ->
onCandidateSelected?.invoke(candidates[position])
}
}
fun show(mentionCandidates: List<Mention>, threadID: Long) {
fun show(candidates: List<Mention>, threadID: Long) {
val openGroup = DatabaseFactory.getLokiThreadDatabase(context).getOpenGroupChat(threadID)
if (openGroup != null) {
openGroupServer = openGroup.server
openGroupRoom = openGroup.room
}
this.candidates = mentionCandidates
this.candidates = candidates
val layoutParams = this.layoutParams as ViewGroup.LayoutParams
layoutParams.height = toPx(Math.min(mentionCandidates.count(), 4) * 44, resources)
layoutParams.height = toPx(Math.min(candidates.count(), 4) * 44, resources)
this.layoutParams = layoutParams
}

View File

@ -47,7 +47,7 @@ class VisibleMessageView : LinearLayout {
var onLongPress: (() -> Unit)? = null
companion object {
const val swipeToReplyThreshold = 90.0f // dp
const val swipeToReplyThreshold = 80.0f // dp
const val longPressMovementTreshold = 10.0f // dp
const val longPressDurationThreshold = 250L // ms
}