diff --git a/.gitignore b/.gitignore index 3c15043..d0902d2 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,8 @@ local.properties .idea /manager/signing.properties /out -/signing.properties \ No newline at end of file +/signing.properties +/CLAUDE.md +/AGENTS.md +/CLAUDE.md +/AGENTS.md \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b889fa1..3688063 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -40,6 +40,7 @@ appcompat = "1.7.1" junit = "4.13.2" junitVersion = "1.3.0" espressoCore = "3.7.0" +capsule = "2.1.3" [libraries] androidx-annotation = { module = "androidx.annotation:annotation", version.ref = "annotation" } @@ -100,6 +101,8 @@ sheet-compose-dialogs-core = { group = "com.maxkeppeler.sheets-compose-dialogs", sheet-compose-dialogs-list = { group = "com.maxkeppeler.sheets-compose-dialogs", name = "list", version.ref = "sheets-compose-dialogs" } sheet-compose-dialogs-input = { group = "com.maxkeppeler.sheets-compose-dialogs", name = "input", version.ref = "sheets-compose-dialogs" } +capsule = { module = "io.github.kyant0:capsule", version.ref = "capsule" } + [plugins] android-application = { id = "com.android.application", version.ref = "agp" } diff --git a/manager/build.gradle.kts b/manager/build.gradle.kts index 2b32a64..358d547 100644 --- a/manager/build.gradle.kts +++ b/manager/build.gradle.kts @@ -93,4 +93,6 @@ dependencies { implementation(libs.sheet.compose.dialogs.core) implementation(libs.sheet.compose.dialogs.list) implementation(libs.sheet.compose.dialogs.input) + + implementation(libs.capsule) } \ No newline at end of file diff --git a/manager/src/main/java/frb/axeron/manager/ui/AxActivity.kt b/manager/src/main/java/frb/axeron/manager/ui/AxActivity.kt index f5c6ebc..b15ca1f 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/AxActivity.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/AxActivity.kt @@ -21,7 +21,7 @@ import androidx.compose.animation.slideOutVertically import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.material3.Badge import androidx.compose.material3.BadgedBox import androidx.compose.material3.Card @@ -275,7 +275,7 @@ class AxActivity : ComponentActivity() { containerColor = MaterialTheme.colorScheme.surfaceContainer ), elevation = CardDefaults.cardElevation(0.dp), - shape = RoundedCornerShape(topStart = 15.dp, topEnd = 15.dp) + shape = AppShape.Top15 ) { NavigationBar( containerColor = Color.Transparent, @@ -337,4 +337,4 @@ class AxActivity : ComponentActivity() { } } } -} \ No newline at end of file +} diff --git a/manager/src/main/java/frb/axeron/manager/ui/RequestPermissionActivity.kt b/manager/src/main/java/frb/axeron/manager/ui/RequestPermissionActivity.kt index f4379e7..1560130 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/RequestPermissionActivity.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/RequestPermissionActivity.kt @@ -17,7 +17,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -165,7 +165,7 @@ fun RequestPermissionDialog( onDismissRequest = { onDeny() }, sheetState = sheetState, containerColor = MaterialTheme.colorScheme.surface, - shape = RoundedCornerShape(topStart = 28.dp, topEnd = 28.dp), + shape = AppShape.Top28, dragHandle = { } ) { Column( @@ -185,7 +185,7 @@ fun RequestPermissionDialog( pm = pm, modifier = Modifier .size(56.dp) - .clip(RoundedCornerShape(12.dp)) + .clip(AppShape.R12) ) Spacer(Modifier.width(12.dp)) @@ -231,7 +231,7 @@ fun RequestPermissionDialog( onClick = { scope.launch { sheetState.hide() }.invokeOnCompletion { onAllow(false) } }, - shape = RoundedCornerShape(12.dp) + shape = AppShape.R12 ) { Text(stringResource(R.string.permission_allow_all_time)) } @@ -240,7 +240,7 @@ fun RequestPermissionDialog( onClick = { scope.launch { sheetState.hide() }.invokeOnCompletion { onAllow(true) } }, - shape = RoundedCornerShape(12.dp), + shape = AppShape.R12, colors = ButtonDefaults.buttonColors( containerColor = MaterialTheme.colorScheme.surfaceVariant, contentColor = MaterialTheme.colorScheme.onSurfaceVariant @@ -253,7 +253,7 @@ fun RequestPermissionDialog( onClick = { scope.launch { sheetState.hide() }.invokeOnCompletion { onDeny() } }, - shape = RoundedCornerShape(12.dp), + shape = AppShape.R12, colors = ButtonDefaults.buttonColors( containerColor = Color.Transparent, contentColor = MaterialTheme.colorScheme.error @@ -289,4 +289,4 @@ fun AppIcon( }, modifier = modifier ) -} \ No newline at end of file +} diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/Card.kt b/manager/src/main/java/frb/axeron/manager/ui/component/Card.kt index 12ddee2..817d164 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/component/Card.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/component/Card.kt @@ -34,6 +34,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import frb.axeron.manager.R +import frb.axeron.manager.ui.theme.AppShape import frb.axeron.manager.ui.viewmodel.PluginViewModel import frb.axeron.manager.ui.viewmodel.PrivilegeViewModel @@ -48,6 +49,7 @@ fun StatusCard() { } ElevatedCard( + shape = AppShape.R12, modifier = Modifier .fillMaxWidth() .height(IntrinsicSize.Max) @@ -139,6 +141,7 @@ fun PluginCard( ElevatedCard( colors = CardDefaults.cardColors(), + shape = AppShape.R12, modifier = modifier .fillMaxWidth() .height(IntrinsicSize.Max) @@ -208,6 +211,7 @@ fun PrivilegeCard( val containerColor = colorScheme.surfaceVariant ElevatedCard( colors = CardDefaults.cardColors(), + shape = AppShape.R12, modifier = modifier .fillMaxWidth() .height(IntrinsicSize.Max) @@ -265,4 +269,4 @@ fun PrivilegeCard( } } -} \ No newline at end of file +} diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/Dialog.kt b/manager/src/main/java/frb/axeron/manager/ui/component/Dialog.kt index 27c5e89..0c062f5 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/component/Dialog.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/component/Dialog.kt @@ -13,7 +13,7 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.material3.BottomSheetDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api @@ -469,7 +469,7 @@ private fun LoadingDialog() { properties = DialogProperties(dismissOnClickOutside = false, dismissOnBackPress = false) ) { Surface( - modifier = Modifier.size(100.dp), shape = RoundedCornerShape(8.dp) + modifier = Modifier.size(100.dp), shape = AppShape.R8 ) { Box( contentAlignment = Alignment.Center, @@ -586,4 +586,4 @@ private fun MarkdownContent(content: String) { it.setTextColor(contentColor.toArgb()) } ) -} \ No newline at end of file +} diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/ExtraLabel.kt b/manager/src/main/java/frb/axeron/manager/ui/component/ExtraLabel.kt index a00ce26..e062a7c 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/component/ExtraLabel.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/component/ExtraLabel.kt @@ -7,7 +7,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.layout.wrapContentWidth -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Tune import androidx.compose.material3.Card @@ -39,7 +39,7 @@ fun LabelPreview() { @Composable fun ExtraLabel() { Card( - shape = RoundedCornerShape(3.dp), + shape = AppShape.R3, ) { Row( modifier = Modifier @@ -112,7 +112,7 @@ object ExtraLabelDefaults { @Composable get() = ExtraLabelStyle( containerColor = MaterialTheme.colorScheme.primary, contentColor = MaterialTheme.colorScheme.onPrimary, - shape = RoundedCornerShape(3.dp), + shape = AppShape.R3, textStyle = TextStyle( fontSize = 8.sp, fontWeight = FontWeight.Medium, @@ -138,7 +138,7 @@ fun ExtraLabel( .then( if (onClick != null) Modifier.clickable { onClick() } else Modifier ), - shape = RoundedCornerShape(3.dp), + shape = AppShape.R3, colors = CardDefaults.cardColors().copy( containerColor = style.containerColor, contentColor = style.contentColor diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/MaterialDialog.kt b/manager/src/main/java/frb/axeron/manager/ui/component/MaterialDialog.kt index b988feb..ea3d0d2 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/component/MaterialDialog.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/component/MaterialDialog.kt @@ -9,7 +9,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.foundation.verticalScroll import androidx.compose.material3.BottomSheetDefaults import androidx.compose.material3.CardDefaults @@ -42,7 +42,7 @@ fun MaterialDialog( ) ) { ElevatedCard( - shape = RoundedCornerShape(24.dp), + shape = AppShape.R24, elevation = CardDefaults.cardElevation(8.dp), modifier = Modifier .fillMaxWidth() @@ -112,7 +112,7 @@ fun MaterialBottomSheet( containerColor = MaterialTheme.colorScheme.surfaceContainerLowest, onDismissRequest = { onDismissRequest() }, sheetState = sheetState, - shape = RoundedCornerShape(topStart = 24.dp, topEnd = 24.dp), + shape = AppShape.Top24, tonalElevation = 8.dp, dragHandle = dragHandle ) { diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/PaletteDialog.kt b/manager/src/main/java/frb/axeron/manager/ui/component/PaletteDialog.kt index a8073e0..360e7cf 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/component/PaletteDialog.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/component/PaletteDialog.kt @@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material3.AlertDialog import androidx.compose.material3.ExperimentalMaterial3Api @@ -184,9 +184,9 @@ fun PaletteDialog( modifier = Modifier .fillMaxWidth() .height(48.dp) - .clip(RoundedCornerShape(8.dp)) + .clip(AppShape.R8) .background(selectedColor) - .border(1.dp, MaterialTheme.colorScheme.outline, RoundedCornerShape(8.dp)) + .border(1.dp, MaterialTheme.colorScheme.outline, AppShape.R8) ) } }, @@ -239,4 +239,4 @@ private fun SliderRow( } } -// aaaa \ No newline at end of file +// aaaa diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/PowerDialog.kt b/manager/src/main/java/frb/axeron/manager/ui/component/PowerDialog.kt index a26221e..5be4adf 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/component/PowerDialog.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/component/PowerDialog.kt @@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ExpandLess import androidx.compose.material.icons.filled.ExpandMore @@ -56,7 +56,7 @@ fun VerticalSlideSeekbar( modifier = Modifier .width(65.dp) .height(height) - .background(Color(0xFF303030), RoundedCornerShape(46.dp)) + .background(Color(0xFF303030), AppShape.R46) .pointerInput(Unit) { detectVerticalDragGestures( onVerticalDrag = { _, dragAmount -> @@ -204,4 +204,4 @@ fun PowerDialog( } } } -} \ No newline at end of file +} diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/SearchBar.kt b/manager/src/main/java/frb/axeron/manager/ui/component/SearchBar.kt index 8da2ec7..05dbc8d 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/component/SearchBar.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/component/SearchBar.kt @@ -7,7 +7,7 @@ import androidx.compose.animation.fadeOut import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons @@ -119,7 +119,7 @@ fun SearchAppBar( unfocusedIndicatorColor = Color.Transparent, // garis saat tidak fokus disabledIndicatorColor = Color.Transparent // garis saat disabled ), - shape = RoundedCornerShape(12.dp), + shape = AppShape.R12, keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done), keyboardActions = KeyboardActions(onDone = { keyboardController?.hide() diff --git a/manager/src/main/java/frb/axeron/manager/ui/component/SettingsItem.kt b/manager/src/main/java/frb/axeron/manager/ui/component/SettingsItem.kt index 36f2551..9556c15 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/component/SettingsItem.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/component/SettingsItem.kt @@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.material3.Card @@ -73,8 +73,8 @@ fun SettingsItem( contentColor = contentColor ), shape = when (type) { - SettingsItemType.PARENT -> CardDefaults.elevatedShape - SettingsItemType.CHILD -> RoundedCornerShape(0.dp) + SettingsItemType.PARENT -> AppShape.R12 + SettingsItemType.CHILD -> AppShape.R0 }, elevation = when (type) { SettingsItemType.PARENT -> CardDefaults.elevatedCardElevation() @@ -204,8 +204,8 @@ fun SettingsItemExpanded( contentColor = contentColor ), shape = when (type) { - SettingsItemType.PARENT -> CardDefaults.elevatedShape - SettingsItemType.CHILD -> RoundedCornerShape(0.dp) + SettingsItemType.PARENT -> AppShape.R12 + SettingsItemType.CHILD -> AppShape.R0 }, elevation = when (type) { SettingsItemType.PARENT -> CardDefaults.elevatedCardElevation() @@ -295,7 +295,7 @@ fun CheckBoxText( .height(36.dp) .fillMaxWidth() .padding(horizontal = 12.dp, vertical = 2.dp), - shape = RoundedCornerShape(5.dp), + shape = AppShape.R5, onClick = { onCheckedChange(!checked) } diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/Activate.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/Activate.kt index 841de4e..e93a186 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/screen/Activate.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/screen/Activate.kt @@ -68,6 +68,7 @@ import frb.axeron.manager.R import frb.axeron.manager.adb.AdbStateInfo import frb.axeron.manager.ui.component.ConfirmResult import frb.axeron.manager.ui.component.rememberConfirmDialog +import frb.axeron.manager.ui.theme.AppShape import frb.axeron.manager.ui.util.ClipboardUtil import frb.axeron.manager.ui.viewmodel.ActivateViewModel import frb.axeron.manager.ui.viewmodel.ViewModelGlobal @@ -124,6 +125,7 @@ fun ActivateScreen(navigator: DestinationsNavigator, viewModelGlobal: ViewModelG colors = CardDefaults.cardColors().copy( containerColor = MaterialTheme.colorScheme.errorContainer ), + shape = AppShape.R12, modifier = Modifier.fillMaxWidth() ) { Column( @@ -168,6 +170,7 @@ fun TcpDebuggingCard( elevation = CardDefaults.cardElevation( defaultElevation = 1.dp ), + shape = AppShape.R12, modifier = Modifier.fillMaxWidth() ) { Column( @@ -308,6 +311,7 @@ fun WirelessDebuggingCard( elevation = CardDefaults.cardElevation( defaultElevation = 1.dp ), + shape = AppShape.R12, modifier = Modifier.fillMaxWidth() ) { Column( @@ -481,6 +485,7 @@ fun RootCard( elevation = CardDefaults.cardElevation( defaultElevation = 1.dp ), + shape = AppShape.R12, modifier = Modifier.fillMaxWidth() ) { Column( @@ -585,6 +590,7 @@ fun ComputerCard() { elevation = CardDefaults.cardElevation( defaultElevation = 1.dp ), + shape = AppShape.R12, modifier = Modifier.fillMaxWidth() ) { Column( @@ -673,4 +679,4 @@ fun ComputerCard() { } } } -} \ No newline at end of file +} diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/Flash.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/Flash.kt index f5871bd..69cb951 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/screen/Flash.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/screen/Flash.kt @@ -87,6 +87,7 @@ import frb.axeron.manager.ui.component.AxSnackBarHost import frb.axeron.manager.ui.component.KeyEventBlocker import frb.axeron.manager.ui.component.rememberLoadingDialog import frb.axeron.manager.ui.component.resolveDisplayName +import frb.axeron.manager.ui.theme.AppShape import frb.axeron.manager.ui.theme.GREEN import frb.axeron.manager.ui.theme.ORANGE import frb.axeron.manager.ui.theme.RED @@ -192,7 +193,8 @@ fun InstallDialog( modifier = Modifier.fillMaxWidth(), colors = CardDefaults.elevatedCardColors( containerColor = MaterialTheme.colorScheme.surfaceContainerLow - ) + ), + shape = AppShape.R12 ) { Row( modifier = Modifier @@ -614,4 +616,4 @@ private fun TopBar( }, scrollBehavior = scrollBehavior ) -} \ No newline at end of file +} diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/Home.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/Home.kt index 5be3a13..f268110 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/screen/Home.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/screen/Home.kt @@ -90,6 +90,7 @@ import frb.axeron.manager.ui.component.PowerDialog import frb.axeron.manager.ui.component.PrivilegeCard import frb.axeron.manager.ui.component.rememberConfirmDialog import frb.axeron.manager.ui.component.rememberLoadingDialog +import frb.axeron.manager.ui.theme.AppShape import frb.axeron.manager.ui.util.checkNewVersion import frb.axeron.manager.ui.util.module.LatestVersionInfo import frb.axeron.manager.ui.viewmodel.ActivateViewModel @@ -247,6 +248,7 @@ fun SupportCard() { val githubFahrez182 = "https://github.com/fahrez182/AxManager" ElevatedCard( + shape = AppShape.R12, onClick = { uriHandler.openUri(githubFahrez182) } @@ -286,6 +288,7 @@ fun LearnCard() { val learnAxManager = "https://fahrez182.github.io/AxManager" ElevatedCard( + shape = AppShape.R12, onClick = { uriHandler.openUri(learnAxManager) } @@ -345,6 +348,7 @@ fun StatusCard( } } ), + shape = AppShape.R12, modifier = Modifier .fillMaxWidth() .height(IntrinsicSize.Min) @@ -655,7 +659,8 @@ fun WarningCard( ElevatedCard( colors = CardDefaults.elevatedCardColors( containerColor = color - ) + ), + shape = AppShape.R12 ) { Row( modifier = Modifier @@ -678,6 +683,7 @@ fun InfoCard(activateViewModel: ActivateViewModel) { elevation = CardDefaults.cardElevation( defaultElevation = 1.dp ), + shape = AppShape.R12, modifier = Modifier.fillMaxWidth() ) { Column( @@ -688,7 +694,7 @@ fun InfoCard(activateViewModel: ActivateViewModel) { ) { @Composable fun InfoCardItem(label: String, content: String, icon: Any? = null) { - Card { + Card(shape = AppShape.R12) { Row( modifier = Modifier.padding(vertical = 8.dp, horizontal = 12.dp), verticalAlignment = Alignment.CenterVertically diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/QuickShell.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/QuickShell.kt index 98a80e0..c38c2e4 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/screen/QuickShell.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/screen/QuickShell.kt @@ -28,7 +28,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.foundation.text.BasicText import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.material.icons.Icons @@ -415,7 +415,7 @@ fun QuickShellScreen(navigator: DestinationsNavigator, viewModelGlobal: ViewMode ElevatedCard( - shape = RoundedCornerShape(10.dp), + shape = AppShape.R10, colors = CardDefaults.elevatedCardColors().copy( containerColor = MaterialTheme.colorScheme.surfaceContainerHigh // containerColor = Color.Transparent diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/Settings.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/Settings.kt index a4f5e0b..7026c5b 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/screen/Settings.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/screen/Settings.kt @@ -17,7 +17,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons @@ -267,7 +267,7 @@ fun SettingsScreen(navigator: DestinationsNavigator, viewModelGlobal: ViewModelG unfocusedContainerColor = MaterialTheme.colorScheme.surfaceContainerLowest, disabledIndicatorColor = Color.Transparent ), - shape = RoundedCornerShape(12.dp), + shape = AppShape.R12, keyboardOptions = KeyboardOptions( keyboardType = KeyboardType.Number ), @@ -495,4 +495,4 @@ fun DeveloperInfo( } } } -} \ No newline at end of file +} diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/SettingsEditor.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/SettingsEditor.kt index 76dd47e..f011be4 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/screen/SettingsEditor.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/screen/SettingsEditor.kt @@ -27,7 +27,7 @@ import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState -import androidx.compose.foundation.shape.RoundedCornerShape +import frb.axeron.manager.ui.theme.AppShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.TextSnippet @@ -343,7 +343,7 @@ fun RoundedTabRow( modifier = Modifier .fillMaxWidth() .padding(12.dp) - .clip(RoundedCornerShape(50)), // biar seluruh tabrow bulat + .clip(AppShape.R50Percent), // biar seluruh tabrow bulat containerColor = MaterialTheme.colorScheme.surfaceVariant, indicator = { null }, edgePadding = 0.dp, @@ -362,7 +362,7 @@ fun RoundedTabRow( selected = isSelected, onClick = { onSelect(type) }, modifier = Modifier - .clip(RoundedCornerShape(50)) + .clip(AppShape.R50Percent) .background( if (isSelected) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.surfaceVariant @@ -412,7 +412,8 @@ fun TableItem( }, colors = CardDefaults.elevatedCardColors( containerColor = MaterialTheme.colorScheme.surfaceContainerLowest - ) + ), + shape = AppShape.R12 ) { Column( modifier = Modifier @@ -673,7 +674,7 @@ fun TableEditor( unfocusedTextColor = MaterialTheme.colorScheme.onSurfaceVariant, disabledTextColor = MaterialTheme.colorScheme.onSurfaceVariant, ), - shape = RoundedCornerShape(12.dp), + shape = AppShape.R12, keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done), ) } else { @@ -717,7 +718,7 @@ fun TableEditor( unfocusedTextColor = MaterialTheme.colorScheme.onSurfaceVariant, disabledTextColor = MaterialTheme.colorScheme.onSurfaceVariant, ), - shape = RoundedCornerShape(12.dp), + shape = AppShape.R12, keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done), ) diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/Plugin.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/Plugin.kt index 805791c..c60bbbf 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/Plugin.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/Plugin.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.foundation.shape.CornerSize import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.DeveloperMode @@ -66,6 +65,7 @@ import frb.axeron.manager.ui.component.SearchAppBar import frb.axeron.manager.ui.component.SettingsItem import frb.axeron.manager.ui.component.rememberLoadingDialog import frb.axeron.manager.ui.screen.FlashIt +import frb.axeron.manager.ui.theme.AppShape import frb.axeron.manager.ui.util.LocalSnackbarHost import frb.axeron.manager.ui.viewmodel.PluginViewModel import frb.axeron.manager.ui.viewmodel.SettingsViewModel @@ -332,12 +332,7 @@ fun ExtraFilterSettings( shape = SegmentedButtonDefaults.itemShape( index = index, count = ascOption.size, - baseShape = SegmentedButtonDefaults.baseShape.copy( - bottomStart = CornerSize(6.dp), - bottomEnd = CornerSize(6.dp), - topStart = CornerSize(6.dp), - topEnd = CornerSize(6.dp) - ) + baseShape = AppShape.R6 ), onClick = { pluginViewModel.setSelectedAsc(index) }, selected = index == pluginViewModel.getSelectedAsc, @@ -365,12 +360,7 @@ fun ExtraFilterSettings( shape = SegmentedButtonDefaults.itemShape( index = index, count = sortOption.size, - baseShape = SegmentedButtonDefaults.baseShape.copy( - bottomStart = CornerSize(6.dp), - bottomEnd = CornerSize(6.dp), - topStart = CornerSize(6.dp), - topEnd = CornerSize(6.dp) - ) + baseShape = AppShape.R6 ), onClick = { pluginViewModel.setSelectedSort(index) }, selected = index == pluginViewModel.getSelectedSort, @@ -422,4 +412,4 @@ fun ItemPreview() { expanded = false, onExpandToggle = {}, ) -} \ No newline at end of file +} diff --git a/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/PluginItem.kt b/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/PluginItem.kt index 373e234..4aea4db 100644 --- a/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/PluginItem.kt +++ b/manager/src/main/java/frb/axeron/manager/ui/screen/plugin/PluginItem.kt @@ -73,6 +73,7 @@ import frb.axeron.manager.ui.component.createWebUIShortcut import frb.axeron.manager.ui.component.formatSize import frb.axeron.manager.ui.component.rememberConfirmDialog import frb.axeron.manager.ui.component.rememberLoadingDialog +import frb.axeron.manager.ui.theme.AppShape import frb.axeron.manager.ui.viewmodel.PluginViewModel import frb.axeron.manager.ui.viewmodel.SettingsViewModel import frb.axeron.server.PluginInfo @@ -156,9 +157,10 @@ fun PluginItem( } ElevatedCard( + shape = AppShape.R12, modifier = Modifier .fillMaxWidth() - .clip(MaterialTheme.shapes.medium) + .clip(AppShape.R12) .combinedClickable( onClick = onExpandToggle, ) @@ -616,4 +618,4 @@ fun PluginItem( } } } -} \ No newline at end of file +} diff --git a/manager/src/main/java/frb/axeron/manager/ui/theme/AppShape.kt b/manager/src/main/java/frb/axeron/manager/ui/theme/AppShape.kt new file mode 100644 index 0000000..1fd7781 --- /dev/null +++ b/manager/src/main/java/frb/axeron/manager/ui/theme/AppShape.kt @@ -0,0 +1,22 @@ +package frb.axeron.manager.ui.theme + +import androidx.compose.ui.unit.dp +import com.kyant.capsule.ContinuousRoundedRectangle + +object AppShape { + val R0 = ContinuousRoundedRectangle(0.dp) + val R3 = ContinuousRoundedRectangle(3.dp) + val R5 = ContinuousRoundedRectangle(5.dp) + val R6 = ContinuousRoundedRectangle(6.dp) + val R8 = ContinuousRoundedRectangle(8.dp) + val R10 = ContinuousRoundedRectangle(10.dp) + val R12 = ContinuousRoundedRectangle(12.dp) + val R24 = ContinuousRoundedRectangle(24.dp) + val R46 = ContinuousRoundedRectangle(46.dp) + + val R50Percent = ContinuousRoundedRectangle(50) + + val Top15 = ContinuousRoundedRectangle(topStart = 15.dp, topEnd = 15.dp) + val Top24 = ContinuousRoundedRectangle(topStart = 24.dp, topEnd = 24.dp) + val Top28 = ContinuousRoundedRectangle(topStart = 28.dp, topEnd = 28.dp) +} diff --git a/manager/src/main/res/values-zh-rCN/strings.xml b/manager/src/main/res/values-zh-rCN/strings.xml index e011e41..5656665 100644 --- a/manager/src/main/res/values-zh-rCN/strings.xml +++ b/manager/src/main/res/values-zh-rCN/strings.xml @@ -3,11 +3,11 @@ 运行中 MIUI用户可能需要将通知切换为原生样式。 否则您可能无法从通知中输入配对码。 - 全局设置 - 安全设置 - 系统设置 - 安卓属性 - Axeron 环境 + Global 表 + Secuer 表 + System 表 + Android Properties + Axeron PATH 搜索 主页 特权