From e092dfd684f982fc8297ab47b00e31edd4735711 Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Wed, 11 Sep 2019 14:07:37 -0700 Subject: [PATCH] For #5047 - Addresses nits - Changes MainScope to viewLifecycleScope - Fixes string name/comment to better describe what it is - Adds disabled state to the add button --- .../fenix/shortcut/CreateShortcutFragment.kt | 42 ++++++++++++++----- .../res/layout/fragment_create_shortcut.xml | 2 +- app/src/main/res/values/strings.xml | 4 +- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/shortcut/CreateShortcutFragment.kt b/app/src/main/java/org/mozilla/fenix/shortcut/CreateShortcutFragment.kt index a47f253b3..655cca664 100644 --- a/app/src/main/java/org/mozilla/fenix/shortcut/CreateShortcutFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/shortcut/CreateShortcutFragment.kt @@ -8,9 +8,10 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.widget.addTextChangedListener import androidx.fragment.app.DialogFragment +import androidx.lifecycle.lifecycleScope import kotlinx.android.synthetic.main.fragment_create_shortcut.* -import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch import org.mozilla.fenix.R import org.mozilla.fenix.ext.loadIntoView @@ -30,16 +31,37 @@ class CreateShortcutFragment : DialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val session = requireComponents.core.sessionManager.selectedSession!! - requireComponents.core.icons.loadIntoView(favicon_image, session.url) - shortcut_text.setText(session.title) - cancel_button.setOnClickListener { dismiss() } - add_button.setOnClickListener { - val text = shortcut_text.text.toString() - MainScope().launch { - requireComponents.useCases.webAppUseCases.addToHomescreen(text) - }.invokeOnCompletion { dismiss() } + val session = requireComponents.core.sessionManager.selectedSession + + if (session == null) { + dismiss() + } else { + requireComponents.core.icons.loadIntoView(favicon_image, session.url) + + cancel_button.setOnClickListener { dismiss() } + add_button.setOnClickListener { + val text = shortcut_text.text.toString() + viewLifecycleOwner.lifecycleScope.launch { + requireComponents.useCases.webAppUseCases.addToHomescreen(text) + }.invokeOnCompletion { dismiss() } + } + + shortcut_text.addTextChangedListener { + updateAddButtonEnabledState() + } + + shortcut_text.setText(session.title) } } + + private fun updateAddButtonEnabledState() { + add_button.isEnabled = shortcut_text.text.isNotEmpty() + add_button.alpha = if (shortcut_text.text.isNotEmpty()) ENABLED_ALPHA else DISABLED_ALPHA + } + + companion object { + private const val ENABLED_ALPHA = 1.0f + private const val DISABLED_ALPHA = 0.4f + } } diff --git a/app/src/main/res/layout/fragment_create_shortcut.xml b/app/src/main/res/layout/fragment_create_shortcut.xml index 0bd01181b..da8b52481 100644 --- a/app/src/main/res/layout/fragment_create_shortcut.xml +++ b/app/src/main/res/layout/fragment_create_shortcut.xml @@ -45,7 +45,7 @@ android:id="@+id/shortcut_text" android:inputType="text" android:importantForAutofill="no" - android:hint="@string/add_to_homescreen_text_description" + android:hint="@string/add_to_homescreen_text_placeholder" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="8dp" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d5b2658da..e25259b7f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -871,6 +871,6 @@ Cancel Add - - Shortcut name + + Shortcut name