ui: sheets: Use BottomSheetDialogFragment directly

We don't need base class anymore. Also use view binding the recommended
way for fragments.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-03-20 13:35:06 +05:30
parent 5cf7fa6b3c
commit 3a27fa719b
12 changed files with 175 additions and 302 deletions

View File

@@ -21,10 +21,8 @@
package com.aurora.store.view.ui.sheets
import android.os.Bundle
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.navArgs
@@ -37,16 +35,23 @@ import com.aurora.store.data.providers.BlacklistProvider
import com.aurora.store.databinding.SheetAppMenuBinding
import com.aurora.store.util.PackageUtil
import com.aurora.store.viewmodel.sheets.SheetsViewModel
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
import org.greenrobot.eventbus.EventBus
@AndroidEntryPoint
class AppMenuSheet : BaseBottomSheet() {
class AppMenuSheet : BottomSheetDialogFragment(R.layout.sheet_app_menu) {
private lateinit var B: SheetAppMenuBinding
companion object {
const val TAG = "APP_MENU_SHEET"
}
private var _binding: SheetAppMenuBinding? = null
private val binding get() = _binding!!
private val viewModel: SheetsViewModel by viewModels()
private val args: AppMenuSheetArgs by navArgs()
private val exportMimeType = "application/zip"
private val requestDocumentCreation =
@@ -59,22 +64,14 @@ class AppMenuSheet : BaseBottomSheet() {
dismissAllowingStateLoss()
}
override fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View {
B = SheetAppMenuBinding.inflate(layoutInflater)
return B.root
}
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetAppMenuBinding.bind(view)
val blacklistProvider = BlacklistProvider.with(requireContext())
val isBlacklisted: Boolean = blacklistProvider.isBlacklisted(args.app.packageName)
with(B.navigationView) {
with(binding.navigationView) {
//Switch strings for Add/Remove Blacklist
val blackListMenu: MenuItem = menu.findItem(R.id.action_blacklist)
blackListMenu.setTitle(
@@ -125,7 +122,8 @@ class AppMenuSheet : BaseBottomSheet() {
}
}
companion object {
const val TAG = "APP_MENU_SHEET"
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -20,47 +20,43 @@
package com.aurora.store.view.ui.sheets
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.navigation.fragment.navArgs
import coil.load
import coil.transform.RoundedCornersTransformation
import com.aurora.store.R
import com.aurora.store.databinding.SheetAppPeekBinding
import com.aurora.store.util.CommonUtil
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class AppPeekDialogSheet : BaseBottomSheet() {
class AppPeekDialogSheet : BottomSheetDialogFragment(R.layout.sheet_app_peek) {
lateinit var B: SheetAppPeekBinding
private var _binding: SheetAppPeekBinding? = null
private val binding get() = _binding!!
private val args: AppPeekDialogSheetArgs by navArgs()
override fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View {
B = SheetAppPeekBinding.inflate(inflater, container, false)
return B.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetAppPeekBinding.bind(view)
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
B.txtLine1.text = args.app.displayName
B.imgIcon.load(args.app.iconArtwork.url) {
binding.txtLine1.text = args.app.displayName
binding.imgIcon.load(args.app.iconArtwork.url) {
transformations(RoundedCornersTransformation(25F))
}
B.txtLine2.text = args.app.developerName
B.txtLine3.text = String.format(
binding.txtLine2.text = args.app.developerName
binding.txtLine3.text = String.format(
requireContext().getString(R.string.app_list_rating),
CommonUtil.addSiPrefix(args.app.size),
args.app.labeledRating,
if (args.app.isFree)
"Free"
else
"Paid"
if (args.app.isFree) "Free" else "Paid"
)
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -1,83 +0,0 @@
/*
* Aurora Store
* Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
*
* 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 <http://www.gnu.org/licenses/>.
*
*/
package com.aurora.store.view.ui.sheets
import android.app.Dialog
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import com.aurora.store.R
import com.aurora.store.databinding.SheetBaseBinding
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import java.lang.reflect.Modifier
abstract class BaseBottomSheet : BottomSheetDialogFragment() {
lateinit var VM: SheetBaseBinding
var gson: Gson = GsonBuilder()
.excludeFieldsWithModifiers(Modifier.STATIC, Modifier.TRANSIENT)
.create()
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val bottomSheetDialog = BottomSheetDialog(
requireContext(),
R.style.AppTheme_Dialog
)
VM = SheetBaseBinding.inflate(layoutInflater)
bottomSheetDialog.setContentView(VM.root)
val container = VM.container
val contentView = onCreateContentView(
LayoutInflater.from(requireContext()),
container,
savedInstanceState
)
if (contentView != null) {
onContentViewCreated(contentView, savedInstanceState)
container.addView(contentView)
}
bottomSheetDialog.setOnShowListener {
val bottomSheet =
bottomSheetDialog.findViewById<FrameLayout>(com.google.android.material.R.id.design_bottom_sheet)
if (bottomSheet != null)
BottomSheetBehavior.from(bottomSheet).state = BottomSheetBehavior.STATE_EXPANDED
}
return bottomSheetDialog
}
abstract fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View?
abstract fun onContentViewCreated(view: View, savedInstanceState: Bundle?)
}

View File

@@ -22,59 +22,44 @@ package com.aurora.store.view.ui.sheets
import android.content.Intent
import android.os.Bundle
import android.provider.Settings
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import coil.load
import coil.transform.CircleCropTransformation
import com.aurora.extensions.toast
import com.aurora.store.R
import com.aurora.store.databinding.SheetDeviceMiuiBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class DeviceMiuiSheet : BaseBottomSheet() {
class DeviceMiuiSheet : BottomSheetDialogFragment(R.layout.sheet_device_miui) {
private lateinit var B: SheetDeviceMiuiBinding
private var _binding: SheetDeviceMiuiBinding? = null
private val binding get() = _binding!!
override fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View {
B = SheetDeviceMiuiBinding.inflate(inflater, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetDeviceMiuiBinding.bind(view)
inflateData()
attachAction()
return B.root
}
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
}
private fun inflateData() {
B.imgIcon.load(R.drawable.ic_xiaomi_logo) {
binding.imgIcon.load(R.drawable.ic_xiaomi_logo) {
transformations(CircleCropTransformation())
}
}
private fun attachAction() {
B.btnPrimary.setOnClickListener {
openDeveloperSettings()
binding.btnPrimary.setOnClickListener {
try {
startActivity(Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS))
} catch (e: Exception) {
toast(R.string.toast_developer_setting_failed)
}
}
B.btnSecondary.setOnClickListener {
binding.btnSecondary.setOnClickListener {
dismissAllowingStateLoss()
}
}
private fun openDeveloperSettings() {
try {
startActivity(Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS))
} catch (e: Exception) {
toast(R.string.toast_developer_setting_failed)
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -21,9 +21,7 @@ package com.aurora.store.view.ui.sheets
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.findViewTreeLifecycleOwner
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.navArgs
@@ -34,13 +32,14 @@ import com.aurora.store.data.installer.AppInstaller
import com.aurora.store.data.model.DownloadStatus
import com.aurora.store.databinding.SheetDownloadMenuBinding
import com.aurora.store.util.DownloadWorkerUtil
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.launch
@AndroidEntryPoint
class DownloadMenuSheet : BaseBottomSheet() {
class DownloadMenuSheet : BottomSheetDialogFragment(R.layout.sheet_download_menu) {
private val TAG = DownloadMenuSheet::class.java.simpleName
@@ -56,17 +55,9 @@ class DownloadMenuSheet : BaseBottomSheet() {
@Inject
lateinit var appInstaller: AppInstaller
override fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View {
_binding = SheetDownloadMenuBinding.inflate(layoutInflater)
return binding.root
}
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetDownloadMenuBinding.bind(view)
with(binding.navigationView) {
menu.findItem(R.id.action_cancel).isVisible = !args.download.isFinished

View File

@@ -4,9 +4,7 @@ import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.provider.Settings
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.navigation.fragment.navArgs
import com.aurora.extensions.isIgnoringBatteryOptimizations
@@ -17,8 +15,9 @@ import com.aurora.store.data.work.UpdateWorker
import com.aurora.store.databinding.SheetDozeWarningBinding
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_AUTO
import com.aurora.store.util.save
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
class DozeWarningSheet : BaseBottomSheet() {
class DozeWarningSheet : BottomSheetDialogFragment(R.layout.sheet_doze_warning) {
private val args: DozeWarningSheetArgs by navArgs()
@@ -42,26 +41,23 @@ class DozeWarningSheet : BaseBottomSheet() {
private var _binding: SheetDozeWarningBinding? = null
private val binding get() = _binding!!
override fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View {
_binding = SheetDozeWarningBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetDozeWarningBinding.bind(view)
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
binding.btnSecondary.setOnClickListener { dismissAllowingStateLoss() }
binding.btnPrimary.setOnClickListener { requestDozePermission() }
}
private fun requestDozePermission() {
if (isMAndAbove()) {
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply {
data = Uri.parse("package:${requireContext().packageName}")
binding.btnPrimary.setOnClickListener {
if (isMAndAbove()) {
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply {
data = Uri.parse("package:${requireContext().packageName}")
}
startForDozeResult.launch(intent)
}
startForDozeResult.launch(intent)
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -20,51 +20,51 @@
package com.aurora.store.view.ui.sheets
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.aurora.store.R
import com.aurora.store.data.Filter
import com.aurora.store.data.providers.FilterProvider
import com.aurora.store.databinding.SheetFilterBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.android.material.chip.Chip
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class FilterSheet : BaseBottomSheet() {
class FilterSheet : BottomSheetDialogFragment(R.layout.sheet_filter) {
private var _binding: SheetFilterBinding? = null
private val binding get() = _binding!!
private lateinit var B: SheetFilterBinding
private lateinit var filter: Filter
override fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View {
B = SheetFilterBinding.inflate(inflater, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetFilterBinding.bind(view)
filter = FilterProvider.with(requireContext()).getSavedFilter()
return B.root
}
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
attachSingleChips()
attachMultipleChips()
attachActions()
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun attachActions() {
B.btnPositive.setOnClickListener {
binding.btnPositive.setOnClickListener {
FilterProvider.with(requireContext()).saveFilter(filter)
dismissAllowingStateLoss()
}
B.btnNegative.setOnClickListener {
binding.btnNegative.setOnClickListener {
dismissAllowingStateLoss()
}
}
private fun attachSingleChips() {
B.filterGfs.apply {
binding.filterGfs.apply {
isChecked = filter.gsfDependentApps
setOnCheckedChangeListener { _, checked ->
isChecked = checked
@@ -72,7 +72,7 @@ class FilterSheet : BaseBottomSheet() {
}
}
B.filterPaid.apply {
binding.filterPaid.apply {
isChecked = filter.paidApps
setOnCheckedChangeListener { _, checked ->
isChecked = checked
@@ -80,7 +80,7 @@ class FilterSheet : BaseBottomSheet() {
}
}
B.filterAds.apply {
binding.filterAds.apply {
isChecked = filter.appsWithAds
setOnCheckedChangeListener { _, checked ->
isChecked = checked
@@ -101,11 +101,11 @@ class FilterSheet : BaseBottomSheet() {
chip.id = i
chip.text = downloadLabel
chip.isChecked = filter.downloads == downloadValues[i].toInt()
B.downloadChips.addView(chip)
binding.downloadChips.addView(chip)
i++
}
B.downloadChips.setOnCheckedStateChangeListener { _, checkedIds ->
binding.downloadChips.setOnCheckedStateChangeListener { _, checkedIds ->
filter.downloads = downloadValues[checkedIds[0]].toInt()
}
@@ -115,11 +115,11 @@ class FilterSheet : BaseBottomSheet() {
chip.id = i
chip.text = ratingLabel
chip.isChecked = filter.rating == ratingValues[i].toFloat()
B.ratingChips.addView(chip)
binding.ratingChips.addView(chip)
i++
}
B.ratingChips.setOnCheckedStateChangeListener { _, checkedIds ->
binding.ratingChips.setOnCheckedStateChangeListener { _, checkedIds ->
filter.rating = ratingValues[checkedIds[0]].toFloat()
}
}

View File

@@ -20,9 +20,7 @@
package com.aurora.store.view.ui.sheets
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.navigation.fragment.navArgs
import coil.load
import coil.transform.CircleCropTransformation
@@ -30,49 +28,41 @@ import com.aurora.extensions.copyToClipBoard
import com.aurora.extensions.toast
import com.aurora.store.R
import com.aurora.store.databinding.SheetInstallErrorBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class InstallErrorDialogSheet : BaseBottomSheet() {
class InstallErrorDialogSheet : BottomSheetDialogFragment(R.layout.sheet_install_error) {
private lateinit var B: SheetInstallErrorBinding
private var _binding: SheetInstallErrorBinding? = null
private val binding get() = _binding!!
private val args: InstallErrorDialogSheetArgs by navArgs()
override fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View {
B = SheetInstallErrorBinding.inflate(inflater, container, false)
inflateData()
attachAction()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetInstallErrorBinding.bind(view)
return B.root
}
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
}
private fun inflateData() {
B.imgIcon.load(args.app.iconArtwork.url) {
binding.imgIcon.load(args.app.iconArtwork.url) {
transformations(CircleCropTransformation())
}
B.txtLine1.text = args.app.displayName
B.txtLine2.text = args.error
B.txtLine3.text = args.extra
}
binding.txtLine1.text = args.app.displayName
binding.txtLine2.text = args.error
binding.txtLine3.text = args.extra
private fun attachAction() {
B.btnPrimary.setOnClickListener {
binding.btnPrimary.setOnClickListener {
dismissAllowingStateLoss()
}
B.btnSecondary.setOnClickListener {
binding.btnSecondary.setOnClickListener {
requireContext().copyToClipBoard(args.extra)
requireContext().toast(R.string.toast_clipboard_copied)
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -21,9 +21,7 @@ package com.aurora.store.view.ui.sheets
import android.app.Dialog
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.navArgs
@@ -33,34 +31,43 @@ import com.aurora.extensions.toast
import com.aurora.store.R
import com.aurora.store.databinding.SheetManualDownloadBinding
import com.aurora.store.viewmodel.sheets.SheetsViewModel
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
@AndroidEntryPoint
class ManualDownloadSheet : BaseBottomSheet() {
class ManualDownloadSheet : BottomSheetDialogFragment(R.layout.sheet_manual_download) {
private lateinit var B: SheetManualDownloadBinding
private var _binding: SheetManualDownloadBinding? = null
private val binding get() = _binding!!
private val viewModel: SheetsViewModel by viewModels()
private val args: ManualDownloadSheetArgs by navArgs()
override fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View {
B = SheetManualDownloadBinding.inflate(inflater)
return B.root
}
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetManualDownloadBinding.bind(view)
isCancelable = false
inflateData()
attachActions()
viewLifecycleOwner.lifecycleScope.launch {
viewModel.purchaseStatus.collectLatest {
if (it) {
toast(R.string.toast_manual_available)
dismissAllowingStateLoss()
} else {
toast(R.string.toast_manual_unavailable)
}
}
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
@@ -78,30 +85,30 @@ class ManualDownloadSheet : BaseBottomSheet() {
}
private fun inflateData() {
B.imgIcon.load(args.app.iconArtwork.url) {
binding.imgIcon.load(args.app.iconArtwork.url) {
placeholder(R.drawable.bg_placeholder)
transformations(RoundedCornersTransformation(32F))
}
B.txtLine1.text = args.app.displayName
B.txtLine2.text = args.app.packageName
B.txtLine3.text = ("${args.app.versionName} (${args.app.versionCode})")
binding.txtLine1.text = args.app.displayName
binding.txtLine2.text = args.app.packageName
binding.txtLine3.text = ("${args.app.versionName} (${args.app.versionCode})")
B.versionCodeLayout.hint = "${args.app.versionCode}"
B.versionCodeLayout.editText?.setText("${args.app.versionCode}")
binding.versionCodeLayout.hint = "${args.app.versionCode}"
binding.versionCodeLayout.editText?.setText("${args.app.versionCode}")
}
private fun attachActions() {
B.btnPrimary.setOnClickListener {
val customVersionString = (B.versionCodeInp.text).toString()
binding.btnPrimary.setOnClickListener {
val customVersionString = (binding.versionCodeInp.text).toString()
if (customVersionString.isEmpty())
B.versionCodeInp.error = "Enter version code"
binding.versionCodeInp.error = "Enter version code"
else {
viewModel.purchase(requireContext(), args.app, customVersionString.toInt())
}
}
B.btnSecondary.setOnClickListener {
binding.btnSecondary.setOnClickListener {
dismissAllowingStateLoss()
}
}

View File

@@ -24,19 +24,20 @@ import android.content.Intent
import android.os.Bundle
import android.provider.Settings
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.aurora.extensions.isQAndAbove
import com.aurora.store.R
import com.aurora.store.databinding.SheetNetworkBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class NetworkDialogSheet : BaseBottomSheet() {
class NetworkDialogSheet : BottomSheetDialogFragment(R.layout.sheet_network) {
private val TAG = NetworkDialogSheet::class.java.simpleName
lateinit var B: SheetNetworkBinding
private var _binding: SheetNetworkBinding? = null
private val binding get() = _binding!!
companion object {
@@ -50,17 +51,11 @@ class NetworkDialogSheet : BaseBottomSheet() {
}
}
override fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View {
B = SheetNetworkBinding.inflate(inflater, container, false)
return B.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetNetworkBinding.bind(view)
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
B.btnAction.setOnClickListener {
binding.btnAction.setOnClickListener {
if (isQAndAbove()) {
startActivity(Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY))
} else {
@@ -73,4 +68,9 @@ class NetworkDialogSheet : BaseBottomSheet() {
}
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -22,9 +22,7 @@ package com.aurora.store.view.ui.sheets
import android.content.pm.PackageManager
import android.content.pm.PermissionInfo
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import androidx.navigation.fragment.navArgs
import com.aurora.extensions.hide
@@ -33,32 +31,23 @@ import com.aurora.store.R
import com.aurora.store.data.model.PermissionGroupInfo
import com.aurora.store.databinding.SheetPermissionsBinding
import com.aurora.store.view.custom.layouts.PermissionGroup
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
import java.util.*
@AndroidEntryPoint
class PermissionBottomSheet : BaseBottomSheet() {
class PermissionBottomSheet : BottomSheetDialogFragment(R.layout.sheet_permissions) {
private var _binding: SheetPermissionsBinding? = null
private val binding get() = _binding!!
private lateinit var B: SheetPermissionsBinding
private lateinit var packageManager: PackageManager
private val args: PermissionBottomSheetArgs by navArgs()
override fun onCreateContentView(
inflater: LayoutInflater,
container: ViewGroup,
savedInstanceState: Bundle?
): View {
B = SheetPermissionsBinding.inflate(inflater)
return B.root
}
override fun onContentViewCreated(view: View, savedInstanceState: Bundle?) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
inflateData()
}
private fun inflateData() {
_binding = SheetPermissionsBinding.bind(view)
packageManager = requireContext().packageManager
val permissionGroupWidgets: MutableMap<String, PermissionGroup?> =
@@ -84,17 +73,23 @@ class PermissionBottomSheet : BaseBottomSheet() {
permissionGroup?.addPermission(permissionInfo)
}
B.permissionsContainer.removeAllViews()
binding.permissionsContainer.removeAllViews()
val permissionGroupLabels: List<String> = ArrayList(permissionGroupWidgets.keys)
permissionGroupLabels.sortedBy { it }.forEach {
B.permissionsContainer.addView(permissionGroupWidgets[it])
binding.permissionsContainer.addView(permissionGroupWidgets[it])
}
if (permissionGroupLabels.isEmpty())
B.permissionsNone.show()
else
B.permissionsNone.hide()
if (permissionGroupLabels.isEmpty()) {
binding.permissionsNone.show()
} else {
binding.permissionsNone.hide()
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun getPermissionInfo(permissionName: String): PermissionInfo? {

View File

@@ -120,6 +120,4 @@
<style name="AppTheme.SwitchPreference" parent="@style/Preference.SwitchPreferenceCompat.Material">
<item name="widgetLayout">@layout/preference_material_switch</item>
</style>
<style name="AppTheme.Dialog" parent="Theme.Material3.DayNight.BottomSheetDialog" />
</resources>