Skip to content
Snippets Groups Projects
Commit efd1c551 authored by Kamal Bramwell's avatar Kamal Bramwell
Browse files

Added privacy on TextInputDialogs

parent 25b7c4b1
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,7 @@ package io.xxlabs.messenger.ui.dialog.textinput ...@@ -2,6 +2,7 @@ package io.xxlabs.messenger.ui.dialog.textinput
import android.content.DialogInterface import android.content.DialogInterface
import android.os.Bundle import android.os.Bundle
import android.text.InputType
import android.text.Spannable import android.text.Spannable
import android.text.SpannableStringBuilder import android.text.SpannableStringBuilder
import android.text.method.LinkMovementMethod import android.text.method.LinkMovementMethod
...@@ -24,12 +25,16 @@ class TextInputDialog : XxBottomSheetDialog() { ...@@ -24,12 +25,16 @@ class TextInputDialog : XxBottomSheetDialog() {
private val dialogUI: TextInputDialogUI by lazy { private val dialogUI: TextInputDialogUI by lazy {
requireArguments().get(ARG_UI) as TextInputDialogUI requireArguments().get(ARG_UI) as TextInputDialogUI
} }
private val isSensitive: Boolean by lazy {
requireArguments().getBoolean(ARG_SENSITIVE)
}
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View { ): View {
binding = DataBindingUtil.inflate( binding = DataBindingUtil.inflate(
inflater, inflater,
R.layout.component_textinput_dialog, R.layout.component_textinput_dialog,
...@@ -45,11 +50,20 @@ class TextInputDialog : XxBottomSheetDialog() { ...@@ -45,11 +50,20 @@ class TextInputDialog : XxBottomSheetDialog() {
} }
initClickListeners() initClickListeners()
setInputPrivacy()
binding.lifecycleOwner = viewLifecycleOwner binding.lifecycleOwner = viewLifecycleOwner
binding.ui = dialogUI binding.ui = dialogUI
return binding.root return binding.root
} }
private fun setInputPrivacy() {
if (isSensitive) {
binding.edittextDialogTextInput.editText?.apply {
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
}
}
}
private fun initClickListeners() { private fun initClickListeners() {
binding.edittextDialogPositiveButton.setOnClickListener { binding.edittextDialogPositiveButton.setOnClickListener {
dismiss() dismiss()
...@@ -98,11 +112,12 @@ class TextInputDialog : XxBottomSheetDialog() { ...@@ -98,11 +112,12 @@ class TextInputDialog : XxBottomSheetDialog() {
companion object Factory { companion object Factory {
private const val ARG_UI: String = "ui" private const val ARG_UI: String = "ui"
private const val ARG_SENSITIVE: String = "sensitive"
fun newInstance(dialogUI: TextInputDialogUI): TextInputDialog = fun newInstance(dialogUI: TextInputDialogUI, isSensitive: Boolean = false): TextInputDialog =
TextInputDialog().apply { TextInputDialog().apply {
arguments = Bundle().apply { arguments = Bundle().apply {
putSerializable(ARG_UI, dialogUI) putSerializable(ARG_UI, dialogUI)
putBoolean(ARG_SENSITIVE, isSensitive)
} }
} }
} }
......
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="ui"
type="io.xxlabs.messenger.ui.dialog.textinput.TextInputDialogUI" />
</data>
<androidx.cardview.widget.CardView
android:id="@+id/infoDialogRoot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/bottom_sheet_dialog_corner_radius">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/edittext_dialog_title"
android:text="@{ui.title}"
android:layout_marginBottom="@dimen/registration_body_vertical_margin"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/edittext_dialog_body"
style="@style/dialog_title"
tools:text="@string/registration_username_info_title"/>
<TextView
android:id="@+id/edittext_dialog_body"
android:layout_marginBottom="@dimen/registration_body_vertical_margin"
app:layout_constraintTop_toBottomOf="@id/edittext_dialog_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@+id/edittext_dialog_text_input"
tools:text="@string/registration_username_info_body"
style="@style/dialog_body" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/edittext_dialog_text_input"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@{ui.inputHint}"
android:error="@{ui.inputError}"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/edittext_dialog_body"
app:layout_constraintBottom_toTopOf="@+id/edittext_dialog_positive_button"
tools:hint="Enter text here"
style="@style/registration_text_input">
<com.google.android.material.textfield.TextInputEditText
style="@style/registration_text_input_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:maxLength="@{ui.maxInputLength}"
android:afterTextChanged="@{ui::onTextInput}"/>
</com.google.android.material.textfield.TextInputLayout>
<io.xxlabs.messenger.support.view.SingleClickButton
android:id="@+id/edittext_dialog_positive_button"
style="@style/dialog_button"
android:layout_marginTop="@dimen/registration_body_vertical_margin"
android:text="@{ui.positiveLabel}"
android:textColor="@color/neutral_white"
android:background="@drawable/bg_btn_white"
android:backgroundTint="@color/brand_default"
android:layout_marginStart="@dimen/registration_horizontal_margin"
android:enabled="@{ui.positiveButtonEnabled}"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/edittext_dialog_negative_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/edittext_dialog_text_input" />
<io.xxlabs.messenger.support.view.SingleClickButton
android:id="@+id/edittext_dialog_negative_button"
android:text="@{ui.negativeLabel}"
android:layout_marginTop="@dimen/registration_body_vertical_margin"
android:layout_marginEnd="@dimen/registration_horizontal_margin"
android:layout_marginStart="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/edittext_dialog_positive_button"
app:layout_constraintEnd_toEndOf="parent"
style="@style/dialog_button" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</layout>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment