From 8b52a99327d394a0731ad883c45a4eb0d78e3000 Mon Sep 17 00:00:00 2001 From: adb Date: Tue, 22 Jul 2025 12:21:59 +0000 Subject: [PATCH] tune down green checkmark (#3828) * remove green checkmarks from chatlist * remove green checkmark from contact lists * remove green checkmark from chat-protected info-message (DC_INFO_PROTECTION_ENABLED) * remove green checkmark from profile title * add green checkmark to "Introduced by..." line * when tapping chat-protected or chat-e2ee info-message, open help at #e2ee * update changelog * Update CHANGELOG.md Co-authored-by: Hocuri * add verified checkmark when verifier is unknown but contact is verified * Update CHANGELOG.md --------- Co-authored-by: Hocuri Co-authored-by: bjoern --- CHANGELOG.md | 1 + .../securesms/ConversationListItem.java | 2 +- .../securesms/ConversationTitleView.java | 20 ++----------------- .../securesms/ConversationUpdateItem.java | 9 --------- .../securesms/ProfileAdapter.java | 8 ++++++-- .../securesms/ProfileAvatarItem.java | 4 ---- .../securesms/ProfileTextItem.java | 6 ++++-- .../securesms/connect/DcHelper.java | 2 +- .../contacts/ContactSelectionListItem.java | 5 ----- .../util/SelectedContactsAdapter.java | 3 --- .../res/layout/conversation_item_update.xml | 9 --------- .../res/layout/profile_text_item_small.xml | 1 + src/main/res/values/strings.xml | 1 + 13 files changed, 17 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c70352fa..86862ebbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ * After some time, add a device message asking to donate. Can't wait? Donate today at https://delta.chat/donate * Allow to sort profiles up in the profile switcher * Add new option to create unencrypted email thread +* Green checkmarks are removed where they mostly refer to guaranteed encryption, which is the default now. They are still used for profile's "Introduced by" * Update to core 2.3.0 ## v1.58.4 diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationListItem.java b/src/main/java/org/thoughtcrime/securesms/ConversationListItem.java index 360564c9e..dc2fca52b 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationListItem.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationListItem.java @@ -164,7 +164,7 @@ public class ConversationListItem extends RelativeLayout fromView.setCompoundDrawablesWithIntrinsicBounds( thread.isMuted()? R.drawable.ic_volume_off_grey600_18dp : 0, 0, - thread.isProtected()? R.drawable.ic_verified : 0, + 0, 0); } diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationTitleView.java b/src/main/java/org/thoughtcrime/securesms/ConversationTitleView.java index 3142705c2..3a46c7c74 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationTitleView.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationTitleView.java @@ -68,17 +68,6 @@ public class ConversationTitleView extends RelativeLayout { title.setText(dcChat.getName()); String subtitleStr = null; - // set icons etc. - int imgLeft = 0; - int imgRight = 0; - - if (dcChat.isMuted()) { - imgLeft = R.drawable.ic_volume_off_white_18dp; - } - if (dcChat.isProtected()) { - imgRight = R.drawable.ic_verified; - } - boolean isOnline = false; int[] chatContacts = dcContext.getChatContacts(chatId); if (dcChat.isMailingList()) { @@ -117,7 +106,8 @@ public class ConversationTitleView extends RelativeLayout { avatar.setAvatar(glideRequests, new Recipient(getContext(), dcChat), false); avatar.setSeenRecently(isOnline); - title.setCompoundDrawablesWithIntrinsicBounds(imgLeft, 0, imgRight, 0); + int imgLeft = dcChat.isMuted()? R.drawable.ic_volume_off_white_18dp : 0; + title.setCompoundDrawablesWithIntrinsicBounds(imgLeft, 0, 0, 0); if (!TextUtils.isEmpty(subtitleStr)) { subtitle.setText(subtitleStr); subtitle.setVisibility(View.VISIBLE); @@ -135,13 +125,7 @@ public class ConversationTitleView extends RelativeLayout { avatar.setAvatar(glideRequests, new Recipient(getContext(), contact), false); avatar.setSeenRecently(contact.wasSeenRecently()); - int imgRight = 0; - if (contact.isVerified()) { - imgRight = R.drawable.ic_verified; - } - title.setText(contact.getDisplayName()); - title.setCompoundDrawablesWithIntrinsicBounds(0, 0, imgRight, 0); subtitle.setText(contact.getAddr()); subtitle.setVisibility(View.VISIBLE); } diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationUpdateItem.java b/src/main/java/org/thoughtcrime/securesms/ConversationUpdateItem.java index 858e21eb7..4e484a368 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationUpdateItem.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationUpdateItem.java @@ -26,7 +26,6 @@ public class ConversationUpdateItem extends BaseConversationItem { private DeliveryStatusView deliveryStatusView; private AppCompatImageView appIcon; - private AppCompatImageView verifiedIcon; private int textColor; public ConversationUpdateItem(Context context) { @@ -46,7 +45,6 @@ public class ConversationUpdateItem extends BaseConversationItem bodyText = findViewById(R.id.conversation_update_body); deliveryStatusView = new DeliveryStatusView(findViewById(R.id.delivery_indicator)); appIcon = findViewById(R.id.app_icon); - verifiedIcon = findViewById(R.id.verified_icon); bodyText.setOnLongClickListener(passthroughClickListener); @@ -113,13 +111,6 @@ public class ConversationUpdateItem extends BaseConversationItem appIcon.setVisibility(GONE); } - if (infoType == DcMsg.DC_INFO_PROTECTION_ENABLED) { - verifiedIcon.setVisibility(VISIBLE); - verifiedIcon.setImageResource(R.drawable.ic_verified); - } else { - verifiedIcon.setVisibility(GONE); - } - bodyText.setText(messageRecord.getDisplayBody()); bodyText.setVisibility(VISIBLE); diff --git a/src/main/java/org/thoughtcrime/securesms/ProfileAdapter.java b/src/main/java/org/thoughtcrime/securesms/ProfileAdapter.java index b8d04dc4f..fc9946eae 100644 --- a/src/main/java/org/thoughtcrime/securesms/ProfileAdapter.java +++ b/src/main/java/org/thoughtcrime/securesms/ProfileAdapter.java @@ -210,7 +210,8 @@ public class ProfileAdapter extends RecyclerView.Adapter else if(holder.itemView instanceof ProfileTextItem) { ProfileTextItem item = (ProfileTextItem) holder.itemView; item.setOnClickListener(view -> clickListener.onSettingsClicked(data.viewType)); - item.set(data.label, data.icon); + boolean tintIcon = data.viewType != ITEM_INTRODUCED_BY; + item.set(data.label, data.icon, tintIcon); if (data.viewType == ITEM_LAST_SEEN || data.viewType == ITEM_ADDRESS) { int padding = (int)((float)context.getResources().getDimensionPixelSize(R.dimen.contact_list_normal_padding) * 1.2); item.setPadding(item.getPaddingLeft(), item.getPaddingTop(), item.getPaddingRight(), padding); @@ -339,7 +340,10 @@ public class ProfileAdapter extends RecyclerView.Adapter } else { introducedBy = context.getString(R.string.verified_by, dcContext.getContact(verifierId).getDisplayName()); } - itemData.add(new ItemData(ITEM_INTRODUCED_BY, introducedBy, 0)); + itemData.add(new ItemData(ITEM_INTRODUCED_BY, introducedBy, dcContact.isVerified()? R.drawable.ic_verified : 0)); + } else if (dcContact.isVerified()) { + String introducedBy = context.getString(R.string.verified_by_unknown); + itemData.add(new ItemData(ITEM_INTRODUCED_BY, introducedBy, R.drawable.ic_verified)); } if (dcContact != null) { diff --git a/src/main/java/org/thoughtcrime/securesms/ProfileAvatarItem.java b/src/main/java/org/thoughtcrime/securesms/ProfileAvatarItem.java index b9522a98e..8a031f8b0 100644 --- a/src/main/java/org/thoughtcrime/securesms/ProfileAvatarItem.java +++ b/src/main/java/org/thoughtcrime/securesms/ProfileAvatarItem.java @@ -50,12 +50,10 @@ public class ProfileAvatarItem extends LinearLayout implements RecipientModified this.glideRequests = glideRequests; String name = ""; - boolean greenCheckmark = false; String subtitle = null; if (dcChat != null) { recipient = new Recipient(getContext(), dcChat); name = dcChat.getName(); - greenCheckmark = dcChat.isProtected(); if (dcChat.isMailingList()) { subtitle = dcChat.getMailinglistAddr(); @@ -67,7 +65,6 @@ public class ProfileAvatarItem extends LinearLayout implements RecipientModified } else if (dcContact != null) { recipient = new Recipient(getContext(), dcContact); name = dcContact.getDisplayName(); - greenCheckmark = dcContact.isVerified(); } recipient.addListener(this); @@ -75,7 +72,6 @@ public class ProfileAvatarItem extends LinearLayout implements RecipientModified avatarView.setSeenRecently(dcContact != null && dcContact.wasSeenRecently()); nameView.setText(name); - nameView.setCompoundDrawablesWithIntrinsicBounds(0,0, greenCheckmark ? R.drawable.ic_verified : 0, 0); if (subtitle != null) { subtitleView.setVisibility(View.VISIBLE); diff --git a/src/main/java/org/thoughtcrime/securesms/ProfileTextItem.java b/src/main/java/org/thoughtcrime/securesms/ProfileTextItem.java index d75082c04..d44ff4a75 100644 --- a/src/main/java/org/thoughtcrime/securesms/ProfileTextItem.java +++ b/src/main/java/org/thoughtcrime/securesms/ProfileTextItem.java @@ -34,7 +34,7 @@ public class ProfileTextItem extends LinearLayout { valueView = findViewById(R.id.value); } - public void set(String label, int icon) { + public void set(String label, int icon, boolean tint) { labelView.setText(label); if (icon != 0) { @@ -42,7 +42,9 @@ public class ProfileTextItem extends LinearLayout { if (orgDrawable != null) { Drawable drawable = orgDrawable.mutate(); // avoid global state modification and showing eg. app-icon tinted also elsewhere drawable = DrawableCompat.wrap(drawable); - DrawableCompat.setTint(drawable, getResources().getColor(R.color.delta_accent)); + if (tint) { + DrawableCompat.setTint(drawable, getResources().getColor(R.color.delta_accent)); + } labelView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); } } diff --git a/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java b/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java index bc73aff3f..4eacf46d1 100644 --- a/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java +++ b/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java @@ -462,7 +462,7 @@ public class DcHelper { public static void showProtectionEnabledDialog(Context context) { new AlertDialog.Builder(context) .setMessage(context.getString(R.string.chat_protection_enabled_explanation)) - .setNeutralButton(R.string.learn_more, (d, w) -> openHelp(context, "#e2eeguarantee")) + .setNeutralButton(R.string.learn_more, (d, w) -> openHelp(context, "#e2ee")) .setPositiveButton(R.string.ok, null) .setCancelable(true) .show(); diff --git a/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java b/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java index da5cfdd78..39f55c873 100644 --- a/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java +++ b/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java @@ -123,11 +123,6 @@ public class ContactSelectionListItem extends LinearLayout implements RecipientM else { this.numberContainer.setVisibility(View.GONE); } - if (contact != null && contact.isVerified()) { - nameView.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_verified,0); - } else { - nameView.setCompoundDrawablesWithIntrinsicBounds(0,0, 0,0); - } } public int getSpecialId() { diff --git a/src/main/java/org/thoughtcrime/securesms/util/SelectedContactsAdapter.java b/src/main/java/org/thoughtcrime/securesms/util/SelectedContactsAdapter.java index 4f356fce9..887e07c80 100644 --- a/src/main/java/org/thoughtcrime/securesms/util/SelectedContactsAdapter.java +++ b/src/main/java/org/thoughtcrime/securesms/util/SelectedContactsAdapter.java @@ -111,7 +111,6 @@ public class SelectedContactsAdapter extends BaseAdapter { final int contactId = (int)getItem(position); final boolean modifiable = contactId != DC_CONTACT_ID_ADD_MEMBER && contactId != DC_CONTACT_ID_SELF; Recipient recipient = null; - boolean verified = false; if(contactId == DcContact.DC_CONTACT_ID_ADD_MEMBER) { name.setText(context.getString(isBroadcast || isUnencrypted? R.string.add_recipients : R.string.group_add_members)); @@ -124,12 +123,10 @@ public class SelectedContactsAdapter extends BaseAdapter { name.setTypeface(null, Typeface.NORMAL); phone.setText(dcContact.getAddr()); phone.setVisibility(View.VISIBLE); - verified = dcContact.isVerified(); } avatar.clear(glideRequests); avatar.setAvatar(glideRequests, recipient, false); - name.setCompoundDrawablesWithIntrinsicBounds(0, 0, verified? R.drawable.ic_verified : 0, 0); delete.setVisibility(modifiable ? View.VISIBLE : View.GONE); delete.setColorFilter(DynamicTheme.isDarkTheme(context)? Color.WHITE : Color.BLACK); delete.setOnClickListener(view -> { diff --git a/src/main/res/layout/conversation_item_update.xml b/src/main/res/layout/conversation_item_update.xml index 47fa6db8a..f2de99413 100644 --- a/src/main/res/layout/conversation_item_update.xml +++ b/src/main/res/layout/conversation_item_update.xml @@ -13,15 +13,6 @@ android:paddingLeft="28dp" android:paddingRight="28dp"> - - diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index e6d8d3dc8..369726a87 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1048,6 +1048,7 @@ Introduced by %1$s Introduced by me + Introduced Changed setup for %1$s. To guarantee end-to-end-encryption, you can only add contacts with a green checkmark to this group.\n\nYou may meet contacts in person and scan their QR Code to introduce them.