Remove viewport limitations

pull/156/head
M66B 6 years ago
parent 986dbfcac9
commit 2a11d95440

@ -1839,35 +1839,81 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
} }
private void onShowFull(TupleMessageEx message) { private void onShowFull(TupleMessageEx message) {
WebView webView = new WebView(context); Bundle args = new Bundle();
setupWebView(webView); args.putLong("id", message.id);
boolean show_images = properties.getValue("images", message.id); new SimpleTask<String>() {
@Override
protected String onExecute(Context context, Bundle args) {
long id = args.getLong("id");
WebSettings settings = webView.getSettings(); String html = properties.getHtml(id);
settings.setDefaultFontSize(Math.round(textSize));
settings.setDefaultFixedFontSize(Math.round(textSize)); // Remove viewport limitations
settings.setLoadsImagesAutomatically(show_images); Document doc = Jsoup.parse(html);
settings.setBuiltInZoomControls(true); for (Element meta : doc.select("meta").select("[name=viewport]")) {
settings.setDisplayZoomControls(false); String content = meta.attr("content");
String[] params = content.split(";");
if (params.length > 0) {
List<String> viewport = new ArrayList<>();
for (String param : params)
if (!param.toLowerCase().contains("maximum-scale") &&
!param.toLowerCase().contains("user-scalable"))
viewport.add(param.trim());
if (viewport.size() == 0)
meta.attr("content", "");
else
meta.attr("content", TextUtils.join(" ;", viewport) + ";");
}
}
String html = properties.getHtml(message.id); return doc.html();
webView.loadDataWithBaseURL("", html, "text/html", "UTF-8", null); }
final Dialog dialog = new Dialog(context, android.R.style.Theme_Black_NoTitleBar_Fullscreen); @Override
dialog.setContentView(webView); protected void onExecuted(Bundle args, String html) {
long id = args.getLong("id");
owner.getLifecycle().addObserver(new LifecycleObserver() { TupleMessageEx amessage = getMessage();
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE) if (amessage == null || !amessage.id.equals(id))
public void onCreate() { return;
dialog.show();
WebView webView = new WebView(context);
setupWebView(webView);
boolean show_images = properties.getValue("images", id);
WebSettings settings = webView.getSettings();
settings.setDefaultFontSize(Math.round(textSize));
settings.setDefaultFixedFontSize(Math.round(textSize));
settings.setLoadsImagesAutomatically(show_images);
settings.setBuiltInZoomControls(true);
settings.setDisplayZoomControls(false);
webView.loadDataWithBaseURL("", html, "text/html", "UTF-8", null);
final Dialog dialog = new Dialog(context, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
dialog.setContentView(webView);
owner.getLifecycle().addObserver(new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void onCreate() {
dialog.show();
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestroyed() {
dialog.dismiss();
}
});
} }
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) @Override
public void onDestroyed() { protected void onException(Bundle args, Throwable ex) {
dialog.dismiss(); Helper.unexpectedError(context, owner, ex);
} }
}); }.execute(context, owner, args, "message:full");
} }
private void setupWebView(WebView webView) { private void setupWebView(WebView webView) {

Loading…
Cancel
Save