compose: downloads: Rework expanded options a bit
No need for sharing option as we have removed the ability to copy direct download link for file long time ago. Make the remaining buttons as TextButton too. Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -17,20 +17,26 @@ import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.requiredSize
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.SplitButtonDefaults
|
||||
import androidx.compose.material3.SplitButtonLayout
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextButton
|
||||
import androidx.compose.material3.VerticalDivider
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.dimensionResource
|
||||
@@ -62,9 +68,9 @@ fun DownloadComposable(
|
||||
onClear: () -> Unit = {},
|
||||
onCancel: () -> Unit = {},
|
||||
onExport: () -> Unit = {},
|
||||
onInstall: () -> Unit = {},
|
||||
onShare: () -> Unit = {}
|
||||
onInstall: () -> Unit = {}
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val progress = "${download.progress}%"
|
||||
val speed = "${Formatter.formatShortFileSize(LocalContext.current, download.speed)}/s"
|
||||
val eta = getETAString(LocalContext.current, download.timeRemaining)
|
||||
@@ -152,25 +158,36 @@ fun DownloadComposable(
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.SpaceEvenly
|
||||
) {
|
||||
VerticalButtonComposable(
|
||||
painter = painterResource(R.drawable.ic_share),
|
||||
text = stringResource(R.string.action_share),
|
||||
onClick = onShare
|
||||
TextButton(onClick = onInstall, enabled = download.canInstall(context)) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_install),
|
||||
contentDescription = null
|
||||
)
|
||||
Spacer(modifier = Modifier.width(dimensionResource(R.dimen.padding_xsmall)))
|
||||
Text(
|
||||
text = stringResource(R.string.action_install),
|
||||
style = MaterialTheme.typography.bodySmall
|
||||
)
|
||||
}
|
||||
|
||||
VerticalDivider(
|
||||
modifier = Modifier.height(dimensionResource(R.dimen.margin_large))
|
||||
)
|
||||
|
||||
VerticalButtonComposable(
|
||||
painter = painterResource(R.drawable.ic_install),
|
||||
text = stringResource(R.string.action_install),
|
||||
onClick = onInstall
|
||||
)
|
||||
|
||||
VerticalButtonComposable(
|
||||
painter = painterResource(R.drawable.ic_file_copy),
|
||||
text = stringResource(R.string.action_export),
|
||||
onClick = onExport
|
||||
)
|
||||
TextButton(onClick = onExport, enabled = download.canInstall(context)) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_file_copy),
|
||||
contentDescription = null
|
||||
)
|
||||
Spacer(modifier = Modifier.width(dimensionResource(R.dimen.padding_xsmall)))
|
||||
Text(
|
||||
text = stringResource(R.string.action_export),
|
||||
style = MaterialTheme.typography.bodySmall
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.aurora.store.compose.composables
|
||||
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.painter.Painter
|
||||
import androidx.compose.ui.res.dimensionResource
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import com.aurora.store.R
|
||||
|
||||
/**
|
||||
* Composable with an icon and text placed vertically to function as a button
|
||||
* @param modifier Modifier
|
||||
* @param painter Icon for the button
|
||||
* @param text Text describing the button's action
|
||||
* @param onClick Callback when this composable is clicked
|
||||
*/
|
||||
@Composable
|
||||
fun VerticalButtonComposable(
|
||||
modifier: Modifier = Modifier,
|
||||
painter: Painter,
|
||||
text: String,
|
||||
onClick: (() -> Unit)? = null
|
||||
) {
|
||||
Column(
|
||||
modifier = modifier
|
||||
.padding(dimensionResource(R.dimen.padding_xsmall))
|
||||
.clip(RoundedCornerShape(dimensionResource(R.dimen.icon_size_default)))
|
||||
.clickable(onClick = { if (onClick != null) onClick() }, enabled = onClick != null)
|
||||
.padding(dimensionResource(R.dimen.padding_medium)),
|
||||
horizontalAlignment = Alignment.CenterHorizontally
|
||||
) {
|
||||
Icon(
|
||||
painter = painter,
|
||||
contentDescription = text
|
||||
)
|
||||
Text(
|
||||
text = text,
|
||||
style = MaterialTheme.typography.bodySmall
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview(showBackground = true)
|
||||
@Composable
|
||||
private fun VerticalButtonComposablePreview() {
|
||||
VerticalButtonComposable(
|
||||
painter = painterResource(R.drawable.ic_file_copy),
|
||||
text = stringResource(R.string.action_export)
|
||||
)
|
||||
}
|
||||
@@ -29,7 +29,6 @@ import androidx.paging.PagingData
|
||||
import androidx.paging.compose.LazyPagingItems
|
||||
import androidx.paging.compose.collectAsLazyPagingItems
|
||||
import androidx.paging.compose.itemKey
|
||||
import com.aurora.extensions.share
|
||||
import com.aurora.extensions.toast
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.composables.DownloadComposable
|
||||
@@ -73,7 +72,6 @@ fun DownloadsScreen(
|
||||
onForceClearAll = { viewModel.clearAll() },
|
||||
onClearFinished = { viewModel.clearFinished() },
|
||||
onCancel = { packageName -> viewModel.cancel(packageName) },
|
||||
onShare = { download -> context.share(download.displayName, download.packageName) },
|
||||
onInstall = { download -> viewModel.install(download) },
|
||||
onClear = { download ->
|
||||
viewModel.clear(download.packageName, download.versionCode)
|
||||
@@ -94,7 +92,6 @@ private fun ScreenContent(
|
||||
onClear: (download: Download) -> Unit = {},
|
||||
onExport: (download: Download) -> Unit = {},
|
||||
onInstall: (download: Download) -> Unit = {},
|
||||
onShare: (download: Download) -> Unit = {},
|
||||
onCancelAll: () -> Unit = {},
|
||||
onForceClearAll: () -> Unit = {},
|
||||
onClearFinished: () -> Unit = {}
|
||||
@@ -106,7 +103,6 @@ private fun ScreenContent(
|
||||
* Save the initial loading state to make sure we don't replay the loading animation again.
|
||||
*/
|
||||
var initialLoad by rememberSaveable { mutableStateOf(true) }
|
||||
val context = LocalContext.current
|
||||
|
||||
@Composable
|
||||
fun SetupMenu() {
|
||||
@@ -159,20 +155,9 @@ private fun ScreenContent(
|
||||
download = download,
|
||||
onClick = { onNavigateToAppDetails(download.packageName) },
|
||||
onClear = { onClear(download) },
|
||||
onShare = { onShare(download) },
|
||||
onCancel = { onCancel(download.packageName) },
|
||||
onExport = {
|
||||
when {
|
||||
download.canInstall(context) -> onExport(download)
|
||||
else -> context.toast(R.string.purchase_no_file)
|
||||
}
|
||||
},
|
||||
onInstall = {
|
||||
when {
|
||||
download.isSuccessful -> onInstall(download)
|
||||
else -> context.toast(R.string.purchase_no_file)
|
||||
}
|
||||
}
|
||||
onExport = { onExport(download) },
|
||||
onInstall = { onInstall(download) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ data class Download(
|
||||
) : Parcelable {
|
||||
val isFinished get() = downloadStatus in DownloadStatus.finished
|
||||
val isRunning get() = downloadStatus in DownloadStatus.running
|
||||
val isSuccessful get() = downloadStatus == DownloadStatus.COMPLETED
|
||||
private val isSuccessful get() = downloadStatus == DownloadStatus.COMPLETED
|
||||
|
||||
companion object {
|
||||
fun fromApp(app: App): Download {
|
||||
|
||||
Reference in New Issue
Block a user