1
0
mirror of https://github.com/etesync/android synced 2024-11-22 16:08:13 +00:00

Widgets: use the support library edit password widget.

This commit is contained in:
Tom Hacohen 2019-01-05 12:01:00 +00:00
parent 6ef78085bd
commit 0b21502645
7 changed files with 39 additions and 127 deletions

View File

@ -9,6 +9,7 @@
package com.etesync.syncadapter.ui.setup package com.etesync.syncadapter.ui.setup
import android.os.Bundle import android.os.Bundle
import android.support.design.widget.TextInputLayout
import android.support.v4.app.Fragment import android.support.v4.app.Fragment
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -18,10 +19,9 @@ import android.widget.TextView
import com.etesync.syncadapter.Constants import com.etesync.syncadapter.Constants
import com.etesync.syncadapter.R import com.etesync.syncadapter.R
import com.etesync.syncadapter.ui.widget.EditPassword
class EncryptionDetailsFragment : Fragment() { class EncryptionDetailsFragment : Fragment() {
internal var editPassword: EditPassword? = null internal lateinit var editPassword: TextInputLayout
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@ -35,7 +35,7 @@ class EncryptionDetailsFragment : Fragment() {
val accountName = v.findViewById<View>(R.id.account_name) as TextView val accountName = v.findViewById<View>(R.id.account_name) as TextView
accountName.text = getString(R.string.login_encryption_account_label) + " " + config.userName accountName.text = getString(R.string.login_encryption_account_label) + " " + config.userName
editPassword = v.findViewById<View>(R.id.encryption_password) as EditPassword editPassword = v.findViewById<View>(R.id.encryption_password) as TextInputLayout
val btnCreate = v.findViewById<View>(R.id.create_account) as Button val btnCreate = v.findViewById<View>(R.id.create_account) as Button
btnCreate.setOnClickListener(View.OnClickListener { btnCreate.setOnClickListener(View.OnClickListener {
@ -54,9 +54,9 @@ class EncryptionDetailsFragment : Fragment() {
private fun validateEncryptionData(config: BaseConfigurationFinder.Configuration): BaseConfigurationFinder.Configuration? { private fun validateEncryptionData(config: BaseConfigurationFinder.Configuration): BaseConfigurationFinder.Configuration? {
var valid = true var valid = true
val password = editPassword!!.text.toString() val password = editPassword.editText?.text.toString()
if (password.isEmpty()) { if (password.isEmpty()) {
editPassword!!.setError(getString(R.string.login_password_required)) editPassword.error = getString(R.string.login_password_required)
valid = false valid = false
} }

View File

@ -9,6 +9,7 @@
package com.etesync.syncadapter.ui.setup package com.etesync.syncadapter.ui.setup
import android.os.Bundle import android.os.Bundle
import android.support.design.widget.TextInputLayout
import android.support.v4.app.Fragment import android.support.v4.app.Fragment
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -20,14 +21,13 @@ import android.widget.TextView
import com.etesync.syncadapter.Constants import com.etesync.syncadapter.Constants
import com.etesync.syncadapter.R import com.etesync.syncadapter.R
import com.etesync.syncadapter.ui.WebViewActivity import com.etesync.syncadapter.ui.WebViewActivity
import com.etesync.syncadapter.ui.widget.EditPassword
import net.cachapa.expandablelayout.ExpandableLayout import net.cachapa.expandablelayout.ExpandableLayout
import okhttp3.HttpUrl import okhttp3.HttpUrl
import java.net.URI import java.net.URI
class LoginCredentialsFragment : Fragment() { class LoginCredentialsFragment : Fragment() {
internal lateinit var editUserName: EditText internal lateinit var editUserName: EditText
internal lateinit var editUrlPassword: EditPassword internal lateinit var editUrlPassword: TextInputLayout
internal lateinit var showAdvanced: CheckedTextView internal lateinit var showAdvanced: CheckedTextView
internal lateinit var customServer: EditText internal lateinit var customServer: EditText
@ -37,7 +37,7 @@ class LoginCredentialsFragment : Fragment() {
val v = inflater.inflate(R.layout.login_credentials_fragment, container, false) val v = inflater.inflate(R.layout.login_credentials_fragment, container, false)
editUserName = v.findViewById<View>(R.id.user_name) as EditText editUserName = v.findViewById<View>(R.id.user_name) as EditText
editUrlPassword = v.findViewById<View>(R.id.url_password) as EditPassword editUrlPassword = v.findViewById<View>(R.id.url_password) as TextInputLayout
showAdvanced = v.findViewById<View>(R.id.show_advanced) as CheckedTextView showAdvanced = v.findViewById<View>(R.id.show_advanced) as CheckedTextView
customServer = v.findViewById<View>(R.id.custom_server) as EditText customServer = v.findViewById<View>(R.id.custom_server) as EditText
@ -50,7 +50,7 @@ class LoginCredentialsFragment : Fragment() {
val password = intent.getStringExtra(LoginActivity.EXTRA_PASSWORD) val password = intent.getStringExtra(LoginActivity.EXTRA_PASSWORD)
editUserName.setText(username) editUserName.setText(username)
editUrlPassword.setText(password) editUrlPassword.editText?.setText(password)
} }
} }
@ -94,9 +94,9 @@ class LoginCredentialsFragment : Fragment() {
valid = false valid = false
} }
val password = editUrlPassword.text.toString() val password = editUrlPassword.editText?.text.toString()
if (password.isEmpty()) { if (password.isEmpty()) {
editUrlPassword.setError(getString(R.string.login_password_required)) editUrlPassword.error = getString(R.string.login_password_required)
valid = false valid = false
} }

View File

@ -1,60 +0,0 @@
/*
* Copyright © 2013 2016 Ricki Hirner (bitfire web engineering).
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*/
package com.etesync.syncadapter.ui.widget
import android.content.Context
import android.text.Editable
import android.util.AttributeSet
import android.view.View
import android.view.inputmethod.EditorInfo
import android.widget.CheckBox
import android.widget.EditText
import android.widget.LinearLayout
import com.etesync.syncadapter.R
class EditPassword : LinearLayout {
internal var editPassword: EditText
val text: Editable
get() = editPassword.text
init {
View.inflate(context, R.layout.edit_password, this)
editPassword = findViewById<View>(R.id.password) as EditText
}
constructor(context: Context) : super(context) {}
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
editPassword.setHint(attrs.getAttributeResourceValue(NS_ANDROID, "hint", 0))
editPassword.setText(attrs.getAttributeValue(NS_ANDROID, "text"))
val checkShowPassword = findViewById<View>(R.id.show_password) as CheckBox
checkShowPassword.setOnCheckedChangeListener { buttonView, isChecked ->
var inputType = editPassword.inputType and EditorInfo.TYPE_MASK_VARIATION.inv()
inputType = inputType or if (isChecked) EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD else EditorInfo.TYPE_TEXT_VARIATION_PASSWORD
editPassword.inputType = inputType
}
}
fun setError(error: CharSequence) {
editPassword.error = error
}
fun setText(text: CharSequence) {
editPassword.setText(text)
}
companion object {
private val NS_ANDROID = "http://schemas.android.com/apk/res/android"
}
}

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright © 2013 2016 Ricki Hirner (bitfire web engineering).
~ All rights reserved. This program and the accompanying materials
~ are made available under the terms of the GNU Public License v3.0
~ which accompanies this distribution, and is available at
~ http://www.gnu.org/licenses/gpl.html
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/ic_visibility_dark" />
<item android:state_checked="false"
android:drawable="@drawable/ic_visibility_off_dark" />
</selector>

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright © 2013 2016 Ricki Hirner (bitfire web engineering).
~ All rights reserved. This program and the accompanying materials
~ are made available under the terms of the GNU Public License v3.0
~ which accompanies this distribution, and is available at
~ http://www.gnu.org/licenses/gpl.html
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/password"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textPassword"/>
<CheckBox
android:id="@+id/show_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:button="@drawable/password_eye_button"
android:checked="false"/>
</LinearLayout>

View File

@ -8,10 +8,11 @@
--> -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:orientation="vertical"
android:layout_height="match_parent"> android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView android:layout_width="match_parent" <ScrollView android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
@ -41,12 +42,19 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/login_email_address" android:hint="@string/login_email_address"
android:inputType="textEmailAddress"/> android:inputType="textEmailAddress"/>
<com.etesync.syncadapter.ui.widget.EditPassword <android.support.design.widget.TextInputLayout
android:id="@+id/url_password" android:id="@+id/url_password"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="7dp" app:passwordToggleEnabled="true">
android:hint="@string/login_password" /> <android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="monospace"
android:inputType="textPassword"
android:hint="@string/login_password"/>
</android.support.design.widget.TextInputLayout>
<TextView <TextView
android:id="@+id/forgot_password" android:id="@+id/forgot_password"

View File

@ -8,9 +8,10 @@
--> -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:orientation="vertical"
android:layout_height="match_parent"> android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView <ScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
@ -35,11 +36,18 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"/> android:layout_height="wrap_content"/>
<com.etesync.syncadapter.ui.widget.EditPassword <android.support.design.widget.TextInputLayout
android:id="@+id/encryption_password" android:id="@+id/encryption_password"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/login_encryption_password"/> app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="monospace"
android:inputType="textPassword"
android:hint="@string/login_encryption_password"/>
</android.support.design.widget.TextInputLayout>
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"