From ae5e261da6344b42f5c2e9309ee024ee8761c76a Mon Sep 17 00:00:00 2001 From: Kosh Date: Sat, 29 Apr 2017 02:12:20 +0800 Subject: [PATCH] this commit implements scorllToLineNumber to close #376 --- .../main/assets/highlight/styles/prettify.css | 27 ++++++++++++++++--- .../assets/highlight/styles/prettify_dark.css | 26 +++++++++++++++--- .../repos/code/prettifier/ViewerFragment.java | 2 +- .../repos/code/prettifier/ViewerMvp.java | 2 ++ .../code/prettifier/ViewerPresenter.java | 4 +++ .../prettifier/pretty/PrettifyWebView.java | 24 +++++++++++++++-- .../pretty/helper/GithubHelper.java | 2 -- .../pretty/helper/PrettifyHelper.java | 16 ++++++++++- 8 files changed, 89 insertions(+), 14 deletions(-) diff --git a/app/src/main/assets/highlight/styles/prettify.css b/app/src/main/assets/highlight/styles/prettify.css index d946fa0f..ef2f9142 100644 --- a/app/src/main/assets/highlight/styles/prettify.css +++ b/app/src/main/assets/highlight/styles/prettify.css @@ -13,6 +13,28 @@ ol.linenums { color: #727272; } +ol { + margin-left: 0; + padding-left: 0.2em; + counter-reset: ol-item +} + +ol li:nth-child(-n+9) { + padding-left: 4px; +} + +ol li { + margin-left: 0; + padding-left: 0; + list-style-type: none; + counter-increment: ol-item +} + +ol li:before { + content: counter(ol-item) " " +} + + li.L0, li.L1, li.L2, @@ -22,10 +44,7 @@ li.L5, li.L6, li.L7, li.L8, -li.L9 { - padding-left: 0.5em; - list-style-type: decimal; -} +li.L9 {} @media screen { diff --git a/app/src/main/assets/highlight/styles/prettify_dark.css b/app/src/main/assets/highlight/styles/prettify_dark.css index 5b60e563..2643781f 100644 --- a/app/src/main/assets/highlight/styles/prettify_dark.css +++ b/app/src/main/assets/highlight/styles/prettify_dark.css @@ -14,6 +14,27 @@ ol.linenums { color: #656d78; } +ol { + margin-left: 0; + padding-left: 0.2em; + counter-reset: ol-item +} + +ol li:nth-child(-n+9) { + padding-left: 4px; +} + +ol li { + margin-left: 0; + padding-left: 0; + list-style-type: none; + counter-increment: ol-item +} + +ol li:before { + content: counter(ol-item) " " +} + li.L0, li.L1, li.L2, @@ -23,10 +44,7 @@ li.L5, li.L6, li.L7, li.L8, -li.L9 { - padding-left: 0.5em; - list-style-type: decimal; -} +li.L9 {} @media screen { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java index a8f8e3bd..60889509 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java @@ -67,7 +67,7 @@ public class ViewerFragment extends BaseFragment implements ViewerMvp @Override public boolean isImage() { return isImage; } + + @NonNull @Override public String url() { + return url; + } } diff --git a/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java b/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java index 9fd38391..3415d9fc 100755 --- a/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java +++ b/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java @@ -108,7 +108,7 @@ public class PrettifyWebView extends NestedWebView { this.onContentChangedListener = onContentChangedListener; } - public void setSource(@NonNull String source, boolean wrap) { + public void setSource(@NonNull String source, boolean wrap, @Nullable String url) { WebSettings settings = getSettings(); settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING); setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); @@ -116,8 +116,28 @@ public class PrettifyWebView extends NestedWebView { settings.setBuiltInZoomControls(!wrap); if (!wrap) settings.setDisplayZoomControls(false); if (!InputHelper.isEmpty(source)) { - String page = PrettifyHelper.generateContent(source, AppHelper.isNightMode(getResources()), wrap); + String page = PrettifyHelper.generateContent(source, AppHelper.isNightMode(getResources()), wrap, url); post(() -> loadDataWithBaseURL("file:///android_asset/highlight/", page, "text/html", "utf-8", null)); + setOnContentChangedListener(progress -> { + Logger.e(progress); + if (progress == 100) { + int lineNo = 0; + if (url != null) { + try { + Uri uri = Uri.parse(url); + String lineNumber = uri.getEncodedFragment(); + Logger.e(lineNumber); + if (lineNumber != null) { + lineNumber = lineNumber.replace("L", ""); + lineNo = Integer.valueOf(lineNumber); + } + } catch (Exception ignored) {} + } + if (lineNo != 0) { + if (isAttachedToWindow()) loadUrl("javascript:scrollToLineNumber('" + lineNo + "')"); + } + } + }); } } diff --git a/app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java b/app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java index 0b602075..5cc5cbbc 100755 --- a/app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java +++ b/app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java @@ -6,7 +6,6 @@ import android.webkit.MimeTypeMap; import com.fastaccess.data.dao.NameParser; import com.fastaccess.helper.InputHelper; -import com.fastaccess.helper.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -37,7 +36,6 @@ public class GithubHelper { if (src.startsWith("http://") || src.startsWith("https://")) { continue; } - Logger.e(src); String finalSrc = "https://raw.githubusercontent.com/" + owner + "/" + repoName + "/master/" + src; source = source.replace("src=\"" + src + "\"", "src=\"" + finalSrc + "\""); } diff --git a/app/src/main/java/com/prettifier/pretty/helper/PrettifyHelper.java b/app/src/main/java/com/prettifier/pretty/helper/PrettifyHelper.java index 7118a4ef..35f29746 100755 --- a/app/src/main/java/com/prettifier/pretty/helper/PrettifyHelper.java +++ b/app/src/main/java/com/prettifier/pretty/helper/PrettifyHelper.java @@ -1,6 +1,7 @@ package com.prettifier.pretty.helper; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; /** * Created by Kosh on 25 Dec 2016, 9:12 PM @@ -19,6 +20,19 @@ public class PrettifyHelper { "\n" + "
%s
\n" + "\n" + + "" + "\n" + ""; @@ -53,7 +67,7 @@ public class PrettifyHelper { ""; - @NonNull public static String generateContent(@NonNull String source, boolean isDark, boolean wrap) { + @NonNull public static String generateContent(@NonNull String source, boolean isDark, boolean wrap, @Nullable String url) { return String.format(HTML_CONTENT, getStyle(isDark), wrap ? WRAPPED_STYLE : "", getFormattedSource(source)); }