Loading app/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ plugins { def versionMajor = 2 def versionMinor = 3 def versionPatch = 5 def versionPatch = 6 android { compileSdk 31 Loading app/src/main/java/foundation/e/apps/MainActivity.kt +29 −1 Original line number Diff line number Diff line Loading @@ -29,11 +29,14 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.NavController import androidx.navigation.NavOptions import androidx.navigation.findNavController import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.NavigationUI import androidx.navigation.ui.setupWithNavController import com.aurora.gplayapi.exceptions.ApiException import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.application.subFrags.ApplicationDialogFragment Loading @@ -41,6 +44,7 @@ import foundation.e.apps.databinding.ActivityMainBinding import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.manager.workmanager.InstallWorkManager import foundation.e.apps.purchase.AppPurchaseFragmentDirections import foundation.e.apps.settings.SettingsFragment import foundation.e.apps.setup.signin.SignInViewModel import foundation.e.apps.updates.UpdatesNotifier import foundation.e.apps.utils.enums.Status Loading Loading @@ -73,6 +77,7 @@ class MainActivity : AppCompatActivity() { supportFragmentManager.findFragmentById(R.id.fragment) as NavHostFragment val navController = navHostFragment.navController bottomNavigationView.setupWithNavController(navController) setupBottomNavItemSelectedListener(bottomNavigationView, navHostFragment, navController) var hasInternet = true Loading Loading @@ -135,7 +140,6 @@ class MainActivity : AppCompatActivity() { if (!hasInternet) { showNoInternet() } when (destination.id) { R.id.applicationFragment, R.id.applicationListFragment, Loading Loading @@ -223,6 +227,30 @@ class MainActivity : AppCompatActivity() { } } private fun setupBottomNavItemSelectedListener( bottomNavigationView: BottomNavigationView, navHostFragment: NavHostFragment, navController: NavController ) { bottomNavigationView.setOnItemSelectedListener { val fragment = navHostFragment.childFragmentManager.fragments.find { fragment -> fragment is SettingsFragment } if (bottomNavigationView.selectedItemId == R.id.settingsFragment && fragment is SettingsFragment && !fragment.isAnyAppSourceSelected()) { ApplicationDialogFragment( title = "", message = getString(R.string.select_one_source_of_applications), positiveButtonText = getString(R.string.ok) ).show(supportFragmentManager, TAG) return@setOnItemSelectedListener false } return@setOnItemSelectedListener NavigationUI.onNavDestinationSelected( it, navController ) } } private fun handleFusedDownloadQueued( it: FusedDownload, viewModel: MainActivityViewModel Loading app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +1 −1 Original line number Diff line number Diff line Loading @@ -1224,7 +1224,7 @@ class FusedAPIImpl @Inject constructor( mapOf( "popular_apps" to context.getString(R.string.popular_apps), "popular_games" to context.getString(R.string.popular_games), "discover" to context.getString(R.string.discover) "discover" to context.getString(R.string.discover_pwa) ) } headings.forEach { (key, value) -> Loading app/src/main/java/foundation/e/apps/home/model/HomeParentRVAdapter.kt +0 −16 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package foundation.e.apps.home.model import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.lifecycle.LifecycleOwner import androidx.recyclerview.widget.LinearLayoutManager Loading @@ -27,8 +26,6 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import foundation.e.apps.AppInfoFetchViewModel import foundation.e.apps.MainActivityViewModel import foundation.e.apps.R import foundation.e.apps.api.fused.FusedAPIImpl import foundation.e.apps.api.fused.FusedAPIInterface import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.api.fused.data.FusedHome Loading Loading @@ -74,19 +71,6 @@ class HomeParentRVAdapter( holder.binding.titleTV.text = fusedHome.title when (fusedHome.source) { FusedAPIImpl.APP_TYPE_OPEN -> { holder.binding.categoryTag.visibility = View.VISIBLE holder.binding.categoryTag.text = holder.binding.root.context.getString(R.string.open_source) } FusedAPIImpl.APP_TYPE_PWA -> { holder.binding.categoryTag.visibility = View.VISIBLE holder.binding.categoryTag.text = holder.binding.root.context.getString(R.string.pwa) } else -> { holder.binding.categoryTag.visibility = View.GONE } } holder.binding.childRV.apply { recycledViewPool.setMaxRecycledViews(0, 0) adapter = homeChildRVAdapter Loading app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +9 −4 Original line number Diff line number Diff line Loading @@ -55,6 +55,9 @@ class SettingsFragment : PreferenceFragmentCompat() { private val binding get() = _binding!! private val viewModel: SignInViewModel by viewModels() private val mainActivityViewModel: MainActivityViewModel by viewModels() private var showAllApplications: CheckBoxPreference? = null private var showFOSSApplications: CheckBoxPreference? = null private var showPWAApplications: CheckBoxPreference? = null @Inject lateinit var gson: Gson Loading @@ -70,10 +73,9 @@ class SettingsFragment : PreferenceFragmentCompat() { setPreferencesFromResource(R.xml.settings_preferences, rootKey) // Show applications preferences val showAllApplications = findPreference<CheckBoxPreference>("showAllApplications") val showFOSSApplications = findPreference<CheckBoxPreference>("showFOSSApplications") val showPWAApplications = findPreference<CheckBoxPreference>("showPWAApplications") showAllApplications = findPreference<CheckBoxPreference>("showAllApplications") showFOSSApplications = findPreference<CheckBoxPreference>("showFOSSApplications") showPWAApplications = findPreference<CheckBoxPreference>("showPWAApplications") val updateCheckInterval = preferenceManager.findPreference<Preference>(getString(R.string.update_check_intervals)) updateCheckInterval?.setOnPreferenceChangeListener { _, newValue -> Loading Loading @@ -149,6 +151,9 @@ class SettingsFragment : PreferenceFragmentCompat() { } } fun isAnyAppSourceSelected() = showAllApplications?.isChecked == true || showFOSSApplications?.isChecked == true || showPWAApplications?.isChecked == true private fun backToMainActivity() { Intent(context, MainActivity::class.java).also { activity?.finish() Loading Loading
app/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ plugins { def versionMajor = 2 def versionMinor = 3 def versionPatch = 5 def versionPatch = 6 android { compileSdk 31 Loading
app/src/main/java/foundation/e/apps/MainActivity.kt +29 −1 Original line number Diff line number Diff line Loading @@ -29,11 +29,14 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.navigation.NavController import androidx.navigation.NavOptions import androidx.navigation.findNavController import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.NavigationUI import androidx.navigation.ui.setupWithNavController import com.aurora.gplayapi.exceptions.ApiException import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.AndroidEntryPoint import foundation.e.apps.application.subFrags.ApplicationDialogFragment Loading @@ -41,6 +44,7 @@ import foundation.e.apps.databinding.ActivityMainBinding import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.manager.workmanager.InstallWorkManager import foundation.e.apps.purchase.AppPurchaseFragmentDirections import foundation.e.apps.settings.SettingsFragment import foundation.e.apps.setup.signin.SignInViewModel import foundation.e.apps.updates.UpdatesNotifier import foundation.e.apps.utils.enums.Status Loading Loading @@ -73,6 +77,7 @@ class MainActivity : AppCompatActivity() { supportFragmentManager.findFragmentById(R.id.fragment) as NavHostFragment val navController = navHostFragment.navController bottomNavigationView.setupWithNavController(navController) setupBottomNavItemSelectedListener(bottomNavigationView, navHostFragment, navController) var hasInternet = true Loading Loading @@ -135,7 +140,6 @@ class MainActivity : AppCompatActivity() { if (!hasInternet) { showNoInternet() } when (destination.id) { R.id.applicationFragment, R.id.applicationListFragment, Loading Loading @@ -223,6 +227,30 @@ class MainActivity : AppCompatActivity() { } } private fun setupBottomNavItemSelectedListener( bottomNavigationView: BottomNavigationView, navHostFragment: NavHostFragment, navController: NavController ) { bottomNavigationView.setOnItemSelectedListener { val fragment = navHostFragment.childFragmentManager.fragments.find { fragment -> fragment is SettingsFragment } if (bottomNavigationView.selectedItemId == R.id.settingsFragment && fragment is SettingsFragment && !fragment.isAnyAppSourceSelected()) { ApplicationDialogFragment( title = "", message = getString(R.string.select_one_source_of_applications), positiveButtonText = getString(R.string.ok) ).show(supportFragmentManager, TAG) return@setOnItemSelectedListener false } return@setOnItemSelectedListener NavigationUI.onNavDestinationSelected( it, navController ) } } private fun handleFusedDownloadQueued( it: FusedDownload, viewModel: MainActivityViewModel Loading
app/src/main/java/foundation/e/apps/api/fused/FusedAPIImpl.kt +1 −1 Original line number Diff line number Diff line Loading @@ -1224,7 +1224,7 @@ class FusedAPIImpl @Inject constructor( mapOf( "popular_apps" to context.getString(R.string.popular_apps), "popular_games" to context.getString(R.string.popular_games), "discover" to context.getString(R.string.discover) "discover" to context.getString(R.string.discover_pwa) ) } headings.forEach { (key, value) -> Loading
app/src/main/java/foundation/e/apps/home/model/HomeParentRVAdapter.kt +0 −16 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package foundation.e.apps.home.model import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.lifecycle.LifecycleOwner import androidx.recyclerview.widget.LinearLayoutManager Loading @@ -27,8 +26,6 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import foundation.e.apps.AppInfoFetchViewModel import foundation.e.apps.MainActivityViewModel import foundation.e.apps.R import foundation.e.apps.api.fused.FusedAPIImpl import foundation.e.apps.api.fused.FusedAPIInterface import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.api.fused.data.FusedHome Loading Loading @@ -74,19 +71,6 @@ class HomeParentRVAdapter( holder.binding.titleTV.text = fusedHome.title when (fusedHome.source) { FusedAPIImpl.APP_TYPE_OPEN -> { holder.binding.categoryTag.visibility = View.VISIBLE holder.binding.categoryTag.text = holder.binding.root.context.getString(R.string.open_source) } FusedAPIImpl.APP_TYPE_PWA -> { holder.binding.categoryTag.visibility = View.VISIBLE holder.binding.categoryTag.text = holder.binding.root.context.getString(R.string.pwa) } else -> { holder.binding.categoryTag.visibility = View.GONE } } holder.binding.childRV.apply { recycledViewPool.setMaxRecycledViews(0, 0) adapter = homeChildRVAdapter Loading
app/src/main/java/foundation/e/apps/settings/SettingsFragment.kt +9 −4 Original line number Diff line number Diff line Loading @@ -55,6 +55,9 @@ class SettingsFragment : PreferenceFragmentCompat() { private val binding get() = _binding!! private val viewModel: SignInViewModel by viewModels() private val mainActivityViewModel: MainActivityViewModel by viewModels() private var showAllApplications: CheckBoxPreference? = null private var showFOSSApplications: CheckBoxPreference? = null private var showPWAApplications: CheckBoxPreference? = null @Inject lateinit var gson: Gson Loading @@ -70,10 +73,9 @@ class SettingsFragment : PreferenceFragmentCompat() { setPreferencesFromResource(R.xml.settings_preferences, rootKey) // Show applications preferences val showAllApplications = findPreference<CheckBoxPreference>("showAllApplications") val showFOSSApplications = findPreference<CheckBoxPreference>("showFOSSApplications") val showPWAApplications = findPreference<CheckBoxPreference>("showPWAApplications") showAllApplications = findPreference<CheckBoxPreference>("showAllApplications") showFOSSApplications = findPreference<CheckBoxPreference>("showFOSSApplications") showPWAApplications = findPreference<CheckBoxPreference>("showPWAApplications") val updateCheckInterval = preferenceManager.findPreference<Preference>(getString(R.string.update_check_intervals)) updateCheckInterval?.setOnPreferenceChangeListener { _, newValue -> Loading Loading @@ -149,6 +151,9 @@ class SettingsFragment : PreferenceFragmentCompat() { } } fun isAnyAppSourceSelected() = showAllApplications?.isChecked == true || showFOSSApplications?.isChecked == true || showPWAApplications?.isChecked == true private fun backToMainActivity() { Intent(context, MainActivity::class.java).also { activity?.finish() Loading