6262import org .gnucash .android .model .Transaction ;
6363import org .gnucash .android .ui .UxArgument ;
6464import org .gnucash .android .ui .account .AccountsActivity ;
65+ import org .gnucash .android .ui .passcode .PasscodeLockScreenActivity ;
6566import org .gnucash .android .ui .passcode .PasscodePreferenceActivity ;
6667
6768import java .io .File ;
@@ -201,8 +202,13 @@ protected void onCreate(Bundle savedInstanceState) {
201202
202203 pref = findPreference (getString (R .string .key_enable_passcode ));
203204 pref .setOnPreferenceChangeListener (this );
204- pref .setTitle (((CheckBoxPreference ) pref ).isChecked () ?
205- getString (R .string .title_passcode_enabled ) : getString (R .string .title_passcode_disabled ));
205+ pref .setTitle (((CheckBoxPreference ) pref ).isChecked ()
206+ ? getString (R .string .title_passcode_enabled )
207+ : getString (R .string .title_passcode_disabled )
208+ );
209+
210+ pref = findPreference (getString (R .string .key_change_passcode ));
211+ pref .setOnPreferenceClickListener (this );
206212 }
207213 }
208214
@@ -251,12 +257,10 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
251257 startActivityForResult (new Intent (this , PasscodePreferenceActivity .class ),
252258 PasscodePreferenceFragment .PASSCODE_REQUEST_CODE );
253259 } else {
254- preference .setTitle (getString (R .string .title_passcode_disabled ));
260+ Intent passIntent = new Intent (this , PasscodeLockScreenActivity .class );
261+ passIntent .putExtra (UxArgument .DISABLE_PASSCODE , UxArgument .DISABLE_PASSCODE );
262+ startActivityForResult (passIntent , PasscodePreferenceFragment .REQUEST_DISABLE_PASSCODE );
255263 }
256- PreferenceManager .getDefaultSharedPreferences (getApplicationContext ())
257- .edit ()
258- .putBoolean (UxArgument .ENABLED_PASSCODE , (Boolean ) newValue )
259- .commit ();
260264 } else if (preference .getKey ().equals (getString (R .string .key_use_double_entry ))){
261265 setImbalanceAccountsHidden ((Boolean ) newValue );
262266 }
@@ -373,7 +377,7 @@ public boolean onPreferenceClick(Preference preference) {
373377
374378 if (key .equals (getString (R .string .key_change_passcode ))){
375379 startActivityForResult (new Intent (this , PasscodePreferenceActivity .class ),
376- PasscodePreferenceFragment .PASSCODE_REQUEST_CODE );
380+ PasscodePreferenceFragment .REQUEST_CHANGE_PASSCODE );
377381 return true ;
378382 }
379383
@@ -567,17 +571,6 @@ public void onClick(DialogInterface dialog, int which) {
567571
568572 @ Override
569573 public void onActivityResult (int requestCode , int resultCode , Intent data ) {
570- if (resultCode == Activity .RESULT_CANCELED ) {
571- if (requestCode == PasscodePreferenceFragment .PASSCODE_REQUEST_CODE ) {
572- PreferenceManager .getDefaultSharedPreferences (getApplicationContext ())
573- .edit ()
574- .putBoolean (UxArgument .ENABLED_PASSCODE , false )
575- .commit ();
576- ((CheckBoxPreference ) findPreference (getString (R .string .key_enable_passcode ))).setChecked (false );
577- }
578- return ;
579- }
580-
581574 switch (requestCode ) {
582575 case AccountsActivity .REQUEST_PICK_ACCOUNTS_FILE :
583576 try {
@@ -589,12 +582,48 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
589582 }
590583 break ;
591584 case PasscodePreferenceFragment .PASSCODE_REQUEST_CODE :
592- if (data != null ) {
585+ if (resultCode == Activity . RESULT_OK && data != null ) {
593586 PreferenceManager .getDefaultSharedPreferences (getApplicationContext ())
594587 .edit ()
595588 .putString (UxArgument .PASSCODE , data .getStringExtra (UxArgument .PASSCODE ))
596589 .commit ();
597- Toast .makeText (getApplicationContext (), R .string .toast_passcode_set , Toast .LENGTH_SHORT ).show ();
590+ PreferenceManager .getDefaultSharedPreferences (getApplicationContext ())
591+ .edit ()
592+ .putBoolean (UxArgument .ENABLED_PASSCODE , true )
593+ .commit ();
594+ Toast .makeText (this , R .string .toast_passcode_set , Toast .LENGTH_SHORT ).show ();
595+ findPreference (getString (R .string .key_enable_passcode )).setTitle (getString (R .string .title_passcode_enabled ));
596+ }
597+ if (resultCode == Activity .RESULT_CANCELED ) {
598+ PreferenceManager .getDefaultSharedPreferences (getApplicationContext ())
599+ .edit ()
600+ .putBoolean (UxArgument .ENABLED_PASSCODE , false )
601+ .commit ();
602+ ((CheckBoxPreference ) findPreference (getString (R .string .key_enable_passcode ))).setChecked (false );
603+ findPreference (getString (R .string .key_enable_passcode )).setTitle (getString (R .string .title_passcode_disabled ));
604+ }
605+ break ;
606+
607+ case PasscodePreferenceFragment .REQUEST_DISABLE_PASSCODE :
608+ boolean flag = resultCode != Activity .RESULT_OK ;
609+ PreferenceManager .getDefaultSharedPreferences (getApplicationContext ())
610+ .edit ()
611+ .putBoolean (UxArgument .ENABLED_PASSCODE , flag )
612+ .commit ();
613+ ((CheckBoxPreference ) findPreference (getString (R .string .key_enable_passcode ))).setChecked (flag );
614+ break ;
615+
616+ case PasscodePreferenceFragment .REQUEST_CHANGE_PASSCODE :
617+ if (resultCode == Activity .RESULT_OK && data != null ) {
618+ PreferenceManager .getDefaultSharedPreferences (getApplicationContext ())
619+ .edit ()
620+ .putString (UxArgument .PASSCODE , data .getStringExtra (UxArgument .PASSCODE ))
621+ .commit ();
622+ PreferenceManager .getDefaultSharedPreferences (getApplicationContext ())
623+ .edit ()
624+ .putBoolean (UxArgument .ENABLED_PASSCODE , true )
625+ .commit ();
626+ Toast .makeText (this , R .string .toast_passcode_set , Toast .LENGTH_SHORT ).show ();
598627 findPreference (getString (R .string .key_enable_passcode )).setTitle (getString (R .string .title_passcode_enabled ));
599628 }
600629 break ;
0 commit comments