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:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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?)
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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? {
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user