diff --git a/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyActivity.kt b/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyActivity.kt index cd19ad9..2f05697 100644 --- a/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyActivity.kt +++ b/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyActivity.kt @@ -88,8 +88,16 @@ class AnnoyActivity : AppCompatActivity(), ActivityViewModelHolder { } }.observe(this) { binding.reasonText = it } - binding.unlockTemporarilyButton.setOnClickListener { logic.annoyLogic.doManualTempUnlock() } - binding.parentUnlockButton.setOnClickListener { showAuthenticationScreen() } + binding.unlockTemporarilyButton.setOnClickListener { + AnnoyUnlockDialogFragment.newInstance(AnnoyUnlockDialogFragment.UnlockDuration.Short) + .show(supportFragmentManager) + } + + binding.parentUnlockButton.setOnClickListener { + AnnoyUnlockDialogFragment.newInstance(AnnoyUnlockDialogFragment.UnlockDuration.Long) + .show(supportFragmentManager) + } + binding.useBackdoorButton.setOnClickListener { BackdoorDialogFragment().show(supportFragmentManager) } model.authenticatedUser.observe(this) { user -> diff --git a/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyUnlockDialogFragment.kt b/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyUnlockDialogFragment.kt new file mode 100644 index 0000000..c5e3bbe --- /dev/null +++ b/app/src/main/java/io/timelimit/android/ui/manipulation/AnnoyUnlockDialogFragment.kt @@ -0,0 +1,62 @@ +/* + * TimeLimit Copyright 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 . + */ +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 + } +} \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 23a2ea9..0358f3a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -119,6 +119,10 @@ Folgendes wurde manipuliert: %s + Nach dem Entsperren sollte die Ursache + für das Sperren behoben werden. Ansonsten wird das Gerät bald wieder gesperrt. + + Entsperren Melden Sie sich an, um Einstellungen zu ändern Die Einstellungen werden wieder gesperrt, wenn Sie TimeLimit verlassen diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2c76f97..0636aa9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -163,6 +163,10 @@ This was manipulated: %s + After unlocking, you should fix the cause for the blocking. + Otherwise, the device will be locked again. + + Unlock Sign in to change settings The settings will be locked again when you leave TimeLimit