From 022369de33756a359e79333ef85eb85e732f19a8 Mon Sep 17 00:00:00 2001 From: BinTianqi Date: Fri, 19 Jul 2024 10:08:49 +0800 Subject: [PATCH] add icons to Permission picker --- .../bintianqi/owndroid/PermissionPicker.kt | 85 ++++++++++++------- .../res/drawable/calendar_month_fill0.xml | 9 ++ app/src/main/res/drawable/call_log_fill0.xml | 9 ++ app/src/main/res/drawable/contacts_fill0.xml | 9 ++ app/src/main/res/drawable/folder_fill0.xml | 9 ++ app/src/main/res/drawable/image_fill0.xml | 9 ++ app/src/main/res/drawable/movie_fill0.xml | 9 ++ .../main/res/drawable/music_note_fill0.xml | 9 ++ app/src/main/res/drawable/sensors_fill0.xml | 9 ++ 9 files changed, 124 insertions(+), 33 deletions(-) create mode 100644 app/src/main/res/drawable/calendar_month_fill0.xml create mode 100644 app/src/main/res/drawable/call_log_fill0.xml create mode 100644 app/src/main/res/drawable/contacts_fill0.xml create mode 100644 app/src/main/res/drawable/folder_fill0.xml create mode 100644 app/src/main/res/drawable/image_fill0.xml create mode 100644 app/src/main/res/drawable/movie_fill0.xml create mode 100644 app/src/main/res/drawable/music_note_fill0.xml create mode 100644 app/src/main/res/drawable/sensors_fill0.xml diff --git a/app/src/main/java/com/bintianqi/owndroid/PermissionPicker.kt b/app/src/main/java/com/bintianqi/owndroid/PermissionPicker.kt index c3e01a5..b7134a7 100644 --- a/app/src/main/java/com/bintianqi/owndroid/PermissionPicker.kt +++ b/app/src/main/java/com/bintianqi/owndroid/PermissionPicker.kt @@ -2,8 +2,11 @@ package com.bintianqi.owndroid import android.Manifest import android.os.Build.VERSION +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth @@ -11,14 +14,17 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController @@ -41,17 +47,25 @@ fun PermissionPicker(navCtrl: NavHostController) { modifier = Modifier.fillMaxSize().padding(top = paddingValues.calculateTopPadding()) ) { items(permissionList()) { - Column( + Row( + verticalAlignment = Alignment.CenterVertically, modifier = Modifier .fillMaxWidth() .clickable{ - selectedPermission.value = it.first + selectedPermission.value = it.permission navCtrl.navigateUp() } - .padding(vertical = 6.dp, horizontal = 8.dp) + .padding(vertical = 8.dp, horizontal = 8.dp) ) { - Text(text = it.first) - Text(text = stringResource(it.second), modifier = Modifier.alpha(0.8F)) + Icon( + painter = painterResource(it.icon), + contentDescription = stringResource(it.label), + modifier = Modifier.padding(start = 8.dp, end = 10.dp) + ) + Column { + Text(text = stringResource(it.label)) + Text(text = it.permission, modifier = Modifier.alpha(0.8F), style = MaterialTheme.typography.bodyMedium) + } } } items(1) { Spacer(Modifier.padding(vertical = 30.dp)) } @@ -59,43 +73,48 @@ fun PermissionPicker(navCtrl: NavHostController) { } } -private fun permissionList():List>{ - val list = mutableListOf>() - list.add(Pair(Manifest.permission.READ_EXTERNAL_STORAGE, R.string.permission_READ_EXTERNAL_STORAGE)) - list.add(Pair(Manifest.permission.WRITE_EXTERNAL_STORAGE, R.string.permission_WRITE_EXTERNAL_STORAGE)) +private data class PermissionPickerItem( + val permission: String, + @StringRes val label: Int, + @DrawableRes val icon: Int +) + +private fun permissionList(): List{ + val list = mutableListOf() + list.add(PermissionPickerItem(Manifest.permission.READ_EXTERNAL_STORAGE, R.string.permission_READ_EXTERNAL_STORAGE, R.drawable.folder_fill0)) + list.add(PermissionPickerItem(Manifest.permission.WRITE_EXTERNAL_STORAGE, R.string.permission_WRITE_EXTERNAL_STORAGE, R.drawable.folder_fill0)) if(VERSION.SDK_INT >= 33) { - list.add(Pair(Manifest.permission.READ_MEDIA_AUDIO, R.string.permission_READ_MEDIA_AUDIO)) - list.add(Pair(Manifest.permission.READ_MEDIA_VIDEO, R.string.permission_READ_MEDIA_VIDEO)) - list.add(Pair(Manifest.permission.READ_MEDIA_IMAGES, R.string.permission_READ_MEDIA_IMAGES)) + list.add(PermissionPickerItem(Manifest.permission.READ_MEDIA_AUDIO, R.string.permission_READ_MEDIA_AUDIO, R.drawable.music_note_fill0)) + list.add(PermissionPickerItem(Manifest.permission.READ_MEDIA_VIDEO, R.string.permission_READ_MEDIA_VIDEO, R.drawable.movie_fill0)) + list.add(PermissionPickerItem(Manifest.permission.READ_MEDIA_IMAGES, R.string.permission_READ_MEDIA_IMAGES, R.drawable.image_fill0)) } - list.add(Pair(Manifest.permission.CAMERA, R.string.permission_CAMERA)) - list.add(Pair(Manifest.permission.RECORD_AUDIO, R.string.permission_RECORD_AUDIO)) - list.add(Pair(Manifest.permission.ACCESS_COARSE_LOCATION, R.string.permission_ACCESS_COARSE_LOCATION)) - list.add(Pair(Manifest.permission.ACCESS_FINE_LOCATION, R.string.permission_ACCESS_FINE_LOCATION)) + list.add(PermissionPickerItem(Manifest.permission.CAMERA, R.string.permission_CAMERA, R.drawable.photo_camera_fill0)) + list.add(PermissionPickerItem(Manifest.permission.RECORD_AUDIO, R.string.permission_RECORD_AUDIO, R.drawable.mic_fill0)) + list.add(PermissionPickerItem(Manifest.permission.ACCESS_COARSE_LOCATION, R.string.permission_ACCESS_COARSE_LOCATION, R.drawable.location_on_fill0)) + list.add(PermissionPickerItem(Manifest.permission.ACCESS_FINE_LOCATION, R.string.permission_ACCESS_FINE_LOCATION, R.drawable.location_on_fill0)) if(VERSION.SDK_INT >= 29) { - list.add(Pair(Manifest.permission.ACCESS_BACKGROUND_LOCATION, R.string.permission_ACCESS_BACKGROUND_LOCATION)) + list.add(PermissionPickerItem(Manifest.permission.ACCESS_BACKGROUND_LOCATION, R.string.permission_ACCESS_BACKGROUND_LOCATION, R.drawable.location_on_fill0)) } - list.add(Pair(Manifest.permission.READ_CONTACTS, R.string.permission_READ_CONTACTS)) - list.add(Pair(Manifest.permission.WRITE_CONTACTS, R.string.permission_WRITE_CONTACTS)) - list.add(Pair(Manifest.permission.READ_CALENDAR, R.string.permission_READ_CALENDAR)) - list.add(Pair(Manifest.permission.WRITE_CALENDAR, R.string.permission_WRITE_CALENDAR)) - list.add(Pair(Manifest.permission.CALL_PHONE, R.string.permission_CALL_PHONE)) - list.add(Pair(Manifest.permission.READ_PHONE_STATE, R.string.permission_READ_PHONE_STATE)) - list.add(Pair(Manifest.permission.READ_SMS, R.string.permission_READ_SMS)) - list.add(Pair(Manifest.permission.RECEIVE_SMS, R.string.permission_RECEIVE_SMS)) - list.add(Pair(Manifest.permission.SEND_SMS, R.string.permission_SEND_SMS)) - list.add(Pair(Manifest.permission.READ_CALL_LOG, R.string.permission_READ_CALL_LOG)) - list.add(Pair(Manifest.permission.WRITE_CALL_LOG, R.string.permission_WRITE_CALL_LOG)) - list.add(Pair(Manifest.permission.BODY_SENSORS, R.string.permission_BODY_SENSORS)) + list.add(PermissionPickerItem(Manifest.permission.READ_CONTACTS, R.string.permission_READ_CONTACTS, R.drawable.contacts_fill0)) + list.add(PermissionPickerItem(Manifest.permission.WRITE_CONTACTS, R.string.permission_WRITE_CONTACTS, R.drawable.contacts_fill0)) + list.add(PermissionPickerItem(Manifest.permission.READ_CALENDAR, R.string.permission_READ_CALENDAR, R.drawable.calendar_month_fill0)) + list.add(PermissionPickerItem(Manifest.permission.WRITE_CALENDAR, R.string.permission_WRITE_CALENDAR, R.drawable.calendar_month_fill0)) + list.add(PermissionPickerItem(Manifest.permission.CALL_PHONE, R.string.permission_CALL_PHONE, R.drawable.call_fill0)) + list.add(PermissionPickerItem(Manifest.permission.READ_PHONE_STATE, R.string.permission_READ_PHONE_STATE, R.drawable.mobile_phone_fill0)) + list.add(PermissionPickerItem(Manifest.permission.READ_SMS, R.string.permission_READ_SMS, R.drawable.sms_fill0)) + list.add(PermissionPickerItem(Manifest.permission.RECEIVE_SMS, R.string.permission_RECEIVE_SMS, R.drawable.sms_fill0)) + list.add(PermissionPickerItem(Manifest.permission.SEND_SMS, R.string.permission_SEND_SMS, R.drawable.sms_fill0)) + list.add(PermissionPickerItem(Manifest.permission.READ_CALL_LOG, R.string.permission_READ_CALL_LOG, R.drawable.call_log_fill0)) + list.add(PermissionPickerItem(Manifest.permission.WRITE_CALL_LOG, R.string.permission_WRITE_CALL_LOG, R.drawable.call_log_fill0)) + list.add(PermissionPickerItem(Manifest.permission.BODY_SENSORS, R.string.permission_BODY_SENSORS, R.drawable.sensors_fill0)) if(VERSION.SDK_INT >= 33) { - list.add(Pair(Manifest.permission.BODY_SENSORS_BACKGROUND, R.string.permission_BODY_SENSORS_BACKGROUND)) + list.add(PermissionPickerItem(Manifest.permission.BODY_SENSORS_BACKGROUND, R.string.permission_BODY_SENSORS_BACKGROUND, R.drawable.sensors_fill0)) } if(VERSION.SDK_INT > 29) { - list.add(Pair(Manifest.permission.ACTIVITY_RECOGNITION, R.string.permission_ACTIVITY_RECOGNITION)) + list.add(PermissionPickerItem(Manifest.permission.ACTIVITY_RECOGNITION, R.string.permission_ACTIVITY_RECOGNITION, R.drawable.history_fill0)) } if(VERSION.SDK_INT >= 33) { - list.add(Pair(Manifest.permission.POST_NOTIFICATIONS, R.string.permission_POST_NOTIFICATIONS)) + list.add(PermissionPickerItem(Manifest.permission.POST_NOTIFICATIONS, R.string.permission_POST_NOTIFICATIONS, R.drawable.notifications_fill0)) } - //list.add(Pair(Manifest.permission., R.string.)) return list } diff --git a/app/src/main/res/drawable/calendar_month_fill0.xml b/app/src/main/res/drawable/calendar_month_fill0.xml new file mode 100644 index 0000000..9422871 --- /dev/null +++ b/app/src/main/res/drawable/calendar_month_fill0.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/call_log_fill0.xml b/app/src/main/res/drawable/call_log_fill0.xml new file mode 100644 index 0000000..aa443c0 --- /dev/null +++ b/app/src/main/res/drawable/call_log_fill0.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/contacts_fill0.xml b/app/src/main/res/drawable/contacts_fill0.xml new file mode 100644 index 0000000..215abbf --- /dev/null +++ b/app/src/main/res/drawable/contacts_fill0.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/folder_fill0.xml b/app/src/main/res/drawable/folder_fill0.xml new file mode 100644 index 0000000..5cfe915 --- /dev/null +++ b/app/src/main/res/drawable/folder_fill0.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/image_fill0.xml b/app/src/main/res/drawable/image_fill0.xml new file mode 100644 index 0000000..c158978 --- /dev/null +++ b/app/src/main/res/drawable/image_fill0.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/movie_fill0.xml b/app/src/main/res/drawable/movie_fill0.xml new file mode 100644 index 0000000..4ab4df0 --- /dev/null +++ b/app/src/main/res/drawable/movie_fill0.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/music_note_fill0.xml b/app/src/main/res/drawable/music_note_fill0.xml new file mode 100644 index 0000000..13f1432 --- /dev/null +++ b/app/src/main/res/drawable/music_note_fill0.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/sensors_fill0.xml b/app/src/main/res/drawable/sensors_fill0.xml new file mode 100644 index 0000000..dac0a7b --- /dev/null +++ b/app/src/main/res/drawable/sensors_fill0.xml @@ -0,0 +1,9 @@ + + +