From 36a480fec8ca23dbbbd490b76d485616f3591e28 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Thu, 8 Aug 2024 23:13:00 +0200 Subject: [PATCH] tint destructive buttons in red --- .../securesms/BaseConversationListFragment.java | 4 +++- .../securesms/ContactSelectionListFragment.java | 5 +++-- .../securesms/ConversationActivity.java | 13 +++++++------ .../securesms/MediaPreviewActivity.java | 3 ++- .../securesms/MessageSelectorFragment.java | 6 ++++-- .../org/thoughtcrime/securesms/ProfileActivity.java | 5 +++-- .../securesms/ProfileSettingsFragment.java | 5 +++-- .../accounts/AccountSelectionListFragment.java | 7 ++++--- .../java/org/thoughtcrime/securesms/util/Util.java | 13 ++++++++++++- 9 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java b/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java index 049c20bdc..71247d3c0 100644 --- a/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java @@ -35,6 +35,7 @@ import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.connect.DirectShareUtil; import org.thoughtcrime.securesms.util.RelayUtil; import org.thoughtcrime.securesms.util.SendRelayedMessageUtil; +import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask; import org.thoughtcrime.securesms.util.views.ProgressDialog; @@ -302,7 +303,8 @@ public abstract class BaseConversationListFragment extends Fragment implements A }); alert.setNegativeButton(android.R.string.cancel, null); - alert.show(); + AlertDialog dialog = alert.show(); + Util.redPositiveButton(dialog); } private void handleSelectAllThreads() { diff --git a/src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java b/src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java index 4dd91ebf3..ae8294442 100644 --- a/src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java @@ -211,9 +211,9 @@ public class ContactSelectionListFragment extends Fragment } private void handleDeleteSelected() { - new AlertDialog.Builder(getActivity()) + AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setMessage(R.string.ask_delete_contacts) - .setPositiveButton(R.string.delete, (dialogInterface, i) -> { + .setPositiveButton(R.string.delete, (d, i) -> { ContactSelectionListAdapter adapter = getContactSelectionListAdapter(); final SparseIntArray actionModeSelection = adapter.getActionModeSelection().clone(); new Thread(() -> { @@ -234,6 +234,7 @@ public class ContactSelectionListFragment extends Fragment }) .setNegativeButton(R.string.cancel, null) .show(); + Util.redPositiveButton(dialog); } private ContactSelectionListAdapter getContactSelectionListAdapter() { diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java index 578334907..a4cc20c5e 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java @@ -609,14 +609,15 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity } private void handleLeaveGroup() { - new AlertDialog.Builder(this) + AlertDialog dialog = new AlertDialog.Builder(this) .setMessage(getString(R.string.ask_leave_group)) - .setPositiveButton(R.string.yes, (dialog, which) -> { + .setPositiveButton(R.string.menu_leave_group, (d, which) -> { dcContext.removeContactFromChat(chatId, DcContact.DC_CONTACT_ID_SELF); Toast.makeText(this, getString(R.string.done), Toast.LENGTH_SHORT).show(); }) - .setNegativeButton(R.string.no, null) + .setNegativeButton(R.string.cancel, null) .show(); + Util.redPositiveButton(dialog); } private void handleArchiveChat() { @@ -632,16 +633,16 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity } private void handleDeleteChat() { - - new AlertDialog.Builder(this) + AlertDialog dialog = new AlertDialog.Builder(this) .setMessage(getResources().getString(R.string.ask_delete_named_chat, dcChat.getName())) - .setPositiveButton(R.string.delete, (dialog, which) -> { + .setPositiveButton(R.string.delete, (d, which) -> { dcContext.deleteChat(chatId); DirectShareUtil.clearShortcut(this, chatId); finish(); }) .setNegativeButton(R.string.cancel, null) .show(); + Util.redPositiveButton(dialog); } private void handleAddAttachment() { diff --git a/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java b/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java index 3b68a8799..acebb4995 100644 --- a/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java @@ -365,7 +365,8 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity finish(); }); builder.setNegativeButton(android.R.string.cancel, null); - builder.show(); + AlertDialog dialog = builder.show(); + Util.redPositiveButton(dialog); } @Override diff --git a/src/main/java/org/thoughtcrime/securesms/MessageSelectorFragment.java b/src/main/java/org/thoughtcrime/securesms/MessageSelectorFragment.java index c7a95a1cf..adfc1c326 100644 --- a/src/main/java/org/thoughtcrime/securesms/MessageSelectorFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/MessageSelectorFragment.java @@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.util.SaveAttachmentTask; import org.thoughtcrime.securesms.util.StorageUtil; +import org.thoughtcrime.securesms.util.Util; import java.util.Set; @@ -66,15 +67,16 @@ public abstract class MessageSelectorFragment dcChat.isDeviceTalk()? R.plurals.ask_delete_messages_simple : R.plurals.ask_delete_messages, messageIds.length, messageIds.length); - new AlertDialog.Builder(getActivity()) + AlertDialog dialog = new AlertDialog.Builder(getActivity()) .setMessage(text) .setCancelable(true) - .setPositiveButton(R.string.delete, (dialog, which) -> { + .setPositiveButton(R.string.delete, (d, which) -> { dcContext.deleteMsgs(messageIds); if (actionMode != null) actionMode.finish(); }) .setNegativeButton(android.R.string.cancel, null) .show(); + Util.redPositiveButton(dialog); } protected void handleSaveAttachment(final Set messageRecords) { diff --git a/src/main/java/org/thoughtcrime/securesms/ProfileActivity.java b/src/main/java/org/thoughtcrime/securesms/ProfileActivity.java index 4d2163c08..fb6c97b46 100644 --- a/src/main/java/org/thoughtcrime/securesms/ProfileActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ProfileActivity.java @@ -595,13 +595,14 @@ public class ProfileActivity extends PassphraseRequiredActionBarActivity }).show(); } else { - new AlertDialog.Builder(this) + AlertDialog dialog = new AlertDialog.Builder(this) .setMessage(R.string.ask_block_contact) .setCancelable(true) .setNegativeButton(android.R.string.cancel, null) - .setPositiveButton(R.string.menu_block_contact, (dialog, which) -> { + .setPositiveButton(R.string.menu_block_contact, (d, which) -> { dcContext.blockContact(contactId, 1); }).show(); + Util.redPositiveButton(dialog); } } diff --git a/src/main/java/org/thoughtcrime/securesms/ProfileSettingsFragment.java b/src/main/java/org/thoughtcrime/securesms/ProfileSettingsFragment.java index 58eca33f9..8d9857438 100644 --- a/src/main/java/org/thoughtcrime/securesms/ProfileSettingsFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/ProfileSettingsFragment.java @@ -299,8 +299,8 @@ public class ProfileSettingsFragment extends Fragment readableToDelList.append(dcContext.getContact(toDelId).getDisplayName()); } DcChat dcChat = dcContext.getChat(chatId); - new AlertDialog.Builder(getContext()) - .setPositiveButton(android.R.string.ok, (dialog, which) -> { + AlertDialog dialog = new AlertDialog.Builder(getContext()) + .setPositiveButton(R.string.remove_desktop, (d, which) -> { for (Integer toDelId : toDelIds) { dcContext.removeContactFromChat(chatId, toDelId); } @@ -309,6 +309,7 @@ public class ProfileSettingsFragment extends Fragment .setNegativeButton(android.R.string.cancel, null) .setMessage(getString(dcChat.isBroadcast()? R.string.ask_remove_from_broadcast : R.string.ask_remove_members, readableToDelList)) .show(); + Util.redPositiveButton(dialog); return true; } return false; diff --git a/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java index bcab7b3ab..e903d7c2f 100644 --- a/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java @@ -117,16 +117,17 @@ public class AccountSelectionListFragment extends DialogFragment AccountSelectionListFragment.this.dismiss(); if (activity == null) return; DcAccounts accounts = DcHelper.getAccounts(activity); - new AlertDialog.Builder(activity) + AlertDialog dialog = new AlertDialog.Builder(activity) .setTitle(accounts.getAccount(accountId).getNameNAddr()) .setMessage(R.string.forget_login_confirmation_desktop) - .setNegativeButton(R.string.cancel, (dialog, which) -> AccountManager.getInstance().showSwitchAccountMenu(activity)) - .setPositiveButton(R.string.ok, (dialog2, which2) -> { + .setNegativeButton(R.string.cancel, (d, which) -> AccountManager.getInstance().showSwitchAccountMenu(activity)) + .setPositiveButton(R.string.delete, (d2, which2) -> { DcHelper.getNotificationCenter(activity).removeAllNotifiations(accountId); accounts.removeAccount(accountId); AccountManager.getInstance().showSwitchAccountMenu(activity); }) .show(); + Util.redPositiveButton(dialog); } private void onToggleMute(int accountId) { diff --git a/src/main/java/org/thoughtcrime/securesms/util/Util.java b/src/main/java/org/thoughtcrime/securesms/util/Util.java index ee30b997e..f13153ebe 100644 --- a/src/main/java/org/thoughtcrime/securesms/util/Util.java +++ b/src/main/java/org/thoughtcrime/securesms/util/Util.java @@ -41,6 +41,7 @@ import android.view.accessibility.AccessibilityManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.ComposeText; @@ -92,13 +93,23 @@ public class Util { return spanned; } + private static final int redDestructiveColor = 0xffff0c16; // typical "destructive red" for light/dark mode + public static void redMenuItem(Menu menu, int id) { MenuItem item = menu.findItem(id); SpannableString s = new SpannableString(item.getTitle()); - s.setSpan(new ForegroundColorSpan(0xffff0c16 /*typical "destructive red" for light/dark mode*/), 0, s.length(), 0); + s.setSpan(new ForegroundColorSpan(redDestructiveColor), 0, s.length(), 0); item.setTitle(s); } + public static void redPositiveButton(AlertDialog dialog) { + try { + dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(redDestructiveColor); + } catch (Exception e) { + e.printStackTrace(); + } + } + public static @NonNull int[] appendInt(@Nullable int[] cur, int val) { if (cur == null) { return new int[] { val };