mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-02-26 08:47:23 +00:00
parent
1eef930dbb
commit
1b1394cf5d
@ -53,7 +53,7 @@ dependencies {
|
|||||||
implementation 'com.android.support:design:26.0.0'
|
implementation 'com.android.support:design:26.0.0'
|
||||||
implementation 'com.android.support:support-v4:26.0.0'
|
implementation 'com.android.support:support-v4:26.0.0'
|
||||||
implementation 'com.jakewharton:butterknife:8.7.0'
|
implementation 'com.jakewharton:butterknife:8.7.0'
|
||||||
implementation 'us.feras.mdv:markdownview:1.1.0'
|
implementation 'com.atlassian.commonmark:commonmark:0.9.0'
|
||||||
implementation 'org.bouncycastle:bcprov-jdk15on:1.57'
|
implementation 'org.bouncycastle:bcprov-jdk15on:1.57'
|
||||||
implementation 'org.bouncycastle:bcpkix-jdk15on:1.57'
|
implementation 'org.bouncycastle:bcpkix-jdk15on:1.57'
|
||||||
implementation 'com.google.android.gms:play-services-safetynet:9.0.1'
|
implementation 'com.google.android.gms:play-services-safetynet:9.0.1'
|
||||||
|
@ -15,9 +15,9 @@ import android.widget.LinearLayout;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.topjohnwu.magisk.R;
|
import com.topjohnwu.magisk.R;
|
||||||
|
import com.topjohnwu.magisk.asyncs.MarkDownWindow;
|
||||||
import com.topjohnwu.magisk.asyncs.ProcessRepoZip;
|
import com.topjohnwu.magisk.asyncs.ProcessRepoZip;
|
||||||
import com.topjohnwu.magisk.components.AlertDialogBuilder;
|
import com.topjohnwu.magisk.components.AlertDialogBuilder;
|
||||||
import com.topjohnwu.magisk.components.MarkDownWindow;
|
|
||||||
import com.topjohnwu.magisk.database.RepoDatabaseHelper;
|
import com.topjohnwu.magisk.database.RepoDatabaseHelper;
|
||||||
import com.topjohnwu.magisk.module.Module;
|
import com.topjohnwu.magisk.module.Module;
|
||||||
import com.topjohnwu.magisk.module.Repo;
|
import com.topjohnwu.magisk.module.Repo;
|
||||||
@ -97,7 +97,8 @@ public class ReposAdapter extends SectionedAdapter<ReposAdapter.SectionHolder, R
|
|||||||
holder.author.setText(TextUtils.isEmpty(author) ? null : context.getString(R.string.author, author));
|
holder.author.setText(TextUtils.isEmpty(author) ? null : context.getString(R.string.author, author));
|
||||||
holder.description.setText(repo.getDescription());
|
holder.description.setText(repo.getDescription());
|
||||||
|
|
||||||
holder.infoLayout.setOnClickListener(v -> new MarkDownWindow(null, repo.getDetailUrl(), context));
|
holder.infoLayout.setOnClickListener(v ->
|
||||||
|
new MarkDownWindow((Activity) context, null, repo.getDetailUrl()).exec());
|
||||||
|
|
||||||
holder.downloadImage.setOnClickListener(v -> {
|
holder.downloadImage.setOnClickListener(v -> {
|
||||||
String filename = repo.getName() + "-" + repo.getVersion() + ".zip";
|
String filename = repo.getName() + "-" + repo.getVersion() + ".zip";
|
||||||
|
@ -0,0 +1,50 @@
|
|||||||
|
package com.topjohnwu.magisk.asyncs;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.support.v7.app.AlertDialog;
|
||||||
|
import android.webkit.WebView;
|
||||||
|
|
||||||
|
import com.topjohnwu.magisk.R;
|
||||||
|
import com.topjohnwu.magisk.utils.WebService;
|
||||||
|
|
||||||
|
import org.commonmark.node.Node;
|
||||||
|
import org.commonmark.parser.Parser;
|
||||||
|
import org.commonmark.renderer.html.HtmlRenderer;
|
||||||
|
|
||||||
|
public class MarkDownWindow extends ParallelTask<Void, Void, String> {
|
||||||
|
|
||||||
|
private String mTitle, mUrl;
|
||||||
|
|
||||||
|
public MarkDownWindow(Activity context, String title, String url) {
|
||||||
|
super(context);
|
||||||
|
mTitle = title;
|
||||||
|
mUrl = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String doInBackground(Void... voids) {
|
||||||
|
String md = WebService.getString(mUrl);
|
||||||
|
Parser parser = Parser.builder().build();
|
||||||
|
HtmlRenderer renderer = HtmlRenderer.builder().build();
|
||||||
|
Node doc = parser.parse(md);
|
||||||
|
return renderer.render(doc);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(String html) {
|
||||||
|
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
|
||||||
|
alert.setTitle(mTitle);
|
||||||
|
|
||||||
|
WebView wv = new WebView(getActivity());
|
||||||
|
|
||||||
|
html = String.format(
|
||||||
|
"<link rel='stylesheet' type='text/css' href='file:///android_asset/%s.css'/> %s",
|
||||||
|
getMagiskManager().isDarkTheme ? "dark" : "light", html);
|
||||||
|
|
||||||
|
wv.loadDataWithBaseURL("fake://", html, "text/html", "UTF-8", null);
|
||||||
|
|
||||||
|
alert.setView(wv);
|
||||||
|
alert.setNegativeButton(R.string.close, (dialog, id) -> dialog.dismiss());
|
||||||
|
alert.show();
|
||||||
|
}
|
||||||
|
}
|
@ -1,31 +0,0 @@
|
|||||||
package com.topjohnwu.magisk.components;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.support.v7.app.AlertDialog;
|
|
||||||
|
|
||||||
import com.topjohnwu.magisk.MagiskManager;
|
|
||||||
import com.topjohnwu.magisk.R;
|
|
||||||
import com.topjohnwu.magisk.utils.Logger;
|
|
||||||
import com.topjohnwu.magisk.utils.Utils;
|
|
||||||
|
|
||||||
import us.feras.mdv.MarkdownView;
|
|
||||||
|
|
||||||
public class MarkDownWindow {
|
|
||||||
|
|
||||||
public MarkDownWindow(String title, String url, Context context) {
|
|
||||||
MagiskManager magiskManager = Utils.getMagiskManager(context);
|
|
||||||
AlertDialog.Builder alert = new AlertDialog.Builder(context);
|
|
||||||
alert.setTitle(title);
|
|
||||||
|
|
||||||
Logger.dev("WebView: URL = " + url);
|
|
||||||
|
|
||||||
MarkdownView md = new MarkdownView(context);
|
|
||||||
md.loadMarkdownFile(url, "file:///android_asset/" +
|
|
||||||
(magiskManager.isDarkTheme ? "dark" : "light") + ".css");
|
|
||||||
|
|
||||||
alert.setView(md);
|
|
||||||
alert.setNegativeButton(R.string.close, (dialog, id) -> dialog.dismiss());
|
|
||||||
alert.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user