State fixes

pull/156/head
M66B 6 years ago
parent af51ad6968
commit d8dc372c37

@ -746,6 +746,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
private void bindExpanded(final TupleMessageEx message) { private void bindExpanded(final TupleMessageEx message) {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
boolean show_addresses = !properties.getValue("addresses", message.id); boolean show_addresses = !properties.getValue("addresses", message.id);
boolean show_headers = properties.getValue("headers", message.id); boolean show_headers = properties.getValue("headers", message.id);
boolean show_html = properties.getValue("html", message.id); boolean show_html = properties.getValue("html", message.id);
@ -776,7 +777,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
tbHtml.setChecked(show_html); tbHtml.setChecked(show_html);
tbHtml.setVisibility(hasWebView ? View.INVISIBLE : View.GONE); tbHtml.setVisibility(hasWebView ? View.INVISIBLE : View.GONE);
ibImages.setVisibility(!show_html ? View.INVISIBLE : View.GONE); ibImages.setVisibility(View.INVISIBLE);
ibFull.setVisibility(show_html ? View.INVISIBLE : View.GONE); ibFull.setVisibility(show_html ? View.INVISIBLE : View.GONE);
tvBody.setTypeface(monospaced ? Typeface.MONOSPACE : Typeface.DEFAULT); tvBody.setTypeface(monospaced ? Typeface.MONOSPACE : Typeface.DEFAULT);
@ -962,6 +963,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
Spanned body = properties.getBody(message.id); Spanned body = properties.getBody(message.id);
tvBody.setText(body); tvBody.setText(body);
tvBody.setMovementMethod(null); tvBody.setMovementMethod(null);
tvBody.setVisibility(View.VISIBLE);
showText(message); showText(message);
} }
@ -1408,8 +1410,8 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
boolean show_images = properties.getValue("images", message.id); boolean show_images = properties.getValue("images", message.id);
tbHtml.setVisibility(View.VISIBLE); tbHtml.setVisibility(View.VISIBLE);
ibImages.setVisibility(show_images ? View.GONE : View.INVISIBLE);
ibFull.setVisibility(View.INVISIBLE); ibFull.setVisibility(View.INVISIBLE);
tvBody.setVisibility(View.GONE);
rvImage.setVisibility(adapterImage.getItemCount() > 0 ? View.INVISIBLE : View.GONE); rvImage.setVisibility(adapterImage.getItemCount() > 0 ? View.INVISIBLE : View.GONE);
// For performance reasons the WebView is created when needed only // For performance reasons the WebView is created when needed only
@ -1446,6 +1448,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
String html = properties.getHtml(message.id); String html = properties.getHtml(message.id);
if (TextUtils.isEmpty(html)) { if (TextUtils.isEmpty(html)) {
webView.loadUrl("about:blank"); webView.loadUrl("about:blank");
webView.setVisibility(View.VISIBLE);
if (!message.content) if (!message.content)
return; return;
@ -1490,14 +1493,12 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
return; return;
boolean show_images = properties.getValue("images", id); boolean show_images = properties.getValue("images", id);
ibImages.setVisibility(original.has_images && !show_images ? View.VISIBLE : View.GONE);
ibFull.setVisibility(View.VISIBLE); ibFull.setVisibility(View.VISIBLE);
ibImages.setVisibility(show_images ? View.GONE : View.VISIBLE);
webView.loadDataWithBaseURL("about:blank", themeHtml(original.html), "text/html", "UTF-8", null); webView.loadDataWithBaseURL("about:blank", themeHtml(original.html), "text/html", "UTF-8", null);
pbBody.setVisibility(View.GONE); pbBody.setVisibility(View.GONE);
tvBody.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
} }
@Override @Override
@ -1506,26 +1507,30 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
} }
}.execute(context, owner, args, "message:webview"); }.execute(context, owner, args, "message:webview");
} else { } else {
Document doc = Jsoup.parse(html);
boolean has_images = (doc.select("img").size() > 0);
ibImages.setVisibility(has_images && !show_images ? View.VISIBLE : View.GONE);
ibFull.setVisibility(View.VISIBLE); ibFull.setVisibility(View.VISIBLE);
ibImages.setVisibility(show_images ? View.GONE : View.VISIBLE);
webView.loadDataWithBaseURL("about:blank", themeHtml(html), "text/html", "UTF-8", null); webView.loadDataWithBaseURL("about:blank", themeHtml(html), "text/html", "UTF-8", null);
webView.setVisibility(View.VISIBLE);
pbBody.setVisibility(View.GONE); pbBody.setVisibility(View.GONE);
tvBody.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
} }
} }
private void onHideHtml(TupleMessageEx message) { private void onHideHtml(TupleMessageEx message) {
properties.setValue("html", message.id, false); properties.setValue("html", message.id, false);
ibImages.setVisibility(View.INVISIBLE);
ibFull.setVisibility(View.GONE); ibFull.setVisibility(View.GONE);
tvBody.setVisibility(View.INVISIBLE);
vwBody.setVisibility(View.GONE); vwBody.setVisibility(View.GONE);
Spanned body = properties.getBody(message.id);
tvBody.setText(body);
tvBody.setMovementMethod(null);
tvBody.setVisibility(View.VISIBLE);
showText(message); showText(message);
} }
@ -1804,12 +1809,14 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
tbHtml.setVisibility(hasWebView ? View.VISIBLE : View.GONE); tbHtml.setVisibility(hasWebView ? View.VISIBLE : View.GONE);
ibImages.setVisibility(has_images && !show_images ? View.VISIBLE : View.GONE); ibImages.setVisibility(has_images && !show_images ? View.VISIBLE : View.GONE);
tvBody.setText(body); tvBody.setText(body);
tvBody.setTextIsSelectable(false); tvBody.setTextIsSelectable(false);
tvBody.setTextIsSelectable(true); tvBody.setTextIsSelectable(true);
tvBody.setMovementMethod(new TouchHandler(message)); tvBody.setMovementMethod(new TouchHandler(message));
tvBody.setVisibility(View.VISIBLE);
pbBody.setVisibility(View.GONE); pbBody.setVisibility(View.GONE);
rvImage.setVisibility(adapterImage.getItemCount() > 0 ? View.VISIBLE : View.GONE); rvImage.setVisibility(adapterImage.getItemCount() > 0 ? View.VISIBLE : View.GONE);
} }

@ -706,7 +706,8 @@ public class FragmentMessages extends FragmentBase {
if (!values.containsKey(name)) if (!values.containsKey(name))
values.put(name, new ArrayList<Long>()); values.put(name, new ArrayList<Long>());
if (enabled) { if (enabled) {
values.get(name).add(id); if (!values.get(name).contains(id))
values.get(name).add(id);
if ("expanded".equals(name)) if ("expanded".equals(name))
handleExpand(id); handleExpand(id);
} else } else

Loading…
Cancel
Save