replace any use of getElement

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
Andy Scherzinger 2022-08-11 16:03:57 +02:00
parent 89a7c5e400
commit 53f0779a44
No known key found for this signature in database
GPG Key ID: 6CADC7E3523C308B
4 changed files with 34 additions and 34 deletions

View File

@ -144,9 +144,9 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
null));
if (adapter.hasFilter()) {
FlexibleUtils.highlightText(holder.binding.dialogName, conversation.getDisplayName(),
String.valueOf(adapter.getFilter(String.class)),
viewThemeUtils.getElementColor(holder.binding.dialogName.getContext()));
viewThemeUtils.highlightText(holder.binding.dialogName,
conversation.getDisplayName(),
String.valueOf(adapter.getFilter(String.class)));
} else {
holder.binding.dialogName.setText(conversation.getDisplayName());
}

View File

@ -77,9 +77,11 @@ data class MessageResultItem constructor(
}
private fun bindMessageExcerpt(holder: ViewHolder) {
val messageSpannable = SpannableString(messageEntry.messageExcerpt)
val highlightColor = viewThemeUtils.getElementColor(holder.binding.messageExcerpt.context)
val highlightedSpan = DisplayUtils.searchAndColor(messageSpannable, messageEntry.searchTerm, highlightColor)
val highlightedSpan = viewThemeUtils.createHighlightedSpan(
holder.binding.messageExcerpt.context,
SpannableString(messageEntry.messageExcerpt),
messageEntry.searchTerm
)
holder.binding.messageExcerpt.text = highlightedSpan
}

View File

@ -39,9 +39,7 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.annotation.ColorInt
import androidx.annotation.DrawableRes
import androidx.core.graphics.drawable.DrawableCompat
import androidx.core.view.ViewCompat
import androidx.recyclerview.widget.RecyclerView
import autodagger.AutoInjector
@ -66,6 +64,7 @@ import com.nextcloud.talk.models.json.userprofile.UserProfileFieldsOverall
import com.nextcloud.talk.models.json.userprofile.UserProfileOverall
import com.nextcloud.talk.remotefilebrowser.activities.RemoteFileBrowserActivity
import com.nextcloud.talk.ui.dialog.ScopeDialog
import com.nextcloud.talk.ui.theme.ViewThemeUtils
import com.nextcloud.talk.users.UserManager
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.DisplayUtils
@ -193,7 +192,7 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
override fun onAttach(view: View) {
super.onAttach(view)
adapter = UserInfoAdapter(null, viewThemeUtils.getElementColor(activity!!), this)
adapter = UserInfoAdapter(null, viewThemeUtils, this)
binding.userinfoList.adapter = adapter
binding.userinfoList.setItemViewCacheSize(DEFAULT_CACHE_SIZE)
currentUser = userManager.currentUser.blockingGet()
@ -708,18 +707,18 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
class UserInfoAdapter(
displayList: List<UserInfoDetailsItem>?,
@ColorInt tintColor: Int,
controller: ProfileController
private val viewThemeUtils: ViewThemeUtils,
private val controller: ProfileController
) : RecyclerView.Adapter<UserInfoAdapter.ViewHolder>() {
var displayList: List<UserInfoDetailsItem>?
var filteredDisplayList: MutableList<UserInfoDetailsItem> = LinkedList()
@ColorInt
protected var mTintColor: Int
private val controller: ProfileController
class ViewHolder(val binding: UserInfoDetailsTableItemBinding) : RecyclerView.ViewHolder(binding.root)
init {
this.displayList = displayList ?: LinkedList()
}
fun setData(displayList: List<UserInfoDetailsItem>) {
this.displayList = displayList
updateFilteredList()
@ -756,7 +755,7 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
initUserInfoEditText(holder, item)
holder.binding.icon.contentDescription = item.hint
DrawableCompat.setTint(holder.binding.icon.drawable, mTintColor)
viewThemeUtils.colorImageView(holder.binding.icon)
if (!TextUtils.isEmpty(item.text) || controller.edit) {
holder.binding.userInfoDetailContainer.visibility = View.VISIBLE
controller.viewThemeUtils.colorTextInputLayout(holder.binding.userInfoInputLayout)
@ -851,12 +850,6 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
displayList!![position].scope = scope
notifyDataSetChanged()
}
init {
this.displayList = displayList ?: LinkedList()
mTintColor = tintColor
this.controller = controller
}
}
enum class Field(val fieldName: String, val scopeName: String) {

View File

@ -30,6 +30,8 @@ import android.graphics.PorterDuff
import android.graphics.drawable.Drawable
import android.graphics.drawable.LayerDrawable
import android.os.Build
import android.text.Spannable
import android.text.SpannableString
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
@ -76,6 +78,7 @@ import com.nextcloud.talk.utils.ui.PlatformThemeUtil.isDarkMode
import com.vanniktech.emoji.EmojiTextView
import com.yarolegovich.mp.MaterialPreferenceCategory
import com.yarolegovich.mp.MaterialSwitchPreference
import eu.davidea.flexibleadapter.utils.FlexibleUtils
import scheme.Scheme
import javax.inject.Inject
@ -92,18 +95,6 @@ class ViewThemeUtils @Inject constructor(private val theme: ServerTheme, private
private fun getSchemeDark(): Scheme = theme.darkScheme
/**
* Color for painting elements
*/
fun getElementColor(context: Context): Int = when {
isDarkMode(context) -> theme.colorElementDark
else -> theme.colorElementBright
}
private fun withElementColor(view: View, block: (Int) -> Unit) {
block(getElementColor(view.context))
}
private fun withScheme(view: View, block: (Scheme) -> Unit) {
block(getScheme(view.context))
}
@ -796,6 +787,20 @@ class ViewThemeUtils @Inject constructor(private val theme: ServerTheme, private
}
}
fun highlightText(textView: TextView, originalText: String, constraint: String) {
withScheme(textView) { scheme ->
FlexibleUtils.highlightText(textView, originalText, constraint, scheme.primary)
}
}
fun createHighlightedSpan(context: Context, messageSpannable: SpannableString, searchTerm: String): Spannable {
var spannable: Spannable = messageSpannable
withScheme(context) { scheme ->
spannable = DisplayUtils.searchAndColor(messageSpannable, searchTerm, scheme.primary)
}
return spannable
}
companion object {
private val THEMEABLE_PLACEHOLDER_IDS = listOf(
R.drawable.ic_mimetype_package_x_generic,