Add ability to adjust tap to reveal timeout

This commit is contained in:
Michael Schättgen 2019-03-26 00:06:39 +01:00
parent 16bf195ac0
commit cebf15ba44
10 changed files with 91 additions and 2 deletions

View file

@ -35,6 +35,15 @@ public class Preferences {
_prefs.edit().putBoolean("pref_intro", done).apply();
}
public void setTapToRevealTime(int number) {
_prefs.edit().putInt("pref_tap_to_reveal_time", number).apply();
}
public int getTapToRevealTime() {
return _prefs.getInt("pref_tap_to_reveal_time", 30);
}
public int getTimeout() {
return _prefs.getInt("pref_timeout", -1);
}

View file

@ -11,6 +11,7 @@ import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.TextView;
import com.beemdevelopment.aegis.crypto.KeyStoreHandle;
@ -152,6 +153,24 @@ public class Dialogs {
showSecureDialog(dialog);
}
public static void showNumberPickerDialog(Activity activity, NumberInputListener listener) {
View view = activity.getLayoutInflater().inflate(R.layout.dialog_number_picker, null);
NumberPicker numberPicker = view.findViewById(R.id.numberPicker);
numberPicker.setMinValue(3);
numberPicker.setMaxValue(60);
numberPicker.setValue(new Preferences(activity.getApplicationContext()).getTapToRevealTime());
numberPicker.setWrapSelectorWheel(true);
AlertDialog dialog = new AlertDialog.Builder(activity)
.setTitle(R.string.set_number)
.setView(view)
.setPositiveButton(android.R.string.ok, (dialog1, which) ->
listener.onNumberInputResult(numberPicker.getValue()))
.create();
showSecureDialog(dialog);
}
public static void showFingerprintDialog(Activity activity, Dialogs.SlotListener listener) {
View view = activity.getLayoutInflater().inflate(R.layout.dialog_fingerprint, null);
TextView textFingerprint = view.findViewById(R.id.text_fingerprint);
@ -196,6 +215,10 @@ public class Dialogs {
showSecureDialog(dialog);
}
public interface NumberInputListener {
void onNumberInputResult(int number);
}
public interface TextInputListener {
void onTextInputResult(String text);
}

View file

@ -68,6 +68,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
_entryListView.setListener(this);
_entryListView.setShowAccountName(getPreferences().isAccountNameVisible());
_entryListView.setTapToReveal(getPreferences().isTapToRevealEnabled());
_entryListView.setTapToRevealTime(getPreferences().getTapToRevealTime());
// set up the floating action button
_fabMenu = findViewById(R.id.fab);
@ -160,8 +161,10 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
} else if (data.getBooleanExtra("needsRefresh", false)) {
boolean showAccountName = getPreferences().isAccountNameVisible();
boolean tapToReveal = getPreferences().isTapToRevealEnabled();
int tapToRevealTime = getPreferences().getTapToRevealTime();
_entryListView.setShowAccountName(showAccountName);
_entryListView.setTapToReveal(tapToReveal);
_entryListView.setTapToRevealTime(tapToRevealTime);
_entryListView.refresh(true);
}
}

View file

@ -13,6 +13,7 @@ import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
import com.beemdevelopment.aegis.Preferences;
import com.beemdevelopment.aegis.db.DatabaseFileCredentials;
import com.beemdevelopment.aegis.helpers.FingerprintHelper;
import com.beemdevelopment.aegis.helpers.PermissionHelper;
@ -163,7 +164,22 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
}
});
Preference tapToRevealTimePreference = findPreference("pref_tap_to_reveal_time");
tapToRevealTimePreference.setSummary(app.getPreferences().getTapToRevealTime() + " seconds");
tapToRevealTimePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Dialogs.showNumberPickerDialog(getActivity(), new Dialogs.NumberInputListener() {
@Override
public void onNumberInputResult(int number) {
app.getPreferences().setTapToRevealTime(number);
tapToRevealTimePreference.setSummary(number + " seconds");
_result.putExtra("needsRefresh", true);
}
});
return false;
}
});
_encryptionPreference = (SwitchPreference) findPreference("pref_encryption");
_encryptionPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

View file

@ -25,6 +25,7 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
private static Listener _listener;
private boolean _showAccountName;
private boolean _tapToReveal;
private int _tapToRevealTime;
private String _groupFilter;
// keeps track of the viewholders that are currently bound
@ -45,6 +46,10 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
_tapToReveal = tapToReveal;
}
public void setTapToRevealTime(int number) {
_tapToRevealTime = number;
}
public void addEntry(DatabaseEntry entry) {
_entries.add(entry);
if (!isEntryFiltered(entry)) {
@ -194,6 +199,7 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
DatabaseEntry entry = _shownEntries.get(position);
boolean showProgress = !isPeriodUniform() && entry.getInfo() instanceof TotpInfo;
holder.setData(entry, _showAccountName, showProgress, _tapToReveal);
holder.setTapToRevealTime(_tapToRevealTime);
if (showProgress) {
holder.startRefreshLoop();
}

View file

@ -31,6 +31,7 @@ public class EntryHolder extends RecyclerView.ViewHolder {
private boolean _codeIsRevealed;
private boolean _tapToReveal;
private int _tapToRevealTime;
private PeriodProgressBar _progressBar;
@ -105,6 +106,10 @@ public class EntryHolder extends RecyclerView.ViewHolder {
}
}
public void setTapToRevealTime(int number) {
_tapToRevealTime = number;
}
public void setOnRefreshClickListener(View.OnClickListener listener) {
_buttonRefresh.setOnClickListener(listener);
}
@ -123,7 +128,7 @@ public class EntryHolder extends RecyclerView.ViewHolder {
public void revealCode() {
updateCode();
_hiddenHandler.postDelayed(this::hideCode, 30000);
_hiddenHandler.postDelayed(this::hideCode, _tapToRevealTime * 1000);
_codeIsRevealed = true;
}

View file

@ -155,6 +155,10 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
_adapter.setTapToReveal(tapToReveal);
}
public void setTapToRevealTime(int number) {
_adapter.setTapToRevealTime(number);
}
public void addEntry(DatabaseEntry entry) {
_adapter.addEntry(entry);
checkPeriodUniformity();