diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/SettingsFragment.kt b/app/src/main/java/io/homeassistant/companion/android/settings/SettingsFragment.kt index 760682842..985ac5f71 100644 --- a/app/src/main/java/io/homeassistant/companion/android/settings/SettingsFragment.kt +++ b/app/src/main/java/io/homeassistant/companion/android/settings/SettingsFragment.kt @@ -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("session_timeout")?.setOnBindEditTextListener { + it.inputType = InputType.TYPE_CLASS_NUMBER + } + removeSystemFromThemesIfNeeded() findPreference("connection_internal")?.onPreferenceChangeListener = @@ -140,12 +147,20 @@ class SettingsFragment : PreferenceFragmentCompat(), SettingsView { override fun disableInternalConnection() { findPreference("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("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 } } diff --git a/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenterImpl.kt b/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenterImpl.kt index b0504d72d..7caf802d0 100644 --- a/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenterImpl.kt +++ b/app/src/main/java/io/homeassistant/companion/android/settings/SettingsPresenterImpl.kt @@ -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!!) diff --git a/app/src/main/res/drawable/ic_computer.xml b/app/src/main/res/drawable/ic_computer.xml new file mode 100644 index 000000000..d74742e3a --- /dev/null +++ b/app/src/main/res/drawable/ic_computer.xml @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml new file mode 100644 index 000000000..ce073d7a4 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_globe.xml b/app/src/main/res/drawable/ic_globe.xml new file mode 100644 index 000000000..21e10743b --- /dev/null +++ b/app/src/main/res/drawable/ic_globe.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index b5e13f8ec..8ae5e0475 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -6,10 +6,12 @@ android:title="@string/pref_connection_title">