Skip to content

Commit 934500d

Browse files
committed
Require passcode to turn off passcode settings
1 parent 7667b7b commit 934500d

3 files changed

Lines changed: 49 additions & 12 deletions

File tree

app/src/main/java/org/gnucash/android/ui/UxArgument.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,17 @@ public final class UxArgument {
3838
public static final String ORIGIN_ACCOUNT_UID = "origin_acccount_uid";
3939

4040
/**
41-
* Key for checking whether the passcode is enabled or not.
41+
* Key for checking whether the passcode is enabled or not
4242
*/
4343
public static final String ENABLED_PASSCODE = "enabled_passcode";
4444

4545
/**
46-
* Key for storing the passcode.
46+
* Key for disabling the passcode
47+
*/
48+
public static final String DISABLE_PASSCODE = "disable_passcode";
49+
50+
/**
51+
* Key for storing the passcode
4752
*/
4853
public static final String PASSCODE = "passcode";
4954

app/src/main/java/org/gnucash/android/ui/passcode/PasscodeLockScreenActivity.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ public void onPasscodeEntered(String pass) {
5050
Log.d(TAG, "Passcode: " + passcode);
5151

5252
if (passcode.equals(pass)) {
53+
if (UxArgument.DISABLE_PASSCODE.equals(getIntent().getStringExtra(UxArgument.DISABLE_PASSCODE))) {
54+
setResult(RESULT_OK);
55+
finish();
56+
return;
57+
}
5358
GnuCashApplication.PASSCODE_SESSION_INIT_TIME = System.currentTimeMillis();
5459
startActivity(new Intent()
5560
.setClassName(this, getIntent().getStringExtra(UxArgument.PASSCODE_CLASS_CALLER))
@@ -64,10 +69,18 @@ public void onPasscodeEntered(String pass) {
6469

6570
@Override
6671
public void onBackPressed() {
72+
setResult(RESULT_CANCELED);
73+
74+
if (UxArgument.DISABLE_PASSCODE.equals(getIntent().getStringExtra(UxArgument.DISABLE_PASSCODE))) {
75+
finish();
76+
return;
77+
}
78+
6779
GnuCashApplication.PASSCODE_SESSION_INIT_TIME = System.currentTimeMillis() - GnuCashApplication.SESSION_TIMEOUT;
6880
startActivity(new Intent(Intent.ACTION_MAIN)
6981
.addCategory(Intent.CATEGORY_HOME)
70-
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
82+
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
83+
);
7184
}
7285

7386
}

app/src/main/java/org/gnucash/android/ui/settings/PasscodePreferenceFragment.java

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333

3434
import org.gnucash.android.R;
3535
import org.gnucash.android.ui.UxArgument;
36+
import org.gnucash.android.ui.passcode.PasscodeLockScreenActivity;
3637
import org.gnucash.android.ui.passcode.PasscodePreferenceActivity;
3738

3839
/**
@@ -43,9 +44,13 @@
4344
public class PasscodePreferenceFragment extends PreferenceFragment {
4445

4546
/**
46-
* * Request code for retrieving passcode to store
47+
* Request code for retrieving passcode to store
4748
*/
4849
public static final int PASSCODE_REQUEST_CODE = 2;
50+
/**
51+
* Request code for disabling passcode
52+
*/
53+
public static final int REQUEST_DISABLE_PASSCODE = 3;
4954

5055
private SharedPreferences.Editor editor;
5156
private CheckBoxPreference checkBoxPreference;
@@ -78,7 +83,9 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
7883
if ((Boolean) newValue) {
7984
startActivityForResult(intent, PASSCODE_REQUEST_CODE);
8085
} else {
81-
checkBoxPreference.setTitle(passcodeDisabled);
86+
Intent passIntent = new Intent(getActivity(), PasscodeLockScreenActivity.class);
87+
passIntent.putExtra(UxArgument.DISABLE_PASSCODE, UxArgument.DISABLE_PASSCODE);
88+
startActivityForResult(passIntent, REQUEST_DISABLE_PASSCODE);
8289
}
8390
editor.putBoolean(UxArgument.ENABLED_PASSCODE, (Boolean) newValue);
8491
editor.commit();
@@ -99,13 +106,25 @@ public boolean onPreferenceClick(Preference preference) {
99106
public void onActivityResult(int requestCode, int resultCode, Intent data) {
100107
super.onActivityResult(requestCode, resultCode, data);
101108

102-
if (resultCode == Activity.RESULT_OK && requestCode == PASSCODE_REQUEST_CODE && data!= null) {
103-
editor.putString(UxArgument.PASSCODE, data.getStringExtra(UxArgument.PASSCODE));
104-
Toast.makeText(getActivity(), R.string.toast_passcode_set, Toast.LENGTH_SHORT).show();
105-
checkBoxPreference.setTitle(getString(R.string.title_passcode_enabled));
106-
} else {
107-
editor.putBoolean(UxArgument.ENABLED_PASSCODE, false);
108-
checkBoxPreference.setChecked(false);
109+
switch (requestCode) {
110+
case PASSCODE_REQUEST_CODE:
111+
if (resultCode == Activity.RESULT_OK && data != null) {
112+
editor.putString(UxArgument.PASSCODE, data.getStringExtra(UxArgument.PASSCODE));
113+
editor.putBoolean(UxArgument.ENABLED_PASSCODE, true);
114+
Toast.makeText(getActivity(), R.string.toast_passcode_set, Toast.LENGTH_SHORT).show();
115+
checkBoxPreference.setTitle(getString(R.string.title_passcode_enabled));
116+
}
117+
if (resultCode == Activity.RESULT_CANCELED) {
118+
editor.putBoolean(UxArgument.ENABLED_PASSCODE, false);
119+
checkBoxPreference.setChecked(false);
120+
checkBoxPreference.setTitle(getString(R.string.title_passcode_disabled));
121+
}
122+
break;
123+
case REQUEST_DISABLE_PASSCODE:
124+
boolean flag = (resultCode == Activity.RESULT_OK) ? false : true;
125+
editor.putBoolean(UxArgument.ENABLED_PASSCODE, flag);
126+
checkBoxPreference.setChecked(flag);
127+
break;
109128
}
110129
editor.commit();
111130
}

0 commit comments

Comments
 (0)