mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
v4.4.8 - Fuzzy satellites search, light theme, various fixes
This commit is contained in:
1 parent
fac319b215
commit
782b438a07
12 files changed
+88
-70
No files matched your search
@@ -161,10 +161,13 @@
|
||||
|
||||
<string name="prefs_other_title">Otros</string>
|
||||
<string name="prefs_other_switch_utc">Hora UTC</string>
|
||||
<string name="prefs_other_switch_update">Actualización automática</string>
|
||||
<string name="prefs_other_switch_update">Auto-actualizar</string>
|
||||
<string name="prefs_other_switch_sweep">Animación radar</string>
|
||||
<string name="prefs_other_switch_sensors">Sensores</string>
|
||||
<string name="prefs_other_switch_night_mode">Filtro nocturno</string>
|
||||
<string name="prefs_other_switch_light_theme">Tema claro</string>
|
||||
<string name="prefs_other_compass_offset_az">Desfase de brújula (ácimut)</string>
|
||||
<string name="prefs_other_compass_offset_elev">Desfase de brújula (elevación)</string>
|
||||
|
||||
<string name="prefs_highlight_title">Resaltado de elevación</string>
|
||||
<string name="prefs_highlight_low">Baja < %1$d°</string>
|
||||
|
||||
@@ -161,10 +161,13 @@
|
||||
|
||||
<string name="prefs_other_title">Прочее</string>
|
||||
<string name="prefs_other_switch_utc">Время в UTC</string>
|
||||
<string name="prefs_other_switch_update">Автообновление данных</string>
|
||||
<string name="prefs_other_switch_update">Автообновление</string>
|
||||
<string name="prefs_other_switch_sweep">Анимация радара</string>
|
||||
<string name="prefs_other_switch_sensors">Сенсоры</string>
|
||||
<string name="prefs_other_switch_night_mode">Ночной фильтр</string>
|
||||
<string name="prefs_other_switch_light_theme">Светлая тема</string>
|
||||
<string name="prefs_other_compass_offset_az">Смещение компаса (азимут)</string>
|
||||
<string name="prefs_other_compass_offset_elev">Смещение компаса (элевация)</string>
|
||||
|
||||
<string name="prefs_highlight_title">Подсветка высоты</string>
|
||||
<string name="prefs_highlight_low">Низко < %1$d°</string>
|
||||
|
||||
@@ -161,10 +161,13 @@
|
||||
|
||||
<string name="prefs_other_title">වෙනත්</string>
|
||||
<string name="prefs_other_switch_utc">UTC වේලාව</string>
|
||||
<string name="prefs_other_switch_update">දත්ත ස්වයං යාවත්කාලීන</string>
|
||||
<string name="prefs_other_switch_sweep">Radar sweep</string>
|
||||
<string name="prefs_other_switch_update">ස්වයං යාවත්කාලීන</string>
|
||||
<string name="prefs_other_switch_sweep">රේඩාර් පරිලෝකනය</string>
|
||||
<string name="prefs_other_switch_sensors">සංවේදක</string>
|
||||
<string name="prefs_other_switch_night_mode">රාත්රී පෙරහන</string>
|
||||
<string name="prefs_other_switch_light_theme">ආලෝක තේමාව</string>
|
||||
<string name="prefs_other_compass_offset_az">මාලිමා අපගමනය (දිගංශය)</string>
|
||||
<string name="prefs_other_compass_offset_elev">මාලිමා අපගමනය (උත්තෝලනය)</string>
|
||||
|
||||
<string name="prefs_highlight_title">උස් උද්දීපනය</string>
|
||||
<string name="prefs_highlight_low">අඩු < %1$d°</string>
|
||||
|
||||
@@ -193,10 +193,13 @@
|
||||
|
||||
<string name="prefs_other_title">Diğer</string>
|
||||
<string name="prefs_other_switch_utc">UTC saati</string>
|
||||
<string name="prefs_other_switch_update">Veriyi otomatik güncelle</string>
|
||||
<string name="prefs_other_switch_update">Otomatik güncelle</string>
|
||||
<string name="prefs_other_switch_sweep">Radar taraması</string>
|
||||
<string name="prefs_other_switch_sensors">Sensör</string>
|
||||
<string name="prefs_other_switch_night_mode">Gece filtresi</string>
|
||||
<string name="prefs_other_switch_light_theme">Açık tema</string>
|
||||
<string name="prefs_other_compass_offset_az">Pusula sapması (azimut)</string>
|
||||
<string name="prefs_other_compass_offset_elev">Pusula sapması (yükseklik açısı)</string>
|
||||
|
||||
<string name="prefs_highlight_title">Elevasyon vurgusu</string>
|
||||
<string name="prefs_highlight_low">Düşük < %1$d°</string>
|
||||
|
||||
@@ -161,10 +161,13 @@
|
||||
|
||||
<string name="prefs_other_title">Інше</string>
|
||||
<string name="prefs_other_switch_utc">Час в UTC</string>
|
||||
<string name="prefs_other_switch_update">Автооновлення даних</string>
|
||||
<string name="prefs_other_switch_update">Автооновлення</string>
|
||||
<string name="prefs_other_switch_sweep">Анімація радара</string>
|
||||
<string name="prefs_other_switch_sensors">Сенсори</string>
|
||||
<string name="prefs_other_switch_night_mode">Нічний фільтр</string>
|
||||
<string name="prefs_other_switch_light_theme">Світла тема</string>
|
||||
<string name="prefs_other_compass_offset_az">Зміщення компаса (азимут)</string>
|
||||
<string name="prefs_other_compass_offset_elev">Зміщення компаса (піднесення)</string>
|
||||
|
||||
<string name="prefs_highlight_title">Підсвічування висоти</string>
|
||||
<string name="prefs_highlight_low">Низько < %1$d°</string>
|
||||
|
||||
@@ -219,12 +219,13 @@
|
||||
|
||||
<string name="prefs_other_title">其他</string>
|
||||
<string name="prefs_other_switch_utc">UTC 时间</string>
|
||||
<string name="prefs_other_switch_update">自动更新数据</string>
|
||||
<string name="prefs_other_switch_sweep">雷达扫描动画</string>
|
||||
<string name="prefs_other_switch_sensors">传感器控制雷达</string>
|
||||
<string name="prefs_other_switch_update">自动更新</string>
|
||||
<string name="prefs_other_switch_sweep">雷达扫描</string>
|
||||
<string name="prefs_other_switch_sensors">传感器</string>
|
||||
<string name="prefs_other_switch_night_mode">红色夜间模式</string>
|
||||
<string name="prefs_other_compass_offset">雷达罗盘水平偏移量</string>
|
||||
<string name="prefs_other_compass_offset_elev">雷达罗盘俯仰偏移量</string>
|
||||
<string name="prefs_other_switch_light_theme">浅色主题</string>
|
||||
<string name="prefs_other_compass_offset_az">罗盘偏移量(方位角)</string>
|
||||
<string name="prefs_other_compass_offset_elev">罗盘偏移量(仰角)</string>
|
||||
|
||||
<string name="prefs_highlight_title">仰角高亮</string>
|
||||
<string name="prefs_highlight_low">低 < %1$d°</string>
|
||||
|
||||
@@ -56,14 +56,12 @@
|
||||
\n\nPlease update the database at least weekly to get accurate predictions.</string>
|
||||
<string name="pass_whatsnew_title" translatable="false">What\'s new in Look4Sat</string>
|
||||
<string name="pass_whatsnew_message" translatable="false">
|
||||
* Tweaked sunrise/sunset calculations, added tests by atsunatsu (#241)
|
||||
\n\n* Overhauled sources import, added HTTP status by wty2019wty (#242)
|
||||
\nSources now have priority - the top ones define satellite names and transceiver data.
|
||||
\nYou can enable/disable sources and restore defaults via the Satellite data import dialog.
|
||||
\n\n* Localized AMSAT status screen for Chinese by atsunatsu (#245)
|
||||
\n\n* Extracted hardcoded UI strings to resources by TianhengZhuang (#247)
|
||||
\n\n* Added AMSAT satellite status reports submission by atsunatsu (#248)
|
||||
\n\n* Slightly optimized map performance to reduce ANRs and memory consumption. Zoom in to see satellite labels.
|
||||
* Fixed AOS window filter to follow the UTC setting by wty2019wty (#252)
|
||||
\n\n* Applied elevation color thresholds to the Radar by atsunatsu (#253)
|
||||
\n\n* Added fuzzy satellite search ignoring separators by atsunatsu (#255)
|
||||
\n\n* Added light theme suitable for e-ink devices by Ondrej Kolonicny (#256)
|
||||
\n\n* Fixed IC-705 frequency read in dual-radio mode by Michael S (#260)
|
||||
\n\n* Fixed day/night map overlay calculation and display issue by rt-bishop
|
||||
</string>
|
||||
|
||||
<!-- AMSAT Status screen -->
|
||||
@@ -262,13 +260,13 @@
|
||||
|
||||
<string name="prefs_other_title">Other</string>
|
||||
<string name="prefs_other_switch_utc">UTC time</string>
|
||||
<string name="prefs_other_switch_update">Auto-update data</string>
|
||||
<string name="prefs_other_switch_update">Auto-update</string>
|
||||
<string name="prefs_other_switch_sweep">Radar sweep</string>
|
||||
<string name="prefs_other_switch_sensors">Use sensors</string>
|
||||
<string name="prefs_other_switch_sensors">Sensors</string>
|
||||
<string name="prefs_other_switch_night_mode">Night filter</string>
|
||||
<string name="prefs_other_switch_light_theme">Light theme</string>
|
||||
<string name="prefs_other_compass_offset">Radar compass offset</string>
|
||||
<string name="prefs_other_compass_offset_elev">Radar compass offset (elev)</string>
|
||||
<string name="prefs_other_compass_offset_az">Compass offset (azimuth)</string>
|
||||
<string name="prefs_other_compass_offset_elev">Compass offset (elevation)</string>
|
||||
|
||||
<string name="prefs_highlight_title">Elevation highlight</string>
|
||||
<string name="prefs_highlight_low">Low < %1$d°</string>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
* Tweaked sun calculations, added tests by atsunatsu (#241)
|
||||
* Overhauled sources import, added HTTP status by wty2019wty (#242)
|
||||
* Localized AMSAT status screen for Chinese by atsunatsu (#245)
|
||||
* Extracted hardcoded UI strings to resources by TianhengZhuang (#247)
|
||||
* Added AMSAT satellite status reports submission by atsunatsu (#248)
|
||||
* Fixed AOS window filter to follow the UTC setting by wty2019wty (#252)
|
||||
* Applied elevation color thresholds to the Radar by atsunatsu (#253)
|
||||
* Added fuzzy satellite search ignoring separators by atsunatsu (#255)
|
||||
* Added light theme suitable for e-ink devices by Ondrej Kolonicny (#256)
|
||||
* Fixed IC-705 frequency read in dual-radio mode by Michael S (#260)
|
||||
* Fixed day/night map overlay calculation and display issue by rt-bishop
|
||||
@@ -116,8 +116,9 @@ class MapNightOverlay : Overlay() {
|
||||
|
||||
else -> {
|
||||
// Terminator crosses this column — find the crossing pixel by binary search
|
||||
val crossY = findCrossingY(proj, x, 0, h - 1, sinSunLat, cosSunLat, cosLonDiff)
|
||||
if (dotTop < 0) {
|
||||
val isNightAtTop = dotTop < 0
|
||||
val crossY = findCrossingY(proj, x, 0, h - 1, sinSunLat, cosSunLat, cosLonDiff, isNightAtTop)
|
||||
if (isNightAtTop) {
|
||||
// Night at top, day at bottom
|
||||
rect.set(x.toFloat(), 0f, (x + stepPx).toFloat(), crossY.toFloat())
|
||||
canvas.drawRect(rect, nightPaint)
|
||||
@@ -134,7 +135,11 @@ class MapNightOverlay : Overlay() {
|
||||
|
||||
/**
|
||||
* Binary-search for the pixel row where the day/night boundary crosses column [x].
|
||||
* [yTop] is in day, [yBot] is in night (or vice versa).
|
||||
*
|
||||
* [isNightAtTop] states which side [yTop] is on. Both polarities occur: the pole nearest
|
||||
* the sub-solar point is lit, so the terminator runs day-over-night while the sub-solar
|
||||
* latitude is positive and night-over-day once it turns negative after the September
|
||||
* equinox. Anchoring lo to the top pixel's side keeps the search valid either way.
|
||||
*/
|
||||
private fun findCrossingY(
|
||||
proj: org.osmdroid.views.Projection,
|
||||
@@ -143,7 +148,8 @@ class MapNightOverlay : Overlay() {
|
||||
yBot: Int,
|
||||
sinSunLat: Double,
|
||||
cosSunLat: Double,
|
||||
cosLonDiff: Double
|
||||
cosLonDiff: Double,
|
||||
isNightAtTop: Boolean
|
||||
): Int {
|
||||
var lo = yTop
|
||||
var hi = yBot
|
||||
@@ -152,7 +158,8 @@ class MapNightOverlay : Overlay() {
|
||||
val geo = proj.fromPixels(x, mid, reusableGeoPoint) ?: return mid
|
||||
val latRad = Math.toRadians(geo.latitude)
|
||||
val dot = sin(latRad) * sinSunLat + cos(latRad) * cosSunLat * cosLonDiff
|
||||
if (dot < 0) hi = mid else lo = mid
|
||||
// Keep lo on the top pixel's side of the terminator and hi on the opposite side
|
||||
if ((dot < 0) == isNightAtTop) lo = mid else hi = mid
|
||||
}
|
||||
return (lo + hi) / 2
|
||||
}
|
||||
|
||||
+26
-30
@@ -495,19 +495,21 @@ private fun OtherCard(settings: OtherSettings, onAction: (SettingsAction) -> Uni
|
||||
color = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
Spacer(modifier = Modifier.height(4.dp))
|
||||
// Appearance: light theme (paired with a spacer to align with the two-column rows)
|
||||
// Data preferences: auto-update + UTC clock
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
SwitchTile(R.string.prefs_other_switch_update, settings.stateOfAutoUpdate) {
|
||||
onAction(SettingsAction.ToggleUpdate(it))
|
||||
}
|
||||
SwitchTile(R.string.prefs_other_switch_utc, settings.stateOfUtc) {
|
||||
onAction(SettingsAction.ToggleUtc(it))
|
||||
}
|
||||
}
|
||||
Spacer(modifier = Modifier.height(4.dp))
|
||||
// Appearance: light theme + night filter
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
SwitchTile(R.string.prefs_other_switch_light_theme, settings.stateOfLightTheme) {
|
||||
onAction(SettingsAction.ToggleLightTheme(it))
|
||||
}
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
}
|
||||
Spacer(modifier = Modifier.height(4.dp))
|
||||
// Display preferences: UTC clock + night filter
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
SwitchTile(R.string.prefs_other_switch_utc, settings.stateOfUtc) {
|
||||
onAction(SettingsAction.ToggleUtc(it))
|
||||
}
|
||||
SwitchTile(
|
||||
R.string.prefs_other_switch_night_mode,
|
||||
settings.stateOfNightMode,
|
||||
@@ -517,7 +519,7 @@ private fun OtherCard(settings: OtherSettings, onAction: (SettingsAction) -> Uni
|
||||
}
|
||||
}
|
||||
Spacer(modifier = Modifier.height(4.dp))
|
||||
// Radar behavior: sweep animation + sensor control
|
||||
// Radar behavior: sweep animation + sensors, followed by the compass offset sliders
|
||||
Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
SwitchTile(R.string.prefs_other_switch_sweep, settings.stateOfSweep) {
|
||||
onAction(SettingsAction.ToggleSweep(it))
|
||||
@@ -527,14 +529,9 @@ private fun OtherCard(settings: OtherSettings, onAction: (SettingsAction) -> Uni
|
||||
}
|
||||
}
|
||||
Spacer(modifier = Modifier.height(4.dp))
|
||||
// Data management (full width)
|
||||
SwitchRow(R.string.prefs_other_switch_update, settings.stateOfAutoUpdate) {
|
||||
onAction(SettingsAction.ToggleUpdate(it))
|
||||
}
|
||||
Spacer(modifier = Modifier.height(4.dp))
|
||||
// Compass calibration sliders at the bottom
|
||||
CompassOffsetRow(
|
||||
labelResId = R.string.prefs_other_compass_offset,
|
||||
labelResId = R.string.prefs_other_compass_offset_az,
|
||||
value = settings.radarCompassOffset,
|
||||
range = -180f..180f
|
||||
) { onAction(SettingsAction.SetRadarCompassOffset(it)) }
|
||||
@@ -561,7 +558,14 @@ private fun CompassOffsetRow(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text(text = stringResource(id = labelResId))
|
||||
Text(
|
||||
text = stringResource(id = labelResId),
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.padding(end = 4.dp)
|
||||
.infiniteMarquee(),
|
||||
maxLines = 1
|
||||
)
|
||||
Text(text = "${value.toInt()}°")
|
||||
}
|
||||
Spacer(modifier = Modifier.height(4.dp))
|
||||
@@ -572,18 +576,6 @@ private fun CompassOffsetRow(
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun SwitchRow(labelResId: Int, checked: Boolean, onCheckedChange: (Boolean) -> Unit) {
|
||||
Row(
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Text(text = stringResource(id = labelResId))
|
||||
Switch(checked = checked, onCheckedChange = onCheckedChange)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun RowScope.SwitchTile(
|
||||
labelResId: Int,
|
||||
@@ -598,7 +590,11 @@ private fun RowScope.SwitchTile(
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(id = labelResId),
|
||||
modifier = Modifier.weight(1f)
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.padding(end = 4.dp)
|
||||
.infiniteMarquee(),
|
||||
maxLines = 1
|
||||
)
|
||||
Switch(checked = checked, enabled = enabled, onCheckedChange = onCheckedChange)
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
[versions]
|
||||
#noinspection UnusedVersionCatalogEntry
|
||||
appVersionCode = "447"
|
||||
appVersionCode = "448"
|
||||
#noinspection UnusedVersionCatalogEntry
|
||||
appVersionName = "4.4.7"
|
||||
appVersionName = "4.4.8"
|
||||
#noinspection UnusedVersionCatalogEntry
|
||||
compileSdk = "37"
|
||||
#noinspection UnusedVersionCatalogEntry
|
||||
@@ -12,16 +12,16 @@ jdkVersion = "21"
|
||||
#noinspection UnusedVersionCatalogEntry
|
||||
packageName = "com.rtbishop.look4sat"
|
||||
|
||||
android-gradle-plugin = "9.4.0"
|
||||
android-gradle-plugin = "9.4.1"
|
||||
|
||||
androidx-core-ktx = "1.19.0"
|
||||
androidx-core-ktx = "1.19.1"
|
||||
androidx-core-splashscreen = "1.2.0"
|
||||
androidx-room = "2.8.5"
|
||||
|
||||
compose-bom = "2026.09.00"
|
||||
compose-activity = "1.13.0"
|
||||
compose-lifecycle = "2.11.0"
|
||||
compose-navigation3 = "1.1.7"
|
||||
compose-navigation3 = "1.2.0"
|
||||
|
||||
google-ksp = "2.3.11"
|
||||
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
#Sat Sep 12 11:29:59 BST 2026
|
||||
#Sun Sep 27 11:54:01 BST 2026
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.0-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
Reference in new issue
Block a user