remove lib com.amulyakhare:com.amulyakhare.textdrawable

replace with own TextDrawable class

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2024-07-24 12:11:16 +02:00
parent dfa8ad483a
commit f19e1b8a19
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
5 changed files with 80 additions and 24 deletions

View File

@ -259,7 +259,6 @@ dependencies {
implementation "com.github.nextcloud-deps.hwsecurity:hwsecurity-fido2:${fidoVersion}" implementation "com.github.nextcloud-deps.hwsecurity:hwsecurity-fido2:${fidoVersion}"
implementation 'com.github.nextcloud:PopupBubble:2.0.0' implementation 'com.github.nextcloud:PopupBubble:2.0.0'
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
implementation "com.afollestad.material-dialogs:core:${materialDialogsVersion}" implementation "com.afollestad.material-dialogs:core:${materialDialogsVersion}"
implementation "com.afollestad.material-dialogs:datetime:${materialDialogsVersion}" implementation "com.afollestad.material-dialogs:datetime:${materialDialogsVersion}"

View File

@ -16,17 +16,16 @@ import android.util.Log
import android.view.View import android.view.View
import android.widget.SeekBar import android.widget.SeekBar
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.work.WorkInfo import androidx.work.WorkInfo
import androidx.work.WorkManager import androidx.work.WorkManager
import autodagger.AutoInjector import autodagger.AutoInjector
import coil.load import coil.load
import com.amulyakhare.textdrawable.TextDrawable
import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.android.common.ui.theme.utils.ColorRole
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.databinding.ItemCustomIncomingVoiceMessageBinding import com.nextcloud.talk.databinding.ItemCustomIncomingVoiceMessageBinding
import com.nextcloud.talk.extensions.loadBotsAvatar
import com.nextcloud.talk.extensions.loadChangelogBotAvatar import com.nextcloud.talk.extensions.loadChangelogBotAvatar
import com.nextcloud.talk.extensions.loadFederatedUserAvatar import com.nextcloud.talk.extensions.loadFederatedUserAvatar
import com.nextcloud.talk.models.json.chat.ChatMessage import com.nextcloud.talk.models.json.chat.ChatMessage
@ -259,16 +258,7 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) :
} else if (message.actorType == "bots" && message.actorId == "changelog") { } else if (message.actorType == "bots" && message.actorId == "changelog") {
binding.messageUserAvatar.loadChangelogBotAvatar() binding.messageUserAvatar.loadChangelogBotAvatar()
} else if (message.actorType == "bots") { } else if (message.actorType == "bots") {
val drawable = TextDrawable.builder() binding.messageUserAvatar.loadBotsAvatar()
.beginConfig()
.bold()
.endConfig()
.buildRound(
">",
ResourcesCompat.getColor(context!!.resources, R.color.black, null)
)
binding.messageUserAvatar.visibility = View.VISIBLE
binding.messageUserAvatar.setImageDrawable(drawable)
} else if (message.actorType == "federated_users") { } else if (message.actorType == "federated_users") {
binding.messageUserAvatar.loadFederatedUserAvatar(message) binding.messageUserAvatar.loadFederatedUserAvatar(message)
} }

View File

