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" />
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/tvBiometrics" />
+
+
+
+