Integrated setup help and privacy information

This commit is contained in:
M66B
2019-07-23 14:02:19 +02:00
parent 54b7c6a3a8
commit 6df557f62b
10 changed files with 174 additions and 41 deletions

View File

@@ -235,14 +235,13 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
}
}));
if (Helper.getIntentPrivacy().resolveActivity(pm) != null)
menus.add(new NavMenuItem(R.drawable.baseline_account_box_24, R.string.menu_privacy, new Runnable() {
@Override
public void run() {
drawerLayout.closeDrawer(drawerContainer);
onMenuPrivacy();
}
}));
menus.add(new NavMenuItem(R.drawable.baseline_account_box_24, R.string.menu_privacy, new Runnable() {
@Override
public void run() {
drawerLayout.closeDrawer(drawerContainer);
onMenuPrivacy();
}
}));
menus.add(new NavMenuItem(R.drawable.baseline_info_24, R.string.menu_about, new Runnable() {
@Override
@@ -474,7 +473,11 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
}
private void onMenuPrivacy() {
Helper.view(this, Helper.getIntentPrivacy());
Bundle args = new Bundle();
args.putString("name", "PRIVACY.md");
FragmentDialogMarkdown fragment = new FragmentDialogMarkdown();
fragment.setArguments(args);
fragment.show(getSupportFragmentManager(), "privacy");
}
private void onMenuAbout() {

View File

@@ -322,14 +322,13 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
}
}));
if (Helper.getIntentPrivacy().resolveActivity(pm) != null)
extra.add(new NavMenuItem(R.drawable.baseline_account_box_24, R.string.menu_privacy, new Runnable() {
@Override
public void run() {
drawerLayout.closeDrawer(drawerContainer);
onMenuPrivacy();
}
}));
extra.add(new NavMenuItem(R.drawable.baseline_account_box_24, R.string.menu_privacy, new Runnable() {
@Override
public void run() {
drawerLayout.closeDrawer(drawerContainer);
onMenuPrivacy();
}
}));
extra.add(new NavMenuItem(R.drawable.baseline_info_24, R.string.menu_about, new Runnable() {
@Override
@@ -899,7 +898,11 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
}
private void onMenuPrivacy() {
Helper.view(this, Helper.getIntentPrivacy());
Bundle args = new Bundle();
args.putString("name", "PRIVACY.md");
FragmentDialogMarkdown fragment = new FragmentDialogMarkdown();
fragment.setArguments(args);
fragment.show(getSupportFragmentManager(), "privacy");
}
private void onMenuAbout() {

View File

@@ -0,0 +1,75 @@
package eu.faircode.email;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.io.InputStream;
import io.noties.markwon.Markwon;
public class FragmentDialogMarkdown extends DialogFragmentEx {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
final View dview = LayoutInflater.from(getContext()).inflate(R.layout.dialog_markdown, null);
final TextView tvMarkdown = dview.findViewById(R.id.tvMarkdown);
final ContentLoadingProgressBar pbWait = dview.findViewById(R.id.pbWait);
tvMarkdown.setText(null);
Dialog dialog = new Dialog(getContext());
//dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(dview);
dialog.getWindow().setLayout(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT);
new SimpleTask<Spanned>() {
@Override
protected void onPreExecute(Bundle args) {
tvMarkdown.setVisibility(View.GONE);
pbWait.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(Bundle args) {
tvMarkdown.setVisibility(View.VISIBLE);
pbWait.setVisibility(View.GONE);
}
@Override
protected Spanned onExecute(Context context, Bundle args) throws Throwable {
String name = args.getString("name");
try (InputStream is = context.getAssets().open(name)) {
byte[] buffer = new byte[is.available()];
is.read(buffer);
Markwon markwon = Markwon.create(context);
return markwon.toMarkdown(new String(buffer));
}
}
@Override
protected void onExecuted(Bundle args, Spanned markdown) {
tvMarkdown.setText(markdown);
tvMarkdown.setMovementMethod(LinkMovementMethod.getInstance());
}
@Override
protected void onException(Bundle args, Throwable ex) {
Helper.unexpectedError(getFragmentManager(), ex);
}
}.execute(getContext(), getActivity(), getArguments(), "markdown:read");
return dialog;
}
}

View File

@@ -165,7 +165,6 @@ public class FragmentQuickSetup extends FragmentBase {
@Override
public void onPrepareOptionsMenu(Menu menu) {
PackageManager pm = getContext().getPackageManager();
menu.findItem(R.id.menu_help).setVisible(Helper.getIntentSetupHelp().resolveActivity(pm) != null);
super.onPrepareOptionsMenu(menu);
}
@@ -181,7 +180,11 @@ public class FragmentQuickSetup extends FragmentBase {
}
private void onMenuHelp() {
startActivity(Helper.getIntentSetupHelp());
Bundle args = new Bundle();
args.putString("name", "SETUP.md");
FragmentDialogMarkdown fragment = new FragmentDialogMarkdown();
fragment.setArguments(args);
fragment.show(getChildFragmentManager(), "help");
}
private void onSave(boolean check) {

View File

@@ -141,11 +141,14 @@ public class FragmentSetup extends FragmentBase {
}
});
btnHelp.setVisibility(Helper.getIntentSetupHelp().resolveActivity(pm) == null ? View.GONE : View.VISIBLE);
btnHelp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(Helper.getIntentSetupHelp());
Bundle args = new Bundle();
args.putString("name", "SETUP.md");
FragmentDialogMarkdown fragment = new FragmentDialogMarkdown();
fragment.setArguments(args);
fragment.show(getChildFragmentManager(), "help");
}
});

View File

@@ -227,24 +227,12 @@ public class Helper {
}
}
static Intent getIntentSetupHelp() {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://github.com/M66B/FairEmail/blob/master/SETUP.md#setup-help"));
return intent;
}
static Intent getIntentFAQ() {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(Helper.FAQ_URI));
return intent;
}
static Intent getIntentPrivacy() {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://github.com/M66B/FairEmail/blob/master/PRIVACY.md#fairemail"));
return intent;
}
static Intent getIntentOpenKeychain() {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://f-droid.org/en/packages/org.sufficientlysecure.keychain/"));