diff options
author | weitan <weitan@codeaurora.org> | 2016-06-02 15:32:10 +0800 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2016-08-24 08:19:48 -0600 |
commit | e21c18dc015313e3b12831ee429e31ce736a1e61 (patch) | |
tree | 2f4d21eb3688fcf7581a264c42c124c0846e843f /emailcommon | |
parent | a3e320b6783386437e7e945a431c487683779948 (diff) | |
download | android_packages_apps_Email-e21c18dc015313e3b12831ee429e31ce736a1e61.tar.gz android_packages_apps_Email-e21c18dc015313e3b12831ee429e31ce736a1e61.tar.bz2 android_packages_apps_Email-e21c18dc015313e3b12831ee429e31ce736a1e61.zip |
Email: Supported Email search function
1. Use the search function to search the local mail.
2. Search results interface:
Filters All, Subject, Sender, Receiver
click on the different filter,
and search the corresponding results.
All for the default selection filter.
3. Search results interface: slide switch filter,
remove "sliding removing a single mail" effect.
4. Search results interface: alternative condition,
slide switch filter, cancel the multiselect state.
5. Search results interface: UI-filters layout,
sliding effect, search, according to the number of
search results highlighted.
Change-Id: I6e16d37f4acc6e99b5d50b68c116c32c5cf85d07
CRs-Fixed: 1023498
Diffstat (limited to 'emailcommon')
-rwxr-xr-x | emailcommon/src/com/android/emailcommon/provider/EmailContent.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java index 2076c2587..3c6060e30 100755 --- a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java +++ b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java @@ -38,6 +38,7 @@ import android.text.TextUtils; import com.android.emailcommon.Logging; import com.android.emailcommon.R; +import com.android.emailcommon.service.SearchParams; import com.android.emailcommon.utility.TextUtilities; import com.android.emailcommon.utility.Utility; import com.android.mail.providers.UIProvider; @@ -1292,6 +1293,65 @@ public abstract class EmailContent { : Message.FLAG_TYPE_FORWARD; } } + + + public static String buildLocalSearchSelection(Context context, long mailboxId, + String queryFilter, String queryFactor) { + StringBuilder selection = new StringBuilder(); + selection.append(" ("); + queryFilter = queryFilter.replaceAll("\\\\", "\\\\\\\\") + .replaceAll("%", "\\\\%") + .replaceAll("_", "\\\\_") + .replaceAll("'", "''"); + String[] queryFilters = queryFilter.split(" +"); + + boolean isAll = false; + if (queryFactor.contains(SearchParams.SEARCH_FACTOR_ALL)) { + isAll = true; + } + if (queryFactor.contains(SearchParams.SEARCH_FACTOR_SUBJECT) || isAll) { + selection.append(buildSelectionClause(queryFilters, MessageColumns.SUBJECT)); + } + if (queryFactor.contains(SearchParams.SEARCH_FACTOR_SENDER) || isAll) { + selection.append(buildSelectionClause(queryFilters, MessageColumns.FROM_LIST)); + } + if (queryFactor.contains(SearchParams.SEARCH_FACTOR_RECEIVER) || isAll) { + selection.append(buildSelectionClause(queryFilters, null)); + } + + selection.delete(selection.length() - " or ".length(), selection.length()); + selection.append(")"); + return selection.toString(); + } + + private static String buildSelectionClause(String[] queryFilters, String queryFactor) { + StringBuilder clause = new StringBuilder(); + clause.append('('); + // if text is null that factor is receiver,otherwish the factor is subject or sender + if (TextUtils.isEmpty(queryFactor)) { + for (int i = 0; i < queryFilters.length; i++) { + clause.append('('); + clause.append("lower(").append(MessageColumns.TO_LIST).append(") like \'%") + .append(queryFilters[i].toLowerCase()).append("%\' escape \'\\'") + .append(" or ").append("lower(") + .append(MessageColumns.CC_LIST).append(") like \'%") + .append(queryFilters[i].toLowerCase()) + .append("%\' escape \'\\') and "); + } + } else { + for (int i = 0; i < queryFilters.length; i++) { + clause.append("lower(").append(queryFactor).append(") like \'%") + .append(queryFilters[i].toLowerCase()).append("%\' escape \'\\'") + .append(" and "); + } + } + + clause.delete(clause.length() - " and ".length(), clause.length()); + clause.append(')'); + clause.append(" or "); + return clause.toString(); + } + } public interface AttachmentColumns extends BaseColumns { |