Basic open group invitation view

This commit is contained in:
Niels Andriesse 2021-06-22 10:39:34 +10:00
parent 252f344d93
commit b8f6321262
4 changed files with 118 additions and 2 deletions

View File

@ -13,9 +13,11 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewOutlineProvider
import android.widget.LinearLayout
import androidx.core.content.res.ResourcesCompat
import kotlinx.android.synthetic.main.view_link_preview.view.*
import network.loki.messenger.R
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
import org.thoughtcrime.securesms.loki.utilities.UiModeUtilities
import org.thoughtcrime.securesms.mms.GlideRequests
class LinkPreviewView : LinearLayout {
@ -43,6 +45,12 @@ class LinkPreviewView : LinearLayout {
// TODO: Properly use glide and the actual thumbnail
// Title
titleTextView.text = linkPreview.title
val textColorID = if (message.isOutgoing && UiModeUtilities.isDayUiMode(context)) {
R.color.white
} else {
if (UiModeUtilities.isDayUiMode(context)) R.color.black else R.color.white
}
titleTextView.setTextColor(ResourcesCompat.getColor(resources, textColorID, context.theme))
// Body
mainLinkPreviewContainer.addView(VisibleMessageContentView.getBodyTextView(context, message))
}

View File

@ -0,0 +1,36 @@
package org.thoughtcrime.securesms.conversation.v2.messages
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.LinearLayout
import androidx.annotation.ColorInt
import kotlinx.android.synthetic.main.view_open_group_invitation.view.*
import network.loki.messenger.R
import org.session.libsession.messaging.utilities.UpdateMessageData
import org.session.libsession.utilities.OpenGroupUrlParser
import org.thoughtcrime.securesms.database.model.MessageRecord
class OpenGroupInvitationView : LinearLayout {
constructor(context: Context): super(context) { initialize() }
constructor(context: Context, attrs: AttributeSet?): super(context, attrs) { initialize() }
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int): super(context, attrs, defStyleAttr) { initialize() }
private fun initialize() {
LayoutInflater.from(context).inflate(R.layout.view_open_group_invitation, this)
}
fun bind(message: MessageRecord, @ColorInt textColor: Int) {
// FIXME: This is a really weird approach
val umd = UpdateMessageData.fromJSON(message.body)!!
val data = umd.kind as UpdateMessageData.Kind.OpenGroupInvitation
val iconID = if (message.isOutgoing) R.drawable.ic_globe else R.drawable.ic_plus
openGroupInvitationIconImageView.setImageResource(iconID)
openGroupTitleTextView.text = data.groupName
openGroupURLTextView.text = OpenGroupUrlParser.trimQueryParameter(data.groupUrl)
openGroupTitleTextView.setTextColor(textColor)
openGroupJoinMessageTextView.setTextColor(textColor)
openGroupURLTextView.setTextColor(textColor)
}
}

View File

@ -5,7 +5,6 @@ import android.graphics.drawable.Drawable
import android.util.AttributeSet
import android.util.TypedValue
import android.view.LayoutInflater
import android.view.ViewOutlineProvider
import android.widget.LinearLayout
import android.widget.TextView
import androidx.annotation.ColorInt
@ -15,6 +14,8 @@ import androidx.core.graphics.BlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat
import kotlinx.android.synthetic.main.view_visible_message_content.view.*
import network.loki.messenger.R
import org.session.libsession.messaging.utilities.UpdateMessageData
import org.session.libsession.messaging.utilities.UpdateMessageData.Companion.fromJSON
import org.session.libsession.utilities.ThemeUtil
import org.session.libsession.utilities.ViewUtil
import org.thoughtcrime.securesms.database.model.MessageRecord
@ -24,7 +25,6 @@ import org.thoughtcrime.securesms.loki.utilities.UiModeUtilities
import org.thoughtcrime.securesms.loki.utilities.getColorWithID
import org.thoughtcrime.securesms.loki.utilities.toPx
import org.thoughtcrime.securesms.mms.GlideRequests
import java.lang.IllegalStateException
class VisibleMessageContentView : LinearLayout {
var onContentClick: (() -> Unit)? = null
@ -77,6 +77,10 @@ class VisibleMessageContentView : LinearLayout {
mainContainer.addView(documentView)
} else if (message is MmsMessageRecord && message.slideDeck.asAttachments().isNotEmpty()) {
throw IllegalStateException("Not yet implemented; we may want to use Signal's album view here.")
} else if (message.isOpenGroupInvitation) {
val openGroupInvitationView = OpenGroupInvitationView(context)
openGroupInvitationView.bind(message, VisibleMessageContentView.getTextColor(context, message))
mainContainer.addView(openGroupInvitationView)
} else {
val bodyTextView = VisibleMessageContentView.getBodyTextView(context, message)
mainContainer.addView(bodyTextView)

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:padding="12dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<RelativeLayout
android:layout_width="44dp"
android:layout_height="44dp"
android:background="@drawable/circle_tintable"
android:backgroundTint="@color/accent">
<ImageView
android:id="@+id/openGroupInvitationIconImageView"
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_plus"
android:layout_centerInParent="true"
app:tint="@color/white" />
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:paddingEnd="2dp"
android:orientation="vertical">
<TextView
android:id="@+id/openGroupTitleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Lokinet"
android:textColor="@color/black"
android:textStyle="bold"
android:maxLines="1"
android:ellipsize="end"
android:textSize="@dimen/large_font_size" />
<TextView
android:id="@+id/openGroupJoinMessageTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/open_group_invitation_view__open_group_invitation"
android:textColor="@color/black"
android:maxLines="1"
android:ellipsize="end"
android:textSize="@dimen/small_font_size" />
<TextView
android:id="@+id/openGroupURLTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="http://117.204.71.34"
android:textColor="@color/black"
android:maxLines="1"
android:ellipsize="end"
android:textSize="@dimen/very_small_font_size" />
</LinearLayout>
</LinearLayout>