Phase 2: 10-icon menu ring

Rotating ring modeled after the watch Controls menu: UP/DOWN spin,
START/STOP selects. Selection point sits at −30° (≈ 2 o'clock) so it
lines up with the physical enter button on 5-button round Garmins.
Icons are rasterized at 80×80 with automaticPalette="false" and
scaled via drawBitmap2 to stay crisp at any display resolution. Long
German compounds ("Einsatzbeginn", "Beweismittel", "Letzten löschen")
wrap to two lines via a Config array so the center label never
overlaps the surrounding icons. Selected index is persisted in
Application.Storage and restored on next launch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
EiSiMo 2026-04-11 20:10:11 +02:00
parent 43f970d764
commit d3494acc0d
18 changed files with 203 additions and 75 deletions

View file

@ -1,13 +1,13 @@
<drawables>
<bitmap id="LauncherIcon" filename="launcher_icon.svg"/>
<bitmap id="IconHistory" filename="icon_history.svg"/>
<bitmap id="IconEvent" filename="icon_event.svg"/>
<bitmap id="IconStart" filename="icon_start.svg"/>
<bitmap id="IconEnd" filename="icon_end.svg"/>
<bitmap id="IconArrival" filename="icon_arrival.svg"/>
<bitmap id="IconArrest" filename="icon_arrest.svg"/>
<bitmap id="IconForce" filename="icon_force.svg"/>
<bitmap id="IconEvidence" filename="icon_evidence.svg"/>
<bitmap id="IconSighting" filename="icon_sighting.svg"/>
<bitmap id="IconDelete" filename="icon_delete.svg"/>
<bitmap id="IconHistory" filename="icon_history.svg" automaticPalette="false"/>
<bitmap id="IconEvent" filename="icon_event.svg" automaticPalette="false"/>
<bitmap id="IconStart" filename="icon_start.svg" automaticPalette="false"/>
<bitmap id="IconEnd" filename="icon_end.svg" automaticPalette="false"/>
<bitmap id="IconArrival" filename="icon_arrival.svg" automaticPalette="false"/>
<bitmap id="IconArrest" filename="icon_arrest.svg" automaticPalette="false"/>
<bitmap id="IconForce" filename="icon_force.svg" automaticPalette="false"/>
<bitmap id="IconEvidence" filename="icon_evidence.svg" automaticPalette="false"/>
<bitmap id="IconSighting" filename="icon_sighting.svg" automaticPalette="false"/>
<bitmap id="IconDelete" filename="icon_delete.svg" automaticPalette="false"/>
</drawables>

View file

@ -1,4 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<svg width="80" height="80" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#FF0088"/>
<circle cx="13" cy="20" r="6" fill="none" stroke="#000000" stroke-width="3"/>
<circle cx="27" cy="20" r="6" fill="none" stroke="#000000" stroke-width="3"/>

Before

Width:  |  Height:  |  Size: 361 B

After

Width:  |  Height:  |  Size: 361 B

Before After
Before After

View file

@ -1,4 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<svg width="80" height="80" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#FFDD00"/>
<path d="M20 8 C14 8 10 12 10 18 C10 24 20 32 20 32 C20 32 30 24 30 18 C30 12 26 8 20 8 Z" fill="#000000"/>
<circle cx="20" cy="18" r="4" fill="#FFDD00"/>

Before

Width:  |  Height:  |  Size: 300 B

After

Width:  |  Height:  |  Size: 300 B

Before After
Before After

View file

@ -1,4 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<svg width="80" height="80" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#FF2222"/>
<rect x="11" y="14" width="18" height="3" fill="#000000"/>
<rect x="17" y="10" width="6" height="3" fill="#000000"/>

Before

Width:  |  Height:  |  Size: 511 B

After

Width:  |  Height:  |  Size: 511 B

Before After
Before After

View file

@ -1,4 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<svg width="80" height="80" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#00AAFF"/>
<polyline points="11,21 18,28 30,14" stroke="#000000" stroke-width="4" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 275 B

After

Width:  |  Height:  |  Size: 275 B

Before After
Before After

View file

@ -1,4 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<svg width="80" height="80" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#FFAA00"/>
<rect x="18" y="10" width="4" height="20" fill="#000000"/>
<rect x="10" y="18" width="20" height="4" fill="#000000"/>

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 263 B

Before After
Before After

View file

@ -1,4 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<svg width="80" height="80" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#00E5E5"/>
<rect x="8" y="14" width="24" height="16" rx="2" fill="#000000"/>
<rect x="15" y="11" width="10" height="4" fill="#000000"/>

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 368 B

Before After
Before After

View file

@ -1,4 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<svg width="80" height="80" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#AA00FF"/>
<rect x="11" y="14" width="18" height="14" rx="2" fill="#000000"/>
<rect x="13" y="11" width="3" height="6" fill="#000000"/>

Before

Width:  |  Height:  |  Size: 390 B

After

Width:  |  Height:  |  Size: 390 B

Before After
Before After

View file

@ -1,4 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<svg width="80" height="80" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#FFFFFF"/>
<circle cx="11" cy="13" r="1.5" fill="#000000"/>
<rect x="15" y="12" width="14" height="2" fill="#000000"/>

Before

Width:  |  Height:  |  Size: 477 B

After

Width:  |  Height:  |  Size: 477 B

Before After
Before After

View file

@ -1,4 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<svg width="80" height="80" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#FF8800"/>
<circle cx="13" cy="22" r="6" fill="#000000"/>
<circle cx="27" cy="22" r="6" fill="#000000"/>

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 398 B

Before After
Before After

View file

@ -1,4 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<svg width="80" height="80" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<circle cx="20" cy="20" r="18" fill="#00CC33"/>
<polygon points="15,10 30,20 15,30" fill="#000000"/>
</svg>

Before

Width:  |  Height:  |  Size: 196 B

After

Width:  |  Height:  |  Size: 196 B

Before After
Before After