mirror of https://github.com/M66B/FairEmail.git
Improved search highlight
This commit is contained in:
parent
19c7d36e2b
commit
6aa1bfea9d
|
@ -881,7 +881,7 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback<TupleMe
|
|||
if (TextUtils.isEmpty(text))
|
||||
return false;
|
||||
|
||||
text = Fts4DbHelper.breakText(text);
|
||||
text = Fts4DbHelper.processBreakText(text);
|
||||
|
||||
List<String> word = new ArrayList<>();
|
||||
for (String w : query.trim().split("\\s+"))
|
||||
|
@ -892,7 +892,7 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback<TupleMe
|
|||
if (!html && text.contains(Fts4DbHelper.preprocessText(w.substring(1))))
|
||||
return false;
|
||||
} else
|
||||
word.addAll(Arrays.asList(Fts4DbHelper.breakText(w).split("\\s+")));
|
||||
word.addAll(Arrays.asList(Fts4DbHelper.processBreakText(w).split("\\s+")));
|
||||
|
||||
if (word.size() == 0)
|
||||
return true;
|
||||
|
|
|
@ -118,10 +118,10 @@ public class Fts4DbHelper extends SQLiteOpenHelper {
|
|||
cv.put("folder", message.folder);
|
||||
cv.put("time", message.received);
|
||||
cv.put("address", MessageHelper.formatAddresses(address.toArray(new Address[0]), true, false));
|
||||
cv.put("subject", breakText(message.subject));
|
||||
cv.put("subject", processBreakText(message.subject));
|
||||
cv.put("keyword", TextUtils.join(" ", message.keywords));
|
||||
cv.put("text", breakText(text));
|
||||
cv.put("notes", breakText(message.notes));
|
||||
cv.put("text", processBreakText(text));
|
||||
cv.put("notes", processBreakText(message.notes));
|
||||
db.insertWithOnConflict("message", null, cv, SQLiteDatabase.CONFLICT_FAIL);
|
||||
}
|
||||
|
||||
|
@ -138,12 +138,14 @@ public class Fts4DbHelper extends SQLiteOpenHelper {
|
|||
.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
|
||||
}
|
||||
|
||||
static String breakText(String text) {
|
||||
static String processBreakText(String text) {
|
||||
if (TextUtils.isEmpty(text))
|
||||
return "";
|
||||
|
||||
text = preprocessText(text);
|
||||
return breakText(preprocessText(text));
|
||||
}
|
||||
|
||||
static String breakText(String text) {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N)
|
||||
return text;
|
||||
|
||||
|
@ -187,7 +189,7 @@ public class Fts4DbHelper extends SQLiteOpenHelper {
|
|||
SQLiteDatabase db,
|
||||
Long account, Long folder, long[] exclude,
|
||||
BoundaryCallbackMessages.SearchCriteria criteria, String query) {
|
||||
String search = escape(breakText(query));
|
||||
String search = escape(processBreakText(query));
|
||||
|
||||
String select = "";
|
||||
if (account != null)
|
||||
|
|
|
@ -3009,7 +3009,8 @@ public class HtmlHelper {
|
|||
sb.insert(0, ".*?\\b(");
|
||||
sb.append(")\\b.*?");
|
||||
|
||||
Pattern p = Pattern.compile(sb.toString(), Pattern.DOTALL);
|
||||
// TODO: match für for fur
|
||||
Pattern p = Pattern.compile(sb.toString(), Pattern.DOTALL | Pattern.CASE_INSENSITIVE);
|
||||
|
||||
NodeTraversor.traverse(new NodeVisitor() {
|
||||
@Override
|
||||
|
@ -3017,9 +3018,7 @@ public class HtmlHelper {
|
|||
if (node instanceof TextNode)
|
||||
try {
|
||||
TextNode tnode = (TextNode) node;
|
||||
String whole = tnode.getWholeText();
|
||||
String text = Fts4DbHelper.preprocessText(whole);
|
||||
String ref = (whole.length() == text.length() ? whole : text);
|
||||
String text = tnode.getWholeText();
|
||||
|
||||
Matcher result = p.matcher(text);
|
||||
|
||||
|
@ -3029,7 +3028,7 @@ public class HtmlHelper {
|
|||
int start = result.start(1);
|
||||
int end = result.end(1);
|
||||
|
||||
holder.appendText(ref.substring(prev, start));
|
||||
holder.appendText(text.substring(prev, start));
|
||||
|
||||
Element span = document.createElement("span");
|
||||
span.attr("style", mergeStyles(
|
||||
|
@ -3037,7 +3036,7 @@ public class HtmlHelper {
|
|||
"font-size:larger !important;" +
|
||||
"font-weight:bold !important;" +
|
||||
"background-color:" + encodeWebColor(color) + " !important"));
|
||||
span.text(ref.substring(start, end));
|
||||
span.text(text.substring(start, end));
|
||||
holder.appendChild(span);
|
||||
|
||||
prev = end;
|
||||
|
@ -3047,7 +3046,7 @@ public class HtmlHelper {
|
|||
return;
|
||||
|
||||
if (prev < text.length())
|
||||
holder.appendText(ref.substring(prev));
|
||||
holder.appendText(text.substring(prev));
|
||||
|
||||
tnode.before(holder);
|
||||
tnode.text("");
|
||||
|
|
Loading…
Reference in New Issue