Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ import com.github.kr328.clash.ui.theme.MihomoLightStopped
import com.github.kr328.clash.ui.theme.MihomoOnPrimary
import com.github.kr328.clash.ui.theme.MihomoThemeWrapper
import com.github.kr328.clash.ui.theme.PreviewMihomo
import com.github.kr328.clash.ui.theme.mihomoDimens

@Composable
internal fun HomeScreen(
Expand Down Expand Up @@ -161,7 +160,6 @@ private fun HomeContent(
onOpenAbout: () -> Unit,
) {
val darkTheme = isSystemInDarkTheme()
val dimens = mihomoDimens
val stoppedColor = if (darkTheme) MihomoDarkSurface else MihomoLightStopped

MihomoScaffold(
Expand All @@ -174,17 +172,17 @@ private fun HomeContent(
modifier =
Modifier.fillMaxSize()
.padding(innerPadding)
.padding(horizontal = dimens.homePaddingHorizontal)
.padding(horizontal = 30.dp)
.verticalScroll(rememberScrollState())
) {
Row(
modifier = Modifier.fillMaxWidth().height(dimens.homeTopBannerHeight),
modifier = Modifier.fillMaxWidth().height(90.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Image(
imageVector = MihomoIcons.Clash,
contentDescription = null,
modifier = Modifier.size(dimens.homeLogoSize),
modifier = Modifier.size(logoSize),
)
Spacer(modifier = Modifier.width(4.dp))
Text(
Expand All @@ -194,7 +192,7 @@ private fun HomeContent(
}

HomeActionCard(
modifier = Modifier.padding(vertical = dimens.homeCardMarginVertical),
modifier = Modifier.padding(vertical = cardMarginVertical),
icon =
if (clashRunning) MihomoIcons.OutlineCheckCircle else MihomoIcons.OutlineNotInterested,
text = stringResource(if (clashRunning) R.string.running else R.string.stopped),
Expand All @@ -209,7 +207,7 @@ private fun HomeContent(

AnimatedVisibility(visible = clashRunning) {
HomeActionCard(
modifier = Modifier.padding(vertical = dimens.homeCardMarginVertical),
modifier = Modifier.padding(vertical = cardMarginVertical),
icon = MihomoIcons.BaselineApps,
text = stringResource(R.string.proxy),
subtext = mode,
Expand All @@ -220,7 +218,7 @@ private fun HomeContent(
}

HomeActionCard(
modifier = Modifier.padding(vertical = dimens.homeCardMarginVertical),
modifier = Modifier.padding(vertical = cardMarginVertical),
icon = MihomoIcons.BaselineViewList,
text = stringResource(R.string.profile),
subtext =
Expand All @@ -233,33 +231,33 @@ private fun HomeContent(

AnimatedVisibility(visible = clashRunning && hasProviders) {
HomeActionLabel(
modifier = Modifier.padding(vertical = dimens.homeLabelMarginVertical),
modifier = Modifier.padding(vertical = labelMarginVertical),
icon = MihomoIcons.BaselineSwapVerticalCircle,
text = stringResource(R.string.providers),
onClick = onOpenProviders,
)
}

HomeActionLabel(
modifier = Modifier.padding(vertical = dimens.homeLabelMarginVertical),
modifier = Modifier.padding(vertical = labelMarginVertical),
icon = MihomoIcons.BaselineAssignment,
text = stringResource(R.string.logs),
onClick = onOpenLogs,
)
HomeActionLabel(
modifier = Modifier.padding(vertical = dimens.homeLabelMarginVertical),
modifier = Modifier.padding(vertical = labelMarginVertical),
icon = MihomoIcons.BaselineSettings,
text = stringResource(R.string.settings),
onClick = onOpenSettings,
)
HomeActionLabel(
modifier = Modifier.padding(vertical = dimens.homeLabelMarginVertical),
modifier = Modifier.padding(vertical = labelMarginVertical),
icon = MihomoIcons.BaselineHelpCenter,
text = stringResource(R.string.help),
onClick = onOpenHelp,
)
HomeActionLabel(
modifier = Modifier.padding(vertical = dimens.homeLabelMarginVertical),
modifier = Modifier.padding(vertical = labelMarginVertical),
icon = MihomoIcons.BaselineInfo,
text = stringResource(R.string.about),
onClick = onOpenAbout,
Expand All @@ -280,33 +278,29 @@ private fun HomeActionCard(
onClick: () -> Unit,
modifier: Modifier = Modifier,
) {
val dimens = mihomoDimens
Card(
modifier = modifier.fillMaxWidth().heightIn(min = dimens.largeActionCardMinHeight),
modifier = modifier.fillMaxWidth().heightIn(min = 85.dp),
onClick = onClick,
colors = CardDefaults.cardColors(containerColor = backgroundColor, contentColor = contentColor),
elevation = CardDefaults.cardElevation(defaultElevation = dimens.largeActionCardElevation),
elevation = CardDefaults.cardElevation(defaultElevation = 5.dp),
) {
Row(
modifier =
Modifier.fillMaxWidth()
.padding(
horizontal = dimens.largeItemTrailingMarginHorizontal,
vertical = dimens.largeItemPaddingVertical,
),
.padding(horizontal = actionItemPaddingHorizontal, vertical = actionItemPaddingVertical),
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
imageVector = icon,
contentDescription = null,
modifier = Modifier.size(dimens.largeItemHeaderComponentSize),
modifier = Modifier.size(actionIconSize),
tint = contentColor,
)
Spacer(modifier = Modifier.width(dimens.largeItemTrailingMarginHorizontal))
Spacer(modifier = Modifier.width(actionItemPaddingHorizontal))
Column {
Text(text = text, style = MaterialTheme.typography.bodyLarge, color = contentColor)
if (subtext != null) {
Spacer(modifier = Modifier.height(dimens.largeItemTextMargin))
Spacer(modifier = Modifier.height(5.dp))
Text(text = subtext, style = MaterialTheme.typography.bodyMedium, color = contentColor)
}
}
Expand All @@ -321,30 +315,24 @@ private fun HomeActionLabel(
onClick: () -> Unit,
modifier: Modifier = Modifier,
) {
val dimens = mihomoDimens
Row(
modifier =
modifier
.fillMaxWidth()
.heightIn(min = 60.dp)
.clickable(onClick = onClick)
.padding(vertical = dimens.largeItemPaddingVertical),
.padding(vertical = actionItemPaddingVertical),
verticalAlignment = Alignment.CenterVertically,
) {
Spacer(modifier = Modifier.width(dimens.largeItemTrailingMarginHorizontal))
Icon(
imageVector = icon,
contentDescription = null,
modifier = Modifier.size(dimens.largeItemHeaderComponentSize),
)
Spacer(modifier = Modifier.width(dimens.largeItemTrailingMarginHorizontal))
Spacer(modifier = Modifier.width(actionItemPaddingHorizontal))
Icon(imageVector = icon, contentDescription = null, modifier = Modifier.size(actionIconSize))
Spacer(modifier = Modifier.width(actionItemPaddingHorizontal))
Text(text = text, style = MaterialTheme.typography.bodyLarge)
}
}

@Composable
private fun AboutDialog(versionName: String, onDismiss: () -> Unit) {
val dimens = mihomoDimens
AlertDialog(
onDismissRequest = onDismiss,
confirmButton = {
Expand All @@ -354,7 +342,7 @@ private fun AboutDialog(versionName: String, onDismiss: () -> Unit) {
Image(
imageVector = MihomoIcons.Clash,
contentDescription = null,
modifier = Modifier.size(dimens.aboutIconSize),
modifier = Modifier.size(logoSize),
)
},
title = {
Expand All @@ -370,6 +358,13 @@ private fun AboutDialog(versionName: String, onDismiss: () -> Unit) {
)
}

private val logoSize = 50.dp
private val cardMarginVertical = 5.dp
private val labelMarginVertical = 2.dp
private val actionItemPaddingHorizontal = 20.dp
private val actionItemPaddingVertical = 15.dp
private val actionIconSize = 30.dp

@PreviewWrapper(MihomoThemeWrapper::class)
@PreviewMihomo
@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import androidx.compose.ui.platform.toClipEntry
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
Expand Down Expand Up @@ -193,10 +194,7 @@ private fun LogcatMessageItem(message: LogMessage, onCopyMessage: (LogMessage) -
modifier =
Modifier.fillMaxWidth()
.combinedClickable(onClick = {}, onLongClick = { onCopyMessage(message) })
.padding(
horizontal = dimens.logcatPaddingHorizontal,
vertical = dimens.logcatPaddingVertical,
),
.padding(12.dp),
verticalArrangement = Arrangement.Center,
) {
Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,11 +200,7 @@ private fun ProfilesContent(
if (hasUpdatableProfile) {
IconButton(onClick = onUpdateAll, enabled = !allUpdating) {
if (allUpdating) {
val dimens = mihomoDimens
CircularProgressIndicator(
modifier = Modifier.size(dimens.itemTrailingComponentSize / 2),
strokeWidth = dimens.toolbarImageActionPadding / 2,
)
CircularProgressIndicator(modifier = Modifier.size(15.dp), strokeWidth = 2.5.dp)
} else {
Comment on lines 201 to 204
Icon(
imageVector = MihomoIcons.BaselineSync,
Expand Down Expand Up @@ -250,7 +246,6 @@ private fun ProfileItem(
val itemMinHeight = dimens.itemMinHeight
val itemHeaderMargin = dimens.itemHeaderMargin
val itemTextMargin = dimens.itemTextMargin
val itemMiddleMargin = dimens.itemMiddleMargin

val profileTypeText =
if (profile.pending) {
Expand Down Expand Up @@ -313,7 +308,7 @@ private fun ProfileItem(
Text(
text = (currentTime - profile.updatedAt).elapsedIntervalString(context),
style = MaterialTheme.typography.labelSmall,
modifier = Modifier.padding(horizontal = itemMiddleMargin),
modifier = Modifier.padding(horizontal = 10.dp),
)

Box(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.fromHtml
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
Expand Down Expand Up @@ -126,8 +127,6 @@ private fun PropertiesContent(
onUrlChanged: (String) -> Unit,
onIntervalChanged: (Long) -> Unit,
) {
val dimens = mihomoDimens
val contentPaddingHorizontal = dimens.itemTrailingMargin
var showExitWithoutSavingDialog by rememberSaveable { mutableStateOf(false) }

val onBack = {
Expand All @@ -148,10 +147,7 @@ private fun PropertiesContent(
onBack = onBack,
actions = {
if (processing) {
CircularProgressIndicator(
modifier = Modifier.size(dimens.itemTrailingComponentSize / 2),
strokeWidth = dimens.toolbarImageActionPadding / 2,
)
CircularProgressIndicator(modifier = Modifier.size(15.dp), strokeWidth = 2.5.dp)
} else {
Comment on lines 149 to 151
IconButton(onClick = onCommit) {
Icon(
Expand All @@ -162,12 +158,13 @@ private fun PropertiesContent(
}
},
) { innerPadding ->
val dimens = mihomoDimens
Column(
modifier =
Modifier.fillMaxSize()
.padding(innerPadding)
.verticalScroll(rememberScrollState())
.padding(horizontal = contentPaddingHorizontal)
.padding(horizontal = dimens.itemHeaderMargin)
) {
Comment thread
Goooler marked this conversation as resolved.
ProvidePreferenceLocals {
Preference(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@ private fun ProviderItem(state: ProviderItemState, currentTime: Long, onUpdate:
val itemMinHeight = dimens.itemMinHeight
val itemHeaderMargin = dimens.itemHeaderMargin
val itemTextMargin = dimens.itemTextMargin
val itemMiddleMargin = dimens.itemMiddleMargin

val canUpdate = state.provider.vehicleType != Inline

Expand All @@ -145,11 +144,11 @@ private fun ProviderItem(state: ProviderItemState, currentTime: Long, onUpdate:
if (canUpdate) {
Text(
text = (currentTime - state.updatedAt).elapsedIntervalString(context),
modifier = Modifier.padding(end = itemMiddleMargin),
modifier = Modifier.padding(end = 10.dp),
)
Box(
modifier =
Modifier.size(width = dimens.dividerSize, height = itemMinHeight)
Modifier.size(width = 1.dp, height = itemMinHeight)
.background(MaterialTheme.colorScheme.outline)
)
IconButton(
Expand All @@ -158,10 +157,7 @@ private fun ProviderItem(state: ProviderItemState, currentTime: Long, onUpdate:
modifier = Modifier.padding(horizontal = 4.dp),
) {
if (state.updating) {
CircularProgressIndicator(
modifier = Modifier.size(dimens.itemTrailingComponentSize),
strokeWidth = 2.dp,
)
CircularProgressIndicator(modifier = Modifier.size(30.dp), strokeWidth = 2.dp)
} else {
Comment on lines 145 to 161
Icon(
imageVector = MihomoIcons.BaselineSwapVert,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ import com.github.kr328.clash.ui.icon.BaselineMoreVert
import com.github.kr328.clash.ui.icon.MihomoIcons
import com.github.kr328.clash.ui.theme.MihomoThemeWrapper
import com.github.kr328.clash.ui.theme.PreviewMihomo
import com.github.kr328.clash.ui.theme.mihomoDimens
import kotlinx.coroutines.launch

@Composable
Expand Down Expand Up @@ -266,7 +265,6 @@ private fun ProxyGroupPage(
selectedProxies: List<SelectedProxy>,
onProxySelected: (Int, String) -> Unit,
) {
val dimens = mihomoDimens
val sources = group.sources
val refreshVersion = group.refreshVersion
val selectedControl = MaterialTheme.colorScheme.onPrimary
Expand All @@ -278,7 +276,7 @@ private fun ProxyGroupPage(
columns = GridCells.Fixed(columnsForProxyLine(proxyLine)),
state = rememberLazyGridState(),
modifier = Modifier.fillMaxSize(),
contentPadding = PaddingValues(dimens.proxyContentPaddingGrid3),
contentPadding = PaddingValues(gridContentPadding),
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalArrangement = Arrangement.spacedBy(12.dp),
) {
Expand Down Expand Up @@ -316,20 +314,14 @@ private fun ProxyItemCard(
selectable: Boolean,
onClick: () -> Unit,
) {
val dimens = mihomoDimens
val shape =
RoundedCornerShape(if (proxyLine == 1) dimens.proxyCardOffset else dimens.proxyCardRadius)
val shape = RoundedCornerShape(if (proxyLine == 1) 0.dp else 5.dp)
val modifier =
Modifier.fillMaxWidth()
.then(if (proxyLine == 1) Modifier else Modifier.shadow(elevation = 2.dp, shape = shape))
.clip(shape)
.background(item.background)
.clickable(enabled = selectable, onClick = onClick)
.padding(
horizontal =
if (proxyLine == 3) dimens.proxyContentPaddingGrid3 else dimens.proxyContentPadding,
vertical = 14.dp,
)
.padding(horizontal = if (proxyLine == 3) gridContentPadding else 15.dp, vertical = 14.dp)

Row(
modifier = modifier,
Expand Down Expand Up @@ -490,6 +482,8 @@ private fun ProxyMenuRadioRow(title: String, selected: Boolean, onClick: () -> U
}
}

private val gridContentPadding = 12.dp

private fun columnsForProxyLine(proxyLine: Int): Int =
when (proxyLine) {
1 -> 1
Expand Down
Loading