From 272bd16ec32760fa5e64b7016589bba457597538 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 13 Mar 2022 09:22:35 +0100 Subject: [PATCH] Allow direct server search --- .../email/BoundaryCallbackMessages.java | 5 +++ .../faircode/email/FragmentDialogSearch.java | 44 +++++++++++++------ app/src/main/res/layout/dialog_search.xml | 11 +++++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 48 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java b/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java index 570d86beae..fbad026458 100644 --- a/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java +++ b/app/src/main/java/eu/faircode/email/BoundaryCallbackMessages.java @@ -321,6 +321,11 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback 0 && folder > 0) + cbSearchDevice.setVisibility(View.VISIBLE); } } }; @@ -258,10 +263,6 @@ public class FragmentDialogSearch extends FragmentDialogBase { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { prefs.edit().putBoolean("last_fts", isChecked).apply(); - cbHeaders.setEnabled(!isChecked); - cbHtml.setEnabled(!isChecked); - cbAttachments.setEnabled(!isChecked); - spMessageSize.setEnabled(!isChecked); } }); @@ -352,6 +353,13 @@ public class FragmentDialogSearch extends FragmentDialogBase { } }); + cbSearchDevice.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { + prefs.edit().putBoolean("last_search_device", isChecked).apply(); + } + }); + ibMore.setImageLevel(1); cbSearchIndex.setChecked(last_fts && fts && pro); cbSearchIndex.setEnabled(fts && pro); @@ -363,16 +371,18 @@ public class FragmentDialogSearch extends FragmentDialogBase { tvSearchTextUnsupported.setText(getString(R.string.title_search_text_unsupported, "full text search not supported")); cbNotes.setChecked(last_search_notes); - tvAfter.setText(null); - tvBefore.setText(null); cbSearchTrash.setChecked(last_search_trash); cbSearchJunk.setChecked(last_search_junk); + tvAfter.setText(null); + tvBefore.setText(null); + cbSearchDevice.setChecked(last_search_device); grpMore.setVisibility(View.GONE); cbHeaders.setVisibility(View.GONE); cbHtml.setVisibility(View.GONE); cbSearchTrash.setVisibility(View.GONE); cbSearchJunk.setVisibility(View.GONE); + cbSearchDevice.setVisibility(View.GONE); final AlertDialog dialog = new AlertDialog.Builder(context) .setView(dview) @@ -385,20 +395,20 @@ public class FragmentDialogSearch extends FragmentDialogBase { if (TextUtils.isEmpty(criteria.query)) criteria.query = null; - criteria.fts = cbSearchIndex.isChecked(); + criteria.fts = (cbSearchIndex.isChecked() && cbSearchIndex.isEnabled()); criteria.in_senders = cbSenders.isChecked(); criteria.in_recipients = cbRecipients.isChecked(); criteria.in_subject = cbSubject.isChecked(); criteria.in_keywords = cbKeywords.isChecked(); criteria.in_message = cbMessage.isChecked(); criteria.in_notes = cbNotes.isChecked(); - criteria.in_headers = (!criteria.fts && cbHeaders.isChecked()); - criteria.in_html = (!criteria.fts && cbHtml.isChecked()); + criteria.in_headers = cbHeaders.isChecked(); + criteria.in_html = cbHtml.isChecked(); criteria.with_unseen = cbUnseen.isChecked(); criteria.with_flagged = cbFlagged.isChecked(); criteria.with_hidden = cbHidden.isChecked(); criteria.with_encrypted = cbEncrypted.isChecked(); - criteria.with_attachments = (!criteria.fts && cbAttachments.isChecked()); + criteria.with_attachments = cbAttachments.isChecked(); if (!criteria.fts) { int pos = spMessageSize.getSelectedItemPosition(); @@ -419,6 +429,8 @@ public class FragmentDialogSearch extends FragmentDialogBase { if (before != null) criteria.before = ((Calendar) before).getTimeInMillis(); + boolean device = (cbSearchDevice.isChecked() || account < 0 || folder < 0); + if (criteria.query != null) { List searches = new ArrayList<>(); for (int i = 1; i <= 3; i++) @@ -471,7 +483,7 @@ public class FragmentDialogSearch extends FragmentDialogBase { context, getViewLifecycleOwner(), getParentFragmentManager(), account, archive == null ? folder : archive.id, - archive != null, + archive != null || !device, criteria); } @@ -483,7 +495,9 @@ public class FragmentDialogSearch extends FragmentDialogBase { else FragmentMessages.search( context, getViewLifecycleOwner(), getParentFragmentManager(), - account, folder, false, criteria); + account, folder, + !device, + criteria); } }) .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { @@ -513,9 +527,13 @@ public class FragmentDialogSearch extends FragmentDialogBase { else if (id == R.id.ibNotes) criteria.with_notes = true; + boolean device = (cbSearchDevice.isChecked() || account < 0 || folder < 0); + FragmentMessages.search( context, getViewLifecycleOwner(), getParentFragmentManager(), - account, folder, false, criteria); + account, folder, + !device, + criteria); } }; diff --git a/app/src/main/res/layout/dialog_search.xml b/app/src/main/res/layout/dialog_search.xml index 86393b4a73..8fd7335b60 100644 --- a/app/src/main/res/layout/dialog_search.xml +++ b/app/src/main/res/layout/dialog_search.xml @@ -541,6 +541,17 @@ app:layout_constraintStart_toStartOf="@id/btnBefore" app:layout_constraintTop_toBottomOf="@id/btnBefore" /> + + In spam Before After + Search the device first unread starred hidden