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.