@ -10,13 +10,13 @@
package com.nextcloud.talk.extensions package com.nextcloud.talk.extensions
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.graphics.drawable.LayerDrawable import android.graphics.drawable.LayerDrawable
import android.os.Build import android.os.Build
import android.util.Log import android.util.Log
import android.widget.ImageView import android.widget.ImageView
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import coil.annotation.ExperimentalCoilApi import coil.annotation.ExperimentalCoilApi
import coil.imageLoader import coil.imageLoader
import coil.load import coil.load
@ -26,7 +26,6 @@ import coil.request.SuccessResult
import coil.result import coil.result
import coil.transform.CircleCropTransformation import coil.transform.CircleCropTransformation
import coil.transform.RoundedCornersTransformation import coil.transform.RoundedCornersTransformation
import com.amulyakhare.textdrawable.TextDrawable
import com.nextcloud.talk.R import com.nextcloud.talk.R
import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.models.domain.ConversationModel import com.nextcloud.talk.models.domain.ConversationModel
@ -36,6 +35,7 @@ import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.ui.theme.ViewThemeUtils import com.nextcloud.talk.ui.theme.ViewThemeUtils
import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.DisplayUtils
import com.nextcloud.talk.utils.TextDrawable
private const val ROUNDING_PIXEL = 16f private const val ROUNDING_PIXEL = 16f
private const val TAG = "ImageViewExtensions" private const val TAG = "ImageViewExtensions"
@ -315,15 +315,20 @@ fun ImageView.loadChangelogBotAvatar(): io.reactivex.disposables.Disposable {
} }
fun ImageView.loadBotsAvatar(): io.reactivex.disposables.Disposable { fun ImageView.loadBotsAvatar(): io.reactivex.disposables.Disposable {
return loadUserAvatar( val data: Any = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
TextDrawable.builder() val layers = arrayOfNulls<Drawable>(2)
.beginConfig() layers[0] = ColorDrawable(context.getColor(R.color.black))
.bold() layers[1] = TextDrawable(context, ">")
.endConfig() val layerDrawable = LayerDrawable(layers)
.buildRound( layerDrawable
">", } else {
ResourcesCompat.getColor(context.resources, R.color.black, null) R.mipmap.ic_launcher
) }
return DisposableWrapper(
load(data) {
transformations(CircleCropTransformation())
}
) )
} }

View File

@ -0,0 +1,61 @@
/*
* Nextcloud Talk - Android Client
*
* SPDX-FileCopyrightText: 2024 Marcel Hibbe <dev@mhibbe.de>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package com.nextcloud.talk.utils
import android.content.Context
import android.graphics.Canvas
import android.graphics.ColorFilter
import android.graphics.Paint
import android.graphics.PixelFormat
import android.graphics.Rect
import android.graphics.drawable.Drawable
import com.nextcloud.talk.R
class TextDrawable(val context: Context, private var text: String) : Drawable() {
private val paint = Paint()
private val bounds: Rect
init {
paint.color = context.getColor(R.color.textColorOnPrimaryBackground)
paint.isAntiAlias = true
paint.textSize = TEXT_SIZE
bounds = Rect()
}
override fun draw(canvas: Canvas) {
if (text.isNotEmpty()) {
paint.getTextBounds(
text,
0,
text.length,
bounds
)
val x: Int = (getBounds().width() - bounds.width()) / 2
val y: Int = ((getBounds().height() + bounds.height()) / 2) + Y_OFFSET
canvas.drawText(text, x.toFloat(), y.toFloat(), paint)
}
}
override fun setColorFilter(colorFilter: ColorFilter?) {
paint.setColorFilter(colorFilter)
}
override fun setAlpha(alpha: Int) {
paint.alpha = alpha
}
@Deprecated("Deprecated in Java", ReplaceWith("PixelFormat.OPAQUE", "android.graphics.PixelFormat"))
override fun getOpacity(): Int {
return PixelFormat.OPAQUE
}
companion object {
private const val Y_OFFSET = 5
private const val TEXT_SIZE = 50f
}
}

View File

@ -49,6 +49,7 @@
<color name="chat_separator">#E8E8E8</color> <color name="chat_separator">#E8E8E8</color>
<color name="grey_600">#757575</color> <color name="grey_600">#757575</color>
<color name="nc_grey">#D5D5D5</color> <color name="nc_grey">#D5D5D5</color>
<color name="black">#000000</color>
<color name="call_incomingCallTextView">#E9FFFFFF</color> <color name="call_incomingCallTextView">#E9FFFFFF</color>
<color name="grey950">#111111</color> <color name="grey950">#111111</color>
<color name="textColorMaxContrast">#767676</color> <color name="textColorMaxContrast">#767676</color>