diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt index 43c83e9f0f..3327c8d800 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt @@ -4,6 +4,8 @@ import android.app.Dialog import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.support.v4.app.DialogFragment +import android.text.Editable +import android.text.TextWatcher import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -14,9 +16,12 @@ import net.mullvad.mullvadvpn.ui.widget.Button import net.mullvad.mullvadvpn.util.JobTracker import net.mullvad.mullvadvpn.util.SegmentedInputFormatter +const val FULL_VOUCHER_CODE_LENGTH = "XXXX-XXXX-XXXX-XXXX".length + class RedeemVoucherDialogFragment : DialogFragment() { private val jobTracker = JobTracker() + private lateinit var redeemButton: Button private lateinit var voucherInput: EditText override fun onCreateView( @@ -26,7 +31,9 @@ class RedeemVoucherDialogFragment : DialogFragment() { ): View { val view = inflater.inflate(R.layout.redeem_voucher, container, false) - voucherInput = view.findViewById(R.id.voucher_code) + voucherInput = view.findViewById<EditText>(R.id.voucher_code).apply { + addTextChangedListener(ValidVoucherCodeChecker()) + } SegmentedInputFormatter(voucherInput, '-').apply { allCaps = true @@ -36,6 +43,13 @@ class RedeemVoucherDialogFragment : DialogFragment() { } } + redeemButton = view.findViewById<Button>(R.id.redeem).apply { + setEnabled(false) + setOnClickAction("action", jobTracker) { + dismiss() + } + } + view.findViewById<Button>(R.id.cancel).setOnClickAction("action", jobTracker) { activity?.onBackPressed() } @@ -62,4 +76,22 @@ class RedeemVoucherDialogFragment : DialogFragment() { super.onDestroyView() } + + inner class ValidVoucherCodeChecker : TextWatcher { + private var editRecursionCount = 0 + + override fun beforeTextChanged(text: CharSequence, start: Int, count: Int, after: Int) { + editRecursionCount += 1 + } + + override fun onTextChanged(text: CharSequence, start: Int, before: Int, count: Int) {} + + override fun afterTextChanged(text: Editable) { + editRecursionCount -= 1 + + if (editRecursionCount == 0) { + redeemButton.setEnabled(text.length == FULL_VOUCHER_CODE_LENGTH) + } + } + } } |
