Add explaination for unlocking during annoy

This commit is contained in:
Jonas Lochmann 2022-03-07 01:00:00 +01:00
parent d7d2f5eef3
commit d72b6801dd
No known key found for this signature in database
GPG key ID: 8B8C9AEE10FA5B36
4 changed files with 80 additions and 2 deletions

View file

@ -88,8 +88,16 @@ class AnnoyActivity : AppCompatActivity(), ActivityViewModelHolder {
} }
}.observe(this) { binding.reasonText = it } }.observe(this) { binding.reasonText = it }
binding.unlockTemporarilyButton.setOnClickListener { logic.annoyLogic.doManualTempUnlock() } binding.unlockTemporarilyButton.setOnClickListener {
binding.parentUnlockButton.setOnClickListener { showAuthenticationScreen() } AnnoyUnlockDialogFragment.newInstance(AnnoyUnlockDialogFragment.UnlockDuration.Short)
.show(supportFragmentManager)
}
binding.parentUnlockButton.setOnClickListener {
AnnoyUnlockDialogFragment.newInstance(AnnoyUnlockDialogFragment.UnlockDuration.Long)
.show(supportFragmentManager)
}
binding.useBackdoorButton.setOnClickListener { BackdoorDialogFragment().show(supportFragmentManager) } binding.useBackdoorButton.setOnClickListener { BackdoorDialogFragment().show(supportFragmentManager) }
model.authenticatedUser.observe(this) { user -> model.authenticatedUser.observe(this) { user ->

View file

@ -0,0 +1,62 @@
/*
* TimeLimit Copyright <C> 2019 - 2022 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package io.timelimit.android.ui.manipulation
import android.app.Dialog
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentManager
import io.timelimit.android.R
import io.timelimit.android.extensions.showSafe
import io.timelimit.android.logic.DefaultAppLogic
import io.timelimit.android.ui.main.ActivityViewModelHolder
class AnnoyUnlockDialogFragment: DialogFragment() {
companion object {
private const val DIALOG_TAG = "AnnoyUnlockDialogFragment"
private const val UNLOCK_DURATION = "unlockDuration"
fun newInstance(duration: UnlockDuration) = AnnoyUnlockDialogFragment().apply {
arguments = Bundle().apply {
putSerializable(UNLOCK_DURATION, duration)
}
}
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val duration = requireArguments().getSerializable(UNLOCK_DURATION) as UnlockDuration
val activity = requireActivity() as ActivityViewModelHolder
val logic = DefaultAppLogic.with(requireContext())
return AlertDialog.Builder(requireContext(), theme)
.setMessage(R.string.annoy_unlock_dialog_text)
.setNegativeButton(R.string.generic_cancel, null)
.setPositiveButton(R.string.annoy_unlock_dialog_action) { _, _ ->
when (duration) {
UnlockDuration.Short -> logic.annoyLogic.doManualTempUnlock()
UnlockDuration.Long -> activity.showAuthenticationScreen()
}.let {/* require handling all cases */}
}
.create()
}
fun show(fragmentManager: FragmentManager) = showSafe(fragmentManager, DIALOG_TAG)
enum class UnlockDuration {
Short, Long
}
}

View file

@ -119,6 +119,10 @@
<string name="annoy_reason"> <string name="annoy_reason">
Folgendes wurde manipuliert: %s Folgendes wurde manipuliert: %s
</string> </string>
<string name="annoy_unlock_dialog_text">Nach dem Entsperren sollte die Ursache
für das Sperren behoben werden. Ansonsten wird das Gerät bald wieder gesperrt.
</string>
<string name="annoy_unlock_dialog_action">Entsperren</string>
<string name="authentication_required_overlay_title">Melden Sie sich an, um Einstellungen zu ändern</string> <string name="authentication_required_overlay_title">Melden Sie sich an, um Einstellungen zu ändern</string>
<string name="authentication_required_overlay_text">Die Einstellungen werden wieder gesperrt, wenn Sie TimeLimit verlassen</string> <string name="authentication_required_overlay_text">Die Einstellungen werden wieder gesperrt, wenn Sie TimeLimit verlassen</string>

View file

@ -163,6 +163,10 @@
<string name="annoy_reason"> <string name="annoy_reason">
This was manipulated: %s This was manipulated: %s
</string> </string>
<string name="annoy_unlock_dialog_text">After unlocking, you should fix the cause for the blocking.
Otherwise, the device will be locked again.
</string>
<string name="annoy_unlock_dialog_action">Unlock</string>
<string name="authentication_required_overlay_title">Sign in to change settings</string> <string name="authentication_required_overlay_title">Sign in to change settings</string>
<string name="authentication_required_overlay_text">The settings will be locked again when you leave TimeLimit</string> <string name="authentication_required_overlay_text">The settings will be locked again when you leave TimeLimit</string>