diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 07fcc40e..9a5a9c50 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,7 +40,7 @@ jobs: echo "${{ secrets.KEY_STORE }}" | base64 -d > keystore.jks APK=$(find app/build/outputs/apk/release -name "*.apk" | head -1) VERSION=${TAG_NAME#v} - SIGNED_APK="app/build/outputs/apk/release/look4sat-${VERSION}.apk" + SIGNED_APK="app/build/outputs/apk/release/Look4Sat-Pro-${VERSION}.apk" BUILD_TOOLS=$(ls -d ${ANDROID_HOME}/build-tools/*/ | sort -V | tail -1) ${BUILD_TOOLS}apksigner sign \ --ks keystore.jks \ diff --git a/.gitignore b/.gitignore index a3196c82..07d4b106 100644 --- a/.gitignore +++ b/.gitignore @@ -39,8 +39,7 @@ captures/ .idea/ # Keystore files -# Uncomment the following line if you do not want to check your keystore files in. -#*.jks +*.jks /*.properties /keystore.properties /app/keystore.jks diff --git a/core/presentation/src/main/res/values-tr/strings.xml b/core/presentation/src/main/res/values-tr/strings.xml index a9ff9f22..6df543c2 100644 --- a/core/presentation/src/main/res/values-tr/strings.xml +++ b/core/presentation/src/main/res/values-tr/strings.xml @@ -51,11 +51,11 @@ \n\nDoğru tahminler alabilmek için veritabanını en az haftada bir güncelleyin. What\'s new in Look4Sat - * Switched to short-form commands in NetworkReporter, by theojalba - \n* Added CAT radio control for full-duplex SAT operation, by jcmerg - \n* Added normalized time for passes AOS/LOS, fixed refresh state bug - \n* Added multiple performance tweaks, improved passes calculation - \n* Fixed UTC pass time problem mentioned in issue #201 + * Roaming sayfası QTH定位器 2.0'dan birebir taşındı: 8 haneli konum, 3x3 ızgara, kırmızı işaret, canlı GPS + \n\n* İçeriğin sistem durum/gezinme çubuklarıyla çakışması düzeltildi; ızgara sütunları referans düzenle eşleşiyor + \n\n* Roaming sayfası renkleri uygulama temasını takip eder - kırmızı gece modunda tamamen görünür + \n\n* Ayarlar: sıkışan anahtar satırları ve teşekkür aralığı düzeltildi + \n\n* Uygulama adı artık Look4Sat Pro @@ -103,7 +103,7 @@ Görünür - Look4Sat v%s + Look4Sat Pro v%s https://play.google.com/store/apps/details?id=com.rtbishop.look4sat Bağış yap https://ko-fi.com/rt_bishop diff --git a/core/presentation/src/main/res/values-zh/strings.xml b/core/presentation/src/main/res/values-zh/strings.xml index 743200fd..5f34bf71 100644 --- a/core/presentation/src/main/res/values-zh/strings.xml +++ b/core/presentation/src/main/res/values-zh/strings.xml @@ -39,6 +39,14 @@ 没有即将过境的卫星 欢迎来到 Look4Sat\! 请务必在设置中通过GPS、经纬度或QTH定位您的位置\n建议至少每周更新一次数据库,以确保预测结果的准确性 + Look4Sat Pro 更新内容 + + * 漫游页完整移植 QTH定位器 2.0:8 位网格、3x3 九宫格、红点查表定位、实时 GPS + \n\n* 修复内容被系统状态栏/导航栏遮挡;九宫格列宽与原版一致 + \n\n* 漫游页配色跟随应用主题,红色夜间模式下清晰可见 + \n\n* 设置:修复开关行挤压与感谢列表间距 + \n\n* 应用名现为 Look4Sat Pro + 后退 diff --git a/core/presentation/src/main/res/values/strings.xml b/core/presentation/src/main/res/values/strings.xml index ca7ae6a0..eff962d0 100644 --- a/core/presentation/src/main/res/values/strings.xml +++ b/core/presentation/src/main/res/values/strings.xml @@ -53,8 +53,11 @@ \n\nPlease update the database at least weekly to get accurate predictions. What\'s new in Look4Sat - * Added required tweaks to support Android 17 (API 37) - \n\n* Added ACCESS_LOCAL_NETWORK permission check to support network data output + * Roaming page ported verbatim from QTH定位器 2.0: 8-char locator, 3x3 grid, red marker lookup, live GPS + \n\n* Fixed content overlapping the system status/navigation bars; grid columns now match the reference layout + \n\n* Roaming page colors follow the app theme - fully visible in red night mode + \n\n* Settings: fixed squeezed toggle rows and credits spacing + \n\n* App name is now Look4Sat Pro @@ -112,7 +115,7 @@ Visible - Look4Sat v%s + Look4Sat Pro v%s https://play.google.com/store/apps/details?id=com.rtbishop.look4sat Donate https://ko-fi.com/rt_bishop diff --git a/feature/roaming/src/main/java/com/rtbishop/look4sat/feature/roaming/RoamingScreen.kt b/feature/roaming/src/main/java/com/rtbishop/look4sat/feature/roaming/RoamingScreen.kt index d869cff6..a876519a 100644 --- a/feature/roaming/src/main/java/com/rtbishop/look4sat/feature/roaming/RoamingScreen.kt +++ b/feature/roaming/src/main/java/com/rtbishop/look4sat/feature/roaming/RoamingScreen.kt @@ -31,6 +31,7 @@ import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -45,6 +46,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.windowInsetsPadding @@ -144,7 +146,7 @@ fun RoamingScreen() { Column( modifier = Modifier .fillMaxSize() - .background(Color(0xFFF2F2F2)) + .background(MaterialTheme.colorScheme.background) .windowInsetsPadding(WindowInsets.systemBars) ) { // relativeLayout7: 顶部 GPS 状态条, 25dp 高, holo_blue_bright @@ -153,45 +155,45 @@ fun RoamingScreen() { .fillMaxWidth() .padding(2.dp) .height(25.dp) - .background(Color(0xFF01DDFF)) + .background(MaterialTheme.colorScheme.surfaceVariant) ) { Row(modifier = Modifier.fillMaxSize(), verticalAlignment = Alignment.CenterVertically) { // tvTitleGPS: "GPS" 14sp 黑, 左 8dp Text( text = "GPS", fontSize = 14.sp, - color = Color.Black, + color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.padding(start = 8.dp) ) // imGps: toRightOf tvTitleGPS + marginLeft 15dp (成品 main.xml) Spacer(modifier = Modifier.width(15.dp)) - // imGps: 绿点 (15dp) + // imGps: 绿点 (15dp, 主题色 primary -> 夜间滤镜下可见) if (state.gpsOn) { - Image( - painter = painterResource(R.drawable.roam_gps_green), - contentDescription = null, - modifier = Modifier.size(15.dp) + Box( + modifier = Modifier + .size(15.dp) + .background(MaterialTheme.colorScheme.primary, CircleShape) ) } - // imGpsOff: 红点叠层 (15dp) + // imGpsOff: 红点叠层 (15dp, 主题色 error) if (state.gpsOff) { - Image( - painter = painterResource(R.drawable.roam_gps_red), - contentDescription = null, - modifier = Modifier.size(15.dp) + Box( + modifier = Modifier + .size(15.dp) + .background(MaterialTheme.colorScheme.error, CircleShape) ) } Spacer(modifier = Modifier.weight(1f)) // tvDate: 14sp 黑, 居中 if (state.showDate) { - Text(text = state.date.ifEmpty { dateText }, fontSize = 14.sp, color = Color.Black) + Text(text = state.date.ifEmpty { dateText }, fontSize = 14.sp, color = MaterialTheme.colorScheme.onSurfaceVariant) } Spacer(modifier = Modifier.weight(1f)) // tvTime: 14sp 黑, 右对齐 Text( text = state.time, fontSize = 14.sp, - color = Color.Black, + color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.padding(end = 8.dp) ) } @@ -201,12 +203,12 @@ fun RoamingScreen() { Box( modifier = Modifier .align(Alignment.Center) - .background(Color(0xFAF8F54A)) + .background(MaterialTheme.colorScheme.primary) .clickable { context.startActivity(Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)) } .padding(horizontal = 5.dp), contentAlignment = Alignment.Center ) { - Text(text = "设置启用GPS", fontSize = 14.sp, color = Color.Black) + Text(text = "设置启用GPS", fontSize = 14.sp, color = MaterialTheme.colorScheme.onPrimary) } } } @@ -215,19 +217,19 @@ fun RoamingScreen() { modifier = Modifier .fillMaxWidth() .padding(horizontal = 2.dp) - .background(Color(0xFF01DDFF)) + .background(MaterialTheme.colorScheme.surfaceVariant) ) { // 纬度行: tvLati 16sp 黑 左 8dp | tvLat 右对齐 3dp Row(modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp), verticalAlignment = Alignment.CenterVertically) { - Text(text = state.latLabel, fontSize = 16.sp, color = Color.Black, modifier = Modifier.padding(start = 8.dp)) + Text(text = state.latLabel, fontSize = 16.sp, color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.padding(start = 8.dp)) Spacer(modifier = Modifier.weight(1f)) - Text(text = state.latValue, fontSize = 14.sp, color = Color.Black, modifier = Modifier.padding(end = 3.dp)) + Text(text = state.latValue, fontSize = 14.sp, color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.padding(end = 3.dp)) } // 经度行 Row(modifier = Modifier.fillMaxWidth().padding(vertical = 2.dp), verticalAlignment = Alignment.CenterVertically) { - Text(text = state.lonLabel, fontSize = 16.sp, color = Color.Black, modifier = Modifier.padding(start = 8.dp)) + Text(text = state.lonLabel, fontSize = 16.sp, color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.padding(start = 8.dp)) Spacer(modifier = Modifier.weight(1f)) - Text(text = state.lonValue, fontSize = 14.sp, color = Color.Black, modifier = Modifier.padding(end = 3.dp)) + Text(text = state.lonValue, fontSize = 14.sp, color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.padding(end = 3.dp)) } } // relativeLayout6: 定位码区, 43sp bold 黑居中 @@ -235,13 +237,13 @@ fun RoamingScreen() { modifier = Modifier .fillMaxWidth() .padding(2.dp) - .background(Color(0xFF01DDFF)) + .background(MaterialTheme.colorScheme.surfaceVariant) ) { Text( text = state.loc, fontSize = 43.sp, fontWeight = FontWeight.Bold, - color = Color.Black, + color = MaterialTheme.colorScheme.onSurfaceVariant, textAlign = TextAlign.Center, modifier = Modifier.fillMaxWidth() ) @@ -249,7 +251,7 @@ fun RoamingScreen() { if (state.showProgress) { CircularProgressIndicator( modifier = Modifier.size(24.dp).align(Alignment.Center), - color = Color.Black, + color = MaterialTheme.colorScheme.onSurfaceVariant, strokeWidth = 2.dp ) } @@ -259,7 +261,7 @@ fun RoamingScreen() { text = "请稍等,加载可能需要几分钟的时间。", fontSize = 16.sp, fontStyle = androidx.compose.ui.text.font.FontStyle.Italic, - color = Color.Black, + color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.align(Alignment.TopCenter).padding(top = 2.dp) ) } @@ -284,7 +286,7 @@ fun RoamingScreen() { .align(Alignment.TopCenter) .offset(y = 2.dp) .size(width = 200.dp, height = 200.dp) - .background(Color(0xFF01DDFF)) + .background(MaterialTheme.colorScheme.surfaceVariant) ) { // iv: 红点 10x10dp, top|left, leftMargin/topMargin 查表绝对定位 Image( @@ -300,7 +302,7 @@ fun RoamingScreen() { text = state.grids[4], fontSize = 30.sp, fontWeight = FontWeight.Bold, - color = Color.White, + color = MaterialTheme.colorScheme.onSurfaceVariant, textAlign = TextAlign.Center, modifier = Modifier .size(width = 100.dp, height = 80.dp) @@ -320,7 +322,7 @@ fun RoamingScreen() { Text( text = "制作:US1PM 汉化:BA7LCE", fontSize = 10.sp, - color = Color.Black, + color = MaterialTheme.colorScheme.onSurfaceVariant, textAlign = TextAlign.Center, modifier = Modifier.fillMaxWidth().padding(bottom = 10.dp) ) @@ -333,14 +335,14 @@ private fun GridCell(text: String, modifier: Modifier) { Box( modifier = modifier .padding(2.dp) - .background(Color(0xFF0BACF1)), + .background(MaterialTheme.colorScheme.surface), contentAlignment = Alignment.Center ) { Text( text = text, fontSize = 14.sp, fontWeight = FontWeight.Bold, - color = Color.Black, + color = MaterialTheme.colorScheme.onSurface, textAlign = TextAlign.Center ) } diff --git a/feature/settings/src/main/java/com/rtbishop/look4sat/feature/settings/SettingsScreen.kt b/feature/settings/src/main/java/com/rtbishop/look4sat/feature/settings/SettingsScreen.kt index cabcad4d..ab9b5839 100644 --- a/feature/settings/src/main/java/com/rtbishop/look4sat/feature/settings/SettingsScreen.kt +++ b/feature/settings/src/main/java/com/rtbishop/look4sat/feature/settings/SettingsScreen.kt @@ -29,6 +29,7 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.grid.GridCells @@ -486,9 +487,7 @@ private fun OtherCardPreview() = MainTheme { @Composable private fun OtherCard(settings: OtherSettings, onAction: (SettingsAction) -> Unit) { ElevatedCard( - modifier = Modifier - .fillMaxWidth() - .height(268.dp) + modifier = Modifier.fillMaxWidth() ) { Column( modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp), @@ -561,15 +560,11 @@ private fun CardCreditsPreview() = MainTheme { CardCredits() } @Composable private fun CardCredits(modifier: Modifier = Modifier) { ElevatedCard( - modifier = modifier - .fillMaxWidth() - .height(268.dp) + modifier = modifier.fillMaxWidth() ) { Column( - verticalArrangement = Arrangement.SpaceBetween, - modifier = Modifier - .padding(horizontal = 8.dp, vertical = 4.dp) - .fillMaxHeight() + verticalArrangement = Arrangement.spacedBy(8.dp), + modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp) ) { Text( text = stringResource(id = R.string.prefs_outro_title), @@ -578,6 +573,8 @@ private fun CardCredits(modifier: Modifier = Modifier) { Text( text = stringResource(id = R.string.prefs_outro_thanks) ) + // 感谢列表与保修声明之间保留约两行间距 (用户要求) + Spacer(modifier = Modifier.height(24.dp)) Text( text = stringResource(id = R.string.prefs_outro_license), color = MaterialTheme.colorScheme.primary @@ -593,7 +590,7 @@ private fun TopCard(onClick: () -> Unit, modifier: Modifier = Modifier, version: horizontalArrangement = Arrangement.spacedBy(12.dp), verticalAlignment = Alignment.CenterVertically, modifier = Modifier - .height(48.dp) + .heightIn(min = 48.dp) .clickable { onClick() }) { Spacer(Modifier) Icon( @@ -608,7 +605,6 @@ private fun TopCard(onClick: () -> Unit, modifier: Modifier = Modifier, version: modifier = Modifier .weight(1f) .padding(end = 6.dp) - .infiniteMarquee() ) } }