From 61cb0521562166cbb0120632c1d4e7ec9acd055f Mon Sep 17 00:00:00 2001 From: Jeff Boek Date: Thu, 20 Aug 2020 10:13:19 -0700 Subject: [PATCH] For #13473 - Addresses nits --- .../searchdialog/SearchDialogFragment.kt | 85 ++++++++++--------- .../res/layout/fragment_search_dialog.xml | 2 +- 2 files changed, 45 insertions(+), 42 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt b/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt index 16ecf25a1..976e8bdc7 100644 --- a/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt @@ -20,14 +20,13 @@ import androidx.constraintlayout.widget.ConstraintProperties.TOP import androidx.constraintlayout.widget.ConstraintSet import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs -import kotlinx.android.synthetic.main.fragment_search.* import kotlinx.android.synthetic.main.fragment_search_dialog.* import kotlinx.android.synthetic.main.fragment_search_dialog.pill_wrapper -import kotlinx.android.synthetic.main.fragment_search_dialog.search_scan_button +import kotlinx.android.synthetic.main.fragment_search_dialog.qr_scan_button import kotlinx.android.synthetic.main.fragment_search_dialog.toolbar import kotlinx.android.synthetic.main.fragment_search_dialog.view.* import kotlinx.android.synthetic.main.fragment_search_dialog.view.search_engines_shortcut_button -import kotlinx.android.synthetic.main.fragment_search_dialog.view.search_scan_button +import kotlinx.android.synthetic.main.fragment_search_dialog.view.qr_scan_button import kotlinx.android.synthetic.main.fragment_search_dialog.view.toolbar import kotlinx.coroutines.ExperimentalCoroutinesApi import mozilla.components.feature.qr.QrFeature @@ -142,9 +141,9 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler { interactor.onSearchShortcutsButtonClicked() } - search_scan_button.visibility = if (context?.hasCamera() == true) View.VISIBLE else View.GONE + qr_scan_button.visibility = if (context?.hasCamera() == true) View.VISIBLE else View.GONE - search_scan_button.setOnClickListener { + qr_scan_button.setOnClickListener { if (!requireContext().hasCamera()) { return@setOnClickListener } toolbarView.view.clearFocus() @@ -153,41 +152,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler { } qrFeature.set( - QrFeature( - requireContext(), - fragmentManager = childFragmentManager, - onNeedToRequestPermissions = { permissions -> - requestPermissions(permissions, REQUEST_CODE_CAMERA_PERMISSIONS) - }, - onScanResult = { result -> - search_scan_button.isChecked = false - activity?.let { - AlertDialog.Builder(it).apply { - val spannable = resources.getSpanned( - R.string.qr_scanner_confirmation_dialog_message, - getString(R.string.app_name) to StyleSpan(Typeface.BOLD), - result to StyleSpan(Typeface.ITALIC) - ) - setMessage(spannable) - setNegativeButton(R.string.qr_scanner_dialog_negative) { dialog: DialogInterface, _ -> - requireComponents.analytics.metrics.track(Event.QRScannerNavigationDenied) - dialog.cancel() - } - setPositiveButton(R.string.qr_scanner_dialog_positive) { dialog: DialogInterface, _ -> - requireComponents.analytics.metrics.track(Event.QRScannerNavigationAllowed) - (activity as HomeActivity) - .openToBrowserAndLoad( - searchTermOrURL = result, - newTab = store.state.tabId == null, - from = BrowserDirection.FromSearch - ) - dialog.dismiss() - } - create() - }.show() - requireComponents.analytics.metrics.track(Event.QRScannerPromptDisplayed) - } - }), + createQrFeature(), owner = this, view = view ) @@ -209,7 +174,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler { return when { qrFeature.onBackPressed() -> { toolbarView.view.edit.focus() - view?.search_scan_button?.isChecked = false + view?.qr_scan_button?.isChecked = false toolbarView.view.requestFocus() true } @@ -221,6 +186,44 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler { } } + private fun createQrFeature(): QrFeature { + return QrFeature( + requireContext(), + fragmentManager = childFragmentManager, + onNeedToRequestPermissions = { permissions -> + requestPermissions(permissions, REQUEST_CODE_CAMERA_PERMISSIONS) + }, + onScanResult = { result -> + qr_scan_button.isChecked = false + activity?.let { + AlertDialog.Builder(it).apply { + val spannable = resources.getSpanned( + R.string.qr_scanner_confirmation_dialog_message, + getString(R.string.app_name) to StyleSpan(Typeface.BOLD), + result to StyleSpan(Typeface.ITALIC) + ) + setMessage(spannable) + setNegativeButton(R.string.qr_scanner_dialog_negative) { dialog: DialogInterface, _ -> + requireComponents.analytics.metrics.track(Event.QRScannerNavigationDenied) + dialog.cancel() + } + setPositiveButton(R.string.qr_scanner_dialog_positive) { dialog: DialogInterface, _ -> + requireComponents.analytics.metrics.track(Event.QRScannerNavigationAllowed) + (activity as HomeActivity) + .openToBrowserAndLoad( + searchTermOrURL = result, + newTab = store.state.tabId == null, + from = BrowserDirection.FromSearch + ) + dialog.dismiss() + } + create() + }.show() + requireComponents.analytics.metrics.track(Event.QRScannerPromptDisplayed) + } + }) + } + private fun setupConstraints(view: View) { if (view.context.settings().toolbarPosition == ToolbarPosition.BOTTOM) { ConstraintSet().apply { diff --git a/app/src/main/res/layout/fragment_search_dialog.xml b/app/src/main/res/layout/fragment_search_dialog.xml index 1fb1734c9..712e22b1a 100644 --- a/app/src/main/res/layout/fragment_search_dialog.xml +++ b/app/src/main/res/layout/fragment_search_dialog.xml @@ -61,7 +61,7 @@ app:layout_constraintStart_toStartOf="parent">