[fenix] For https://github.com/mozilla-mobile/fenix/issues/12554: Helper class for password reveal on logins
parent
5e6561dd47
commit
197a076ef2
@ -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