mirror of
https://github.com/bitfireAT/davx5-ose
synced 2024-07-23 19:50:18 +00:00
Adjusted paddings (#707)
* Adjusted paddings Signed-off-by: Arnau Mora Gras <arnyminerz@proton.me> * Unify intro card padding to 8 dp * Minor changes in Composable calls --------- Signed-off-by: Arnau Mora Gras <arnyminerz@proton.me> Co-authored-by: Ricki Hirner <hirner@bitfire.at>
This commit is contained in:
parent
ab4244a533
commit
bd93c86e2c
|
@ -33,6 +33,7 @@ import androidx.compose.ui.platform.LocalContext
|
|||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
|
@ -116,144 +117,160 @@ fun PermissionsContent(
|
|||
) {
|
||||
val context = LocalContext.current
|
||||
|
||||
Column(
|
||||
modifier = modifier
|
||||
.fillMaxSize()
|
||||
.verticalScroll(rememberScrollState())
|
||||
) {
|
||||
PermissionsCard(
|
||||
model.needKeepPermissions,
|
||||
onKeepPermissionsRequested = {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
val intent = Intent(
|
||||
Intent.ACTION_AUTO_REVOKE_PERMISSIONS,
|
||||
Uri.fromParts("package", BuildConfig.APPLICATION_ID, null)
|
||||
)
|
||||
try {
|
||||
context.startActivity(intent)
|
||||
Toast.makeText(context, R.string.permissions_autoreset_instruction, Toast.LENGTH_LONG).show()
|
||||
} catch (e: Exception) {
|
||||
Logger.log.log(Level.WARNING, "Couldn't start Keep Permissions activity", e)
|
||||
}
|
||||
PermissionsCardContent(
|
||||
keepPermissions = model.needKeepPermissions,
|
||||
onKeepPermissionsRequested = {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||
val intent = Intent(
|
||||
Intent.ACTION_AUTO_REVOKE_PERMISSIONS,
|
||||
Uri.fromParts("package", BuildConfig.APPLICATION_ID, null)
|
||||
)
|
||||
try {
|
||||
context.startActivity(intent)
|
||||
Toast.makeText(context, R.string.permissions_autoreset_instruction, Toast.LENGTH_LONG).show()
|
||||
} catch (e: Exception) {
|
||||
Logger.log.log(Level.WARNING, "Couldn't start Keep Permissions activity", e)
|
||||
}
|
||||
},
|
||||
model.openTasksAvailable,
|
||||
model.tasksOrgAvailable,
|
||||
model.jtxAvailable
|
||||
}
|
||||
},
|
||||
openTasksAvailable = model.openTasksAvailable,
|
||||
tasksOrgAvailable = model.tasksOrgAvailable,
|
||||
jtxAvailable = model.jtxAvailable,
|
||||
modifier = modifier
|
||||
)
|
||||
}
|
||||
|
||||
@Preview(showBackground = true, showSystemUi = true)
|
||||
@Composable
|
||||
fun PermissionsCard_Preview() {
|
||||
AppTheme {
|
||||
PermissionsCardContent(
|
||||
keepPermissions = true,
|
||||
onKeepPermissionsRequested = {},
|
||||
openTasksAvailable = true,
|
||||
tasksOrgAvailable = true,
|
||||
jtxAvailable = true
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun PermissionsCard(
|
||||
fun PermissionsCardContent(
|
||||
keepPermissions: Boolean?,
|
||||
onKeepPermissionsRequested: () -> Unit,
|
||||
openTasksAvailable: Boolean?,
|
||||
tasksOrgAvailable: Boolean?,
|
||||
jtxAvailable: Boolean?
|
||||
jtxAvailable: Boolean?,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
|
||||
CardWithImage(
|
||||
title = stringResource(R.string.permissions_title),
|
||||
message = stringResource(
|
||||
R.string.permissions_text,
|
||||
stringResource(R.string.app_name)
|
||||
),
|
||||
image = painterResource(R.drawable.intro_permissions),
|
||||
modifier = Modifier.padding(8.dp)
|
||||
Column(
|
||||
modifier = modifier
|
||||
.fillMaxSize()
|
||||
.verticalScroll(rememberScrollState())
|
||||
) {
|
||||
if (keepPermissions != null) {
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_autoreset_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_autoreset_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_autoreset_status_off),
|
||||
allPermissionsGranted = keepPermissions,
|
||||
onLaunchRequest = onKeepPermissionsRequested,
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
}
|
||||
|
||||
val allPermissions = mutableListOf<String>()
|
||||
allPermissions.addAll(PermissionUtils.CONTACT_PERMISSIONS)
|
||||
allPermissions.addAll(PermissionUtils.CALENDAR_PERMISSIONS)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
|
||||
allPermissions += Manifest.permission.POST_NOTIFICATIONS
|
||||
if (openTasksAvailable == true)
|
||||
allPermissions.addAll(TaskProvider.PERMISSIONS_OPENTASKS)
|
||||
if (tasksOrgAvailable == true)
|
||||
allPermissions.addAll(TaskProvider.PERMISSIONS_TASKS_ORG)
|
||||
if (jtxAvailable == true)
|
||||
allPermissions.addAll(TaskProvider.PERMISSIONS_JTX)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_all_title),
|
||||
permissions = allPermissions,
|
||||
summaryWhenGranted = stringResource(R.string.permissions_all_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_all_status_off),
|
||||
fontWeight = FontWeight.Bold,
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_notification_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_notification_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_notification_status_off),
|
||||
permissions = listOf(Manifest.permission.POST_NOTIFICATIONS),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_calendar_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_calendar_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_calendar_status_off),
|
||||
permissions = PermissionUtils.CALENDAR_PERMISSIONS.toList(),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_contacts_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_contacts_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_contacts_status_off),
|
||||
permissions = PermissionUtils.CONTACT_PERMISSIONS.toList(),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
|
||||
if (jtxAvailable == true)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_jtx_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_tasks_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_tasks_status_off),
|
||||
permissions = TaskProvider.PERMISSIONS_JTX.toList(),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
if (openTasksAvailable == true)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_opentasks_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_tasks_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_tasks_status_off),
|
||||
permissions = TaskProvider.PERMISSIONS_OPENTASKS.toList(),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
if (tasksOrgAvailable == true)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_tasksorg_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_tasks_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_tasks_status_off),
|
||||
permissions = TaskProvider.PERMISSIONS_TASKS_ORG.toList(),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
|
||||
Text(
|
||||
text = stringResource(R.string.permissions_app_settings_hint),
|
||||
style = MaterialTheme.typography.body1,
|
||||
modifier = Modifier.padding(top = 24.dp)
|
||||
)
|
||||
|
||||
OutlinedButton(
|
||||
modifier = Modifier.padding(top = 8.dp),
|
||||
onClick = { PermissionUtils.showAppSettings(context) }
|
||||
CardWithImage(
|
||||
title = stringResource(R.string.permissions_title),
|
||||
message = stringResource(
|
||||
R.string.permissions_text,
|
||||
stringResource(R.string.app_name)
|
||||
),
|
||||
image = painterResource(R.drawable.intro_permissions),
|
||||
modifier = Modifier.padding(8.dp)
|
||||
) {
|
||||
Text(stringResource(R.string.permissions_app_settings).uppercase())
|
||||
if (keepPermissions != null) {
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_autoreset_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_autoreset_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_autoreset_status_off),
|
||||
allPermissionsGranted = keepPermissions,
|
||||
onLaunchRequest = onKeepPermissionsRequested,
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
}
|
||||
|
||||
val allPermissions = mutableListOf<String>()
|
||||
allPermissions.addAll(PermissionUtils.CONTACT_PERMISSIONS)
|
||||
allPermissions.addAll(PermissionUtils.CALENDAR_PERMISSIONS)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
|
||||
allPermissions += Manifest.permission.POST_NOTIFICATIONS
|
||||
if (openTasksAvailable == true)
|
||||
allPermissions.addAll(TaskProvider.PERMISSIONS_OPENTASKS)
|
||||
if (tasksOrgAvailable == true)
|
||||
allPermissions.addAll(TaskProvider.PERMISSIONS_TASKS_ORG)
|
||||
if (jtxAvailable == true)
|
||||
allPermissions.addAll(TaskProvider.PERMISSIONS_JTX)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_all_title),
|
||||
permissions = allPermissions,
|
||||
summaryWhenGranted = stringResource(R.string.permissions_all_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_all_status_off),
|
||||
fontWeight = FontWeight.Bold,
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_notification_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_notification_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_notification_status_off),
|
||||
permissions = listOf(Manifest.permission.POST_NOTIFICATIONS),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_calendar_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_calendar_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_calendar_status_off),
|
||||
permissions = PermissionUtils.CALENDAR_PERMISSIONS.toList(),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_contacts_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_contacts_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_contacts_status_off),
|
||||
permissions = PermissionUtils.CONTACT_PERMISSIONS.toList(),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
|
||||
if (jtxAvailable == true)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_jtx_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_tasks_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_tasks_status_off),
|
||||
permissions = TaskProvider.PERMISSIONS_JTX.toList(),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
if (openTasksAvailable == true)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_opentasks_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_tasks_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_tasks_status_off),
|
||||
permissions = TaskProvider.PERMISSIONS_OPENTASKS.toList(),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
if (tasksOrgAvailable == true)
|
||||
PermissionSwitchRow(
|
||||
text = stringResource(R.string.permissions_tasksorg_title),
|
||||
summaryWhenGranted = stringResource(R.string.permissions_tasks_status_on),
|
||||
summaryWhenNotGranted = stringResource(R.string.permissions_tasks_status_off),
|
||||
permissions = TaskProvider.PERMISSIONS_TASKS_ORG.toList(),
|
||||
modifier = Modifier.padding(vertical = 4.dp)
|
||||
)
|
||||
|
||||
Text(
|
||||
text = stringResource(R.string.permissions_app_settings_hint),
|
||||
style = MaterialTheme.typography.body1,
|
||||
modifier = Modifier.padding(top = 24.dp)
|
||||
)
|
||||
|
||||
OutlinedButton(
|
||||
modifier = Modifier.padding(top = 8.dp),
|
||||
onClick = { PermissionUtils.showAppSettings(context) }
|
||||
) {
|
||||
Text(stringResource(R.string.permissions_app_settings).uppercase())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -38,6 +38,7 @@ import androidx.compose.ui.Modifier
|
|||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.core.text.HtmlCompat
|
||||
import androidx.lifecycle.ViewModel
|
||||
|
@ -168,30 +169,71 @@ fun TasksCard(
|
|||
|
||||
val showAgain by model.showAgain.collectAsStateWithLifecycle(true)
|
||||
|
||||
fun installApp(packageName: String) {
|
||||
val uri = Uri.parse("market://details?id=$packageName&referrer=" +
|
||||
Uri.encode("utm_source=" + BuildConfig.APPLICATION_ID))
|
||||
val intent = Intent(Intent.ACTION_VIEW, uri)
|
||||
if (intent.resolveActivity(context.packageManager) != null)
|
||||
context.startActivity(intent)
|
||||
else
|
||||
coroutineScope.launch {
|
||||
snackbarHostState.showSnackbar(
|
||||
message = context.getString(R.string.intro_tasks_no_app_store),
|
||||
duration = SnackbarDuration.Long
|
||||
)
|
||||
}
|
||||
}
|
||||
TasksCardContent(
|
||||
jtxSelected = jtxSelected,
|
||||
jtxInstalled = jtxInstalled,
|
||||
tasksOrgSelected = tasksOrgSelected,
|
||||
tasksOrgInstalled = tasksOrgInstalled,
|
||||
openTasksSelected = openTasksSelected,
|
||||
openTasksInstalled = openTasksInstalled,
|
||||
showAgain = showAgain,
|
||||
onSetShowAgain = model::setShowAgain,
|
||||
onProviderSelected = { provider ->
|
||||
if (model.currentProvider.value != provider)
|
||||
model.selectProvider(provider)
|
||||
},
|
||||
installApp = { packageName ->
|
||||
val uri = Uri.parse("market://details?id=$packageName&referrer=" +
|
||||
Uri.encode("utm_source=" + BuildConfig.APPLICATION_ID))
|
||||
val intent = Intent(Intent.ACTION_VIEW, uri)
|
||||
if (intent.resolveActivity(context.packageManager) != null)
|
||||
context.startActivity(intent)
|
||||
else
|
||||
coroutineScope.launch {
|
||||
snackbarHostState.showSnackbar(
|
||||
message = context.getString(R.string.intro_tasks_no_app_store),
|
||||
duration = SnackbarDuration.Long
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun onProviderSelected(provider: TaskProvider.ProviderName) {
|
||||
if (model.currentProvider.value != provider)
|
||||
model.selectProvider(provider)
|
||||
@Preview(showBackground = true, showSystemUi = true)
|
||||
@Composable
|
||||
fun TasksCardContent_Preview() {
|
||||
AppTheme {
|
||||
TasksCardContent(
|
||||
jtxSelected = true,
|
||||
jtxInstalled = true,
|
||||
tasksOrgSelected = false,
|
||||
tasksOrgInstalled = false,
|
||||
openTasksSelected = false,
|
||||
openTasksInstalled = false,
|
||||
showAgain = true,
|
||||
onSetShowAgain = {},
|
||||
onProviderSelected = {},
|
||||
installApp = {}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun TasksCardContent(
|
||||
jtxSelected: Boolean,
|
||||
jtxInstalled: Boolean,
|
||||
tasksOrgSelected: Boolean,
|
||||
tasksOrgInstalled: Boolean,
|
||||
openTasksSelected: Boolean,
|
||||
openTasksInstalled: Boolean,
|
||||
showAgain: Boolean,
|
||||
onSetShowAgain: (Boolean) -> Unit,
|
||||
onProviderSelected: (TaskProvider.ProviderName) -> Unit,
|
||||
installApp: (String) -> Unit,
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxHeight()
|
||||
.padding(8.dp)
|
||||
.verticalScroll(rememberScrollState())
|
||||
) {
|
||||
CardWithImage(
|
||||
|
@ -199,9 +241,7 @@ fun TasksCard(
|
|||
imageAlignment = BiasAlignment(0f, .1f),
|
||||
title = stringResource(R.string.intro_tasks_title),
|
||||
message = stringResource(R.string.intro_tasks_text1),
|
||||
modifier = Modifier
|
||||
.padding(horizontal = 16.dp)
|
||||
.padding(top = 16.dp)
|
||||
modifier = Modifier.padding(8.dp)
|
||||
) {
|
||||
RadioWithSwitch(
|
||||
title = stringResource(R.string.intro_tasks_jtx),
|
||||
|
@ -266,14 +306,14 @@ fun TasksCard(
|
|||
) {
|
||||
Checkbox(
|
||||
checked = !showAgain,
|
||||
onCheckedChange = { model.setShowAgain(!it) }
|
||||
onCheckedChange = { onSetShowAgain(!it) }
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.intro_tasks_dont_show),
|
||||
style = MaterialTheme.typography.body2,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.clickable { model.setShowAgain(!showAgain) }
|
||||
.clickable { onSetShowAgain(!showAgain) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -289,4 +329,4 @@ fun TasksCard(
|
|||
.padding(horizontal = 12.dp, vertical = 8.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,6 @@ import androidx.compose.runtime.getValue
|
|||
import androidx.compose.runtime.livedata.observeAsState
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.platform.LocalUriHandler
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
|
@ -250,16 +249,16 @@ private fun BatteryOptimizationsContent(
|
|||
onChangeDontShowAutostart: (Boolean) -> Unit,
|
||||
manufacturerWarning: Boolean
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val uriHandler = LocalUriHandler.current
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.verticalScroll(rememberScrollState())
|
||||
.padding(8.dp)
|
||||
) {
|
||||
Card {
|
||||
Card(
|
||||
modifier = Modifier.padding(8.dp)
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
|
@ -314,7 +313,8 @@ private fun BatteryOptimizationsContent(
|
|||
}
|
||||
if (manufacturerWarning) {
|
||||
Card(
|
||||
modifier = Modifier.padding(top = 8.dp)
|
||||
modifier = Modifier
|
||||
.padding(8.dp)
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
|
@ -374,7 +374,9 @@ private fun BatteryOptimizationsContent(
|
|||
stringResource(R.string.app_settings_reset_hints)
|
||||
),
|
||||
style = MaterialTheme.typography.body2,
|
||||
modifier = Modifier.padding(top = 8.dp)
|
||||
modifier = Modifier
|
||||
.padding(top = 8.dp)
|
||||
.padding(horizontal = 16.dp)
|
||||
)
|
||||
Spacer(modifier = Modifier.height(90.dp))
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue