mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 03:59:35 +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.Animation
|
||||||
import android.view.animation.LinearInterpolator
|
import android.view.animation.LinearInterpolator
|
||||||
import android.widget.AbsListView
|
import android.widget.AbsListView
|
||||||
|
import android.widget.FrameLayout
|
||||||
import android.widget.ImageButton
|
import android.widget.ImageButton
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
@ -81,6 +82,7 @@ import android.widget.RelativeLayout
|
|||||||
import android.widget.RelativeLayout.BELOW
|
import android.widget.RelativeLayout.BELOW
|
||||||
import android.widget.RelativeLayout.LayoutParams
|
import android.widget.RelativeLayout.LayoutParams
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.activity.OnBackPressedCallback
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.appcompat.app.AlertDialog
|
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.signaling.SignalingMessageSender
|
||||||
import com.nextcloud.talk.translate.ui.TranslateActivity
|
import com.nextcloud.talk.translate.ui.TranslateActivity
|
||||||
import com.nextcloud.talk.ui.MicInputCloud
|
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.bottom.sheet.ProfileBottomSheet
|
||||||
import com.nextcloud.talk.ui.dialog.AttachmentDialog
|
import com.nextcloud.talk.ui.dialog.AttachmentDialog
|
||||||
import com.nextcloud.talk.ui.dialog.MessageActionsDialog
|
import com.nextcloud.talk.ui.dialog.MessageActionsDialog
|
||||||
@ -1568,10 +1571,24 @@ class ChatActivity :
|
|||||||
private fun setIcon(drawable: Drawable?) {
|
private fun setIcon(drawable: Drawable?) {
|
||||||
supportActionBar?.let {
|
supportActionBar?.let {
|
||||||
val avatarSize = (it.height / TOOLBAR_AVATAR_RATIO).roundToInt()
|
val avatarSize = (it.height / TOOLBAR_AVATAR_RATIO).roundToInt()
|
||||||
|
val size = DisplayUtils.convertDpToPixel(STATUS_SIZE_IN_DP, context)
|
||||||
if (drawable != null && avatarSize > 0) {
|
if (drawable != null && avatarSize > 0) {
|
||||||
val bitmap = drawable.toBitmap(avatarSize, avatarSize)
|
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 {
|
} else {
|
||||||
Log.d(TAG, "loadAvatarForStatusBar avatarSize <= 0")
|
Log.d(TAG, "loadAvatarForStatusBar avatarSize <= 0")
|
||||||
}
|
}
|
||||||
@ -1600,6 +1617,8 @@ class ChatActivity :
|
|||||||
.diskCachePolicy(CachePolicy.DISABLED)
|
.diskCachePolicy(CachePolicy.DISABLED)
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
|
} else {
|
||||||
|
binding.chatToolbar.findViewById<FrameLayout>(R.id.chat_toolbar_avatar_container).visibility = View.GONE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2643,17 +2662,42 @@ class ChatActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setActionBarTitle() {
|
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) {
|
if (currentConversation?.displayName != null) {
|
||||||
try {
|
try {
|
||||||
" " + EmojiCompat.get().process(currentConversation?.displayName as CharSequence).toString()
|
EmojiCompat.get().process(currentConversation?.displayName as CharSequence).toString()
|
||||||
} catch (e: java.lang.IllegalStateException) {
|
} catch (e: java.lang.IllegalStateException) {
|
||||||
" " + currentConversation?.displayName
|
currentConversation?.displayName
|
||||||
error(e)
|
error(e)
|
||||||
}
|
}
|
||||||
} else {
|
} 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() {
|
public override fun onDestroy() {
|
||||||
@ -3320,6 +3364,7 @@ class ChatActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
loadAvatarForStatusBar()
|
loadAvatarForStatusBar()
|
||||||
|
setActionBarTitle()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CapabilitiesUtilNew.isAbleToCall(conversationUser)) {
|
if (CapabilitiesUtilNew.isAbleToCall(conversationUser)) {
|
||||||
@ -4145,6 +4190,7 @@ class ChatActivity :
|
|||||||
private const val GROUPED_MESSAGES_THRESHOLD = 4
|
private const val GROUPED_MESSAGES_THRESHOLD = 4
|
||||||
private const val GROUPED_MESSAGES_SAME_AUTHOR_THRESHOLD = 5
|
private const val GROUPED_MESSAGES_SAME_AUTHOR_THRESHOLD = 5
|
||||||
private const val TOOLBAR_AVATAR_RATIO = 1.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_NOT_MODIFIED = 304
|
||||||
private const val HTTP_CODE_PRECONDITION_FAILED = 412
|
private const val HTTP_CODE_PRECONDITION_FAILED = 412
|
||||||
private const val QUOTED_MESSAGE_IMAGE_MAX_HEIGHT = 96f
|
private const val QUOTED_MESSAGE_IMAGE_MAX_HEIGHT = 96f
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
android:id="@+id/chat_appbar"
|
android:id="@+id/chat_appbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
<com.google.android.material.appbar.MaterialToolbar
|
||||||
android:id="@+id/chat_toolbar"
|
android:id="@+id/chat_toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -45,9 +46,66 @@
|
|||||||
android:theme="?attr/actionBarPopupTheme"
|
android:theme="?attr/actionBarPopupTheme"
|
||||||
app:layout_scrollFlags="scroll|enterAlways"
|
app:layout_scrollFlags="scroll|enterAlways"
|
||||||
app:navigationIconTint="@color/fontAppbar"
|
app:navigationIconTint="@color/fontAppbar"
|
||||||
app:popupTheme="@style/appActionBarPopupMenu"
|
app:popupTheme="@style/appActionBarPopupMenu">
|
||||||
app:titleTextColor="@color/fontAppbar"
|
|
||||||
tools:title="@string/nc_app_product_name" />
|
<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>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
|
Loading…
Reference in New Issue
Block a user