fix(map): award boundary fixes — HK/MO labels, MO DXCC entity 152, antimeridian ring closure

- wapc/dxcc assets: add Hong Kong & Macau labels (forceLabel) and MO boundary in dxcc
- AwardBoundaryOverlay: rings split at antimeridian no longer close() per segment — removes spurious Russia cross-continent chord
- AwardCalculator: Macau DXCC entity 330 -> 152 (+test)
- Settings LoTW dialog: add sync duration hint (zh/en)
This commit is contained in:
atsunatsu committed 2026-09-09 02:30:54 +08:00
1 parent 36d091a7e1
commit ef0a34723b
8 files changed
+44 -18

No files matched your search

@@ -135,7 +135,7 @@ object AwardCalculator {
private fun entityOf(q: GridQso): Entity = when (q.dxcc) {
318 -> Entity.CHINA
321 -> Entity.HONG_KONG
330 -> Entity.MACAO
152 -> Entity.MACAO
386 -> Entity.TAIWAN
339 -> Entity.JAPAN
291 -> Entity.USA
@@ -161,7 +161,7 @@ object AwardCalculator {
return when (prefixEntity(call)) {
Entity.CHINA -> 318
Entity.HONG_KONG -> 321
Entity.MACAO -> 330
Entity.MACAO -> 152
Entity.TAIWAN -> 386
Entity.JAPAN -> 339
Entity.USA -> 291
@@ -65,10 +65,10 @@ class AwardCalculatorTest {
@Test
fun `dxcc falls back to prefix when dxcc missing`() {
val all = listOf(qso("JH0ABC"), qso("BG7XYZ"), qso("VR2XYZ"))
val all = listOf(qso("JH0ABC"), qso("BG7XYZ"), qso("VR2XYZ"), qso("XX9A"))
val progress = AwardCalculator.calculate(byGrid(*all.toTypedArray())).first { it.type == AwardType.DXCC }
assertEquals(3, progress.count)
assertTrue(progress.workedKeys.containsAll(setOf("339", "318", "321")))
assertEquals(4, progress.count)
assertTrue(progress.workedKeys.containsAll(setOf("339", "318", "321", "152")))
}
@Test
@@ -78,7 +78,7 @@ class AwardCalculatorTest {
qso("BD5ABC", dxcc = 318, state = "ZJ"), // Zhejiang
qso("BD5ABC", dxcc = 318, state = "ZJ"), // dup
qso("VR2X", dxcc = 321), // Hong Kong
qso("XX9A", dxcc = 330), // Macao
qso("XX9A", dxcc = 152), // Macao
qso("BM4X", dxcc = 386) // Taiwan
)
val progress = AwardCalculator.calculate(byGrid(*all.toTypedArray())).first { it.type == AwardType.WAPC }