From 6b377ddc886e2724ffa82d2b64d21a963172553f Mon Sep 17 00:00:00 2001 From: kareemradwan Date: Sat, 12 Sep 2020 01:58:40 +0300 Subject: [PATCH 1/5] fix info and setting fragment profile menu item click --- .../apps/iosched/ui/info/InfoFragment.kt | 52 ++++++++++++++----- .../iosched/ui/settings/SettingsFragment.kt | 40 +++++++++++--- 2 files changed, 73 insertions(+), 19 deletions(-) diff --git a/mobile/src/main/java/com/google/samples/apps/iosched/ui/info/InfoFragment.kt b/mobile/src/main/java/com/google/samples/apps/iosched/ui/info/InfoFragment.kt index d38a9e18f8..7a7e3ce2a6 100644 --- a/mobile/src/main/java/com/google/samples/apps/iosched/ui/info/InfoFragment.kt +++ b/mobile/src/main/java/com/google/samples/apps/iosched/ui/info/InfoFragment.kt @@ -29,8 +29,12 @@ import com.google.android.material.tabs.TabLayoutMediator import com.google.samples.apps.iosched.R import com.google.samples.apps.iosched.databinding.FragmentInfoBinding import com.google.samples.apps.iosched.shared.analytics.AnalyticsHelper +import com.google.samples.apps.iosched.shared.result.EventObserver import com.google.samples.apps.iosched.ui.MainActivityViewModel import com.google.samples.apps.iosched.ui.MainNavigationFragment +import com.google.samples.apps.iosched.ui.schedule.ScheduleFragment +import com.google.samples.apps.iosched.ui.signin.SignInDialogFragment +import com.google.samples.apps.iosched.ui.signin.SignOutDialogFragment import com.google.samples.apps.iosched.ui.signin.setupProfileMenuItem import com.google.samples.apps.iosched.util.doOnApplyWindowInsets import dagger.hilt.android.AndroidEntryPoint @@ -38,17 +42,17 @@ import javax.inject.Inject @AndroidEntryPoint class InfoFragment : MainNavigationFragment() { - - @Inject lateinit var analyticsHelper: AnalyticsHelper + @Inject + lateinit var analyticsHelper: AnalyticsHelper private lateinit var binding: FragmentInfoBinding private val viewModel: MainActivityViewModel by viewModels() override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? ): View? { binding = FragmentInfoBinding.inflate(inflater, container, false).apply { lifecycleOwner = viewLifecycleOwner @@ -56,6 +60,14 @@ class InfoFragment : MainNavigationFragment() { binding.viewpager.doOnApplyWindowInsets { v, insets, padding -> v.updatePaddingRelative(bottom = padding.bottom + insets.systemWindowInsetBottom) } + + viewModel.navigateToSignInDialogAction.observe(viewLifecycleOwner, EventObserver { + openSignInDialog() + }) + + viewModel.navigateToSignOutDialogAction.observe(viewLifecycleOwner, EventObserver { + openSignOutDialog() + }) return binding.root } @@ -81,6 +93,17 @@ class InfoFragment : MainNavigationFragment() { } } + + private fun openSignInDialog() { + val dialog = SignInDialogFragment() + dialog.show(requireActivity().supportFragmentManager, InfoFragment.DIALOG_NEED_TO_SIGN_IN) + } + + private fun openSignOutDialog() { + val dialog = SignOutDialogFragment() + dialog.show(requireActivity().supportFragmentManager, InfoFragment.DIALOG_CONFIRM_SIGN_OUT) + } + private fun trackInfoScreenView(position: Int) { val pageName = getString(INFO_TITLES[position]) analyticsHelper.sendScreenView("Info - $pageName", requireActivity()) @@ -97,16 +120,21 @@ class InfoFragment : MainNavigationFragment() { companion object { + private const val DIALOG_NEED_TO_SIGN_IN = "dialog_need_to_sign_in" + private const val DIALOG_CONFIRM_SIGN_OUT = "dialog_confirm_sign_out" + private const val DIALOG_SCHEDULE_HINTS = "dialog_schedule_hints" + + private val INFO_TITLES = arrayOf( - R.string.event_title, - R.string.travel_title, - R.string.faq_title + R.string.event_title, + R.string.travel_title, + R.string.faq_title ) private val INFO_PAGES = arrayOf( - { EventFragment() }, - { TravelFragment() }, - { FaqFragment() } - // TODO: Track the InfoPage performance b/130335745 + { EventFragment() }, + { TravelFragment() }, + { FaqFragment() } + // TODO: Track the InfoPage performance b/130335745 ) } } diff --git a/mobile/src/main/java/com/google/samples/apps/iosched/ui/settings/SettingsFragment.kt b/mobile/src/main/java/com/google/samples/apps/iosched/ui/settings/SettingsFragment.kt index 059cf540f2..f84ce93f29 100644 --- a/mobile/src/main/java/com/google/samples/apps/iosched/ui/settings/SettingsFragment.kt +++ b/mobile/src/main/java/com/google/samples/apps/iosched/ui/settings/SettingsFragment.kt @@ -31,6 +31,9 @@ import com.google.samples.apps.iosched.databinding.FragmentSettingsBinding import com.google.samples.apps.iosched.shared.result.EventObserver import com.google.samples.apps.iosched.ui.MainActivityViewModel import com.google.samples.apps.iosched.ui.MainNavigationFragment +import com.google.samples.apps.iosched.ui.info.InfoFragment +import com.google.samples.apps.iosched.ui.signin.SignInDialogFragment +import com.google.samples.apps.iosched.ui.signin.SignOutDialogFragment import com.google.samples.apps.iosched.ui.signin.setupProfileMenuItem import com.google.samples.apps.iosched.util.doOnApplyWindowInsets import dagger.hilt.android.AndroidEntryPoint @@ -38,13 +41,19 @@ import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class SettingsFragment : MainNavigationFragment() { + companion object { + private const val DIALOG_NEED_TO_SIGN_IN = "dialog_need_to_sign_in" + private const val DIALOG_CONFIRM_SIGN_OUT = "dialog_confirm_sign_out" + private const val DIALOG_SCHEDULE_HINTS = "dialog_schedule_hints" + } + private val viewModel: SettingsViewModel by viewModels() private val mainActivityViewModel: MainActivityViewModel by viewModels() override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? ): View? { viewModel.navigateToThemeSelector.observe(viewLifecycleOwner, EventObserver { @@ -61,9 +70,26 @@ class SettingsFragment : MainNavigationFragment() { binding.settingsScroll.doOnApplyWindowInsets { v, insets, padding -> v.updatePaddingRelative(bottom = padding.bottom + insets.systemWindowInsetBottom) } + mainActivityViewModel.navigateToSignInDialogAction.observe(viewLifecycleOwner, EventObserver { + openSignInDialog() + }) + + mainActivityViewModel.navigateToSignOutDialogAction.observe(viewLifecycleOwner, EventObserver { + openSignOutDialog() + }) return binding.root } + + private fun openSignInDialog() { + val dialog = SignInDialogFragment() + dialog.show(requireActivity().supportFragmentManager, SettingsFragment.DIALOG_NEED_TO_SIGN_IN) + } + + private fun openSignOutDialog() { + val dialog = SignOutDialogFragment() + dialog.show(requireActivity().supportFragmentManager, SettingsFragment.DIALOG_CONFIRM_SIGN_OUT) + } } @BindingAdapter(value = ["dialogTitle", "fileLink"], requireAll = true) @@ -74,10 +100,10 @@ fun createDialogForFile(button: View, dialogTitle: String, fileLink: String) { webView.settings.useWideViewPort = true webView.settings.loadWithOverviewMode = true AlertDialog.Builder(context) - .setTitle(dialogTitle) - .setView(webView) - .create() - .show() + .setTitle(dialogTitle) + .setView(webView) + .create() + .show() } } From fcacad14f770d8d5776cfd8da3670fcae1907b4e Mon Sep 17 00:00:00 2001 From: kareemradwan Date: Sat, 12 Sep 2020 02:40:02 +0300 Subject: [PATCH 2/5] fix code style issue --- .../apps/iosched/ui/info/InfoFragment.kt | 22 +- .../iosched/ui/settings/SettingsFragment.kt | 38 +- tools/iosched-codestyle.xml | 889 ++++++++++-------- 3 files changed, 547 insertions(+), 402 deletions(-) diff --git a/mobile/src/main/java/com/google/samples/apps/iosched/ui/info/InfoFragment.kt b/mobile/src/main/java/com/google/samples/apps/iosched/ui/info/InfoFragment.kt index 7a7e3ce2a6..e4327bdb82 100644 --- a/mobile/src/main/java/com/google/samples/apps/iosched/ui/info/InfoFragment.kt +++ b/mobile/src/main/java/com/google/samples/apps/iosched/ui/info/InfoFragment.kt @@ -50,9 +50,9 @@ class InfoFragment : MainNavigationFragment() { private val viewModel: MainActivityViewModel by viewModels() override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? ): View? { binding = FragmentInfoBinding.inflate(inflater, container, false).apply { lifecycleOwner = viewLifecycleOwner @@ -93,7 +93,6 @@ class InfoFragment : MainNavigationFragment() { } } - private fun openSignInDialog() { val dialog = SignInDialogFragment() dialog.show(requireActivity().supportFragmentManager, InfoFragment.DIALOG_NEED_TO_SIGN_IN) @@ -124,17 +123,16 @@ class InfoFragment : MainNavigationFragment() { private const val DIALOG_CONFIRM_SIGN_OUT = "dialog_confirm_sign_out" private const val DIALOG_SCHEDULE_HINTS = "dialog_schedule_hints" - private val INFO_TITLES = arrayOf( - R.string.event_title, - R.string.travel_title, - R.string.faq_title + R.string.event_title, + R.string.travel_title, + R.string.faq_title ) private val INFO_PAGES = arrayOf( - { EventFragment() }, - { TravelFragment() }, - { FaqFragment() } - // TODO: Track the InfoPage performance b/130335745 + { EventFragment() }, + { TravelFragment() }, + { FaqFragment() } + // TODO: Track the InfoPage performance b/130335745 ) } } diff --git a/mobile/src/main/java/com/google/samples/apps/iosched/ui/settings/SettingsFragment.kt b/mobile/src/main/java/com/google/samples/apps/iosched/ui/settings/SettingsFragment.kt index f84ce93f29..391eebe707 100644 --- a/mobile/src/main/java/com/google/samples/apps/iosched/ui/settings/SettingsFragment.kt +++ b/mobile/src/main/java/com/google/samples/apps/iosched/ui/settings/SettingsFragment.kt @@ -51,14 +51,14 @@ class SettingsFragment : MainNavigationFragment() { private val mainActivityViewModel: MainActivityViewModel by viewModels() override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? ): View? { viewModel.navigateToThemeSelector.observe(viewLifecycleOwner, EventObserver { ThemeSettingDialogFragment.newInstance() - .show(requireFragmentManager(), null) + .show(requireFragmentManager(), null) }) val binding = FragmentSettingsBinding.inflate(inflater, container, false) @@ -70,25 +70,31 @@ class SettingsFragment : MainNavigationFragment() { binding.settingsScroll.doOnApplyWindowInsets { v, insets, padding -> v.updatePaddingRelative(bottom = padding.bottom + insets.systemWindowInsetBottom) } - mainActivityViewModel.navigateToSignInDialogAction.observe(viewLifecycleOwner, EventObserver { - openSignInDialog() - }) + mainActivityViewModel.navigateToSignInDialogAction.observe( + viewLifecycleOwner, EventObserver { + openSignInDialog() + }) - mainActivityViewModel.navigateToSignOutDialogAction.observe(viewLifecycleOwner, EventObserver { - openSignOutDialog() - }) + mainActivityViewModel.navigateToSignOutDialogAction.observe( + viewLifecycleOwner, EventObserver { + openSignOutDialog() + }) return binding.root } private fun openSignInDialog() { val dialog = SignInDialogFragment() - dialog.show(requireActivity().supportFragmentManager, SettingsFragment.DIALOG_NEED_TO_SIGN_IN) + dialog.show( + requireActivity().supportFragmentManager, SettingsFragment.DIALOG_NEED_TO_SIGN_IN + ) } private fun openSignOutDialog() { val dialog = SignOutDialogFragment() - dialog.show(requireActivity().supportFragmentManager, SettingsFragment.DIALOG_CONFIRM_SIGN_OUT) + dialog.show( + requireActivity().supportFragmentManager, SettingsFragment.DIALOG_CONFIRM_SIGN_OUT + ) } } @@ -100,10 +106,10 @@ fun createDialogForFile(button: View, dialogTitle: String, fileLink: String) { webView.settings.useWideViewPort = true webView.settings.loadWithOverviewMode = true AlertDialog.Builder(context) - .setTitle(dialogTitle) - .setView(webView) - .create() - .show() + .setTitle(dialogTitle) + .setView(webView) + .create() + .show() } } diff --git a/tools/iosched-codestyle.xml b/tools/iosched-codestyle.xml index 21976a3605..c166c3d48b 100644 --- a/tools/iosched-codestyle.xml +++ b/tools/iosched-codestyle.xml @@ -1,375 +1,516 @@ - -