Use account colour in lists of contacts/bookmarks

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/entities/ListItem.java          |  3 
src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java | 12 
2 files changed, 14 insertions(+), 1 deletion(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/ListItem.java 🔗

@@ -6,6 +6,7 @@ import java.io.Serializable;
 import java.util.List;
 import java.util.Locale;
 
+import eu.siacs.conversations.entities.Account;
 import eu.siacs.conversations.services.AvatarService;
 import eu.siacs.conversations.xmpp.Jid;
 
@@ -15,6 +16,8 @@ public interface ListItem extends Comparable<ListItem>, AvatarService.Avatarable
 
 	Jid getJid();
 
+	Account getAccount();
+
 	List<Tag> getTags(Context context);
 
 	final class Tag implements Serializable {

src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java 🔗

@@ -9,6 +9,7 @@ import android.widget.ArrayAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.core.graphics.ColorUtils;
 import androidx.databinding.DataBindingUtil;
 
 import com.wefika.flowlayout.FlowLayout;
@@ -23,6 +24,7 @@ import eu.siacs.conversations.ui.XmppActivity;
 import eu.siacs.conversations.ui.util.AvatarWorkerTask;
 import eu.siacs.conversations.ui.util.StyledAttributes;
 import eu.siacs.conversations.utils.IrregularUnicodeDetector;
+import eu.siacs.conversations.utils.UIHelper;
 import eu.siacs.conversations.xmpp.Jid;
 
 public class ListItemAdapter extends ArrayAdapter<ListItem> {
@@ -61,7 +63,15 @@ public class ListItemAdapter extends ArrayAdapter<ListItem> {
 		} else {
 			viewHolder = (ViewHolder) view.getTag();
 		}
-		view.setBackground(StyledAttributes.getDrawable(view.getContext(),R.attr.list_item_background));
+
+		if (activity.xmppConnectionService != null && activity.xmppConnectionService.getAccounts().size() > 1) {
+			view.setBackgroundColor(ColorUtils.setAlphaComponent(
+				UIHelper.getColorForName(item.getAccount().getJid().asBareJid().toString()),
+				activity.isDarkTheme() ? 20 : 10
+			));
+		} else {
+			view.setBackground(StyledAttributes.getDrawable(view.getContext(),R.attr.list_item_background));
+		}
 
 		List<ListItem.Tag> tags = item.getTags(activity);
 		if (tags.size() == 0 || !this.showDynamicTags) {