DO NOT MERGE: Migrate DownloadActivity to fragment

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-06-23 22:25:00 +05:30
parent 0d7419f398
commit b01a9cacbd
11 changed files with 84 additions and 111 deletions

View File

@@ -149,7 +149,6 @@
<activity android:name=".view.ui.commons.CategoryBrowseActivity" />
<activity android:name=".view.ui.details.DetailsMoreActivity" />
<activity android:name=".view.ui.details.DetailsReviewActivity" />
<activity android:name=".view.ui.downloads.DownloadActivity" />
<activity android:name=".view.ui.account.GoogleActivity" />
<activity android:name=".view.ui.details.DetailsExodusActivity" />
<activity android:name=".view.ui.details.DevAppsActivity" />

View File

@@ -41,7 +41,6 @@ import androidx.core.graphics.ColorUtils
import androidx.core.view.GravityCompat
import androidx.navigation.NavController
import androidx.navigation.NavDestination
import androidx.navigation.findNavController
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.aurora.Constants
@@ -55,7 +54,6 @@ import com.aurora.store.util.CertUtil.isFDroidApp
import com.aurora.store.util.Log
import com.aurora.store.util.Preferences
import com.aurora.store.view.ui.commons.BaseActivity
import com.aurora.store.view.ui.downloads.DownloadActivity
import com.aurora.store.view.ui.sheets.SelfUpdateSheet
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.google.android.material.bottomnavigation.BottomNavigationView
@@ -190,7 +188,7 @@ class MainActivity : BaseActivity() {
}
B.viewToolbar.imgActionSecondary.setOnClickListener {
open(DownloadActivity::class.java)
navController.navigate(R.id.downloadFragment)
}
}
@@ -247,7 +245,8 @@ class MainActivity : BaseActivity() {
B.drawerLayout.close()
}
R.id.menu_download_manager -> {
open(DownloadActivity::class.java)
navController.navigate(R.id.downloadFragment)
B.drawerLayout.close()
}
R.id.menu_spoof_manager -> {
navController.navigate(R.id.spoofFragment)

View File

@@ -29,10 +29,12 @@ import android.util.ArrayMap
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import androidx.navigation.NavDeepLinkBuilder
import com.aurora.Constants
import com.aurora.extensions.getStyledAttributeColor
import com.aurora.extensions.isMAndAbove
import com.aurora.gplayapi.data.models.App
import com.aurora.store.MainActivity
import com.aurora.store.R
import com.aurora.store.data.downloader.DownloadManager
import com.aurora.store.data.downloader.RequestGroupIdBuilder
@@ -45,7 +47,6 @@ import com.aurora.store.data.receiver.InstallReceiver
import com.aurora.store.util.CommonUtil
import com.aurora.store.util.Log
import com.aurora.store.view.ui.details.AppDetailsActivity
import com.aurora.store.view.ui.downloads.DownloadActivity
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.tonyodev.fetch2.*
@@ -326,11 +327,11 @@ class NotificationService : Service() {
}
private fun getContentIntentForDownloads(): PendingIntent {
val intent = Intent(this, DownloadActivity::class.java)
val flags = if (isMAndAbove())
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE
else PendingIntent.FLAG_CANCEL_CURRENT
return PendingIntent.getActivity(this, 0, intent, flags)
return NavDeepLinkBuilder(this)
.setGraph(R.navigation.mobile_navigation)
.setDestination(R.id.downloadFragment)
.setComponentName(MainActivity::class.java)
.createPendingIntent()
}
private fun getInstallIntent(packageName: String): PendingIntent {

View File

@@ -57,7 +57,6 @@ import com.aurora.store.data.service.AppMetadataStatusListener
import com.aurora.store.data.service.UpdateService
import com.aurora.store.databinding.ActivityDetailsBinding
import com.aurora.store.util.*
import com.aurora.store.view.ui.downloads.DownloadActivity
import com.aurora.store.view.ui.sheets.InstallErrorDialogSheet
import com.aurora.store.view.ui.sheets.ManualDownloadSheet
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
@@ -283,10 +282,6 @@ class AppDetailsActivity : BaseDetailsActivity() {
sheet.show(supportFragmentManager, ManualDownloadSheet.TAG)
return true
}
R.id.menu_download_manager -> {
open(DownloadActivity::class.java)
return true
}
R.id.action_playstore -> {
browse("${Constants.SHARE_URL}${app.packageName}")
return true

View File

@@ -20,24 +20,34 @@
package com.aurora.store.view.ui.downloads
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import androidx.core.content.ContextCompat
import androidx.navigation.fragment.findNavController
import com.aurora.Constants
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.data.downloader.DownloadManager
import com.aurora.store.data.model.DownloadFile
import com.aurora.store.databinding.ActivityDownloadBinding
import com.aurora.store.databinding.FragmentDownloadBinding
import com.aurora.store.util.Preferences
import com.aurora.store.view.epoxy.views.DownloadViewModel_
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
import com.aurora.store.view.ui.commons.BaseActivity
import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.view.ui.sheets.DownloadMenuSheet
import com.tonyodev.fetch2.*
import com.tonyodev.fetch2.AbstractFetchListener
import com.tonyodev.fetch2.BuildConfig
import com.tonyodev.fetch2.Download
import com.tonyodev.fetch2.Error
import com.tonyodev.fetch2.Fetch
import com.tonyodev.fetch2.FetchListener
import com.tonyodev.fetch2.Status
class DownloadActivity : BaseActivity() {
class DownloadFragment : BaseFragment(R.layout.fragment_download) {
private var _binding: FragmentDownloadBinding? = null
private val binding: FragmentDownloadBinding
get() = _binding!!
private lateinit var B: ActivityDownloadBinding
private lateinit var fetch: Fetch
private var fetchListener: FetchListener = object : AbstractFetchListener() {
@@ -86,30 +96,52 @@ class DownloadActivity : BaseActivity() {
}
}
override fun onConnected() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
_binding = FragmentDownloadBinding.bind(view)
override fun onDisconnected() {
// Toolbar
binding.layoutToolbarAction.toolbar.apply {
elevation = 0f
title = getString(R.string.title_download_manager)
navigationIcon = ContextCompat.getDrawable(view.context, R.drawable.ic_arrow_back)
inflateMenu(R.menu.menu_download_main)
setNavigationOnClickListener { findNavController().navigateUp() }
setOnMenuItemClickListener {
when (it.itemId) {
R.id.action_pause_all -> {
fetch.pauseAll()
}
}
R.id.action_resume_all -> {
fetch.resumeAll()
}
override fun onReconnected() {
R.id.action_cancel_all -> {
fetch.cancelAll()
}
}
R.id.action_clear_completed -> {
fetch.removeAllWithStatus(Status.COMPLETED)
Preferences.getPrefs(view.context).edit()
.remove(Preferences.PREFERENCE_UNIQUE_GROUP_IDS).apply()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
R.id.action_force_clear_all -> {
fetch.deleteAll()
Preferences.getPrefs(view.context).edit()
.remove(Preferences.PREFERENCE_UNIQUE_GROUP_IDS).apply()
}
}
true
}
}
B = ActivityDownloadBinding.inflate(layoutInflater)
setContentView(B.root)
attachToolbar()
fetch = DownloadManager.with(this).fetch
fetch = DownloadManager.with(view.context).fetch
updateDownloadsList()
B.swipeRefreshLayout.setOnRefreshListener {
binding.swipeRefreshLayout.setOnRefreshListener {
updateDownloadsList()
}
}
@@ -126,58 +158,10 @@ class DownloadActivity : BaseActivity() {
super.onPause()
}
override fun onDestroy() {
if (::fetch.isInitialized)
fetch.removeListener(fetchListener)
super.onDestroy()
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_download_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
onBackPressedDispatcher.onBackPressed()
return true
}
R.id.action_pause_all -> {
fetch.pauseAll()
return true
}
R.id.action_resume_all -> {
fetch.resumeAll()
return true
}
R.id.action_cancel_all -> {
fetch.cancelAll()
return true
}
R.id.action_clear_completed -> {
fetch.removeAllWithStatus(Status.COMPLETED)
Preferences.getPrefs(this).edit().remove(Preferences.PREFERENCE_UNIQUE_GROUP_IDS).apply()
return true
}
R.id.action_force_clear_all -> {
fetch.deleteAll()
Preferences.getPrefs(this).edit().remove(Preferences.PREFERENCE_UNIQUE_GROUP_IDS).apply()
return true
}
}
return super.onOptionsItemSelected(item)
}
private fun attachToolbar() {
setSupportActionBar(B.layoutToolbarAction.toolbar)
val actionBar = supportActionBar
if (actionBar != null) {
actionBar.setDisplayShowCustomEnabled(true)
actionBar.setDisplayHomeAsUpEnabled(true)
actionBar.elevation = 0f
actionBar.setTitle(R.string.title_download_manager)
}
override fun onDestroyView() {
if (::fetch.isInitialized) fetch.removeListener(fetchListener)
super.onDestroyView()
_binding = null
}
private fun updateDownloadsList() {
@@ -193,7 +177,7 @@ class DownloadActivity : BaseActivity() {
}
private fun updateController(downloads: List<DownloadFile>) {
B.recycler.withModels {
binding.recycler.withModels {
if (downloads.isEmpty()) {
add(
NoAppViewModel_()
@@ -215,7 +199,7 @@ class DownloadActivity : BaseActivity() {
}
}
}
B.swipeRefreshLayout.isRefreshing = false
binding.swipeRefreshLayout.isRefreshing = false
}
private fun openDetailsActivity(downloadFile: DownloadFile) {
@@ -228,9 +212,9 @@ class DownloadActivity : BaseActivity() {
private fun openDownloadMenuSheet(downloadFile: DownloadFile) {
with(downloadFile) {
val fragment = supportFragmentManager.findFragmentByTag(DownloadMenuSheet.TAG)
val fragment = childFragmentManager.findFragmentByTag(DownloadMenuSheet.TAG)
if (fragment != null)
supportFragmentManager.beginTransaction().remove(fragment)
childFragmentManager.beginTransaction().remove(fragment).commitAllowingStateLoss()
DownloadMenuSheet().apply {
arguments = Bundle().apply {
@@ -239,7 +223,7 @@ class DownloadActivity : BaseActivity() {
putString(DownloadMenuSheet.DOWNLOAD_URL, download.url)
}
}.show(
supportFragmentManager,
childFragmentManager,
DownloadMenuSheet.TAG
)
}

View File

@@ -35,8 +35,6 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.aurora.Constants
import com.aurora.extensions.open
import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.SearchBundle
import com.aurora.store.R
@@ -50,7 +48,6 @@ import com.aurora.store.view.epoxy.views.app.AppListViewModel_
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.view.ui.downloads.DownloadActivity
import com.aurora.store.view.ui.sheets.FilterSheet
import com.aurora.store.viewmodel.search.SearchResultViewModel
import com.google.android.material.snackbar.Snackbar
@@ -98,7 +95,7 @@ class SearchResultsFragment : BaseFragment(R.layout.fragment_search_result),
findNavController().navigateUp()
}
imgActionSecondary.setOnClickListener {
activity?.open(DownloadActivity::class.java)
findNavController().navigate(R.id.downloadFragment)
}
}

View File

@@ -19,7 +19,6 @@
package com.aurora.store.view.ui.search
import android.content.Intent
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
@@ -32,15 +31,12 @@ import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import com.aurora.Constants
import com.aurora.extensions.browse
import com.aurora.extensions.getEmptyActivityBundle
import com.aurora.extensions.open
import com.aurora.extensions.showKeyboard
import com.aurora.gplayapi.SearchSuggestEntry
import com.aurora.store.R
import com.aurora.store.databinding.FragmentSearchSuggestionBinding
import com.aurora.store.util.Preferences
import com.aurora.store.view.epoxy.views.SearchSuggestionViewModel_
import com.aurora.store.view.ui.downloads.DownloadActivity
import com.aurora.store.viewmodel.search.SearchSuggestionViewModel
import com.google.android.material.textfield.TextInputEditText
@@ -69,7 +65,7 @@ class SearchSuggestionFragment : Fragment(R.layout.fragment_search_suggestion) {
findNavController().navigateUp()
}
imgActionSecondary.setOnClickListener {
activity?.open(DownloadActivity::class.java)
findNavController().navigate(R.id.downloadFragment)
}
}

View File

@@ -22,7 +22,8 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:orientation="vertical"
tools:context=".view.ui.downloads.DownloadFragment">
<include
android:id="@+id/layout_toolbar_action"

View File

@@ -32,10 +32,6 @@
android:id="@+id/menu_download_manual"
android:title="@string/title_manual_download" />
<item
android:id="@+id/menu_download_manager"
android:title="@string/title_download_manager" />
<item
android:id="@+id/action_playstore"
android:title="@string/title_download_playstore" />

View File

@@ -93,4 +93,9 @@
android:name="query"
app:argType="string" />
</fragment>
<fragment
android:id="@+id/downloadFragment"
android:name="com.aurora.store.view.ui.downloads.DownloadFragment"
android:label="@string/title_download_manager"
tools:layout="@layout/fragment_download" />
</navigation>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="details_dev_email">ईमेल</string>
<string name="about_bhim">भीम - यूपीआई</string>
<string name="action_disable">अक्षम करें</string>
@@ -190,7 +190,7 @@
<string name="pref_install_mode_title">इंस्टॉल करने का तरीका</string>
<string name="title_account_manager">खाते</string>
<string name="title_apps_sale">ऐप छूट पर</string>
<string name="download_paused">रोके गए</string>
<string name="download_paused">रोके गए <xliff:g id="completed_downloads"> %1$d </xliff:g> / <xliff:g id="all_downloads"> %2$d </xliff:g></string>
<string name="installer_status_failure_incompatible">डिवाइस पर नहीं काम करते ऐप</string>
<string name="menu_license">लाइसेंस</string>
<string name="pref_install_mode_summary">एपीके इंस्टॉल का मोड चुनें</string>