2323import android .content .SharedPreferences ;
2424import android .net .Uri ;
2525import android .os .Bundle ;
26+ import android .preference .CheckBoxPreference ;
2627import android .preference .EditTextPreference ;
2728import android .preference .Preference ;
2829import android .preference .PreferenceManager ;
3435import com .actionbarsherlock .view .MenuItem ;
3536import org .thoughtcrime .securesms .contacts .ContactAccessor ;
3637import org .thoughtcrime .securesms .contacts .ContactIdentityManager ;
37- import org .thoughtcrime .securesms .crypto .IdentityKeyUtil ;
3838import org .thoughtcrime .securesms .crypto .MasterSecret ;
3939import org .thoughtcrime .securesms .crypto .MasterSecretUtil ;
40+ import org .thoughtcrime .securesms .service .KeyCachingService ;
4041import org .thoughtcrime .securesms .util .DynamicLanguage ;
4142import org .thoughtcrime .securesms .util .DynamicTheme ;
4243import org .thoughtcrime .securesms .util .MemoryCleaner ;
@@ -53,7 +54,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
5354 implements SharedPreferences .OnSharedPreferenceChangeListener
5455{
5556
56- private static final int PICK_IDENTITY_CONTACT = 1 ;
57+ private static final int PICK_IDENTITY_CONTACT = 1 ;
58+ private static final int ENABLE_PASSPHRASE_ACTIVITY = 2 ;
5759
5860 public static final String RINGTONE_PREF = "pref_key_ringtone" ;
5961 public static final String VIBRATE_PREF = "pref_key_vibrate" ;
@@ -73,17 +75,15 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
7375
7476 private static final String DISPLAY_CATEGORY_PREF = "pref_display_category" ;
7577
76- private static final String VIEW_MY_IDENTITY_PREF = "pref_view_identity" ;
77- private static final String MANAGE_IDENTITIES_PREF = "pref_manage_identity" ;
7878 private static final String CHANGE_PASSPHRASE_PREF = "pref_change_passphrase" ;
79+ public static final String DISABLE_PASSPHRASE_PREF = "pref_disable_passphrase" ;
7980
8081 public static final String USE_LOCAL_MMS_APNS_PREF = "pref_use_local_apns" ;
8182 public static final String MMSC_HOST_PREF = "pref_apn_mmsc_host" ;
8283 public static final String MMSC_PROXY_HOST_PREF = "pref_apn_mms_proxy" ;
8384 public static final String MMSC_PROXY_PORT_PREF = "pref_apn_mms_proxy_port" ;
8485
8586 public static final String SMS_DELIVERY_REPORT_PREF = "pref_delivery_report_sms" ;
86- public static final String MMS_DELIVERY_REPORT_PREF = "pref_delivery_report_mms" ;
8787
8888 public static final String THREAD_TRIM_ENABLED = "pref_trim_threads" ;
8989 public static final String THREAD_TRIM_LENGTH = "pref_trim_length" ;
@@ -110,16 +110,14 @@ protected void onCreate(Bundle icicle) {
110110 initializeIdentitySelection ();
111111 initializeEditTextSummaries ();
112112
113- this .findPreference (VIEW_MY_IDENTITY_PREF )
114- .setOnPreferenceClickListener (new ViewMyIdentityClickListener ());
115- this .findPreference (MANAGE_IDENTITIES_PREF )
116- .setOnPreferenceClickListener (new ManageIdentitiesClickListener ());
117113 this .findPreference (CHANGE_PASSPHRASE_PREF )
118114 .setOnPreferenceClickListener (new ChangePassphraseClickListener ());
119115 this .findPreference (THREAD_TRIM_NOW )
120116 .setOnPreferenceClickListener (new TrimNowClickListener ());
121117 this .findPreference (THREAD_TRIM_LENGTH )
122118 .setOnPreferenceChangeListener (new TrimLengthValidationListener ());
119+ this .findPreference (DISABLE_PASSPHRASE_PREF )
120+ .setOnPreferenceChangeListener (new DisablePassphraseClickListener ());
123121 }
124122
125123 @ Override
@@ -151,9 +149,12 @@ public void onDestroy() {
151149 public void onActivityResult (int reqCode , int resultCode , Intent data ) {
152150 super .onActivityResult (reqCode , resultCode , data );
153151
152+ Log .w ("ApplicationPreferencesActivity" , "Got result: " + resultCode + " for req: " + reqCode );
153+
154154 if (resultCode == Activity .RESULT_OK ) {
155155 switch (reqCode ) {
156- case PICK_IDENTITY_CONTACT : handleIdentitySelection (data ); break ;
156+ case PICK_IDENTITY_CONTACT : handleIdentitySelection (data ); break ;
157+ case ENABLE_PASSPHRASE_ACTIVITY : finish (); break ;
157158 }
158159 }
159160 }
@@ -247,37 +248,6 @@ public boolean onPreferenceClick(Preference preference) {
247248 }
248249 }
249250
250- private class ViewMyIdentityClickListener implements Preference .OnPreferenceClickListener {
251- @ Override
252- public boolean onPreferenceClick (Preference preference ) {
253- Intent viewIdentityIntent = new Intent (ApplicationPreferencesActivity .this , ViewIdentityActivity .class );
254- viewIdentityIntent .putExtra ("identity_key" , IdentityKeyUtil .getIdentityKey (ApplicationPreferencesActivity .this ));
255- viewIdentityIntent .putExtra ("title" , getString (R .string .ApplicationPreferencesActivity_my ) + " " +
256- getString (R .string .ViewIdentityActivity_identity_fingerprint ));
257- startActivity (viewIdentityIntent );
258-
259- return true ;
260- }
261- }
262-
263- private class ManageIdentitiesClickListener implements Preference .OnPreferenceClickListener {
264- @ Override
265- public boolean onPreferenceClick (Preference preference ) {
266- MasterSecret masterSecret = (MasterSecret )getIntent ().getParcelableExtra ("master_secret" );
267-
268- if (masterSecret != null ) {
269- Intent manageIntent = new Intent (ApplicationPreferencesActivity .this , ReviewIdentitiesActivity .class );
270- manageIntent .putExtra ("master_secret" , masterSecret );
271- startActivity (manageIntent );
272- } else {
273- Toast .makeText (ApplicationPreferencesActivity .this ,
274- R .string .ApplicationPreferenceActivity_you_need_to_have_entered_your_passphrase_before_managing_keys ,
275- Toast .LENGTH_LONG ).show ();
276- }
277-
278- return true ;
279- }
280- }
281251
282252 private class ChangePassphraseClickListener implements Preference .OnPreferenceClickListener {
283253 @ Override
@@ -319,6 +289,48 @@ public void onClick(DialogInterface dialog, int which) {
319289 }
320290 }
321291
292+ private class DisablePassphraseClickListener implements Preference .OnPreferenceChangeListener {
293+
294+ @ Override
295+ public boolean onPreferenceChange (final Preference preference , Object newValue ) {
296+ if (!((CheckBoxPreference )preference ).isChecked ()) {
297+ AlertDialog .Builder builder = new AlertDialog .Builder (ApplicationPreferencesActivity .this );
298+ builder .setTitle (R .string .ApplicationPreferencesActivity_disable_storage_encryption );
299+ builder .setMessage (R .string .ApplicationPreferencesActivity_warning_this_will_disable_storage_encryption_for_all_messages );
300+ builder .setIcon (android .R .drawable .ic_dialog_alert );
301+ builder .setPositiveButton (R .string .ApplicationPreferencesActivity_disable , new DialogInterface .OnClickListener () {
302+ @ Override
303+ public void onClick (DialogInterface dialog , int which ) {
304+ MasterSecret masterSecret = getIntent ().getParcelableExtra ("master_secret" );
305+ MasterSecretUtil .changeMasterSecretPassphrase (ApplicationPreferencesActivity .this ,
306+ masterSecret ,
307+ MasterSecretUtil .UNENCRYPTED_PASSPHRASE );
308+
309+
310+ PreferenceManager .getDefaultSharedPreferences (ApplicationPreferencesActivity .this )
311+ .edit ()
312+ .putBoolean (DISABLE_PASSPHRASE_PREF , true )
313+ .commit ();
314+
315+ ((CheckBoxPreference )preference ).setChecked (true );
316+
317+ Intent intent = new Intent (ApplicationPreferencesActivity .this , KeyCachingService .class );
318+ intent .setAction (KeyCachingService .DISABLE_ACTION );
319+ startService (intent );
320+ }
321+ });
322+ builder .setNegativeButton (android .R .string .cancel , null );
323+ builder .show ();
324+ } else {
325+ Intent intent = new Intent (ApplicationPreferencesActivity .this ,
326+ PassphraseChangeActivity .class );
327+ startActivityForResult (intent , ENABLE_PASSPHRASE_ACTIVITY );
328+ }
329+
330+ return false ;
331+ }
332+ }
333+
322334 private class TrimLengthValidationListener implements Preference .OnPreferenceChangeListener {
323335
324336 public TrimLengthValidationListener () {
@@ -343,7 +355,7 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
343355 return false ;
344356 }
345357
346- preference .setSummary (( String ) newValue + " " +
358+ preference .setSummary (newValue + " " +
347359 getString (R .string .ApplicationPreferencesActivity_messages_per_conversation ));
348360 return true ;
349361 }
0 commit comments