PermissionBottomSheet: Highlight new permissions using accent color

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-03-30 13:29:59 +05:30
parent 37c49637d7
commit 4790ae1d83
2 changed files with 17 additions and 4 deletions

View File

@@ -27,6 +27,7 @@ import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.content.ContextCompat
import com.aurora.extensions.accentColor
import com.aurora.extensions.showDialog
import com.aurora.store.R
import com.aurora.store.data.model.PermissionGroupInfo
@@ -76,7 +77,7 @@ class PermissionGroup : LinearLayout {
//imageView.setColorFilter(getContext().getStyledAttributeColor(imageView.getContext(), android.R.attr.colorAccent));
}
fun addPermission(permissionInfo: PermissionInfo) {
fun addPermission(permissionInfo: PermissionInfo, currentPerms: List<String> = emptyList()) {
val title = permissionInfo.loadLabel(packageManager)
val description = permissionInfo.loadDescription(packageManager)
@@ -97,7 +98,8 @@ class PermissionGroup : LinearLayout {
addPermissionLabel(
permissionLabelsView,
it,
permissionMap[it]
permissionMap[it],
if (currentPerms.isNotEmpty()) permissionInfo.name !in currentPerms else false
)
}
}
@@ -105,10 +107,12 @@ class PermissionGroup : LinearLayout {
private fun addPermissionLabel(
permissionLabelsView: LinearLayout,
label: String,
description: String?
description: String?,
isNewPerm: Boolean = false
) {
val textView = TextView(context)
textView.text = label
if (isNewPerm) textView.setTextColor(context.accentColor())
textView.setOnClickListener {
var title: String = permissionGroupInfo.label

View File

@@ -42,13 +42,22 @@ class PermissionBottomSheet : BottomSheetDialogFragment(R.layout.sheet_permissio
private val binding get() = _binding!!
private lateinit var packageManager: PackageManager
private lateinit var currentPerms: List<String>
private val args: PermissionBottomSheetArgs by navArgs()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetPermissionsBinding.bind(view)
packageManager = requireContext().packageManager
currentPerms = try {
packageManager.getPackageInfo(
args.app.packageName, PackageManager.GET_PERMISSIONS
).requestedPermissions.toList()
} catch (_: Exception) {
emptyList()
}
val permissionGroupWidgets: MutableMap<String, PermissionGroup?> =
HashMap<String, PermissionGroup?>()
@@ -70,7 +79,7 @@ class PermissionBottomSheet : BottomSheetDialogFragment(R.layout.sheet_permissio
permissionGroupWidgets[permissionGroupInfo.name] = permissionGroup
}
permissionGroup?.addPermission(permissionInfo)
permissionGroup?.addPermission(permissionInfo, currentPerms)
}
binding.permissionsContainer.removeAllViews()