Pārlūkot izejas kodu

Color search highlights

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Álvaro Brey 2 gadi atpakaļ
vecāks
revīzija
4af491c7df

+ 8 - 11
app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java

@@ -46,6 +46,7 @@ import com.nextcloud.talk.models.json.chat.ChatMessage;
 import com.nextcloud.talk.models.json.conversations.Conversation;
 import com.nextcloud.talk.models.json.status.Status;
 import com.nextcloud.talk.ui.StatusDrawable;
+import com.nextcloud.talk.ui.theme.ViewThemeUtils;
 import com.nextcloud.talk.utils.ApiUtils;
 import com.nextcloud.talk.utils.DisplayUtils;
 import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew;
@@ -76,22 +77,22 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
     private final Context context;
     private GenericTextHeaderItem header;
     private final Status status;
+    private final ViewThemeUtils viewThemeUtils;
 
 
-    public ConversationItem(Conversation conversation, User user, Context activityContext, Status status) {
+    public ConversationItem(Conversation conversation, User user, Context activityContext, Status status, final ViewThemeUtils viewThemeUtils) {
         this.conversation = conversation;
         this.user = user;
         this.context = activityContext;
         this.status = status;
+        this.viewThemeUtils = viewThemeUtils;
     }
 
     public ConversationItem(Conversation conversation, User user,
-                            Context activityContext, GenericTextHeaderItem genericTextHeaderItem, Status status) {
-        this.conversation = conversation;
-        this.user = user;
-        this.context = activityContext;
+                            Context activityContext, GenericTextHeaderItem genericTextHeaderItem, Status status,
+                            final ViewThemeUtils viewThemeUtils) {
+        this(conversation, user, activityContext, status, viewThemeUtils);
         this.header = genericTextHeaderItem;
-        this.status = status;
     }
 
     @Override
@@ -146,11 +147,7 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
         if (adapter.hasFilter()) {
             FlexibleUtils.highlightText(holder.binding.dialogName, conversation.getDisplayName(),
                                         String.valueOf(adapter.getFilter(String.class)),
-                                        NextcloudTalkApplication
-                                            .Companion
-                                            .getSharedApplication()
-                                            .getResources()
-                                            .getColor(R.color.colorPrimary));
+                                        viewThemeUtils.getElementColor(holder.binding.dialogName.getContext()));
         } else {
             holder.binding.dialogName.setText(conversation.getDisplayName());
         }

+ 1 - 2
app/src/main/java/com/nextcloud/talk/adapters/items/MessageResultItem.kt

@@ -24,7 +24,6 @@ package com.nextcloud.talk.adapters.items
 import android.content.Context
 import android.text.SpannableString
 import android.view.View
-import androidx.core.content.ContextCompat
 import androidx.recyclerview.widget.RecyclerView
 import com.nextcloud.talk.R
 import com.nextcloud.talk.data.user.model.User
@@ -79,7 +78,7 @@ data class MessageResultItem constructor(
 
     private fun bindMessageExcerpt(holder: ViewHolder) {
         val messageSpannable = SpannableString(messageEntry.messageExcerpt)
-        val highlightColor = ContextCompat.getColor(context, R.color.colorPrimary)
+        val highlightColor = viewThemeUtils.getElementColor(holder.binding.messageExcerpt.context)
         val highlightedSpan = DisplayUtils.searchAndColor(messageSpannable, messageEntry.searchTerm, highlightColor)
         holder.binding.messageExcerpt.text = highlightedSpan
     }

+ 6 - 3
app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java

@@ -631,7 +631,8 @@ public class ConversationsListController extends BaseController implements Flexi
                             conversation,
                             currentUser,
                             getActivity(),
-                            userStatuses.get(conversation.getName()));
+                            userStatuses.get(conversation.getName()),
+                            viewThemeUtils);
                         conversationItems.add(conversationItem);
 
                         ConversationItem conversationItemWithHeader = new ConversationItem(
@@ -639,7 +640,8 @@ public class ConversationsListController extends BaseController implements Flexi
                             currentUser,
                             getActivity(),
                             callHeaderItems.get(headerTitle),
-                            userStatuses.get(conversation.getName()));
+                            userStatuses.get(conversation.getName()),
+                            viewThemeUtils);
                         conversationItemsWithHeader.add(conversationItemWithHeader);
                     }
                 }
@@ -712,7 +714,8 @@ public class ConversationsListController extends BaseController implements Flexi
                             currentUser,
                             getActivity(),
                             callHeaderItems.get(headerTitle),
-                            userStatuses.get(conversation.getName()));
+                            userStatuses.get(conversation.getName()),
+                            viewThemeUtils);
 
                         openConversationItems.add(conversationItem);
                     }

+ 4 - 1
app/src/main/java/com/nextcloud/talk/ui/theme/ViewThemeUtils.kt

@@ -39,7 +39,10 @@ class ViewThemeUtils @Inject constructor(val theme: ServerTheme) {
         else -> false
     }
 
-    private fun getElementColor(context: Context): Int = when {
+    /**
+     * Color for painting elements
+     */
+    fun getElementColor(context: Context): Int = when {
         isDarkMode(context) -> theme.colorElementDark
         else -> theme.colorElementBright
     }