summaryrefslogtreecommitdiffstats
path: root/emailcommon
diff options
context:
space:
mode:
authorweitan <weitan@codeaurora.org>2016-06-02 15:32:10 +0800
committerLinux Build Service Account <lnxbuild@localhost>2016-08-24 08:19:48 -0600
commite21c18dc015313e3b12831ee429e31ce736a1e61 (patch)
tree2f4d21eb3688fcf7581a264c42c124c0846e843f /emailcommon
parenta3e320b6783386437e7e945a431c487683779948 (diff)
downloadandroid_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-xemailcommon/src/com/android/emailcommon/provider/EmailContent.java60
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 {