package eu.faircode.email; /* This file is part of FairEmail. FairEmail is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. FairEmail is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with FairEmail. If not, see . Copyright 2018-2022 by Marcel Bokhorst (M66B) */ import android.content.Context; import android.content.SharedPreferences; import android.graphics.Color; import android.text.TextUtils; import androidx.preference.PreferenceManager; import androidx.room.Ignore; import java.util.ArrayList; import java.util.List; import java.util.Objects; import javax.mail.Address; public class TupleMessageEx extends EntityMessage { public Integer accountProtocol; public String accountName; public String accountCategory; public Integer accountColor; public boolean accountNotify; public boolean accountLeaveDeleted; public boolean accountAutoSeen; public String folderName; public Integer folderColor; public String folderDisplay; public String folderType; public boolean folderUnified; public boolean folderReadOnly; public String identityName; public String identityEmail; public Integer identityColor; public Boolean identitySynchronize; public Address[] senders; public Address[] recipients; public int count; public int unseen; public int unflagged; public int drafts; public int visible; public int visible_unseen; public int totalAttachments; public Long totalSize; public Integer ui_priority; public Integer ui_importance; @Ignore boolean duplicate; @Ignore public Integer[] label_colors; @Ignore public Integer[] keyword_colors; @Ignore public String[] keyword_titles; String getFolderName(Context context) { return (folderDisplay == null ? EntityFolder.localizeName(context, folderName) : folderDisplay); } void resolveLabelColors(Context context) { List color = new ArrayList<>(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); if (this.labels != null) for (int i = 0; i < this.labels.length; i++) { String key = "label.color." + this.labels[i]; if (prefs.contains(key)) color.add(prefs.getInt(key, Color.GRAY)); else color.add(null); } this.label_colors = color.toArray(new Integer[0]); } void resolveKeywordColors(Context context) { List color = new ArrayList<>(); List titles = new ArrayList<>(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); if (this.keywords != null) for (int i = 0; i < this.keywords.length; i++) { String keyword = this.keywords[i]; String keyColor1 = "kwcolor." + keyword; String keyColor2 = "keyword." + keyword; // legacy if (prefs.contains(keyColor1)) color.add(prefs.getInt(keyColor1, Color.GRAY)); else if (prefs.contains(keyColor2)) color.add(prefs.getInt(keyColor2, Color.GRAY)); else color.add(null); String keyTitle = "kwtitle." + keyword; String def = TupleKeyword.getDefaultKeywordAlias(context, keyword); titles.add(prefs.getString(keyTitle, def)); } this.keyword_colors = color.toArray(new Integer[0]); this.keyword_titles = titles.toArray(new String[0]); } String getRemark() { StringBuilder sb = new StringBuilder(); sb.append(MessageHelper.formatAddresses(from)); if (!TextUtils.isEmpty(subject)) { if (sb.length() > 0) sb.append('\n'); sb.append(subject); } return sb.toString(); } @Override public boolean equals(Object obj) { if (obj instanceof TupleMessageEx) { TupleMessageEx other = (TupleMessageEx) obj; return (super.equals(obj) && this.accountProtocol.equals(other.accountProtocol) && Objects.equals(this.accountName, other.accountName) && Objects.equals(this.accountCategory, other.accountCategory) && Objects.equals(this.accountColor, other.accountColor) && this.accountNotify == other.accountNotify && this.accountLeaveDeleted == other.accountLeaveDeleted && this.accountAutoSeen == other.accountAutoSeen && this.folderName.equals(other.folderName) && Objects.equals(this.folderDisplay, other.folderDisplay) && this.folderType.equals(other.folderType) && this.folderUnified == other.folderUnified && this.folderReadOnly == other.folderReadOnly && Objects.equals(this.identityName, other.identityName) && Objects.equals(this.identityEmail, other.identityEmail) && Objects.equals(this.identityColor, other.identityColor) && Objects.equals(this.identitySynchronize, other.identitySynchronize) && MessageHelper.equal(this.senders, other.senders) && MessageHelper.equal(this.recipients, other.recipients) && this.count == other.count && this.unseen == other.unseen && this.unflagged == other.unflagged && this.drafts == other.drafts && this.visible == other.visible && this.visible_unseen == other.visible_unseen && this.totalAttachments == other.totalAttachments && Objects.equals(this.totalSize, other.totalSize) && Objects.equals(this.ui_priority, other.ui_priority) && Objects.equals(this.ui_importance, other.ui_importance) && this.duplicate == other.duplicate); } return false; } }