Add more icons to the settings screen and force number pad for numeric only field (#895)

* Add more icons to the settings screen and force number pad for numeric only field

* Use correct exception

Co-authored-by: Justin Bassett <bassett.justint@gmail.com>
This commit is contained in:
Daniel Shokouhi 2020-09-08 06:11:25 -07:00 committed by GitHub
parent 2de7ddab3e
commit e84abafa78
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 50 additions and 1 deletions

View file

@ -1,8 +1,11 @@
package io.homeassistant.companion.android.settings
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.text.InputType
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.content.res.AppCompatResources
import androidx.biometric.BiometricManager
import androidx.preference.EditTextPreference
import androidx.preference.ListPreference
@ -101,6 +104,10 @@ class SettingsFragment : PreferenceFragmentCompat(), SettingsView {
}
}
findPreference<EditTextPreference>("session_timeout")?.setOnBindEditTextListener {
it.inputType = InputType.TYPE_CLASS_NUMBER
}
removeSystemFromThemesIfNeeded()
findPreference<EditTextPreference>("connection_internal")?.onPreferenceChangeListener =
@ -140,12 +147,20 @@ class SettingsFragment : PreferenceFragmentCompat(), SettingsView {
override fun disableInternalConnection() {
findPreference<EditTextPreference>("connection_internal")?.let {
it.isEnabled = false
val unwrappedDrawable =
AppCompatResources.getDrawable(requireContext(), R.drawable.ic_computer)
unwrappedDrawable?.setTint(Color.DKGRAY)
it.icon = unwrappedDrawable
}
}
override fun enableInternalConnection() {
findPreference<EditTextPreference>("connection_internal")?.let {
it.isEnabled = true
val unwrappedDrawable =
AppCompatResources.getDrawable(requireContext(), R.drawable.ic_computer)
unwrappedDrawable?.setTint(resources.getColor(R.color.colorAccent))
it.icon = unwrappedDrawable
}
}

View file

@ -67,7 +67,13 @@ class SettingsPresenterImpl @Inject constructor(
when (key) {
"connection_internal" -> urlUseCase.saveUrl(value ?: "", true)
"connection_external" -> urlUseCase.saveUrl(value ?: "", false)
"session_timeout" -> integrationUseCase.sessionTimeOut(value.toString().toInt())
"session_timeout" -> {
try {
integrationUseCase.sessionTimeOut(value.toString().toInt())
} catch (e: Exception) {
Log.e(TAG, "Issue saving session timeout value", e)
}
}
"registration_name" -> {
try {
integrationUseCase.updateRegistration(deviceName = value!!)

View file

@ -0,0 +1,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path android:fillColor="@color/colorAccent" android:pathData="M20,18c1.1,0 1.99,-0.9 1.99,-2L22,6c0,-1.1 -0.9,-2 -2,-2H4c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2H0v2h24v-2h-4zM4,6h16v10H4V6z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/colorAccent"
android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/colorAccent"
android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z"/>
</vector>

View file

@ -6,10 +6,12 @@
android:title="@string/pref_connection_title">
<EditTextPreference
android:key="connection_external"
android:icon="@drawable/ic_globe"
android:title="@string/pref_connection_url"
app:useSimpleSummaryProvider="true"/>
<io.homeassistant.companion.android.settings.ssid.SsidPreference
android:key="connection_internal_ssids"
android:icon="@drawable/ic_wifi"
android:title="@string/pref_connection_wifi"
android:dialogTitle="@string/manage_ssids"
android:positiveButtonText="@string/save"
@ -24,6 +26,7 @@
android:title="@string/device_registration">
<EditTextPreference
android:key="registration_name"
android:icon="@drawable/ic_edit"
android:title="@string/device_name"
app:useSimpleSummaryProvider="true"/>
</PreferenceCategory>