Phase 1: foundation modules
Central Config with all tunables (retention, GPS timeout, colors, event type keys, menu item metadata). Event / EventStore handle persistence via Application.Storage with 7-day pruning. Logger mirrors the same retention. LayoutMetrics and Haversine provide resolution-independent geometry helpers. German UI strings and placeholder menu icons landed alongside so the build stays green. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
|
@ -1,3 +1,13 @@
|
|||
<drawables>
|
||||
<bitmap id="LauncherIcon" filename="launcher_icon.svg"/>
|
||||
<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"/>
|
||||
</drawables>
|
||||
|
|
|
|||
6
resources/drawables/icon_arrest.svg
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<svg width="40" height="40" 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"/>
|
||||
<rect x="18" y="18" width="4" height="4" fill="#000000"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 361 B |
5
resources/drawables/icon_arrival.svg
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<svg width="40" height="40" 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"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 300 B |
9
resources/drawables/icon_delete.svg
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<svg width="40" height="40" 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"/>
|
||||
<rect x="12" y="17" width="16" height="14" rx="1" fill="#000000"/>
|
||||
<rect x="16" y="20" width="2" height="8" fill="#FF2222"/>
|
||||
<rect x="19" y="20" width="2" height="8" fill="#FF2222"/>
|
||||
<rect x="22" y="20" width="2" height="8" fill="#FF2222"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 511 B |
4
resources/drawables/icon_end.svg
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="40" height="40" 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>
|
||||
|
After Width: | Height: | Size: 275 B |
5
resources/drawables/icon_event.svg
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<svg width="40" height="40" 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"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 263 B |
7
resources/drawables/icon_evidence.svg
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<svg width="40" height="40" 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"/>
|
||||
<circle cx="20" cy="22" r="5" fill="#00E5E5"/>
|
||||
<circle cx="20" cy="22" r="2" fill="#000000"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 368 B |
7
resources/drawables/icon_force.svg
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<svg width="40" height="40" 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"/>
|
||||
<rect x="18" y="11" width="3" height="6" fill="#000000"/>
|
||||
<rect x="23" y="11" width="3" height="6" fill="#000000"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 390 B |
9
resources/drawables/icon_history.svg
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<svg width="40" height="40" 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"/>
|
||||
<circle cx="11" cy="20" r="1.5" fill="#000000"/>
|
||||
<rect x="15" y="19" width="14" height="2" fill="#000000"/>
|
||||
<circle cx="11" cy="27" r="1.5" fill="#000000"/>
|
||||
<rect x="15" y="26" width="14" height="2" fill="#000000"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 477 B |
8
resources/drawables/icon_sighting.svg
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<svg width="40" height="40" 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"/>
|
||||
<rect x="13" y="12" width="14" height="4" fill="#000000"/>
|
||||
<circle cx="13" cy="22" r="2" fill="#FF8800"/>
|
||||
<circle cx="27" cy="22" r="2" fill="#FF8800"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 398 B |
4
resources/drawables/icon_start.svg
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<svg width="40" height="40" 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>
|
||||
|
After Width: | Height: | Size: 196 B |
|
|
@ -1,3 +1,31 @@
|
|||
<strings>
|
||||
<string id="AppName">Einsatzprotokoll</string>
|
||||
|
||||
<!-- Menu labels -->
|
||||
<string id="menu_history">Verlauf</string>
|
||||
<string id="menu_general">Ereignis</string>
|
||||
<string id="menu_start">Einsatzbeginn</string>
|
||||
<string id="menu_end">Einsatzende</string>
|
||||
<string id="menu_arrival">Eintreffen</string>
|
||||
<string id="menu_arrest">Festnahme</string>
|
||||
<string id="menu_force">Zwanganwendung</string>
|
||||
<string id="menu_evidence">Beweismittel</string>
|
||||
<string id="menu_sighting">Sichtung</string>
|
||||
<string id="menu_delete">Letzten löschen</string>
|
||||
|
||||
<!-- Loading / result screens -->
|
||||
<string id="loading_gps">Standort wird bestimmt</string>
|
||||
<string id="error_gps">Standort konnte nicht bestimmt werden</string>
|
||||
<string id="error_generic">Fehler beim Speichern</string>
|
||||
|
||||
<!-- History -->
|
||||
<string id="history_empty">Keine Einträge</string>
|
||||
<string id="history_loading_address">Adresse wird geladen…</string>
|
||||
<string id="history_no_phone">Verbinde Handy für Adresse</string>
|
||||
|
||||
<!-- Delete -->
|
||||
<string id="delete_hold">Halten zum Löschen</string>
|
||||
|
||||
<!-- Glance -->
|
||||
<string id="glance_no_entries">Keine Einträge</string>
|
||||
</strings>
|
||||
|
|
|
|||