From b79b5b86db83ecc9101821964bdafa0e338cc832 Mon Sep 17 00:00:00 2001 From: KremeCN <3265494849@qq.com> Date: Fri, 28 Aug 2026 11:13:23 +0800 Subject: [PATCH] feat(about): add link buttons and logo rounding --- .../abox/manager/ui/about/AboutScreen.kt | 50 ++++++++++++++++--- .../app/src/main/res/drawable/ic_github.xml | 9 ++++ .../src/main/res/values-zh-rCN/strings.xml | 2 + android/app/src/main/res/values/strings.xml | 2 + 4 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 android/app/src/main/res/drawable/ic_github.xml diff --git a/android/app/src/main/kotlin/com/flagship/abox/manager/ui/about/AboutScreen.kt b/android/app/src/main/kotlin/com/flagship/abox/manager/ui/about/AboutScreen.kt index 90e6d80..08ec56c 100644 --- a/android/app/src/main/kotlin/com/flagship/abox/manager/ui/about/AboutScreen.kt +++ b/android/app/src/main/kotlin/com/flagship/abox/manager/ui/about/AboutScreen.kt @@ -1,6 +1,7 @@ package com.flagship.abox.manager.ui.about import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -13,9 +14,12 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Language import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults 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 @@ -24,7 +28,9 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight @@ -84,7 +90,9 @@ fun AboutScreen( Image( painter = painterResource(R.drawable.ic_abox_logo_master), contentDescription = stringResource(R.string.app_name), - modifier = Modifier.size(88.dp), + modifier = Modifier + .size(88.dp) + .clip(RoundedCornerShape(16.dp)), ) Text( stringResource(R.string.app_name), @@ -113,10 +121,10 @@ fun AboutScreen( } AboutSection(stringResource(R.string.about_team)) { - TeamMember("KremeCN", stringResource(R.string.about_role_foundation)) - TeamMember("alZerNest", stringResource(R.string.about_role_devices)) + TeamMember("KremeCN", stringResource(R.string.about_role_foundation), "https://github.com/KremeCN", "https://kimico.de/") + TeamMember("alZerNest", stringResource(R.string.about_role_devices), "https://github.com/alZerNest") TeamMember("Aurum", stringResource(R.string.about_role_environment)) - TeamMember("Moler", stringResource(R.string.about_role_infrared)) + TeamMember("Moler", stringResource(R.string.about_role_infrared), "https://github.com/mxhsnd", "https://emoler.net/") TeamMember("tzh", stringResource(R.string.about_role_scenes)) } @@ -166,13 +174,43 @@ private fun AboutValueRow(label: String, value: String) { } @Composable -private fun TeamMember(name: String, role: String) { +private fun TeamMember( + name: String, + role: String, + githubUrl: String? = null, + personalUrl: String? = null, +) { + val uriHandler = LocalUriHandler.current Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, ) { - Text(name, fontWeight = FontWeight.SemiBold) + Row(verticalAlignment = Alignment.CenterVertically) { + Text(name, fontWeight = FontWeight.SemiBold) + if (githubUrl != null) { + Icon( + painter = painterResource(R.drawable.ic_github), + contentDescription = stringResource(R.string.about_link_github), + modifier = Modifier + .padding(start = 6.dp) + .size(18.dp) + .clickable { uriHandler.openUri(githubUrl) }, + tint = MaterialTheme.colorScheme.onSurfaceVariant, + ) + } + if (personalUrl != null) { + Icon( + imageVector = Icons.Outlined.Language, + contentDescription = stringResource(R.string.about_link_personal), + modifier = Modifier + .padding(start = 6.dp) + .size(18.dp) + .clickable { uriHandler.openUri(personalUrl) }, + tint = MaterialTheme.colorScheme.onSurfaceVariant, + ) + } + } Text( role, modifier = Modifier.padding(start = 16.dp), diff --git a/android/app/src/main/res/drawable/ic_github.xml b/android/app/src/main/res/drawable/ic_github.xml new file mode 100644 index 0000000..bb2b98f --- /dev/null +++ b/android/app/src/main/res/drawable/ic_github.xml @@ -0,0 +1,9 @@ + + + diff --git a/android/app/src/main/res/values-zh-rCN/strings.xml b/android/app/src/main/res/values-zh-rCN/strings.xml index 8bc922e..610036d 100644 --- a/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/android/app/src/main/res/values-zh-rCN/strings.xml @@ -367,6 +367,8 @@ 情景与应用集成 由 Flagship 开发团队共同构建。 未知 + GitHub 主页 + 个人主页 新建指令 选择指令的启动方式 手动点击运行,适合常用的一键设备组合。 diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 5bbcec3..9f52334 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -367,6 +367,8 @@ Scenes and integration Developed by Flagship. Unknown + GitHub profile + Personal website New command Choose how the command starts Run manually for frequently used device combinations.