einsatzprotokoll/source/Event.mc
EiSiMo 216d40c2c5 Custom icons, improved GPS, history layout, address fixes
- Replace placeholder SVG icons with custom PNG icons (80x80 padded)
- AffineTransform for pixel-perfect icon centering in menu ring
- Colored circles behind icons with icon drawn at 60% size
- GPS: always wait full timeout (30s), keep best quality fix
- History: show address, PLZ+city, coordinates on separate lines
- Geocoding: fall back to "name" field for street-level results,
  include PLZ+city in cached address data
- Address distance threshold raised to 70m

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 19:05:17 +02:00

52 lines
1.6 KiB
MonkeyC

import Toybox.Lang;
// Value object for a protocol entry. Serialized as a plain Dictionary
// so Application.Storage can persist it.
(:glance)
class Event {
public var type as String;
public var timestamp as Number; // unix seconds
public var lat as Float or Null;
public var lon as Float or Null;
public var accuracy as Float or Null;
public var address as String or Null;
public var zip as String or Null;
function initialize(type as String, timestamp as Number,
lat as Float or Null, lon as Float or Null,
accuracy as Float or Null) {
self.type = type;
self.timestamp = timestamp;
self.lat = lat;
self.lon = lon;
self.accuracy = accuracy;
self.address = null;
self.zip = null;
}
function toDict() as Dictionary {
var d = {
"t" => type,
"ts" => timestamp,
"lat" => lat,
"lon" => lon,
"acc" => accuracy
};
if (address != null) { d["addr"] = address; }
if (zip != null) { d["zip"] = zip; }
return d;
}
static function fromDict(d as Dictionary) as Event {
var evt = new Event(
d["t"] as String,
d["ts"] as Number,
d["lat"] as Float or Null,
d["lon"] as Float or Null,
d["acc"] as Float or Null
);
if (d.hasKey("addr")) { evt.address = d["addr"] as String or Null; }
if (d.hasKey("zip")) { evt.zip = d["zip"] as String or Null; }
return evt;
}
}