@@ -181,30 +181,62 @@ class PrivacySettingsFragment : DSLSettingsFragment(R.string.preferences__privac
181
181
182
182
sectionHeaderPref(R .string.PrivacySettingsFragment__app_security )
183
183
184
- if (state.isObsoletePasswordEnabled) {
184
+ // JW: added toggle between password and Android screenlock
185
+ switchPref(
186
+ title = DSLSettingsText .from(R .string.preferences_app_protection__method_passphrase),
187
+ summary = DSLSettingsText .from(R .string.preferences_app_protection__method_passphrase_summary),
188
+ isChecked = state.isProtectionMethodPassphrase,
189
+ onClick = {
190
+ // After a togggle, we disable both passphrase and Android keylock.
191
+ // Remove the passphrase if there is one set
192
+ if (state.isObsoletePasswordEnabled) {
193
+ MasterSecretUtil .changeMasterSecretPassphrase(
194
+ activity,
195
+ KeyCachingService .getMasterSecret(context),
196
+ MasterSecretUtil .UNENCRYPTED_PASSPHRASE
197
+ )
198
+ TextSecurePreferences .setPasswordDisabled(activity, true )
199
+ val intent = Intent (context, KeyCachingService ::class .java)
200
+ intent.action = KeyCachingService .DISABLE_ACTION
201
+ requireActivity().startService(intent)
202
+ }
203
+ TextSecurePreferences .setProtectionMethod(activity, ! state.isProtectionMethodPassphrase)
204
+ viewModel.setNoLock()
205
+ }
206
+ )
207
+
208
+ // if (state.isObsoletePasswordEnabled) {
209
+ if (viewModel.isPassphraseSelected()) { // JW: method changed
185
210
switchPref(
186
211
title = DSLSettingsText .from(R .string.preferences__enable_passphrase),
187
212
summary = DSLSettingsText .from(R .string.preferences__lock_signal_and_message_notifications_with_a_passphrase),
188
- isChecked = true ,
213
+ isChecked = state.isObsoletePasswordEnabled, // JW ,
189
214
onClick = {
190
- MaterialAlertDialogBuilder (requireContext()).apply {
191
- setTitle(R .string.ApplicationPreferencesActivity_disable_passphrase )
192
- setMessage(R .string.ApplicationPreferencesActivity_this_will_permanently_unlock_signal_and_message_notifications )
193
- setIcon(R .drawable.symbol_error_triangle_fill_24)
194
- setPositiveButton(R .string.ApplicationPreferencesActivity_disable ) { _, _ ->
195
- MasterSecretUtil .changeMasterSecretPassphrase(
196
- activity,
197
- KeyCachingService .getMasterSecret(context),
198
- MasterSecretUtil .UNENCRYPTED_PASSPHRASE
199
- )
200
- TextSecurePreferences .setPasswordDisabled(activity, true )
201
- val intent = Intent (activity, KeyCachingService ::class .java)
202
- intent.action = KeyCachingService .DISABLE_ACTION
203
- requireActivity().startService(intent)
204
- viewModel.refresh()
215
+ if (state.isObsoletePasswordEnabled) { // JW: added if else
216
+ MaterialAlertDialogBuilder (requireContext()).apply {
217
+ setTitle(R .string.ApplicationPreferencesActivity_disable_passphrase )
218
+ setMessage(R .string.ApplicationPreferencesActivity_this_will_permanently_unlock_signal_and_message_notifications )
219
+ setIcon(R .drawable.symbol_error_triangle_fill_24)
220
+ setPositiveButton(R .string.ApplicationPreferencesActivity_disable ) { _, _ ->
221
+ MasterSecretUtil .changeMasterSecretPassphrase(
222
+ activity,
223
+ KeyCachingService .getMasterSecret(context),
224
+ MasterSecretUtil .UNENCRYPTED_PASSPHRASE
225
+ )
226
+ TextSecurePreferences .setPasswordDisabled(activity, true )
227
+ val intent = Intent (activity, KeyCachingService ::class .java)
228
+ intent.action = KeyCachingService .DISABLE_ACTION
229
+ requireActivity().startService(intent)
230
+ viewModel.refresh()
231
+ }
232
+ setNegativeButton(android.R .string.cancel, null )
233
+ show()
205
234
}
206
- setNegativeButton(android.R .string.cancel, null )
207
- show()
235
+ } else {
236
+ // enable password
237
+ val intent = Intent (activity, PassphraseChangeActivity ::class .java)
238
+ startActivity(intent)
239
+ viewModel.refresh()
208
240
}
209
241
}
210
242
)
@@ -236,14 +268,15 @@ class PrivacySettingsFragment : DSLSettingsFragment(R.string.preferences__privac
236
268
237
269
clickPref(
238
270
title = DSLSettingsText .from(R .string.preferences__inactivity_timeout_interval),
271
+ summary = DSLSettingsText .from(getScreenLockInactivityTimeoutSummary(60 * state.obsoletePasswordTimeout.toLong())), // JW
239
272
onClick = {
240
273
childFragmentManager.clearFragmentResult(TimeDurationPickerDialog .RESULT_DURATION )
241
274
childFragmentManager.clearFragmentResultListener(TimeDurationPickerDialog .RESULT_DURATION )
242
275
childFragmentManager.setFragmentResultListener(TimeDurationPickerDialog .RESULT_DURATION , this @PrivacySettingsFragment) { _, bundle ->
243
276
val timeout = bundle.getLong(TimeDurationPickerDialog .RESULT_KEY_DURATION_MILLISECONDS ).milliseconds.inWholeMinutes.toInt()
244
277
viewModel.setObsoletePasswordTimeout(max(timeout, 1 ))
245
278
}
246
- TimeDurationPickerDialog .create(state.screenLockActivityTimeout .seconds).show(childFragmentManager, null )
279
+ TimeDurationPickerDialog .create(state.obsoletePasswordTimeout .seconds * 60 ).show(childFragmentManager, null ) // JW
247
280
}
248
281
)
249
282
} else {
@@ -255,7 +288,7 @@ class PrivacySettingsFragment : DSLSettingsFragment(R.string.preferences__privac
255
288
isChecked = state.screenLock && isKeyguardSecure,
256
289
isEnabled = isKeyguardSecure,
257
290
onClick = {
258
- viewModel.setScreenLockEnabled (! state.screenLock)
291
+ viewModel.setOnlyScreenlockEnabled (! state.screenLock) // JW: changed
259
292
260
293
val intent = Intent (requireContext(), KeyCachingService ::class .java)
261
294
intent.action = KeyCachingService .LOCK_TOGGLED_EVENT
0 commit comments