11/*
2- * Copyright (c) 2014 Oleksandr Tyshkovets <olexandr.tyshkovets@gmail.com>
2+ * Copyright (c) 2014 - 2015 Oleksandr Tyshkovets <olexandr.tyshkovets@gmail.com>
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
3333
3434import org .gnucash .android .R ;
3535import org .gnucash .android .ui .UxArgument ;
36+ import org .gnucash .android .ui .passcode .PasscodeLockScreenActivity ;
3637import org .gnucash .android .ui .passcode .PasscodePreferenceActivity ;
3738
3839/**
4344public class PasscodePreferenceFragment extends PreferenceFragment {
4445
4546 /**
46- * * Request code for retrieving passcode to store
47+ * Request code for retrieving passcode to store
4748 */
48- public static final int PASSCODE_REQUEST_CODE = 2 ;
49+ public static final int PASSCODE_REQUEST_CODE = 0x2 ;
50+ /**
51+ * Request code for disabling passcode
52+ */
53+ public static final int REQUEST_DISABLE_PASSCODE = 0x3 ;
54+ /**
55+ * Request code for changing passcode
56+ */
57+ public static final int REQUEST_CHANGE_PASSCODE = 0x4 ;
4958
50- private SharedPreferences .Editor editor ;
51- private CheckBoxPreference checkBoxPreference ;
59+ private SharedPreferences .Editor mEditor ;
60+ private CheckBoxPreference mCheckBoxPreference ;
5261
5362 @ Override
5463 public void onCreate (Bundle savedInstanceState ) {
@@ -65,31 +74,31 @@ public void onCreate(Bundle savedInstanceState) {
6574 public void onResume () {
6675 super .onResume ();
6776
68- editor = PreferenceManager .getDefaultSharedPreferences (getActivity ().getApplicationContext ()).edit ();
77+ mEditor = PreferenceManager .getDefaultSharedPreferences (getActivity ().getApplicationContext ()).edit ();
6978 final Intent intent = new Intent (getActivity (), PasscodePreferenceActivity .class );
7079
71- checkBoxPreference = (CheckBoxPreference ) findPreference (getString (R .string .key_enable_passcode ));
72- final String passcodeEnabled = getString ( R . string . title_passcode_enabled );
73- final String passcodeDisabled = getString (R .string .title_passcode_disabled );
74- checkBoxPreference . setTitle ( checkBoxPreference . isChecked () ? passcodeEnabled : passcodeDisabled );
75- checkBoxPreference .setOnPreferenceChangeListener (new OnPreferenceChangeListener () {
76- @ Override
77- public boolean onPreferenceChange (Preference preference , Object newValue ) {
78- if ((Boolean ) newValue ) {
79- startActivityForResult (intent , PASSCODE_REQUEST_CODE );
80- } else {
81- checkBoxPreference . setTitle ( passcodeDisabled );
82- }
83- editor . putBoolean ( UxArgument . ENABLED_PASSCODE , ( Boolean ) newValue );
84- editor . commit ();
85- return true ;
86- }
87- });
80+ mCheckBoxPreference = (CheckBoxPreference ) findPreference (getString (R .string .key_enable_passcode ));
81+ mCheckBoxPreference . setTitle ( mCheckBoxPreference . isChecked ()
82+ ? getString (R .string .title_passcode_enabled )
83+ : getString ( R . string . title_passcode_disabled ) );
84+ mCheckBoxPreference .setOnPreferenceChangeListener (new OnPreferenceChangeListener () {
85+ @ Override
86+ public boolean onPreferenceChange (Preference preference , Object newValue ) {
87+ if ((Boolean ) newValue ) {
88+ startActivityForResult (intent , PASSCODE_REQUEST_CODE );
89+ } else {
90+ Intent passIntent = new Intent ( getActivity (), PasscodeLockScreenActivity . class );
91+ passIntent . putExtra ( UxArgument . DISABLE_PASSCODE , UxArgument . DISABLE_PASSCODE );
92+ startActivityForResult ( passIntent , REQUEST_DISABLE_PASSCODE );
93+ }
94+ return true ;
95+ }
96+ });
8897 findPreference (getString (R .string .key_change_passcode ))
8998 .setOnPreferenceClickListener (new Preference .OnPreferenceClickListener () {
9099 @ Override
91100 public boolean onPreferenceClick (Preference preference ) {
92- startActivityForResult (intent , PASSCODE_REQUEST_CODE );
101+ startActivityForResult (intent , REQUEST_CHANGE_PASSCODE );
93102 return true ;
94103 }
95104 });
@@ -99,15 +108,35 @@ public boolean onPreferenceClick(Preference preference) {
99108 public void onActivityResult (int requestCode , int resultCode , Intent data ) {
100109 super .onActivityResult (requestCode , resultCode , data );
101110
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 );
111+ switch (requestCode ) {
112+ case PASSCODE_REQUEST_CODE :
113+ if (resultCode == Activity .RESULT_OK && data != null ) {
114+ mEditor .putString (UxArgument .PASSCODE , data .getStringExtra (UxArgument .PASSCODE ));
115+ mEditor .putBoolean (UxArgument .ENABLED_PASSCODE , true );
116+ Toast .makeText (getActivity (), R .string .toast_passcode_set , Toast .LENGTH_SHORT ).show ();
117+ mCheckBoxPreference .setTitle (getString (R .string .title_passcode_enabled ));
118+ }
119+ if (resultCode == Activity .RESULT_CANCELED ) {
120+ mEditor .putBoolean (UxArgument .ENABLED_PASSCODE , false );
121+ mCheckBoxPreference .setChecked (false );
122+ mCheckBoxPreference .setTitle (getString (R .string .title_passcode_disabled ));
123+ }
124+ break ;
125+ case REQUEST_DISABLE_PASSCODE :
126+ boolean flag = resultCode != Activity .RESULT_OK ;
127+ mEditor .putBoolean (UxArgument .ENABLED_PASSCODE , flag );
128+ mCheckBoxPreference .setChecked (flag );
129+ break ;
130+ case REQUEST_CHANGE_PASSCODE :
131+ if (resultCode == Activity .RESULT_OK && data != null ) {
132+ mEditor .putString (UxArgument .PASSCODE , data .getStringExtra (UxArgument .PASSCODE ));
133+ mEditor .putBoolean (UxArgument .ENABLED_PASSCODE , true );
134+ Toast .makeText (getActivity (), R .string .toast_passcode_set , Toast .LENGTH_SHORT ).show ();
135+ mCheckBoxPreference .setTitle (getString (R .string .title_passcode_enabled ));
136+ }
137+ break ;
109138 }
110- editor .commit ();
139+ mEditor .commit ();
111140 }
112141
113142}
0 commit comments