mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 19:49:33 +01:00
Implement status infos on chat view
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
parent
5d5b476001
commit
4b89ceeb54
@ -73,6 +73,7 @@ import android.view.animation.AlphaAnimation
|
||||
import android.view.animation.Animation
|
||||
import android.view.animation.LinearInterpolator
|
||||
import android.widget.AbsListView
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.ImageButton
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
@ -81,6 +82,7 @@ import android.widget.RelativeLayout
|
||||
import android.widget.RelativeLayout.BELOW
|
||||
import android.widget.RelativeLayout.LayoutParams
|
||||
import android.widget.SeekBar
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
@ -178,6 +180,7 @@ import com.nextcloud.talk.signaling.SignalingMessageReceiver
|
||||
import com.nextcloud.talk.signaling.SignalingMessageSender
|
||||
import com.nextcloud.talk.translate.ui.TranslateActivity
|
||||
import com.nextcloud.talk.ui.MicInputCloud
|
||||
import com.nextcloud.talk.ui.StatusDrawable
|
||||
import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet
|
||||
import com.nextcloud.talk.ui.dialog.AttachmentDialog
|
||||
import com.nextcloud.talk.ui.dialog.MessageActionsDialog
|
||||
@ -1568,10 +1571,24 @@ class ChatActivity :
|
||||
private fun setIcon(drawable: Drawable?) {
|
||||
supportActionBar?.let {
|
||||
val avatarSize = (it.height / TOOLBAR_AVATAR_RATIO).roundToInt()
|
||||
|
||||
val size = DisplayUtils.convertDpToPixel(STATUS_SIZE_IN_DP, context)
|
||||
if (drawable != null && avatarSize > 0) {
|
||||
val bitmap = drawable.toBitmap(avatarSize, avatarSize)
|
||||
it.setIcon(BitmapDrawable(resources, bitmap))
|
||||
val status = StatusDrawable(
|
||||
currentConversation!!.status,
|
||||
null,
|
||||
size,
|
||||
viewThemeUtils.platform.getScheme(binding.chatToolbar.context).surface,
|
||||
binding.chatToolbar.context
|
||||
)
|
||||
binding.chatToolbar.findViewById<ImageView>(R.id.chat_toolbar_avatar)
|
||||
.setImageDrawable(BitmapDrawable(resources, bitmap))
|
||||
binding.chatToolbar.findViewById<ImageView>(R.id.chat_toolbar_status)
|
||||
.setImageDrawable(status)
|
||||
binding.chatToolbar.findViewById<ImageView>(R.id.chat_toolbar_status).contentDescription =
|
||||
currentConversation?.status
|
||||
binding.chatToolbar.findViewById<FrameLayout>(R.id.chat_toolbar_avatar_container)
|
||||
.visibility = View.VISIBLE
|
||||
} else {
|
||||
Log.d(TAG, "loadAvatarForStatusBar avatarSize <= 0")
|
||||
}
|
||||
@ -1600,6 +1617,8 @@ class ChatActivity :
|
||||
.diskCachePolicy(CachePolicy.DISABLED)
|
||||
.build()
|
||||
)
|
||||
} else {
|
||||
binding.chatToolbar.findViewById<FrameLayout>(R.id.chat_toolbar_avatar_container).visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
@ -2643,17 +2662,42 @@ class ChatActivity :
|
||||
}
|
||||
|
||||
private fun setActionBarTitle() {
|
||||
supportActionBar?.title =
|
||||
val title = binding.chatToolbar.findViewById<TextView>(R.id.chat_toolbar_title)
|
||||
viewThemeUtils.platform.colorTextView(title, ColorRole.ON_SURFACE)
|
||||
|
||||
title.text =
|
||||
if (currentConversation?.displayName != null) {
|
||||
try {
|
||||
" " + EmojiCompat.get().process(currentConversation?.displayName as CharSequence).toString()
|
||||
EmojiCompat.get().process(currentConversation?.displayName as CharSequence).toString()
|
||||
} catch (e: java.lang.IllegalStateException) {
|
||||
" " + currentConversation?.displayName
|
||||
currentConversation?.displayName
|
||||
error(e)
|
||||
}
|
||||
} else {
|
||||
""
|
||||
}
|
||||
|
||||
val statusMessageView = binding.chatToolbar.findViewById<TextView>(R.id.chat_toolbar_status_message)
|
||||
if (currentConversation?.type == ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
|
||||
var statusMessage = ""
|
||||
if (currentConversation?.statusIcon != null) {
|
||||
statusMessage += currentConversation?.statusIcon
|
||||
}
|
||||
|
||||
if (currentConversation?.statusMessage != null) {
|
||||
statusMessage += currentConversation?.statusMessage
|
||||
}
|
||||
|
||||
if (statusMessage.isNotEmpty()) {
|
||||
viewThemeUtils.platform.colorTextView(statusMessageView, ColorRole.ON_SURFACE)
|
||||
statusMessageView.text = statusMessage
|
||||
statusMessageView.visibility = View.VISIBLE
|
||||
} else {
|
||||
statusMessageView.visibility = View.GONE
|
||||
}
|
||||
} else {
|
||||
statusMessageView.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
public override fun onDestroy() {
|
||||
@ -3320,6 +3364,7 @@ class ChatActivity :
|
||||
}
|
||||
|
||||
loadAvatarForStatusBar()
|
||||
setActionBarTitle()
|
||||
}
|
||||
|
||||
if (CapabilitiesUtilNew.isAbleToCall(conversationUser)) {
|
||||
@ -4145,6 +4190,7 @@ class ChatActivity :
|
||||
private const val GROUPED_MESSAGES_THRESHOLD = 4
|
||||
private const val GROUPED_MESSAGES_SAME_AUTHOR_THRESHOLD = 5
|
||||
private const val TOOLBAR_AVATAR_RATIO = 1.5
|
||||
private const val STATUS_SIZE_IN_DP = 9f
|
||||
private const val HTTP_CODE_NOT_MODIFIED = 304
|
||||
private const val HTTP_CODE_PRECONDITION_FAILED = 412
|
||||
private const val QUOTED_MESSAGE_IMAGE_MAX_HEIGHT = 96f
|
||||
|
@ -37,6 +37,7 @@
|
||||
android:id="@+id/chat_appbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/chat_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
@ -45,9 +46,66 @@
|
||||
android:theme="?attr/actionBarPopupTheme"
|
||||
app:layout_scrollFlags="scroll|enterAlways"
|
||||
app:navigationIconTint="@color/fontAppbar"
|
||||
app:popupTheme="@style/appActionBarPopupMenu"
|
||||
app:titleTextColor="@color/fontAppbar"
|
||||
tools:title="@string/nc_app_product_name" />
|
||||
app:popupTheme="@style/appActionBarPopupMenu">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/chat_toolbar_avatar_container"
|
||||
android:layout_width="46dp"
|
||||
android:layout_height="46dp"
|
||||
android:layout_marginEnd="@dimen/standard_half_margin"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/chat_toolbar_avatar"
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="42dp"
|
||||
android:layout_gravity="start|center_vertical"
|
||||
android:contentDescription="@null"
|
||||
tools:src="@drawable/ic_avatar_group" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/chat_toolbar_status"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_gravity="end|bottom"
|
||||
android:contentDescription="@null"
|
||||
tools:src="@drawable/online_status" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/chat_toolbar_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:lines="1"
|
||||
android:text="@string/nc_app_product_name"
|
||||
android:textColor="@color/fontAppbar"
|
||||
android:textSize="22sp" />
|
||||
|
||||
<androidx.emoji2.widget.EmojiTextView
|
||||
android:id="@+id/chat_toolbar_status_message"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:lines="1"
|
||||
android:text="@string/nc_app_product_name"
|
||||
android:textColor="@color/fontAppbar"
|
||||
android:textSize="12sp"
|
||||
android:visibility="gone"
|
||||
tools:text="Offline"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.appbar.MaterialToolbar>
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<RelativeLayout
|
||||
|
Loading…
Reference in New Issue
Block a user