For #12554: Helper class for password reveal on logins
parent
66d8591334
commit
3f25a28cf7
@ -0,0 +1,39 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
package org.mozilla.fenix.settings.logins
|
||||||
|
|
||||||
|
import android.text.InputType
|
||||||
|
import android.widget.ImageButton
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.appcompat.content.res.AppCompatResources
|
||||||
|
import org.mozilla.fenix.R
|
||||||
|
import org.mozilla.fenix.components.metrics.Event
|
||||||
|
import org.mozilla.fenix.ext.components
|
||||||
|
|
||||||
|
fun togglePasswordReveal(passwordText: TextView, revealPasswordButton: ImageButton) {
|
||||||
|
val context = passwordText.context
|
||||||
|
|
||||||
|
if (passwordText.inputType == InputType.TYPE_TEXT_VARIATION_PASSWORD
|
||||||
|
or InputType.TYPE_CLASS_TEXT
|
||||||
|
) {
|
||||||
|
context.components.analytics.metrics.track(Event.ViewLoginPassword)
|
||||||
|
passwordText.inputType = InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
|
||||||
|
revealPasswordButton.setImageDrawable(
|
||||||
|
AppCompatResources.getDrawable(context, R.drawable.mozac_ic_password_hide)
|
||||||
|
)
|
||||||
|
revealPasswordButton.contentDescription =
|
||||||
|
context.getString(R.string.saved_login_hide_password)
|
||||||
|
} else {
|
||||||
|
passwordText.inputType =
|
||||||
|
InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
|
||||||
|
revealPasswordButton.setImageDrawable(
|
||||||
|
AppCompatResources.getDrawable(context, R.drawable.mozac_ic_password_reveal)
|
||||||
|
)
|
||||||
|
revealPasswordButton.contentDescription =
|
||||||
|
context.getString(R.string.saved_login_reveal_password)
|
||||||
|
}
|
||||||
|
// We need to reset to take effect
|
||||||
|
passwordText.text = passwordText.text
|
||||||
|
}
|
@ -1,54 +0,0 @@
|
|||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
|
|
||||||
package org.mozilla.fenix.settings.logins.view
|
|
||||||
|
|
||||||
import android.text.InputType
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.appcompat.content.res.AppCompatResources
|
|
||||||
import kotlinx.android.extensions.LayoutContainer
|
|
||||||
import kotlinx.android.synthetic.main.fragment_edit_login.view.*
|
|
||||||
import org.mozilla.fenix.R
|
|
||||||
import org.mozilla.fenix.components.metrics.Event
|
|
||||||
import org.mozilla.fenix.ext.components
|
|
||||||
|
|
||||||
/**
|
|
||||||
* View that contains and configures the Edit Login screen
|
|
||||||
*/
|
|
||||||
@Suppress("ForbiddenComment")
|
|
||||||
class EditLoginView(
|
|
||||||
override val containerView: ViewGroup
|
|
||||||
) : LayoutContainer {
|
|
||||||
private val context = containerView.context
|
|
||||||
|
|
||||||
// TODO: create helper class for toggling passwords. https://github.com/mozilla-mobile/fenix/issues/12554
|
|
||||||
fun showPassword() {
|
|
||||||
val currText = containerView.passwordText?.text
|
|
||||||
context.components.analytics.metrics.track(Event.ViewLoginPassword)
|
|
||||||
containerView.passwordText?.inputType =
|
|
||||||
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
|
|
||||||
containerView.revealPasswordButton?.setImageDrawable(
|
|
||||||
AppCompatResources.getDrawable(context, R.drawable.mozac_ic_password_hide)
|
|
||||||
)
|
|
||||||
containerView.revealPasswordButton?.contentDescription =
|
|
||||||
context.resources.getString(R.string.saved_login_hide_password)
|
|
||||||
|
|
||||||
// For the new type to take effect you need to reset the text to it's current edited version
|
|
||||||
containerView.passwordText?.text = currText
|
|
||||||
}
|
|
||||||
|
|
||||||
fun hidePassword() {
|
|
||||||
val currText = containerView.passwordText?.text
|
|
||||||
containerView.passwordText?.inputType =
|
|
||||||
InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
|
|
||||||
containerView.revealPasswordButton?.setImageDrawable(
|
|
||||||
AppCompatResources.getDrawable(context, R.drawable.mozac_ic_password_reveal)
|
|
||||||
)
|
|
||||||
containerView.revealPasswordButton?.contentDescription =
|
|
||||||
context.getString(R.string.saved_login_reveal_password)
|
|
||||||
|
|
||||||
// For the new type to take effect you need to reset the text to it's current edited version
|
|
||||||
containerView.passwordText?.text = currText
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue