From b994df4ede5c7ac987ef8f174ba2a5ad78394830 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Thu, 17 Feb 2022 23:19:22 +0100 Subject: [PATCH] Update/Remove: Use ComposeView in MainNav fragments / Remove Recyclers&FastAdapters. --- .../droidify/ui/fragments/ExploreFragment.kt | 29 ------- .../ui/fragments/InstalledFragment.kt | 35 -------- .../droidify/ui/fragments/LatestFragment.kt | 33 -------- src/main/res/layout/fragment_explore_x.xml | 22 +++-- src/main/res/layout/fragment_installed_x.xml | 61 +++++--------- src/main/res/layout/fragment_latest_x.xml | 80 +++++-------------- 6 files changed, 48 insertions(+), 212 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt index 4dd5c19a..441dd6e9 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt @@ -8,18 +8,11 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.looker.droidify.database.entity.Product import com.looker.droidify.database.entity.Repository import com.looker.droidify.databinding.FragmentExploreXBinding -import com.looker.droidify.ui.items.VAppItem -import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG -import com.mikepenz.fastadapter.FastAdapter -import com.mikepenz.fastadapter.IAdapter -import com.mikepenz.fastadapter.paged.PagedModelAdapter // TODO add chips bar to navigate categories class ExploreFragment : MainNavFragmentX() { private lateinit var binding: FragmentExploreXBinding - private lateinit var appsItemAdapter: PagedModelAdapter - private var appsFastAdapter: FastAdapter? = null override val primarySource = Source.AVAILABLE override val secondarySource = Source.AVAILABLE @@ -38,31 +31,9 @@ class ExploreFragment : MainNavFragmentX() { } override fun setupAdapters() { - appsItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { - VAppItem(it.item, repositories[it.repository_id]) - } - appsFastAdapter = FastAdapter.with(appsItemAdapter) - appsFastAdapter?.setHasStableIds(true) - appsFastAdapter?.onClickListener = - { _: View?, _: IAdapter?, item: VAppItem?, _: Int? -> - item?.item?.let { - AppSheetX(it.packageName) - .showNow(parentFragmentManager, "Product ${it.packageName}") - } - false - } - binding.recyclerView.apply { - layoutManager = LinearLayoutManager(requireContext()) - setHasFixedSize(true) - adapter = appsFastAdapter - } } override fun setupLayout() { - viewModel.primaryProducts.observe(viewLifecycleOwner) { - appsItemAdapter.submitList(it) - appsFastAdapter?.notifyDataSetChanged() - } viewModel.repositories.observe(viewLifecycleOwner) { repositories = it.associateBy { repo -> repo.id } } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt index 74513402..50fcad88 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt @@ -4,26 +4,14 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView import com.looker.droidify.database.entity.Product import com.looker.droidify.database.entity.Repository import com.looker.droidify.databinding.FragmentInstalledXBinding -import com.looker.droidify.ui.items.HAppItem -import com.looker.droidify.ui.items.VAppItem -import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG -import com.mikepenz.fastadapter.FastAdapter -import com.mikepenz.fastadapter.paged.PagedModelAdapter class InstalledFragment : MainNavFragmentX() { private lateinit var binding: FragmentInstalledXBinding - private lateinit var installedItemAdapter: PagedModelAdapter - private var installedFastAdapter: FastAdapter? = null - private lateinit var updatedItemAdapter: PagedModelAdapter - private var updatedFastAdapter: FastAdapter? = null - override val primarySource = Source.INSTALLED override val secondarySource = Source.UPDATES @@ -41,39 +29,16 @@ class InstalledFragment : MainNavFragmentX() { } override fun setupAdapters() { - installedItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { - VAppItem(it.item, repositories[it.repository_id]) - } - updatedItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { - HAppItem(it.item, repositories[it.repository_id]) - } - installedFastAdapter = FastAdapter.with(installedItemAdapter) - installedFastAdapter?.setHasStableIds(true) - binding.installedRecycler.apply { - layoutManager = LinearLayoutManager(requireContext()) - adapter = installedFastAdapter - } - updatedFastAdapter = FastAdapter.with(updatedItemAdapter) - updatedFastAdapter?.setHasStableIds(true) - binding.updatedRecycler.apply { - layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false) - adapter = updatedFastAdapter - } } override fun setupLayout() { binding.buttonUpdated.setOnClickListener { - binding.updatedRecycler.apply { - visibility = if (visibility == View.VISIBLE) View.GONE else View.VISIBLE - } } viewModel.primaryProducts.observe(viewLifecycleOwner) { - installedItemAdapter.submitList(it) } viewModel.secondaryProducts.observe(viewLifecycleOwner) { binding.updatedBar.visibility = if (it.isNotEmpty()) View.VISIBLE else View.GONE - updatedItemAdapter.submitList(it) } viewModel.repositories.observe(viewLifecycleOwner) { repositories = it.associateBy { repo -> repo.id } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt index 31296b88..ecaf1856 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt @@ -4,26 +4,14 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView import com.looker.droidify.database.entity.Product import com.looker.droidify.database.entity.Repository import com.looker.droidify.databinding.FragmentLatestXBinding -import com.looker.droidify.ui.items.HAppItem -import com.looker.droidify.ui.items.VAppItem -import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG -import com.mikepenz.fastadapter.FastAdapter -import com.mikepenz.fastadapter.paged.PagedModelAdapter class LatestFragment : MainNavFragmentX() { private lateinit var binding: FragmentLatestXBinding - private lateinit var updatedItemAdapter: PagedModelAdapter - private var updatedFastAdapter: FastAdapter? = null - private lateinit var newItemAdapter: PagedModelAdapter - private var newFastAdapter: FastAdapter? = null - // TODO replace the source with one that get a certain amount of updated apps override val primarySource = Source.UPDATED override val secondarySource = Source.NEW @@ -42,33 +30,12 @@ class LatestFragment : MainNavFragmentX() { } override fun setupAdapters() { - updatedItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { - VAppItem(it.item, repositories[it.repository_id]) - } - newItemAdapter = PagedModelAdapter(PRODUCT_ASYNC_DIFFER_CONFIG) { - // TODO filter for only new apps and add placeholder - HAppItem(it.item, repositories[it.repository_id]) - } - updatedFastAdapter = FastAdapter.with(updatedItemAdapter) - updatedFastAdapter?.setHasStableIds(true) - binding.updatedRecycler.apply { - layoutManager = LinearLayoutManager(requireContext()) - adapter = updatedFastAdapter - } - newFastAdapter = FastAdapter.with(newItemAdapter) - newFastAdapter?.setHasStableIds(true) - binding.newRecycler.apply { - layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false) - adapter = newFastAdapter - } } override fun setupLayout() { viewModel.primaryProducts.observe(viewLifecycleOwner) { - updatedItemAdapter.submitList(it) } viewModel.secondaryProducts.observe(viewLifecycleOwner) { - newItemAdapter.submitList(it) } viewModel.repositories.observe(viewLifecycleOwner) { repositories = it.associateBy { repo -> repo.id } diff --git a/src/main/res/layout/fragment_explore_x.xml b/src/main/res/layout/fragment_explore_x.xml index b693eb5a..cf930f3f 100644 --- a/src/main/res/layout/fragment_explore_x.xml +++ b/src/main/res/layout/fragment_explore_x.xml @@ -15,8 +15,7 @@ ~ You should have received a copy of the GNU Affero General Public License ~ along with this program. If not, see . --> - + @@ -26,21 +25,18 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + android:nestedScrollingEnabled="true" + android:orientation="vertical"> - - + android:layout_height="0dp" + android:layout_weight="1" /> + diff --git a/src/main/res/layout/fragment_installed_x.xml b/src/main/res/layout/fragment_installed_x.xml index 3e588da7..1c1dbfc9 100644 --- a/src/main/res/layout/fragment_installed_x.xml +++ b/src/main/res/layout/fragment_installed_x.xml @@ -16,22 +16,22 @@ ~ along with this program. If not, see . --> + xmlns:app="http://schemas.android.com/apk/res-auto"> - + android:orientation="vertical"> - - + + + android:paddingHorizontal="4dp"> - - - - - + android:layout_weight="1" /> + diff --git a/src/main/res/layout/fragment_latest_x.xml b/src/main/res/layout/fragment_latest_x.xml index 568e5af5..740bfbdb 100644 --- a/src/main/res/layout/fragment_latest_x.xml +++ b/src/main/res/layout/fragment_latest_x.xml @@ -16,64 +16,38 @@ ~ along with this program. If not, see . --> + xmlns:app="http://schemas.android.com/apk/res-auto"> - + android:orientation="vertical"> - + android:layout_marginHorizontal="12dp" + android:layout_marginVertical="14dp" + android:text="@string/new_applications" /> - - - - + + android:orientation="horizontal"> - - - - - + app:layout_constraintTop_toBottomOf="@id/modeBar" /> +