From fc3dfaa74769aab368d858da8f5ca2dad4fc6408 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Wed, 5 Jul 2023 12:56:24 +0530 Subject: [PATCH] Migrate ScreenshotActivity to fragment Signed-off-by: Aayush Gupta --- app/src/main/AndroidManifest.xml | 1 - .../store/view/ui/commons/BaseActivity.kt | 9 -- .../store/view/ui/commons/BaseFragment.kt | 11 ++ .../ui/commons/EditorStreamBrowseFragment.kt | 6 +- .../commons/ExpandedStreamBrowseFragment.kt | 6 +- .../view/ui/details/AppDetailsFragment.kt | 2 +- .../view/ui/details/ScreenshotActivity.kt | 114 ------------------ .../view/ui/details/ScreenshotFragment.kt | 85 +++++++++++++ ...screenshot.xml => fragment_screenshot.xml} | 3 +- .../main/res/navigation/mobile_navigation.xml | 14 +++ 10 files changed, 115 insertions(+), 136 deletions(-) delete mode 100644 app/src/main/java/com/aurora/store/view/ui/details/ScreenshotActivity.kt create mode 100644 app/src/main/java/com/aurora/store/view/ui/details/ScreenshotFragment.kt rename app/src/main/res/layout/{activity_screenshot.xml => fragment_screenshot.xml} (94%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 00a5cf1da..d5691f2f9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -108,7 +108,6 @@ - diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt index 6248540b0..f634b5a1e 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/BaseActivity.kt @@ -85,15 +85,6 @@ abstract class BaseActivity : AppCompatActivity(), NetworkProvider.NetworkListen startActivity(intent, getEmptyActivityBundle()) } - fun openScreenshotActivity(app: App, position: Int) { - val intent = Intent(this, ScreenshotActivity::class.java).apply { - putExtra(Constants.STRING_EXTRA, gson.toJson(app.screenshots)) - putExtra(Constants.INT_EXTRA, position) - } - val options = ActivityOptions.makeSceneTransitionAnimation(this) - startActivity(intent, options.toBundle()) - } - fun openGoogleActivity() { val intent = Intent(this, GoogleActivity::class.java) startActivity(intent, getEmptyActivityBundle()) diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt index 9965f0407..5e0486675 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt @@ -19,6 +19,7 @@ package com.aurora.store.view.ui.commons +import android.app.ActivityOptions import android.content.Intent import androidx.annotation.LayoutRes import androidx.fragment.app.Fragment @@ -29,6 +30,7 @@ import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.Category import com.aurora.store.MobileNavigationDirections import com.aurora.store.view.ui.details.DevProfileActivity +import com.aurora.store.view.ui.details.ScreenshotFragment import com.google.gson.Gson import com.google.gson.GsonBuilder import java.lang.reflect.Modifier @@ -83,4 +85,13 @@ open class BaseFragment : Fragment { MobileNavigationDirections.actionGlobalEditorStreamBrowseFragment(title, browseUrl) ) } + + fun openScreenshotFragment(app: App, position: Int) { + findNavController().navigate( + MobileNavigationDirections.actionGlobalScreenshotFragment( + position, + gson.toJson(app.screenshots) + ) + ) + } } diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/EditorStreamBrowseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/EditorStreamBrowseFragment.kt index 817b838cc..f03a530ab 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/EditorStreamBrowseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/EditorStreamBrowseFragment.kt @@ -26,7 +26,6 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyModel import com.aurora.gplayapi.data.models.App -import com.aurora.store.MainActivity import com.aurora.store.R import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_ @@ -99,10 +98,7 @@ class EditorStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycl .artwork(artwork) .callback(object : MiniScreenshotView.ScreenshotCallback { override fun onClick(position: Int) { - (activity as MainActivity).openScreenshotActivity( - app, - position - ) + openScreenshotFragment(app, position) } }) ) diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/ExpandedStreamBrowseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/ExpandedStreamBrowseFragment.kt index d0a417869..650ddcd06 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/ExpandedStreamBrowseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/ExpandedStreamBrowseFragment.kt @@ -26,7 +26,6 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyModel import com.aurora.gplayapi.data.models.StreamCluster -import com.aurora.store.MainActivity import com.aurora.store.R import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener @@ -119,10 +118,7 @@ class ExpandedStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recy .artwork(artwork) .callback(object : MiniScreenshotView.ScreenshotCallback { override fun onClick(position: Int) { - (activity as MainActivity).openScreenshotActivity( - it, - position - ) + openScreenshotFragment(it, position) } }) ) diff --git a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt index fe027e390..78ecd26f7 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt @@ -938,7 +938,7 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) { .position(position++) .callback(object : ScreenshotView.ScreenshotCallback { override fun onClick(position: Int) { - (activity as MainActivity).openScreenshotActivity(app, position) + openScreenshotFragment(app, position) } }) ) diff --git a/app/src/main/java/com/aurora/store/view/ui/details/ScreenshotActivity.kt b/app/src/main/java/com/aurora/store/view/ui/details/ScreenshotActivity.kt deleted file mode 100644 index 99b7ecd6f..000000000 --- a/app/src/main/java/com/aurora/store/view/ui/details/ScreenshotActivity.kt +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Aurora Store - * Copyright (C) 2021, Rahul Kumar Patel - * - * Aurora Store is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * Aurora Store is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Aurora Store. If not, see . - * - */ - -package com.aurora.store.view.ui.details - -import android.os.Bundle -import android.view.MenuItem -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.PagerSnapHelper -import androidx.recyclerview.widget.RecyclerView -import com.aurora.Constants -import com.aurora.gplayapi.data.models.Artwork -import com.aurora.store.databinding.ActivityScreenshotBinding -import com.aurora.store.view.epoxy.views.details.LargeScreenshotViewModel_ -import com.aurora.store.view.ui.commons.BaseActivity -import com.google.gson.reflect.TypeToken - -class ScreenshotActivity : BaseActivity() { - - private lateinit var B: ActivityScreenshotBinding - private lateinit var artworks: MutableList - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - // ViewUtil.configureActivityLayout(this, false) - - B = ActivityScreenshotBinding.inflate(layoutInflater) - setContentView(B.root) - - attachToolbar() - attachRecycler() - - if (intent != null) { - val rawArtWorks = intent.getStringExtra(Constants.STRING_EXTRA).toString() - val position = intent.getIntExtra(Constants.INT_EXTRA, 0) - artworks = gson.fromJson(rawArtWorks, object : TypeToken?>() {}.type) - updateController(artworks, position) - } else { - finishAfterTransition() - } - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item.itemId) { - android.R.id.home -> { - onBackPressedDispatcher.onBackPressed() - return true - } - } - return super.onOptionsItemSelected(item) - } - - private fun attachToolbar() { - setSupportActionBar(B.toolbar) - val actionBar = supportActionBar - if (actionBar != null) { - actionBar.setDisplayShowCustomEnabled(true) - actionBar.setDisplayHomeAsUpEnabled(true) - actionBar.elevation = 0f - actionBar.title = "" - } - } - - private fun attachRecycler() { - B.recyclerView.apply { - layoutManager = LinearLayoutManager( - this@ScreenshotActivity, - RecyclerView.HORIZONTAL, - false - ) - PagerSnapHelper().attachToRecyclerView(this) - } - } - - private fun updateController(artworks: MutableList, position: Int) { - B.recyclerView.withModels { - artworks.forEach { - add( - LargeScreenshotViewModel_() - .id(it.url) - .artwork(it) - ) - } - B.recyclerView.scrollToPosition(position) - } - } - - override fun onConnected() { - - } - - override fun onDisconnected() { - } - - override fun onReconnected() { - } -} diff --git a/app/src/main/java/com/aurora/store/view/ui/details/ScreenshotFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/ScreenshotFragment.kt new file mode 100644 index 000000000..d3b0c706e --- /dev/null +++ b/app/src/main/java/com/aurora/store/view/ui/details/ScreenshotFragment.kt @@ -0,0 +1,85 @@ +/* + * Aurora Store + * Copyright (C) 2021, Rahul Kumar Patel + * + * Aurora Store is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * Aurora Store is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Aurora Store. If not, see . + * + */ + +package com.aurora.store.view.ui.details + +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import androidx.navigation.fragment.findNavController +import androidx.navigation.fragment.navArgs +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.PagerSnapHelper +import androidx.recyclerview.widget.RecyclerView +import com.aurora.gplayapi.data.models.Artwork +import com.aurora.store.R +import com.aurora.store.databinding.FragmentScreenshotBinding +import com.aurora.store.view.epoxy.views.details.LargeScreenshotViewModel_ +import com.aurora.store.view.ui.commons.BaseFragment +import com.google.gson.reflect.TypeToken + +class ScreenshotFragment : BaseFragment(R.layout.fragment_screenshot) { + + private var _binding: FragmentScreenshotBinding? = null + private val binding: FragmentScreenshotBinding + get() = _binding!! + + private val args: ScreenshotFragmentArgs by navArgs() + + private lateinit var artworks: MutableList + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + _binding = FragmentScreenshotBinding.bind(view) + + // Toolbar + binding.toolbar.apply { + elevation = 0f + navigationIcon = ContextCompat.getDrawable(view.context, R.drawable.ic_arrow_back) + setNavigationOnClickListener { findNavController().navigateUp() } + } + + // Recycler View + binding.recyclerView.apply { + layoutManager = LinearLayoutManager(view.context, RecyclerView.HORIZONTAL, false) + PagerSnapHelper().attachToRecyclerView(this) + } + + artworks = gson.fromJson(args.rawArtWorks, object : TypeToken?>() {}.type) + updateController(artworks, args.position) + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + + private fun updateController(artworks: MutableList, position: Int) { + binding.recyclerView.withModels { + artworks.forEach { + add( + LargeScreenshotViewModel_() + .id(it.url) + .artwork(it) + ) + } + binding.recyclerView.scrollToPosition(position) + } + } +} diff --git a/app/src/main/res/layout/activity_screenshot.xml b/app/src/main/res/layout/fragment_screenshot.xml similarity index 94% rename from app/src/main/res/layout/activity_screenshot.xml rename to app/src/main/res/layout/fragment_screenshot.xml index 1514f3316..73a17f367 100644 --- a/app/src/main/res/layout/activity_screenshot.xml +++ b/app/src/main/res/layout/fragment_screenshot.xml @@ -21,7 +21,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + tools:context=".view.ui.details.ScreenshotFragment"> + + + + @@ -152,4 +163,7 @@ +