diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java index 0a621f69ec..4d5ebfd8cd 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySetup.java +++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java @@ -209,20 +209,9 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac drawerLayout.closeDrawer(drawerContainer); onMenuOrder(R.string.title_setup_reorder_folders, TupleFolderSort.class); } - }); + }).setSeparated(); menus.add(order); - if (Helper.canAuthenticate(this)) - menus.add(new NavMenuItem(R.drawable.baseline_fingerprint_24, R.string.title_setup_authentication, new Runnable() { - @Override - public void run() { - drawerLayout.closeDrawer(drawerContainer); - onMenuBiometrics(); - } - }).setSeparated()); - else - order.setSeparated(); - menus.add(new NavMenuItem(R.drawable.baseline_help_24, R.string.menu_legend, new Runnable() { @Override public void run() { @@ -423,32 +412,6 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac fragmentTransaction.commit(); } - private void onMenuBiometrics() { - final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ActivitySetup.this); - final boolean biometrics = prefs.getBoolean("biometrics", false); - final boolean pro = ActivityBilling.isPro(this); - - Helper.authenticate(this, biometrics, new Runnable() { - @Override - public void run() { - if (pro) { - prefs.edit().putBoolean("biometrics", !biometrics).apply(); - ToastEx.makeText(ActivitySetup.this, - biometrics - ? R.string.title_setup_biometrics_disable - : R.string.title_setup_biometrics_enable, - Toast.LENGTH_LONG).show(); - } else - startActivity(new Intent(ActivitySetup.this, ActivityBilling.class)); - } - }, new Runnable() { - @Override - public void run() { - // Do nothing - } - }); - } - private void onMenuLegend() { if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) getSupportFragmentManager().popBackStack("legend", FragmentManager.POP_BACK_STACK_INCLUSIVE); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java index a10cc60ae3..ad910da654 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java @@ -21,6 +21,7 @@ package eu.faircode.email; import android.app.Dialog; import android.content.DialogInterface; +import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; @@ -46,6 +47,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.SwitchCompat; +import androidx.constraintlayout.widget.Group; import androidx.lifecycle.Lifecycle; import androidx.preference.PreferenceManager; @@ -54,6 +56,7 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer private SwitchCompat swDisplayHidden; private SwitchCompat swAutoDecrypt; private SwitchCompat swNoHistory; + private Button btnBiometrics; private Spinner spBiometricsTimeout; private Button btnPin; @@ -75,6 +78,7 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer swDisplayHidden = view.findViewById(R.id.swDisplayHidden); swAutoDecrypt = view.findViewById(R.id.swAutoDecrypt); swNoHistory = view.findViewById(R.id.swNoHistory); + btnBiometrics = view.findViewById(R.id.btnBiometrics); spBiometricsTimeout = view.findViewById(R.id.spBiometricsTimeout); btnPin = view.findViewById(R.id.btnPin); @@ -113,6 +117,40 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer } }); + btnBiometrics.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + final boolean biometrics = prefs.getBoolean("biometrics", false); + + Helper.authenticate(getActivity(), biometrics, new Runnable() { + @Override + public void run() { + boolean pro = ActivityBilling.isPro(getContext()); + if (pro) { + prefs.edit().putBoolean("biometrics", !biometrics).apply(); + btnBiometrics.setText(biometrics + ? R.string.title_setup_biometrics_disable + : R.string.title_setup_biometrics_enable); + } else + startActivity(new Intent(getContext(), ActivityBilling.class)); + } + }, new Runnable() { + @Override + public void run() { + // Do nothing + } + }); + } + }); + + btnPin.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + FragmentDialogPin fragment = new FragmentDialogPin(); + fragment.show(getParentFragmentManager(), "pin"); + } + }); + spBiometricsTimeout.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView adapterView, View view, int position, long id) { @@ -126,14 +164,6 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer } }); - btnPin.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - FragmentDialogPin fragment = new FragmentDialogPin(); - fragment.show(getParentFragmentManager(), "pin"); - } - }); - PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this); return view; @@ -192,6 +222,12 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer spBiometricsTimeout.setSelection(pos); break; } + + boolean biometrics = prefs.getBoolean("biometrics", false); + btnBiometrics.setText(biometrics + ? R.string.title_setup_biometrics_disable + : R.string.title_setup_biometrics_enable); + btnBiometrics.setEnabled(Helper.canAuthenticate(getContext())); } public static class FragmentDialogPin extends FragmentDialogBase { diff --git a/app/src/main/res/drawable/baseline_fingerprint_24.xml b/app/src/main/res/drawable/baseline_fingerprint_24.xml deleted file mode 100644 index a88e35d6d5..0000000000 --- a/app/src/main/res/drawable/baseline_fingerprint_24.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/layout/fragment_options_privacy.xml b/app/src/main/res/layout/fragment_options_privacy.xml index 2f9464645f..db8fcfb2e9 100644 --- a/app/src/main/res/layout/fragment_options_privacy.xml +++ b/app/src/main/res/layout/fragment_options_privacy.xml @@ -94,38 +94,41 @@ app:layout_constraintTop_toBottomOf="@id/swNoHistory" /> - + app:layout_constraintTop_toBottomOf="@id/tvBiometrics" />