From c387ab9b665bdc73654b6db5f8b805563d3ef425 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 29 Apr 2019 18:59:33 +0200 Subject: [PATCH] Added button to show original message fullscreen --- .../eu/faircode/email/AdapterMessage.java | 200 ++++++++++-------- .../res/drawable/baseline_fullscreen_24.xml | 10 + .../main/res/layout/item_message_compact.xml | 14 +- .../main/res/layout/item_message_normal.xml | 13 +- app/src/main/res/values/strings.xml | 1 + 5 files changed, 147 insertions(+), 91 deletions(-) create mode 100644 app/src/main/res/drawable/baseline_fullscreen_24.xml diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index d35c6fdfe2..4ccff5cdeb 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -242,6 +242,7 @@ public class AdapterMessage extends RecyclerView.Adapter 0 ? View.INVISIBLE : View.GONE); // For performance reasons the WebView is created when needed only if (!(vwBody instanceof WebView)) { @@ -1395,89 +1404,9 @@ public class AdapterMessage extends RecyclerView.Adapter 0) // scroll - getParent().requestDisallowInterceptTouchEvent(true); - } else // zoom - getParent().requestDisallowInterceptTouchEvent(true); - return super.onTouchEvent(event); - } - - int dy = 0; - - @Override - protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) { - dy = deltaY; - return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent); - } - - @Override - protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { - int range = computeVerticalScrollRange() - computeVerticalScrollExtent(); - Log.i("Overscroll=" + scrollY + "/" + clampedY + " range=" + range + " dy=" + dy); - if (clampedY && range > 0 && (scrollY == 0 || scrollY == range)) - properties.scrollBy(0, dy); - else - super.onOverScrolled(scrollX, scrollY, clampedX, clampedY); - } }; - webView.setWebViewClient(new WebViewClient() { - public boolean shouldOverrideUrlLoading(WebView view, String url) { - Log.i("Open url=" + url); - - Uri uri = Uri.parse(url); - if ("cid".equals(uri.getScheme()) || "data".equals(uri.getScheme())) - return false; - - onOpenLink(uri); - return true; - } - }); - - webView.setDownloadListener(new DownloadListener() { - public void onDownloadStart( - String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { - Log.i("Download url=" + url + " mime type=" + mimetype); - Uri uri = Uri.parse(url); - Helper.view(context, owner, uri, true); - } - }); - - webView.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View view) { - WebView.HitTestResult result = ((WebView) view).getHitTestResult(); - if (result.getType() == WebView.HitTestResult.IMAGE_TYPE || - result.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { - Log.i("Long press url=" + result.getExtra()); - - Uri uri = Uri.parse(result.getExtra()); - Helper.view(context, owner, uri, true); - - return true; - } - return false; - } - }); - - webView.setBackgroundColor(Color.TRANSPARENT); - - WebSettings settings = webView.getSettings(); - settings.setUseWideViewPort(true); - settings.setLoadWithOverviewMode(true); - settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING); - settings.setBuiltInZoomControls(true); - settings.setDisplayZoomControls(false); - settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); - settings.setAllowFileAccess(false); - - if (monospaced) - settings.setStandardFontFamily("monospace"); + setupWebView(webView); webView.setId(vwBody.getId()); webView.setVisibility(vwBody.getVisibility()); @@ -1541,15 +1470,19 @@ public class AdapterMessage extends RecyclerView.Adapter 0 ? View.VISIBLE : View.GONE); } diff --git a/app/src/main/res/drawable/baseline_fullscreen_24.xml b/app/src/main/res/drawable/baseline_fullscreen_24.xml new file mode 100644 index 0000000000..48e3c31043 --- /dev/null +++ b/app/src/main/res/drawable/baseline_fullscreen_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/item_message_compact.xml b/app/src/main/res/layout/item_message_compact.xml index cac65417c9..46e909ec58 100644 --- a/app/src/main/res/layout/item_message_compact.xml +++ b/app/src/main/res/layout/item_message_compact.xml @@ -523,7 +523,19 @@ android:layout_height="wrap_content" android:layout_marginTop="3dp" android:layout_marginEnd="6dp" + android:contentDescription="@string/title_legend_show_images" android:src="@drawable/baseline_image_24" + app:layout_constraintEnd_toStartOf="@+id/ibFull" + app:layout_constraintTop_toBottomOf="@id/bnvActions" /> + + @@ -532,7 +544,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="bottom" - app:constraint_referenced_ids="btnHtml,ibQuotes,ibImages" /> + app:constraint_referenced_ids="btnHtml,ibQuotes,ibImages,ibFull" /> + + @@ -524,7 +535,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="bottom" - app:constraint_referenced_ids="btnHtml,ibQuotes,ibImages" /> + app:constraint_referenced_ids="btnHtml,ibQuotes,ibImages,ibFull" /> Avatar Show quotes Show images + Show fullscreen Edit Default color Close hint