From 3aff147a779632f0a52ad05bb233e1445fbf9918 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Fri, 1 Jul 2022 03:01:53 -0400 Subject: [PATCH] center login btn, set login btn selectors --- .../extensions/TextWatcher-Extensions.kt | 34 +++++++++++++++++++ .../habitica/ui/activities/LoginActivity.kt | 11 ++++++ .../main/res/drawable/button_state_color.xml | 5 +++ .../res/drawable/button_text_state_color.xml | 5 +++ wearos/src/main/res/layout/activity_login.xml | 5 +-- wearos/src/main/res/values/styles.xml | 4 +-- 6 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 common/src/main/java/com/habitrpg/common/habitica/extensions/TextWatcher-Extensions.kt create mode 100644 wearos/src/main/res/drawable/button_state_color.xml create mode 100644 wearos/src/main/res/drawable/button_text_state_color.xml diff --git a/common/src/main/java/com/habitrpg/common/habitica/extensions/TextWatcher-Extensions.kt b/common/src/main/java/com/habitrpg/common/habitica/extensions/TextWatcher-Extensions.kt new file mode 100644 index 000000000..3acf1b5b7 --- /dev/null +++ b/common/src/main/java/com/habitrpg/common/habitica/extensions/TextWatcher-Extensions.kt @@ -0,0 +1,34 @@ +package com.habitrpg.common.habitica.extensions + +import android.text.Editable +import android.text.TextWatcher + +class OnChangeTextWatcher(private var function: (CharSequence?, Int, Int, Int) -> Unit) : TextWatcher { + override fun afterTextChanged(s: Editable?) { /* no-on */ } + + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { /* no-on */ } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + function(s, start, before, count) + } +} + +class BeforeChangeTextWatcher(private var function: (CharSequence?, Int, Int, Int) -> Unit) : TextWatcher { + override fun afterTextChanged(s: Editable?) { /* no-on */ } + + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + function(s, start, count, after) + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { /* no-on */ } +} + +class AfterChangeTextWatcher(private var function: (Editable?) -> Unit) : TextWatcher { + override fun afterTextChanged(s: Editable?) { + function(s) + } + + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { /* no-on */ } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { /* no-on */ } +} diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/LoginActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/LoginActivity.kt index 9146972fb..34f476b62 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/LoginActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/LoginActivity.kt @@ -11,6 +11,7 @@ import androidx.core.view.isVisible import com.google.android.gms.auth.api.signin.GoogleSignIn import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.ActivityLoginBinding +import com.habitrpg.common.habitica.extensions.OnChangeTextWatcher import com.habitrpg.wearos.habitica.ui.viewmodels.LoginViewModel import dagger.hilt.android.AndroidEntryPoint @@ -81,6 +82,12 @@ class LoginActivity: BaseActivity() { binding.registerButton.setOnClickListener { openRegisterOnPhone() } binding.passwordEditText.transformationMethod = PasswordTransformationMethod() + binding.usernameEditText.addTextChangedListener(OnChangeTextWatcher { _, _, _, _ -> + setLoginButtonIsEnabled() + }) + binding.passwordEditText.addTextChangedListener(OnChangeTextWatcher { _, _, _, _ -> + setLoginButtonIsEnabled() + }) currentState = State.INITIAL } @@ -116,6 +123,10 @@ class LoginActivity: BaseActivity() { alert.show() } + private fun setLoginButtonIsEnabled() { + binding.loginButton.isEnabled = binding.usernameEditText.text.isNotEmpty() && binding.passwordEditText.text.isNotEmpty() + } + private val pickAccountResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { val task = GoogleSignIn.getSignedInAccountFromIntent(it.data) viewModel.handleGoogleLoginResult(this, task, recoverFromPlayServicesErrorResult) diff --git a/wearos/src/main/res/drawable/button_state_color.xml b/wearos/src/main/res/drawable/button_state_color.xml new file mode 100644 index 000000000..4c8bf51e4 --- /dev/null +++ b/wearos/src/main/res/drawable/button_state_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wearos/src/main/res/drawable/button_text_state_color.xml b/wearos/src/main/res/drawable/button_text_state_color.xml new file mode 100644 index 000000000..e9eb6c913 --- /dev/null +++ b/wearos/src/main/res/drawable/button_text_state_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/wearos/src/main/res/layout/activity_login.xml b/wearos/src/main/res/layout/activity_login.xml index 23328c2e1..f30c27370 100644 --- a/wearos/src/main/res/layout/activity_login.xml +++ b/wearos/src/main/res/layout/activity_login.xml @@ -78,7 +78,6 @@ android:id="@+id/username_edit_text" android:layout_width="match_parent" android:layout_height="52dp" - android:textColorHint="@color/gray_200" android:inputType="textEmailAddress" android:hint="@string/email_username" android:paddingHorizontal="16dp" @@ -90,7 +89,6 @@ \ No newline at end of file diff --git a/wearos/src/main/res/values/styles.xml b/wearos/src/main/res/values/styles.xml index 50d8eacd2..9c372e15f 100644 --- a/wearos/src/main/res/values/styles.xml +++ b/wearos/src/main/res/values/styles.xml @@ -39,8 +39,8 @@