From 3e41dd2e49945dffbe2903fa0069f7a4ffb175f9 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 5 Feb 2021 11:15:02 +0100 Subject: [PATCH] Replaced resource ID switches by ifs --- .../java/eu/faircode/email/ActivityBase.java | 12 +- .../java/eu/faircode/email/ActivityEML.java | 10 +- .../eu/faircode/email/ActivitySignature.java | 36 +- .../eu/faircode/email/AdapterAccount.java | 33 +- .../java/eu/faircode/email/AdapterAnswer.java | 26 +- .../eu/faircode/email/AdapterCertificate.java | 11 +- .../eu/faircode/email/AdapterContact.java | 35 +- .../java/eu/faircode/email/AdapterFolder.java | 223 +++---- .../eu/faircode/email/AdapterIdentity.java | 33 +- .../eu/faircode/email/AdapterMessage.java | 559 ++++++++--------- .../eu/faircode/email/AdapterOperation.java | 10 +- .../java/eu/faircode/email/AdapterRule.java | 40 +- .../java/eu/faircode/email/FragmentAbout.java | 17 +- .../eu/faircode/email/FragmentAccount.java | 10 +- .../eu/faircode/email/FragmentAccounts.java | 46 +- .../eu/faircode/email/FragmentAnswer.java | 33 +- .../eu/faircode/email/FragmentCompose.java | 231 ++++--- .../eu/faircode/email/FragmentContacts.java | 17 +- .../faircode/email/FragmentDialogSearch.java | 24 +- .../faircode/email/FragmentDialogTheme.java | 82 ++- .../eu/faircode/email/FragmentFolder.java | 10 +- .../eu/faircode/email/FragmentFolders.java | 59 +- .../java/eu/faircode/email/FragmentGmail.java | 10 +- .../eu/faircode/email/FragmentIdentity.java | 10 +- .../java/eu/faircode/email/FragmentLogs.java | 21 +- .../eu/faircode/email/FragmentMessages.java | 500 +++++++-------- .../java/eu/faircode/email/FragmentOAuth.java | 10 +- .../eu/faircode/email/FragmentOperations.java | 18 +- .../email/FragmentOptionsBehavior.java | 10 +- .../email/FragmentOptionsConnection.java | 10 +- .../email/FragmentOptionsDisplay.java | 10 +- .../email/FragmentOptionsEncryption.java | 10 +- .../faircode/email/FragmentOptionsMisc.java | 10 +- .../email/FragmentOptionsNotifications.java | 10 +- .../email/FragmentOptionsPrivacy.java | 10 +- .../faircode/email/FragmentOptionsSend.java | 10 +- .../email/FragmentOptionsSynchronize.java | 10 +- .../java/eu/faircode/email/FragmentOrder.java | 10 +- .../java/eu/faircode/email/FragmentPop.java | 10 +- .../java/eu/faircode/email/FragmentPro.java | 10 +- .../eu/faircode/email/FragmentQuickSetup.java | 10 +- .../java/eu/faircode/email/FragmentRule.java | 34 +- .../java/eu/faircode/email/FragmentRules.java | 29 +- .../java/eu/faircode/email/FragmentSetup.java | 52 +- .../java/eu/faircode/email/StyleHelper.java | 579 +++++++++--------- 45 files changed, 1340 insertions(+), 1610 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index 5dcf10feb9..6e8a523b32 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -673,14 +673,12 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == android.R.id.home) { + if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + onBackPressed(); + return true; } + return super.onOptionsItemSelected(item); } protected boolean backHandled() { diff --git a/app/src/main/java/eu/faircode/email/ActivityEML.java b/app/src/main/java/eu/faircode/email/ActivityEML.java index d6c683f2af..b845b3033b 100644 --- a/app/src/main/java/eu/faircode/email/ActivityEML.java +++ b/app/src/main/java/eu/faircode/email/ActivityEML.java @@ -355,13 +355,11 @@ public class ActivityEML extends ActivityBase { @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_save: - onMenuSave(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_save) { + onMenuSave(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuSave() { diff --git a/app/src/main/java/eu/faircode/email/ActivitySignature.java b/app/src/main/java/eu/faircode/email/ActivitySignature.java index 9235e9a5aa..dd0a4d1b19 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySignature.java +++ b/app/src/main/java/eu/faircode/email/ActivitySignature.java @@ -116,19 +116,18 @@ public class ActivitySignature extends ActivityBase { bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case R.id.action_insert_image: - insertImage(); - return true; - case R.id.action_delete: - delete(); - return true; - case R.id.action_save: - save(); - return true; - default: - return false; + int itemId = item.getItemId(); + if (itemId == R.id.action_insert_image) { + insertImage(); + return true; + } else if (itemId == R.id.action_delete) { + delete(); + return true; + } else if (itemId == R.id.action_save) { + save(); + return true; } + return false; } }); @@ -160,19 +159,16 @@ public class ActivitySignature extends ActivityBase { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_signature, menu); return true; - } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_edit_html: - item.setChecked(!item.isChecked()); - html(item.isChecked()); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_edit_html) { + item.setChecked(!item.isChecked()); + html(item.isChecked()); + return true; } + return super.onOptionsItemSelected(item); } @Override diff --git a/app/src/main/java/eu/faircode/email/AdapterAccount.java b/app/src/main/java/eu/faircode/email/AdapterAccount.java index 73d170ff12..23427469c1 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAccount.java +++ b/app/src/main/java/eu/faircode/email/AdapterAccount.java @@ -328,26 +328,21 @@ public class AdapterAccount extends RecyclerView.Adapter= Build.VERSION_CODES.O) - onActionCreateChannel(); - return true; - - case R.string.title_edit_channel: - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) - onActionEditChannel(); - return true; - - case R.string.title_delete_channel: - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) - onActionDeleteChannel(); - return true; - - case R.string.title_create_sub_folder: - onActionCreateFolder(); - return true; - - case R.string.title_pin: - onActionPinFolder(); - return true; - - case R.string.title_delete: - onActionDeleteFolder(); + } else if (itemId == R.string.title_synchronize_batch_disable) { + onActionEnable(false); return true; + } + return false; + } - default: - return false; + int itemId = item.getItemId(); + if (itemId == R.string.title_synchronize_now) { + onActionSync(false); + return true; + } else if (itemId == R.string.title_synchronize_more) { + onActionSyncMore(); + return true; + } else if (itemId == R.string.title_unified_folder || itemId == R.string.title_navigation_folder || itemId == R.string.title_notify_folder || itemId == R.string.title_synchronize_enabled) { + onActionProperty(item.getItemId(), !item.isChecked()); + return true; + } else if (itemId == R.string.title_subscribe) { + onActionSubscribe(); + return true; + } else if (itemId == R.string.title_delete_local) { + OnActionDeleteLocal(false); + return true; + } else if (itemId == R.string.title_delete_browsed) { + OnActionDeleteLocal(true); + return true; + } else if (itemId == R.string.title_empty_trash) { + onActionEmpty(EntityFolder.TRASH); + return true; + } else if (itemId == R.string.title_empty_spam) { + onActionEmpty(EntityFolder.JUNK); + return true; + } else if (itemId == R.string.title_edit_rules) { + onActionEditRules(); + return true; + } else if (itemId == R.string.title_edit_properties) { + onActionEditProperties(); + return true; + } else if (itemId == R.string.title_create_channel) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) + onActionCreateChannel(); + return true; + } else if (itemId == R.string.title_edit_channel) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) + onActionEditChannel(); + return true; + } else if (itemId == R.string.title_delete_channel) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) + onActionDeleteChannel(); + return true; + } else if (itemId == R.string.title_create_sub_folder) { + onActionCreateFolder(); + return true; + } else if (itemId == R.string.title_pin) { + onActionPinFolder(); + return true; + } else if (itemId == R.string.title_delete) { + onActionDeleteFolder(); + return true; } + return false; } private void onActionSync(boolean childs) { @@ -754,22 +730,17 @@ public class AdapterFolder extends RecyclerView.Adapter { popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.string.title_rule_enabled: - onActionEnabled(!item.isChecked()); - return true; - - case R.string.title_rule_execute: - onActionExecute(); - return true; - - case R.string.title_reset: - onActionReset(); - return true; - - case R.string.title_move_to_folder: - onActionMove(); - return true; - - case R.string.title_copy: - onActionCopy(); - return true; - - default: - return false; + int itemId = item.getItemId(); + if (itemId == R.string.title_rule_enabled) { + onActionEnabled(!item.isChecked()); + return true; + } else if (itemId == R.string.title_rule_execute) { + onActionExecute(); + return true; + } else if (itemId == R.string.title_reset) { + onActionReset(); + return true; + } else if (itemId == R.string.title_move_to_folder) { + onActionMove(); + return true; + } else if (itemId == R.string.title_copy) { + onActionCopy(); + return true; } + return false; } private void onActionEnabled(boolean enabled) { diff --git a/app/src/main/java/eu/faircode/email/FragmentAbout.java b/app/src/main/java/eu/faircode/email/FragmentAbout.java index 5e146f17e0..9a98a2662a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAbout.java +++ b/app/src/main/java/eu/faircode/email/FragmentAbout.java @@ -95,16 +95,15 @@ public class FragmentAbout extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_changelog: - onMenuChangelog(); - return true; - case R.id.menu_attribution: - onMenuAttribution(); - return true; - default: - return super.onOptionsItemSelected(item); + int itemId = item.getItemId(); + if (itemId == R.id.menu_changelog) { + onMenuChangelog(); + return true; + } else if (itemId == R.id.menu_attribution) { + onMenuAttribution(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuChangelog() { diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index dcae408d3c..38f5c2aa67 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -1563,13 +1563,11 @@ public class FragmentAccount extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_delete: - onMenuDelete(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_delete) { + onMenuDelete(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDelete() { diff --git a/app/src/main/java/eu/faircode/email/FragmentAccounts.java b/app/src/main/java/eu/faircode/email/FragmentAccounts.java index 80746437d2..20c373a883 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccounts.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccounts.java @@ -151,16 +151,15 @@ public class FragmentAccounts extends FragmentBase { popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.string.title_imap: - onCreate(true); - return true; - case R.string.title_pop3: - onCreate(false); - return true; - default: - return false; + int itemId = item.getItemId(); + if (itemId == R.string.title_imap) { + onCreate(true); + return true; + } else if (itemId == R.string.title_pop3) { + onCreate(false); + return true; } + return false; } private void onCreate(boolean imap) { @@ -306,22 +305,21 @@ public class FragmentAccounts extends FragmentBase { @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_search: - onMenuSearch(); - return true; - case R.id.menu_unified: - onMenuUnified(); - return true; - case R.id.menu_theme: - onMenuTheme(); - return true; - case R.id.menu_force_sync: - onMenuForceSync(); - return true; - default: - return super.onOptionsItemSelected(item); + int itemId = item.getItemId(); + if (itemId == R.id.menu_search) { + onMenuSearch(); + return true; + } else if (itemId == R.id.menu_unified) { + onMenuUnified(); + return true; + } else if (itemId == R.id.menu_theme) { + onMenuTheme(); + return true; + } else if (itemId == R.id.menu_force_sync) { + onMenuForceSync(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuSearch() { diff --git a/app/src/main/java/eu/faircode/email/FragmentAnswer.java b/app/src/main/java/eu/faircode/email/FragmentAnswer.java index 35c68c308d..fcce7da608 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAnswer.java +++ b/app/src/main/java/eu/faircode/email/FragmentAnswer.java @@ -133,19 +133,18 @@ public class FragmentAnswer extends FragmentBase { bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { - switch (menuItem.getItemId()) { - case R.id.action_insert_image: - onInsertImage(); - return true; - case R.id.action_delete: - onActionDelete(); - return true; - case R.id.action_save: - onActionSave(); - return true; - default: - return false; + int itemId = menuItem.getItemId(); + if (itemId == R.id.action_insert_image) { + onInsertImage(); + return true; + } else if (itemId == R.id.action_delete) { + onActionDelete(); + return true; + } else if (itemId == R.id.action_save) { + onActionSave(); + return true; } + return false; } }); @@ -223,13 +222,11 @@ public class FragmentAnswer extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_help: - onMenuHelp(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_help) { + onMenuHelp(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuHelp() { diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 93a31ad466..1aa29976ca 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -443,18 +443,15 @@ public class FragmentCompose extends FragmentBase { @Override public void onClick(View view) { int request; - switch (view.getId()) { - case R.id.ivToAdd: - request = REQUEST_CONTACT_TO; - break; - case R.id.ivCcAdd: - request = REQUEST_CONTACT_CC; - break; - case R.id.ivBccAdd: - request = REQUEST_CONTACT_BCC; - break; - default: - return; + int id = view.getId(); + if (id == R.id.ivToAdd) { + request = REQUEST_CONTACT_TO; + } else if (id == R.id.ivCcAdd) { + request = REQUEST_CONTACT_CC; + } else if (id == R.id.ivBccAdd) { + request = REQUEST_CONTACT_BCC; + } else { + return; } Intent pick = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Email.CONTENT_URI); @@ -703,25 +700,23 @@ public class FragmentCompose extends FragmentBase { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { int action = item.getItemId(); - switch (action) { - case R.id.menu_record_audio: - onActionRecordAudio(); - return true; - case R.id.menu_take_photo: - onActionImage(true); - return true; - case R.id.menu_image: - onActionImage(false); - return true; - case R.id.menu_attachment: - onActionAttachment(); - return true; - case R.id.menu_link: - onActionLink(); - return true; - default: - return onActionStyle(action, media_bar.findViewById(action)); + if (action == R.id.menu_record_audio) { + onActionRecordAudio(); + return true; + } else if (action == R.id.menu_take_photo) { + onActionImage(true); + return true; + } else if (action == R.id.menu_image) { + onActionImage(false); + return true; + } else if (action == R.id.menu_attachment) { + onActionAttachment(); + return true; + } else if (action == R.id.menu_link) { + onActionLink(); + return true; } + return onActionStyle(action, media_bar.findViewById(action)); } }); @@ -731,19 +726,15 @@ public class FragmentCompose extends FragmentBase { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { final int action = item.getItemId(); - switch (action) { - case R.id.action_delete: - onActionDiscard(); - break; - case R.id.action_send: - onAction(R.id.action_check, "check"); - break; - case R.id.action_save: - saved = true; - onAction(action, "save"); - break; - default: - onAction(action, "navigation"); + if (action == R.id.action_delete) { + onActionDiscard(); + } else if (action == R.id.action_send) { + onAction(R.id.action_check, "check"); + } else if (action == R.id.action_save) { + saved = true; + onAction(action, "save"); + } else { + onAction(action, "navigation"); } return true; } @@ -1043,22 +1034,18 @@ public class FragmentCompose extends FragmentBase { popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.string.title_edit_plain_text: - convertRef(true); - return true; - - case R.string.title_edit_formatted_text: - convertRef(false); - return true; - - case R.string.title_delete: - deleteRef(); - return true; - - default: - return false; + int itemId = item.getItemId(); + if (itemId == R.string.title_edit_plain_text) { + convertRef(true); + return true; + } else if (itemId == R.string.title_edit_formatted_text) { + convertRef(false); + return true; + } else if (itemId == R.string.title_delete) { + deleteRef(); + return true; } + return false; } private void convertRef(boolean plain) { @@ -1388,43 +1375,42 @@ public class FragmentCompose extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_encrypt: - onMenuEncrypt(); - return true; - case R.id.menu_zoom: - onMenuZoom(); - return true; - case R.id.menu_save_drafts: - onMenuSaveDrafts(); - return true; - case R.id.menu_send_dialog: - onMenuSendDialog(); - return true; - case R.id.menu_image_dialog: - onMenuImageDialog(); - return true; - case R.id.menu_media: - onMenuMediaBar(); - return true; - case R.id.menu_compact: - onMenuCompact(); - return true; - case R.id.menu_contact_group: - onMenuContactGroup(); - return true; - case R.id.menu_answer: - onMenuAnswer(); - return true; - case R.id.menu_clear: - StyleHelper.apply(R.id.menu_clear, getViewLifecycleOwner(), null, etBody); - return true; - case R.id.menu_legend: - onMenuLegend(); - return true; - default: - return super.onOptionsItemSelected(item); + int itemId = item.getItemId(); + if (itemId == R.id.menu_encrypt) { + onMenuEncrypt(); + return true; + } else if (itemId == R.id.menu_zoom) { + onMenuZoom(); + return true; + } else if (itemId == R.id.menu_save_drafts) { + onMenuSaveDrafts(); + return true; + } else if (itemId == R.id.menu_send_dialog) { + onMenuSendDialog(); + return true; + } else if (itemId == R.id.menu_image_dialog) { + onMenuImageDialog(); + return true; + } else if (itemId == R.id.menu_media) { + onMenuMediaBar(); + return true; + } else if (itemId == R.id.menu_compact) { + onMenuCompact(); + return true; + } else if (itemId == R.id.menu_contact_group) { + onMenuContactGroup(); + return true; + } else if (itemId == R.id.menu_answer) { + onMenuAnswer(); + return true; + } else if (itemId == R.id.menu_clear) { + StyleHelper.apply(R.id.menu_clear, getViewLifecycleOwner(), null, etBody); + return true; + } else if (itemId == R.id.menu_legend) { + onMenuLegend(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuAddresses() { @@ -2967,23 +2953,20 @@ public class FragmentCompose extends FragmentBase { popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.string.title_send_dialog: - FragmentDialogSend fragment = new FragmentDialogSend(); - fragment.setArguments(args); - fragment.setTargetFragment(FragmentCompose.this, REQUEST_SEND); - fragment.show(getParentFragmentManager(), "compose:send"); - return true; - - case R.string.title_advanced_manage_certificates: - startActivity( - new Intent(getContext(), ActivitySetup.class) - .putExtra("tab", "encryption")); - return true; - - default: - return false; + int itemId = item.getItemId(); + if (itemId == R.string.title_send_dialog) { + FragmentDialogSend fragment = new FragmentDialogSend(); + fragment.setArguments(args); + fragment.setTargetFragment(FragmentCompose.this, REQUEST_SEND); + fragment.show(getParentFragmentManager(), "compose:send"); + return true; + } else if (itemId == R.string.title_advanced_manage_certificates) { + startActivity( + new Intent(getContext(), ActivitySetup.class) + .putExtra("tab", "encryption")); + return true; } + return false; } }); @@ -5055,22 +5038,20 @@ public class FragmentCompose extends FragmentBase { } private String getActionName(int id) { - switch (id) { - case R.id.action_delete: - return "delete"; - case R.id.action_undo: - return "undo"; - case R.id.action_redo: - return "redo"; - case R.id.action_save: - return "save"; - case R.id.action_check: - return "check"; - case R.id.action_send: - return "send"; - default: - return Integer.toString(id); + if (id == R.id.action_delete) { + return "delete"; + } else if (id == R.id.action_undo) { + return "undo"; + } else if (id == R.id.action_redo) { + return "redo"; + } else if (id == R.id.action_save) { + return "save"; + } else if (id == R.id.action_check) { + return "check"; + } else if (id == R.id.action_send) { + return "send"; } + return Integer.toString(id); } private void checkAddress(InternetAddress[] addresses, Context context) throws AddressException { diff --git a/app/src/main/java/eu/faircode/email/FragmentContacts.java b/app/src/main/java/eu/faircode/email/FragmentContacts.java index d80cb6f37d..4d9cd0b823 100644 --- a/app/src/main/java/eu/faircode/email/FragmentContacts.java +++ b/app/src/main/java/eu/faircode/email/FragmentContacts.java @@ -148,16 +148,15 @@ public class FragmentContacts extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_help: - onMenuHelp(); - return true; - case R.id.menu_delete: - new FragmentDelete().show(getParentFragmentManager(), "contacts:delete"); - return true; - default: - return super.onOptionsItemSelected(item); + int itemId = item.getItemId(); + if (itemId == R.id.menu_help) { + onMenuHelp(); + return true; + } else if (itemId == R.id.menu_delete) { + new FragmentDelete().show(getParentFragmentManager(), "contacts:delete"); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuHelp() { diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogSearch.java b/app/src/main/java/eu/faircode/email/FragmentDialogSearch.java index f851c02cd0..fd59a93413 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogSearch.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogSearch.java @@ -373,20 +373,16 @@ public class FragmentDialogSearch extends FragmentDialogBase { dialog.dismiss(); BoundaryCallbackMessages.SearchCriteria criteria = new BoundaryCallbackMessages.SearchCriteria(); - switch (v.getId()) { - case R.id.ibAttachment: - criteria.with_attachments = true; - break; - case R.id.ibInvite: - criteria.with_attachments = true; - criteria.with_types = new String[]{"text/calendar"}; - break; - case R.id.ibUnseen: - criteria.with_unseen = true; - break; - case R.id.ibFlagged: - criteria.with_flagged = true; - break; + int id = v.getId(); + if (id == R.id.ibAttachment) { + criteria.with_attachments = true; + } else if (id == R.id.ibInvite) { + criteria.with_attachments = true; + criteria.with_types = new String[]{"text/calendar"}; + } else if (id == R.id.ibUnseen) { + criteria.with_unseen = true; + } else if (id == R.id.ibFlagged) { + criteria.with_flagged = true; } FragmentMessages.search( diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java b/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java index 068ff0535b..0c2f07b2da 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java @@ -188,50 +188,44 @@ public class FragmentDialogTheme extends FragmentDialogBase { editor.remove("highlight_color"); - switch (rgTheme.getCheckedRadioButtonId()) { - case R.id.rbThemeBlueOrange: - if (system) - editor.putString("theme", - (reverse ? "orange_blue_system" : "blue_orange_system") + - (black ? "_black" : "")).apply(); - else - editor.putString("theme", - (reverse ? "orange_blue" : "blue_orange") + - (black ? "_black" : dark ? "_dark" : "_light")).apply(); - break; - case R.id.rbThemeRedGreen: - if (system) - editor.putString("theme", - (reverse ? "green_red_system" : "red_green_system") + - (black ? "_black" : "")).apply(); - else - editor.putString("theme", - (reverse ? "green_red" : "red_green") + - (black ? "_black" : dark ? "_dark" : "_light")).apply(); - break; - case R.id.rbThemeYellowPurple: - if (system) - editor.putString("theme", - (reverse ? "purple_yellow_system" : "yellow_purple_system") + - (black ? "_black" : "")).apply(); - else - editor.putString("theme", - (reverse ? "purple_yellow" : "yellow_purple") + - (black ? "_black" : dark ? "_dark" : "_light")).apply(); - break; - case R.id.rbThemeGrey: - if (system) - editor.putString("theme", "grey_system").apply(); - else - editor.putString("theme", - "grey" + (dark ? "_dark" : "_light")).apply(); - break; - case R.id.rbThemeBlack: - editor.putString("theme", "black").apply(); - break; - case R.id.rbThemeBlackAndWhite: - editor.putString("theme", "black_and_white").apply(); - break; + int checkedRadioButtonId = rgTheme.getCheckedRadioButtonId(); + if (checkedRadioButtonId == R.id.rbThemeBlueOrange) { + if (system) + editor.putString("theme", + (reverse ? "orange_blue_system" : "blue_orange_system") + + (black ? "_black" : "")).apply(); + else + editor.putString("theme", + (reverse ? "orange_blue" : "blue_orange") + + (black ? "_black" : dark ? "_dark" : "_light")).apply(); + } else if (checkedRadioButtonId == R.id.rbThemeRedGreen) { + if (system) + editor.putString("theme", + (reverse ? "green_red_system" : "red_green_system") + + (black ? "_black" : "")).apply(); + else + editor.putString("theme", + (reverse ? "green_red" : "red_green") + + (black ? "_black" : dark ? "_dark" : "_light")).apply(); + } else if (checkedRadioButtonId == R.id.rbThemeYellowPurple) { + if (system) + editor.putString("theme", + (reverse ? "purple_yellow_system" : "yellow_purple_system") + + (black ? "_black" : "")).apply(); + else + editor.putString("theme", + (reverse ? "purple_yellow" : "yellow_purple") + + (black ? "_black" : dark ? "_dark" : "_light")).apply(); + } else if (checkedRadioButtonId == R.id.rbThemeGrey) { + if (system) + editor.putString("theme", "grey_system").apply(); + else + editor.putString("theme", + "grey" + (dark ? "_dark" : "_light")).apply(); + } else if (checkedRadioButtonId == R.id.rbThemeBlack) { + editor.putString("theme", "black").apply(); + } else if (checkedRadioButtonId == R.id.rbThemeBlackAndWhite) { + editor.putString("theme", "black_and_white").apply(); } editor.apply(); diff --git a/app/src/main/java/eu/faircode/email/FragmentFolder.java b/app/src/main/java/eu/faircode/email/FragmentFolder.java index 888d58a2ba..639cab1d88 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolder.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolder.java @@ -409,13 +409,11 @@ public class FragmentFolder extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_delete: - onMenuDelete(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_delete) { + onMenuDelete(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDelete() { diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 5a328fd647..ecc63fb4ed 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -468,37 +468,36 @@ public class FragmentFolders extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_search: - onMenuSearch(); - return true; - case R.id.menu_unified: - onMenuUnified(); - return true; - case R.id.menu_theme: - onMenuTheme(); - return true; - case R.id.menu_compact: - onMenuCompact(); - return true; - case R.id.menu_show_hidden: - onMenuShowHidden(); - return true; - case R.id.menu_show_flagged: - onMenuShowFlagged(); - return true; - case R.id.menu_subscribed_only: - onMenuSubscribedOnly(); - return true; - case R.id.menu_apply_all: - onMenuApplyToAll(); - return true; - case R.id.menu_force_sync: - onMenuForceSync(); - return true; - default: - return super.onOptionsItemSelected(item); + int itemId = item.getItemId(); + if (itemId == R.id.menu_search) { + onMenuSearch(); + return true; + } else if (itemId == R.id.menu_unified) { + onMenuUnified(); + return true; + } else if (itemId == R.id.menu_theme) { + onMenuTheme(); + return true; + } else if (itemId == R.id.menu_compact) { + onMenuCompact(); + return true; + } else if (itemId == R.id.menu_show_hidden) { + onMenuShowHidden(); + return true; + } else if (itemId == R.id.menu_show_flagged) { + onMenuShowFlagged(); + return true; + } else if (itemId == R.id.menu_subscribed_only) { + onMenuSubscribedOnly(); + return true; + } else if (itemId == R.id.menu_apply_all) { + onMenuApplyToAll(); + return true; + } else if (itemId == R.id.menu_force_sync) { + onMenuForceSync(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuSearch() { diff --git a/app/src/main/java/eu/faircode/email/FragmentGmail.java b/app/src/main/java/eu/faircode/email/FragmentGmail.java index fcdd9a8aa5..251865fab8 100644 --- a/app/src/main/java/eu/faircode/email/FragmentGmail.java +++ b/app/src/main/java/eu/faircode/email/FragmentGmail.java @@ -182,13 +182,11 @@ public class FragmentGmail extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_help: - onMenuHelp(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_help) { + onMenuHelp(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuHelp() { diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index 2e61feeb11..e24da52d3e 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -1230,13 +1230,11 @@ public class FragmentIdentity extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_delete: - onMenuDelete(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_delete) { + onMenuDelete(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDelete() { diff --git a/app/src/main/java/eu/faircode/email/FragmentLogs.java b/app/src/main/java/eu/faircode/email/FragmentLogs.java index b25239ce26..6f3d182fa2 100644 --- a/app/src/main/java/eu/faircode/email/FragmentLogs.java +++ b/app/src/main/java/eu/faircode/email/FragmentLogs.java @@ -112,19 +112,16 @@ public class FragmentLogs extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_auto_scroll: - autoScroll = !item.isChecked(); - item.setChecked(autoScroll); - return true; - - case R.id.menu_clear: - onMenuClear(); - return true; - - default: - return super.onOptionsItemSelected(item); + int itemId = item.getItemId(); + if (itemId == R.id.menu_auto_scroll) { + autoScroll = !item.isChecked(); + item.setChecked(autoScroll); + return true; + } else if (itemId == R.id.menu_clear) { + onMenuClear(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuClear() { diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 6dae7bdcc9..92737eff0c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -797,33 +797,27 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. @Override public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { ActionData data = (ActionData) bottom_navigation.getTag(); - switch (menuItem.getItemId()) { - case R.id.action_delete: - if (data.delete) - onActionDelete(); - else - onActionMove(EntityFolder.TRASH); - return true; - - case R.id.action_snooze: - onActionSnooze(); - return true; - - case R.id.action_archive: - onActionMove(EntityFolder.ARCHIVE); - return true; - - case R.id.action_prev: - navigate(prev, true); - return true; - - case R.id.action_next: - navigate(next, false); - return true; - - default: - return false; + int itemId = menuItem.getItemId(); + if (itemId == R.id.action_delete) { + if (data.delete) + onActionDelete(); + else + onActionMove(EntityFolder.TRASH); + return true; + } else if (itemId == R.id.action_snooze) { + onActionSnooze(); + return true; + } else if (itemId == R.id.action_archive) { + onActionMove(EntityFolder.ARCHIVE); + return true; + } else if (itemId == R.id.action_prev) { + navigate(prev, true); + return true; + } else if (itemId == R.id.action_next) { + navigate(next, false); + return true; } + return false; } private void onActionMove(String folderType) { @@ -2176,41 +2170,39 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem target) { - switch (target.getItemId()) { - case R.string.title_seen: - onActionSeenSelection(true, message.id); - return true; - case R.string.title_unseen: - onActionSeenSelection(false, message.id); - return true; - case R.string.title_flag: - onActionFlagSelection(true, null, message.id); - return true; - case R.string.title_unflag: - onActionFlagSelection(false, null, message.id); - return true; - case R.string.title_snooze: - onMenuSnooze(); - return true; - case R.string.title_hide: - case R.string.title_unhide: - onActionHide(message); - return true; - case R.string.title_flag_color: - onMenuColor(); - return true; - case R.string.title_move: - onSwipeMove(message); - return true; - case R.string.title_report_spam: - onSwipeJunk(message); - return true; - case R.string.title_delete_permanently: - onSwipeDelete(message); - return true; - default: - return false; + int itemId = target.getItemId(); + if (itemId == R.string.title_seen) { + onActionSeenSelection(true, message.id); + return true; + } else if (itemId == R.string.title_unseen) { + onActionSeenSelection(false, message.id); + return true; + } else if (itemId == R.string.title_flag) { + onActionFlagSelection(true, null, message.id); + return true; + } else if (itemId == R.string.title_unflag) { + onActionFlagSelection(false, null, message.id); + return true; + } else if (itemId == R.string.title_snooze) { + onMenuSnooze(); + return true; + } else if (itemId == R.string.title_hide || itemId == R.string.title_unhide) { + onActionHide(message); + return true; + } else if (itemId == R.string.title_flag_color) { + onMenuColor(); + return true; + } else if (itemId == R.string.title_move) { + onSwipeMove(message); + return true; + } else if (itemId == R.string.title_report_spam) { + onSwipeJunk(message); + return true; + } else if (itemId == R.string.title_delete_permanently) { + onSwipeDelete(message); + return true; } + return false; } private void onMenuSnooze() { @@ -2467,37 +2459,36 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. return true; } - switch (target.getItemId()) { - case R.id.menu_reply_to_sender: - onMenuReply(message, "reply", selected); - return true; - case R.id.menu_reply_to_all: - onMenuReply(message, "reply_all", selected); - return true; - case R.id.menu_reply_list: - onMenuReply(message, "list", selected); - return true; - case R.id.menu_reply_receipt: - onMenuDsn(message, EntityMessage.DSN_RECEIPT); - return true; - case R.id.menu_reply_hard_bounce: - onMenuDsn(message, EntityMessage.DSN_HARD_BOUNCE); - return true; - case R.id.menu_forward: - onMenuReply(message, "forward"); - return true; - case R.id.menu_editasnew: - onMenuReply(message, "editasnew"); - return true; - case R.id.menu_new_message: - onMenuNew(message, to); - return true; - case R.id.menu_reply_answer: - onMenuAnswer(message); - return true; - default: - return false; + int itemId = target.getItemId(); + if (itemId == R.id.menu_reply_to_sender) { + onMenuReply(message, "reply", selected); + return true; + } else if (itemId == R.id.menu_reply_to_all) { + onMenuReply(message, "reply_all", selected); + return true; + } else if (itemId == R.id.menu_reply_list) { + onMenuReply(message, "list", selected); + return true; + } else if (itemId == R.id.menu_reply_receipt) { + onMenuDsn(message, EntityMessage.DSN_RECEIPT); + return true; + } else if (itemId == R.id.menu_reply_hard_bounce) { + onMenuDsn(message, EntityMessage.DSN_HARD_BOUNCE); + return true; + } else if (itemId == R.id.menu_forward) { + onMenuReply(message, "forward"); + return true; + } else if (itemId == R.id.menu_editasnew) { + onMenuReply(message, "editasnew"); + return true; + } else if (itemId == R.id.menu_new_message) { + onMenuNew(message, to); + return true; + } else if (itemId == R.id.menu_reply_answer) { + onMenuAnswer(message); + return true; } + return false; } }); popupMenu.show(); @@ -2864,65 +2855,64 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem target) { - switch (target.getItemId()) { - case R.string.title_seen: - onActionSeenSelection(true, null); - return true; - case R.string.title_unseen: - onActionSeenSelection(false, null); - return true; - case R.string.title_snooze: - onActionSnoozeSelection(); - return true; - case R.string.title_hide: - onHideSelection(true); - return true; - case R.string.title_unhide: - onHideSelection(false); - return true; - case R.string.title_flag: - onActionFlagSelection(true, null, null); - return true; - case R.string.title_unflag: - onActionFlagSelection(false, null, null); - return true; - case R.string.title_flag_color: - onActionFlagColorSelection(); - return true; - case R.string.title_importance_low: - onActionSetImportanceSelection(EntityMessage.PRIORITIY_LOW); - return true; - case R.string.title_importance_normal: - onActionSetImportanceSelection(EntityMessage.PRIORITIY_NORMAL); - return true; - case R.string.title_importance_high: - onActionSetImportanceSelection(EntityMessage.PRIORITIY_HIGH); - return true; - case R.string.title_folder_inbox: - onActionMoveSelection(EntityFolder.INBOX); - return true; - case R.string.title_archive: - onActionMoveSelection(EntityFolder.ARCHIVE); - return true; - case R.string.title_delete: - onActionDeleteSelection(); - return true; - case R.string.title_trash: - onActionMoveSelection(EntityFolder.TRASH); - return true; - case R.string.title_spam: - onActionJunkSelection(); - return true; - case R.string.title_move_to_account: - long account = target.getIntent().getLongExtra("account", -1); - onActionMoveSelectionAccount(account, false, result.folders); - return true; - case R.string.title_copy_to: - onActionMoveSelectionAccount(result.copyto.id, true, result.folders); - return true; - default: - return false; + int itemId = target.getItemId(); + if (itemId == R.string.title_seen) { + onActionSeenSelection(true, null); + return true; + } else if (itemId == R.string.title_unseen) { + onActionSeenSelection(false, null); + return true; + } else if (itemId == R.string.title_snooze) { + onActionSnoozeSelection(); + return true; + } else if (itemId == R.string.title_hide) { + onHideSelection(true); + return true; + } else if (itemId == R.string.title_unhide) { + onHideSelection(false); + return true; + } else if (itemId == R.string.title_flag) { + onActionFlagSelection(true, null, null); + return true; + } else if (itemId == R.string.title_unflag) { + onActionFlagSelection(false, null, null); + return true; + } else if (itemId == R.string.title_flag_color) { + onActionFlagColorSelection(); + return true; + } else if (itemId == R.string.title_importance_low) { + onActionSetImportanceSelection(EntityMessage.PRIORITIY_LOW); + return true; + } else if (itemId == R.string.title_importance_normal) { + onActionSetImportanceSelection(EntityMessage.PRIORITIY_NORMAL); + return true; + } else if (itemId == R.string.title_importance_high) { + onActionSetImportanceSelection(EntityMessage.PRIORITIY_HIGH); + return true; + } else if (itemId == R.string.title_folder_inbox) { + onActionMoveSelection(EntityFolder.INBOX); + return true; + } else if (itemId == R.string.title_archive) { + onActionMoveSelection(EntityFolder.ARCHIVE); + return true; + } else if (itemId == R.string.title_delete) { + onActionDeleteSelection(); + return true; + } else if (itemId == R.string.title_trash) { + onActionMoveSelection(EntityFolder.TRASH); + return true; + } else if (itemId == R.string.title_spam) { + onActionJunkSelection(); + return true; + } else if (itemId == R.string.title_move_to_account) { + long account = target.getIntent().getLongExtra("account", -1); + onActionMoveSelectionAccount(account, false, result.folders); + return true; + } else if (itemId == R.string.title_copy_to) { + onActionMoveSelectionAccount(result.copyto.id, true, result.folders); + return true; } + return false; } }); @@ -4128,129 +4118,99 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_search: - onMenuSearch(); - return true; - - case R.id.menu_folders: - // Obsolete - onMenuFolders(primary); - return true; - - case R.id.menu_empty_trash: - onMenuEmpty(EntityFolder.TRASH); - return true; - - case R.id.menu_empty_spam: - onMenuEmpty(EntityFolder.JUNK); - return true; - - case R.id.menu_sort_on_time: - item.setChecked(true); - onMenuSort("time"); - return true; - - case R.id.menu_sort_on_unread: - item.setChecked(true); - onMenuSort("unread"); - return true; - - case R.id.menu_sort_on_starred: - item.setChecked(true); - onMenuSort("starred"); - return true; - - case R.id.menu_sort_on_priority: - item.setChecked(true); - onMenuSort("priority"); - return true; - - case R.id.menu_sort_on_sender: - item.setChecked(true); - onMenuSort("sender"); - return true; - - case R.id.menu_sort_on_subject: - item.setChecked(true); - onMenuSort("subject"); - return true; - - case R.id.menu_sort_on_size: - item.setChecked(true); - onMenuSort("size"); - return true; - - case R.id.menu_sort_on_attachments: - item.setChecked(true); - onMenuSort("attachments"); - return true; - - case R.id.menu_sort_on_snoozed: - item.setChecked(true); - onMenuSort("snoozed"); - return true; - - case R.id.menu_ascending: - onMenuAscending(!item.isChecked()); - return true; - - case R.id.menu_filter_seen: - onMenuFilter("filter_seen", !item.isChecked()); - return true; - - case R.id.menu_filter_unflagged: - onMenuFilter("filter_unflagged", !item.isChecked()); - return true; - - case R.id.menu_filter_unknown: - onMenuFilter("filter_unknown", !item.isChecked()); - return true; - - case R.id.menu_filter_snoozed: - onMenuFilter("filter_snoozed", !item.isChecked()); - return true; - - case R.id.menu_filter_duplicates: - onMenuFilterDuplicates(!item.isChecked()); - return true; - - case R.id.menu_zoom: - onMenuZoom(); - return true; - - case R.id.menu_compact: - onMenuCompact(); - return true; - - case R.id.menu_theme: - onMenuTheme(); - return true; - - case R.id.menu_select_language: - onMenuSelectLanguage(); - return true; - - case R.id.menu_select_all: - case R.id.menu_select_found: - onMenuSelectAll(); - return true; - - case R.id.menu_mark_all_read: - onMenuMarkAllRead(); - return true; - - case R.id.menu_force_sync: - onMenuForceSync(); - return true; - - case R.id.menu_force_send: - onSwipeRefresh(); - return true; - - default: - return super.onOptionsItemSelected(item); + int itemId = item.getItemId(); + if (itemId == R.id.menu_search) { + onMenuSearch(); + return true; + } else if (itemId == R.id.menu_folders) {// Obsolete + onMenuFolders(primary); + return true; + } else if (itemId == R.id.menu_empty_trash) { + onMenuEmpty(EntityFolder.TRASH); + return true; + } else if (itemId == R.id.menu_empty_spam) { + onMenuEmpty(EntityFolder.JUNK); + return true; + } else if (itemId == R.id.menu_sort_on_time) { + item.setChecked(true); + onMenuSort("time"); + return true; + } else if (itemId == R.id.menu_sort_on_unread) { + item.setChecked(true); + onMenuSort("unread"); + return true; + } else if (itemId == R.id.menu_sort_on_starred) { + item.setChecked(true); + onMenuSort("starred"); + return true; + } else if (itemId == R.id.menu_sort_on_priority) { + item.setChecked(true); + onMenuSort("priority"); + return true; + } else if (itemId == R.id.menu_sort_on_sender) { + item.setChecked(true); + onMenuSort("sender"); + return true; + } else if (itemId == R.id.menu_sort_on_subject) { + item.setChecked(true); + onMenuSort("subject"); + return true; + } else if (itemId == R.id.menu_sort_on_size) { + item.setChecked(true); + onMenuSort("size"); + return true; + } else if (itemId == R.id.menu_sort_on_attachments) { + item.setChecked(true); + onMenuSort("attachments"); + return true; + } else if (itemId == R.id.menu_sort_on_snoozed) { + item.setChecked(true); + onMenuSort("snoozed"); + return true; + } else if (itemId == R.id.menu_ascending) { + onMenuAscending(!item.isChecked()); + return true; + } else if (itemId == R.id.menu_filter_seen) { + onMenuFilter("filter_seen", !item.isChecked()); + return true; + } else if (itemId == R.id.menu_filter_unflagged) { + onMenuFilter("filter_unflagged", !item.isChecked()); + return true; + } else if (itemId == R.id.menu_filter_unknown) { + onMenuFilter("filter_unknown", !item.isChecked()); + return true; + } else if (itemId == R.id.menu_filter_snoozed) { + onMenuFilter("filter_snoozed", !item.isChecked()); + return true; + } else if (itemId == R.id.menu_filter_duplicates) { + onMenuFilterDuplicates(!item.isChecked()); + return true; + } else if (itemId == R.id.menu_zoom) { + onMenuZoom(); + return true; + } else if (itemId == R.id.menu_compact) { + onMenuCompact(); + return true; + } else if (itemId == R.id.menu_theme) { + onMenuTheme(); + return true; + } else if (itemId == R.id.menu_select_language) { + onMenuSelectLanguage(); + return true; + } else if (itemId == R.id.menu_select_all || itemId == R.id.menu_select_found) { + onMenuSelectAll(); + return true; + } else if (itemId == R.id.menu_mark_all_read) { + onMenuMarkAllRead(); + return true; + } else if (itemId == R.id.menu_force_sync) { + onMenuForceSync(); + return true; + } else if (itemId == R.id.menu_force_send) { + onSwipeRefresh(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuSearch() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOAuth.java b/app/src/main/java/eu/faircode/email/FragmentOAuth.java index e199c2e3a3..0f2cfdd009 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOAuth.java +++ b/app/src/main/java/eu/faircode/email/FragmentOAuth.java @@ -179,13 +179,11 @@ public class FragmentOAuth extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_help: - onMenuHelp(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_help) { + onMenuHelp(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuHelp() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOperations.java b/app/src/main/java/eu/faircode/email/FragmentOperations.java index 924090f330..1e0828950a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOperations.java +++ b/app/src/main/java/eu/faircode/email/FragmentOperations.java @@ -111,17 +111,15 @@ public class FragmentOperations extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_help: - onMenuHelp(); - return true; - case R.id.menu_delete: - new FragmentDialogDelete().show(getParentFragmentManager(), "operations:delete"); - return true; - - default: - return super.onOptionsItemSelected(item); + int itemId = item.getItemId(); + if (itemId == R.id.menu_help) { + onMenuHelp(); + return true; + } else if (itemId == R.id.menu_delete) { + new FragmentDialogDelete().show(getParentFragmentManager(), "operations:delete"); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuHelp() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java index 05a54e42d4..3207ff78ac 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java @@ -412,13 +412,11 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_default: - onMenuDefault(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_default) { + onMenuDefault(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDefault() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java b/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java index 4459131739..bbce9bd4e0 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsConnection.java @@ -275,13 +275,11 @@ public class FragmentOptionsConnection extends FragmentBase implements SharedPre @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_default: - onMenuDefault(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_default) { + onMenuDefault(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDefault() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java index 9035db2d67..f2af83d8c0 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java @@ -848,13 +848,11 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_default: - onMenuDefault(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_default) { + onMenuDefault(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDefault() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java index 5303d34f37..5f3d4ab7e0 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java @@ -347,13 +347,11 @@ public class FragmentOptionsEncryption extends FragmentBase implements SharedPre @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_default: - onMenuDefault(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_default) { + onMenuDefault(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDefault() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index b74b9db66a..3dc5d87f3c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -743,13 +743,11 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_default: - onMenuDefault(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_default) { + onMenuDefault(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDefault() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java b/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java index 73b3adddaa..c78a71ad5f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java @@ -502,13 +502,11 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_default: - onMenuDefault(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_default) { + onMenuDefault(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDefault() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java index 5557ba0894..005f628ed8 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java @@ -349,13 +349,11 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_default: - onMenuDefault(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_default) { + onMenuDefault(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDefault() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java index b46b89e852..9807b31b5c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSend.java @@ -379,13 +379,11 @@ public class FragmentOptionsSend extends FragmentBase implements SharedPreferenc @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_default: - onMenuDefault(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_default) { + onMenuDefault(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDefault() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java index f4c2458b3c..0cee9c4d98 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsSynchronize.java @@ -368,13 +368,11 @@ public class FragmentOptionsSynchronize extends FragmentBase implements SharedPr @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_default: - onMenuDefault(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_default) { + onMenuDefault(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDefault() { diff --git a/app/src/main/java/eu/faircode/email/FragmentOrder.java b/app/src/main/java/eu/faircode/email/FragmentOrder.java index d6cf9b63c5..37757955f9 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOrder.java +++ b/app/src/main/java/eu/faircode/email/FragmentOrder.java @@ -165,13 +165,11 @@ public class FragmentOrder extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_reset_order: - onMenuResetOrder(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_reset_order) { + onMenuResetOrder(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuResetOrder() { diff --git a/app/src/main/java/eu/faircode/email/FragmentPop.java b/app/src/main/java/eu/faircode/email/FragmentPop.java index 22b94efff5..c822cdb417 100644 --- a/app/src/main/java/eu/faircode/email/FragmentPop.java +++ b/app/src/main/java/eu/faircode/email/FragmentPop.java @@ -714,13 +714,11 @@ public class FragmentPop extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_delete: - onMenuDelete(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_delete) { + onMenuDelete(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuDelete() { diff --git a/app/src/main/java/eu/faircode/email/FragmentPro.java b/app/src/main/java/eu/faircode/email/FragmentPro.java index 5037a81268..19878f2533 100644 --- a/app/src/main/java/eu/faircode/email/FragmentPro.java +++ b/app/src/main/java/eu/faircode/email/FragmentPro.java @@ -252,13 +252,11 @@ public class FragmentPro extends FragmentBase implements SharedPreferences.OnSha @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_response: - onMenuResponse(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_response) { + onMenuResponse(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuResponse() { diff --git a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java index 5f5c745cba..f013bafa4d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentQuickSetup.java @@ -206,13 +206,11 @@ public class FragmentQuickSetup extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_help: - onMenuHelp(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_help) { + onMenuHelp(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuHelp() { diff --git a/app/src/main/java/eu/faircode/email/FragmentRule.java b/app/src/main/java/eu/faircode/email/FragmentRule.java index 94666f1dca..5383999cc3 100644 --- a/app/src/main/java/eu/faircode/email/FragmentRule.java +++ b/app/src/main/java/eu/faircode/email/FragmentRule.java @@ -495,19 +495,18 @@ public class FragmentRule extends FragmentBase { bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { - switch (menuItem.getItemId()) { - case R.id.action_delete: - onActionDelete(); - return true; - case R.id.action_check: - onActionCheck(); - return true; - case R.id.action_save: - onActionSave(); - return true; - default: - return false; + int itemId = menuItem.getItemId(); + if (itemId == R.id.action_delete) { + onActionDelete(); + return true; + } else if (itemId == R.id.action_check) { + onActionCheck(); + return true; + } else if (itemId == R.id.action_save) { + onActionSave(); + return true; } + return false; } }); @@ -603,14 +602,11 @@ public class FragmentRule extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_help: - onMenuHelp(); - return true; - - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == R.id.menu_help) { + onMenuHelp(); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuHelp() { diff --git a/app/src/main/java/eu/faircode/email/FragmentRules.java b/app/src/main/java/eu/faircode/email/FragmentRules.java index 38fa0ca3a1..aae4713da5 100644 --- a/app/src/main/java/eu/faircode/email/FragmentRules.java +++ b/app/src/main/java/eu/faircode/email/FragmentRules.java @@ -259,22 +259,21 @@ public class FragmentRules extends FragmentBase { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.menu_export: - onMenuExport(); - return true; - case R.id.menu_import: - onMenuImport(); - return true; - case R.id.menu_delete_all: - onMenuDelete(true); - return true; - case R.id.menu_delete_junk: - onMenuDelete(false); - return true; - default: - return super.onOptionsItemSelected(item); + int itemId = item.getItemId(); + if (itemId == R.id.menu_export) { + onMenuExport(); + return true; + } else if (itemId == R.id.menu_import) { + onMenuImport(); + return true; + } else if (itemId == R.id.menu_delete_all) { + onMenuDelete(true); + return true; + } else if (itemId == R.id.menu_delete_junk) { + onMenuDelete(false); + return true; } + return super.onOptionsItemSelected(item); } private void onMenuExport() { diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 84034ecc24..4dddf21465 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -172,33 +172,31 @@ public class FragmentSetup extends FragmentBase { @Override public boolean onMenuItemClick(MenuItem item) { LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(getContext()); - switch (item.getItemId()) { - case R.string.title_setup_gmail: - if (Helper.hasValidFingerprint(getContext()) || BuildConfig.DEBUG) - lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_QUICK_GMAIL)); - else - ToastEx.makeText(getContext(), R.string.title_setup_gmail_support, Toast.LENGTH_LONG).show(); - return true; - case R.string.title_setup_activesync: - Helper.viewFAQ(getContext(), 133); - return true; - case R.string.title_setup_outlook: - case R.string.title_setup_other: - lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_QUICK_SETUP)); - return true; - case R.string.title_setup_pop3: - lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_QUICK_POP3)); - return true; - default: - if (item.getIntent() == null) - return false; - else { - if (Helper.hasValidFingerprint(getContext()) || BuildConfig.DEBUG) - lbm.sendBroadcast(item.getIntent()); - else - ToastEx.makeText(getContext(), R.string.title_setup_oauth_permission, Toast.LENGTH_LONG).show(); - return true; - } + int itemId = item.getItemId(); + if (itemId == R.string.title_setup_gmail) { + if (Helper.hasValidFingerprint(getContext()) || BuildConfig.DEBUG) + lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_QUICK_GMAIL)); + else + ToastEx.makeText(getContext(), R.string.title_setup_gmail_support, Toast.LENGTH_LONG).show(); + return true; + } else if (itemId == R.string.title_setup_activesync) { + Helper.viewFAQ(getContext(), 133); + return true; + } else if (itemId == R.string.title_setup_outlook || itemId == R.string.title_setup_other) { + lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_QUICK_SETUP)); + return true; + } else if (itemId == R.string.title_setup_pop3) { + lbm.sendBroadcast(new Intent(ActivitySetup.ACTION_QUICK_POP3)); + return true; + } + if (item.getIntent() == null) + return false; + else { + if (Helper.hasValidFingerprint(getContext()) || BuildConfig.DEBUG) + lbm.sendBroadcast(item.getIntent()); + else + ToastEx.makeText(getContext(), R.string.title_setup_oauth_permission, Toast.LENGTH_LONG).show(); + return true; } } }); diff --git a/app/src/main/java/eu/faircode/email/StyleHelper.java b/app/src/main/java/eu/faircode/email/StyleHelper.java index bc96914454..128f9f87d8 100644 --- a/app/src/main/java/eu/faircode/email/StyleHelper.java +++ b/app/src/main/java/eu/faircode/email/StyleHelper.java @@ -84,370 +84,353 @@ public class StyleHelper { SpannableString ss = new SpannableString(etBody.getText()); - switch (action) { - case R.id.menu_bold: - case R.id.menu_italic: { - int style = (action == R.id.menu_bold ? Typeface.BOLD : Typeface.ITALIC); - boolean has = false; - for (StyleSpan span : ss.getSpans(start, end, StyleSpan.class)) - if (span.getStyle() == style) { - has = true; - ss.removeSpan(span); - } - - if (!has) - ss.setSpan(new StyleSpan(style), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - - etBody.setText(ss); - etBody.setSelection(start, end); - - return true; - } - - case R.id.menu_underline: { - boolean has = false; - for (UnderlineSpan span : ss.getSpans(start, end, UnderlineSpan.class)) { + if (action == R.id.menu_bold || action == R.id.menu_italic) { + int style = (action == R.id.menu_bold ? Typeface.BOLD : Typeface.ITALIC); + boolean has = false; + for (StyleSpan span : ss.getSpans(start, end, StyleSpan.class)) + if (span.getStyle() == style) { has = true; ss.removeSpan(span); } - if (!has) - ss.setSpan(new UnderlineSpan(), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + if (!has) + ss.setSpan(new StyleSpan(style), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - etBody.setText(ss); - etBody.setSelection(start, end); + etBody.setText(ss); + etBody.setSelection(start, end); - return true; + return true; + } else if (action == R.id.menu_underline) { + boolean has = false; + for (UnderlineSpan span : ss.getSpans(start, end, UnderlineSpan.class)) { + has = true; + ss.removeSpan(span); } - case R.id.menu_style: { - final int s = start; - final int e = end; - final SpannableStringBuilder t = new SpannableStringBuilder(ss); - - PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(anchor.getContext(), owner, anchor); - popupMenu.inflate(R.menu.popup_style); - - String[] fontNames = anchor.getResources().getStringArray(R.array.fontNameNames); - SubMenu smenu = popupMenu.getMenu().findItem(R.id.menu_style_font).getSubMenu(); - for (int i = 0; i < fontNames.length; i++) - smenu.add(R.id.group_style_font, i, 0, fontNames[i]); - smenu.add(R.id.group_style_font, fontNames.length, 0, R.string.title_style_font_default); - - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - try { - switch (item.getGroupId()) { - case R.id.group_style_size: - return setSize(item); - case R.id.group_style_color: - return setColor(item); - case R.id.group_style_align: - return setAlignment(item); - case R.id.group_style_list: - return setList(item); - case R.id.group_style_font: - return setFont(item); - case R.id.group_style_blockquote: - return setBlockQuote(item); - case R.id.group_style_strikethrough: - return setStrikeThrough(item); - case R.id.group_style_clear: - return clear(item); - default: - return false; - } - } catch (Throwable ex) { - Log.e(ex); - return false; + if (!has) + ss.setSpan(new UnderlineSpan(), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + + etBody.setText(ss); + etBody.setSelection(start, end); + + return true; + } else if (action == R.id.menu_style) { + final int s = start; + final int e = end; + final SpannableStringBuilder t = new SpannableStringBuilder(ss); + + PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(anchor.getContext(), owner, anchor); + popupMenu.inflate(R.menu.popup_style); + + String[] fontNames = anchor.getResources().getStringArray(R.array.fontNameNames); + SubMenu smenu = popupMenu.getMenu().findItem(R.id.menu_style_font).getSubMenu(); + for (int i = 0; i < fontNames.length; i++) + smenu.add(R.id.group_style_font, i, 0, fontNames[i]); + smenu.add(R.id.group_style_font, fontNames.length, 0, R.string.title_style_font_default); + + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + try { + int groupId = item.getGroupId(); + if (groupId == R.id.group_style_size) { + return setSize(item); + } else if (groupId == R.id.group_style_color) { + return setColor(item); + } else if (groupId == R.id.group_style_align) { + return setAlignment(item); + } else if (groupId == R.id.group_style_list) { + return setList(item); + } else if (groupId == R.id.group_style_font) { + return setFont(item); + } else if (groupId == R.id.group_style_blockquote) { + return setBlockQuote(item); + } else if (groupId == R.id.group_style_strikethrough) { + return setStrikeThrough(item); + } else if (groupId == R.id.group_style_clear) { + return clear(item); } + return false; + } catch (Throwable ex) { + Log.e(ex); + return false; } + } - private boolean setSize(MenuItem item) { - RelativeSizeSpan[] spans = t.getSpans(s, e, RelativeSizeSpan.class); - for (RelativeSizeSpan span : spans) - t.removeSpan(span); - - Float size; - if (item.getItemId() == R.id.menu_style_size_small) - size = 0.8f; - else if (item.getItemId() == R.id.menu_style_size_large) - size = 1.25f; - else - size = null; - - if (size != null) - t.setSpan(new RelativeSizeSpan(size), s, e, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - - etBody.setText(t); - etBody.setSelection(s, e); - - return true; - } - - private boolean setColor(MenuItem item) { - InputMethodManager imm = (InputMethodManager) etBody.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE); - if (imm != null) - imm.hideSoftInputFromWindow(etBody.getWindowToken(), 0); - - Context context = etBody.getContext(); - int editTextColor = Helper.resolveColor(context, android.R.attr.editTextColor); - - ColorPickerDialogBuilder builder = ColorPickerDialogBuilder - .with(context) - .setTitle(R.string.title_color) - .showColorEdit(true) - .setColorEditTextColor(editTextColor) - .wheelType(ColorPickerView.WHEEL_TYPE.FLOWER) - .density(6) - .lightnessSliderOnly() - .setPositiveButton(android.R.string.ok, new ColorPickerClickListener() { - @Override - public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) { - _setColor(selectedColor); - } - }) - .setNegativeButton(R.string.title_reset, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - _setColor(null); - } - }); - - builder.build().show(); - - return true; - } + private boolean setSize(MenuItem item) { + RelativeSizeSpan[] spans = t.getSpans(s, e, RelativeSizeSpan.class); + for (RelativeSizeSpan span : spans) + t.removeSpan(span); - private void _setColor(Integer color) { - for (ForegroundColorSpan span : t.getSpans(s, e, ForegroundColorSpan.class)) - t.removeSpan(span); + Float size; + if (item.getItemId() == R.id.menu_style_size_small) + size = 0.8f; + else if (item.getItemId() == R.id.menu_style_size_large) + size = 1.25f; + else + size = null; - if (color != null) - t.setSpan(new ForegroundColorSpan(color), s, e, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + if (size != null) + t.setSpan(new RelativeSizeSpan(size), s, e, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - etBody.setText(t); - etBody.setSelection(s, e); - } + etBody.setText(t); + etBody.setSelection(s, e); - private boolean setAlignment(MenuItem item) { - Pair paragraph = ensureParagraph(t, s, e); - int start = paragraph.first; - int end = paragraph.second; + return true; + } - AlignmentSpan[] spans = t.getSpans(start, end, AlignmentSpan.class); - for (AlignmentSpan span : spans) - t.removeSpan(span); + private boolean setColor(MenuItem item) { + InputMethodManager imm = (InputMethodManager) etBody.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE); + if (imm != null) + imm.hideSoftInputFromWindow(etBody.getWindowToken(), 0); + + Context context = etBody.getContext(); + int editTextColor = Helper.resolveColor(context, android.R.attr.editTextColor); + + ColorPickerDialogBuilder builder = ColorPickerDialogBuilder + .with(context) + .setTitle(R.string.title_color) + .showColorEdit(true) + .setColorEditTextColor(editTextColor) + .wheelType(ColorPickerView.WHEEL_TYPE.FLOWER) + .density(6) + .lightnessSliderOnly() + .setPositiveButton(android.R.string.ok, new ColorPickerClickListener() { + @Override + public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) { + _setColor(selectedColor); + } + }) + .setNegativeButton(R.string.title_reset, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + _setColor(null); + } + }); + + builder.build().show(); + + return true; + } - Layout.Alignment alignment = null; - boolean ltr = (TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) == View.LAYOUT_DIRECTION_LTR); - switch (item.getItemId()) { - case R.id.menu_style_align_start: - alignment = (ltr ? Layout.Alignment.ALIGN_NORMAL : Layout.Alignment.ALIGN_OPPOSITE); - break; - case R.id.menu_style_align_center: - alignment = Layout.Alignment.ALIGN_CENTER; - break; - case R.id.menu_style_align_end: - alignment = (ltr ? Layout.Alignment.ALIGN_OPPOSITE : Layout.Alignment.ALIGN_NORMAL); - break; - } + private void _setColor(Integer color) { + for (ForegroundColorSpan span : t.getSpans(s, e, ForegroundColorSpan.class)) + t.removeSpan(span); - if (alignment != null) - t.setSpan(new AlignmentSpan.Standard(alignment), - start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_PARAGRAPH); + if (color != null) + t.setSpan(new ForegroundColorSpan(color), s, e, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - etBody.setText(t); - etBody.setSelection(start, end); + etBody.setText(t); + etBody.setSelection(s, e); + } - return true; + private boolean setAlignment(MenuItem item) { + Pair paragraph = ensureParagraph(t, s, e); + int start = paragraph.first; + int end = paragraph.second; + + AlignmentSpan[] spans = t.getSpans(start, end, AlignmentSpan.class); + for (AlignmentSpan span : spans) + t.removeSpan(span); + + Layout.Alignment alignment = null; + boolean ltr = (TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) == View.LAYOUT_DIRECTION_LTR); + int itemId = item.getItemId(); + if (itemId == R.id.menu_style_align_start) { + alignment = (ltr ? Layout.Alignment.ALIGN_NORMAL : Layout.Alignment.ALIGN_OPPOSITE); + } else if (itemId == R.id.menu_style_align_center) { + alignment = Layout.Alignment.ALIGN_CENTER; + } else if (itemId == R.id.menu_style_align_end) { + alignment = (ltr ? Layout.Alignment.ALIGN_OPPOSITE : Layout.Alignment.ALIGN_NORMAL); } - private boolean setList(MenuItem item) { - Context context = etBody.getContext(); - - int colorAccent = Helper.resolveColor(context, R.attr.colorAccent); - int dp3 = Helper.dp2pixels(context, 3); - int dp6 = Helper.dp2pixels(context, 6); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - int message_zoom = prefs.getInt("message_zoom", 100); - float textSize = Helper.getTextSize(context, 0) * message_zoom / 100f; + if (alignment != null) + t.setSpan(new AlignmentSpan.Standard(alignment), + start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_PARAGRAPH); - Pair paragraph = ensureParagraph(t, s, e); - int start = paragraph.first; - int end = paragraph.second; + etBody.setText(t); + etBody.setSelection(start, end); - // Remove existing bullets - BulletSpan[] spans = t.getSpans(start, end, BulletSpan.class); - for (BulletSpan span : spans) - t.removeSpan(span); + return true; + } - int i = start; - int j = start + 1; - int index = 1; - while (j < end) { - if (i > 0 && t.charAt(i - 1) == '\n' && t.charAt(j) == '\n') { - Log.i("Insert " + i + "..." + (j + 1) + " size=" + end); - if (item.getItemId() == R.id.menu_style_list_bullets) - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) - t.setSpan(new BulletSpan(dp6, colorAccent), i, j + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_PARAGRAPH); - else - t.setSpan(new BulletSpan(dp6, colorAccent, dp3), i, j + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_PARAGRAPH); + private boolean setList(MenuItem item) { + Context context = etBody.getContext(); + + int colorAccent = Helper.resolveColor(context, R.attr.colorAccent); + int dp3 = Helper.dp2pixels(context, 3); + int dp6 = Helper.dp2pixels(context, 6); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + int message_zoom = prefs.getInt("message_zoom", 100); + float textSize = Helper.getTextSize(context, 0) * message_zoom / 100f; + + Pair paragraph = ensureParagraph(t, s, e); + int start = paragraph.first; + int end = paragraph.second; + + // Remove existing bullets + BulletSpan[] spans = t.getSpans(start, end, BulletSpan.class); + for (BulletSpan span : spans) + t.removeSpan(span); + + int i = start; + int j = start + 1; + int index = 1; + while (j < end) { + if (i > 0 && t.charAt(i - 1) == '\n' && t.charAt(j) == '\n') { + Log.i("Insert " + i + "..." + (j + 1) + " size=" + end); + if (item.getItemId() == R.id.menu_style_list_bullets) + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) + t.setSpan(new BulletSpan(dp6, colorAccent), i, j + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_PARAGRAPH); else - t.setSpan(new NumberSpan(dp6, colorAccent, textSize, index++), i, j + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_PARAGRAPH); + t.setSpan(new BulletSpan(dp6, colorAccent, dp3), i, j + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_PARAGRAPH); + else + t.setSpan(new NumberSpan(dp6, colorAccent, textSize, index++), i, j + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_PARAGRAPH); - i = j + 1; - } - j++; + i = j + 1; } - - etBody.setText(t); - etBody.setSelection(start, end); - - return true; + j++; } - private boolean setFont(MenuItem item) { - TypefaceSpan[] spans = t.getSpans(s, e, TypefaceSpan.class); - for (TypefaceSpan span : spans) - t.removeSpan(span); + etBody.setText(t); + etBody.setSelection(start, end); - int id = item.getItemId(); - String[] names = anchor.getResources().getStringArray(R.array.fontNameValues); - String face = (id < names.length ? names[id] : null); + return true; + } - if (face != null) - t.setSpan(new TypefaceSpan(face), s, e, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + private boolean setFont(MenuItem item) { + TypefaceSpan[] spans = t.getSpans(s, e, TypefaceSpan.class); + for (TypefaceSpan span : spans) + t.removeSpan(span); - etBody.setText(t); - etBody.setSelection(s, e); + int id = item.getItemId(); + String[] names = anchor.getResources().getStringArray(R.array.fontNameValues); + String face = (id < names.length ? names[id] : null); - return true; - } + if (face != null) + t.setSpan(new TypefaceSpan(face), s, e, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - private boolean setBlockQuote(MenuItem item) { - Context context = etBody.getContext(); + etBody.setText(t); + etBody.setSelection(s, e); - int colorPrimary = Helper.resolveColor(context, R.attr.colorPrimary); - int dp3 = Helper.dp2pixels(context, 3); - int dp6 = Helper.dp2pixels(context, 6); - - Pair paragraph = ensureParagraph(t, s, e); - int start = paragraph.first; - int end = paragraph.second; + return true; + } - QuoteSpan[] spans = t.getSpans(s, e, QuoteSpan.class); - for (QuoteSpan span : spans) - t.removeSpan(span); + private boolean setBlockQuote(MenuItem item) { + Context context = etBody.getContext(); - QuoteSpan q; - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) - q = new QuoteSpan(colorPrimary); - else - q = new QuoteSpan(colorPrimary, dp3, dp6); - t.setSpan(q, start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + int colorPrimary = Helper.resolveColor(context, R.attr.colorPrimary); + int dp3 = Helper.dp2pixels(context, 3); + int dp6 = Helper.dp2pixels(context, 6); - etBody.setText(t); - etBody.setSelection(start, end); + Pair paragraph = ensureParagraph(t, s, e); + int start = paragraph.first; + int end = paragraph.second; - return true; - } + QuoteSpan[] spans = t.getSpans(s, e, QuoteSpan.class); + for (QuoteSpan span : spans) + t.removeSpan(span); - private boolean setStrikeThrough(MenuItem item) { - boolean has = false; - for (StrikethroughSpan span : t.getSpans(s, e, StrikethroughSpan.class)) { - has = true; - t.removeSpan(span); - } + QuoteSpan q; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) + q = new QuoteSpan(colorPrimary); + else + q = new QuoteSpan(colorPrimary, dp3, dp6); + t.setSpan(q, start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); - if (!has) - t.setSpan(new StrikethroughSpan(), s, e, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + etBody.setText(t); + etBody.setSelection(start, end); - etBody.setText(t); - etBody.setSelection(s, e); + return true; + } - return true; + private boolean setStrikeThrough(MenuItem item) { + boolean has = false; + for (StrikethroughSpan span : t.getSpans(s, e, StrikethroughSpan.class)) { + has = true; + t.removeSpan(span); } - private boolean clear(MenuItem item) { - int start = s; - int end = e; + if (!has) + t.setSpan(new StrikethroughSpan(), s, e, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - // Expand to paragraph (block quotes) - if (end + 1 < t.length() && t.charAt(end) == '\n') - end++; + etBody.setText(t); + etBody.setSelection(s, e); - for (Object span : t.getSpans(start, end, Object.class)) - if (!(span instanceof ImageSpan)) { - int sstart = t.getSpanStart(span); - int send = t.getSpanEnd(span); - int flags = t.getSpanFlags(span); - if (sstart < start && send > start) - setSpan(t, span, sstart, start, flags, etBody.getContext()); - if (sstart < end && send > end) - setSpan(t, span, end, send, flags, etBody.getContext()); + return true; + } - t.removeSpan(span); - } + private boolean clear(MenuItem item) { + int start = s; + int end = e; - etBody.setText(t); - etBody.setSelection(s, e); + // Expand to paragraph (block quotes) + if (end + 1 < t.length() && t.charAt(end) == '\n') + end++; - return true; - } - }); + for (Object span : t.getSpans(start, end, Object.class)) + if (!(span instanceof ImageSpan)) { + int sstart = t.getSpanStart(span); + int send = t.getSpanEnd(span); + int flags = t.getSpanFlags(span); + if (sstart < start && send > start) + setSpan(t, span, sstart, start, flags, etBody.getContext()); + if (sstart < end && send > end) + setSpan(t, span, end, send, flags, etBody.getContext()); - popupMenu.show(); - - return true; - } + t.removeSpan(span); + } - case R.id.menu_link: { - String url = (String) args[0]; + etBody.setText(t); + etBody.setSelection(s, e); - List spans = new ArrayList<>(); - for (Object span : ss.getSpans(start, end, Object.class)) { - if (!(span instanceof URLSpan)) - spans.add(span); - ss.removeSpan(span); + return true; } + }); - if (url != null) { - if (start == end) { - etBody.getText().insert(start, url); - end += url.length(); - ss = new SpannableString(etBody.getText()); - } + popupMenu.show(); - ss.setSpan(new URLSpan(url), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - } + return true; + } else if (action == R.id.menu_link) { + String url = (String) args[0]; - // Restore other spans - for (Object span : spans) - ss.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + List spans = new ArrayList<>(); + for (Object span : ss.getSpans(start, end, Object.class)) { + if (!(span instanceof URLSpan)) + spans.add(span); + ss.removeSpan(span); + } - etBody.setText(ss); - etBody.setSelection(end, end); + if (url != null) { + if (start == end) { + etBody.getText().insert(start, url); + end += url.length(); + ss = new SpannableString(etBody.getText()); + } - return true; + ss.setSpan(new URLSpan(url), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } - case R.id.menu_clear: { - for (Object span : ss.getSpans(0, etBody.length(), Object.class)) - if (!(span instanceof ImageSpan)) - ss.removeSpan(span); + // Restore other spans + for (Object span : spans) + ss.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - etBody.setText(ss); - etBody.setSelection(start, end); + etBody.setText(ss); + etBody.setSelection(end, end); - return true; - } + return true; + } else if (action == R.id.menu_clear) { + for (Object span : ss.getSpans(0, etBody.length(), Object.class)) + if (!(span instanceof ImageSpan)) + ss.removeSpan(span); + + etBody.setText(ss); + etBody.setSelection(start, end); - default: - return false; + return true; } + return false; } catch (Throwable ex) { Log.e(ex); return false;