Package-level declarations

Types

Link copied to clipboard
data class SitePlannerParams(val name: String, val latitude: Double, val longitude: Double, val txPowerWatts: Double = DEFAULT_TX_POWER_WATTS, val txFreqMhz: Double = DEFAULT_TX_FREQ_MHZ, val txHeightMeters: Double = DEFAULT_TX_HEIGHT_METERS, val txGainDbi: Double = DEFAULT_TX_GAIN_DBI, val colorScale: String = DEFAULT_COLOR_SCALE, val rxSensitivityDbm: Double = DEFAULT_RX_SENSITIVITY_DBM, val rxHeightMeters: Double = DEFAULT_RX_HEIGHT_METERS, val maxRangeKm: Double = DEFAULT_MAX_RANGE_KM, val highResolution: Boolean = false, val minDbm: Double = DEFAULT_MIN_DBM, val maxDbm: Double = DEFAULT_MAX_DBM, val overlayTransparency: Int = DEFAULT_OVERLAY_TRANSPARENCY)

Transmitter parameters for a Meshtastic Site Planner coverage estimate. Maps onto the planner's flat query contract (?lat=&lon=&name=&tx_power=&tx_freq=&tx_height=&tx_gain=), so toQueryUrl can hand a configured, auto-running view to the planner without knowing its internal parameter schema.

Functions

Link copied to clipboard
fun DeleteWaypointDialog(canDeleteForEveryone: Boolean, onDeleteForMe: () -> Unit, onDeleteForEveryone: () -> Unit, onDismissRequest: () -> Unit, modifier: Modifier = Modifier)

Waypoint removal confirmation, shared by both map flavors. Confirming always drops our local copy — that needs no mesh-wide permission, so it stays available for a waypoint locked to another node. Broadcasting the removal to the mesh is the opt-in checkbox, offered only when canDeleteForEveryone (unlocked or locked to us, and connected).

Link copied to clipboard

Waypoint locked to another node (or offline): confirming removes only our local copy.

Link copied to clipboard

Waypoint we may modify mesh-wide while connected: the broadcast opt-in is offered.

Link copied to clipboard
fun EditWaypointDialog(waypoint: Waypoint, displayUnits: Config.DisplayConfig.DisplayUnits, myNodeNum: Int?, onSend: (Waypoint) -> Unit, onDelete: (Waypoint) -> Unit, onDismissRequest: () -> Unit, modifier: Modifier = Modifier, onBeginBoxAuthoring: (Waypoint) -> Unit = {})

Shared waypoint editor used by both the google and fdroid map flavors (DRY — replaces the two drifted per-flavor copies). Map-engine-specific concerns stay outside: drawing the box overlay and the drag-to-define gesture are triggered via onBeginBoxAuthoring, which hands the current draft back to the flavor's map so the user can define the bounding box there; the flavor re-opens this dialog with the drawn box applied.

Link copied to clipboard
fun MapButton(icon: ImageVector, contentDescription: String, onClick: () -> Unit, modifier: Modifier = Modifier, iconTint: Color? = null)

A compact icon button used in map control overlays. Uses FilledIconButton for a consistent, compact appearance across both Google and F-Droid flavors.

Link copied to clipboard
fun MapControlsOverlay(onToggleFilterMenu: () -> Unit, modifier: Modifier = Modifier, bearing: Float = 0.0f, onCompassClick: () -> Unit = {}, followPhoneBearing: Boolean = false, filterDropdownContent: @Composable () -> Unit = {}, mapTypeContent: @Composable () -> Unit = {}, layersContent: @Composable () -> Unit = {}, onSitePlannerClick: () -> Unit? = null, isLocationTrackingEnabled: Boolean = false, onToggleLocationTracking: () -> Unit = {}, showRefresh: Boolean = false, isRefreshing: Boolean = false, onRefresh: () -> Unit = {})

Shared map controls overlay using HorizontalFloatingToolbar for Material 3 Expressive styling. Provides compass, filter button, location tracking button, and optional slots for flavor-specific content (map type selector, layers, refresh).

Link copied to clipboard
fun SitePlannerSheet(initial: SitePlannerParams, onSubmit: (SitePlannerParams) -> Unit, onDismiss: () -> Unit, onUseCurrentLocation: () -> Unit? = null, onUseNodeLocation: () -> Unit? = null, onUseMapCenter: () -> Unit? = null)

Bottom-sheet form for a Site Planner coverage estimate, pre-filled with initial. onSubmit receives the edited params once they validate. Location shortcut chips (onUseCurrentLocation/onUseNodeLocation/onUseMapCenter) re-seed the coordinate fields when provided, preserving edits to the other fields.

Link copied to clipboard
fun WaypointInfoDialog(waypoint: Waypoint, displayUnits: Config.DisplayConfig.DisplayUnits, alertsEnabled: Boolean, onToggleAlerts: (Boolean) -> Unit, onDismissRequest: () -> Unit, onEdit: () -> Unit? = null, onDeleteForMe: () -> Unit? = null, modifier: Modifier = Modifier)

Read-only view of a geofence waypoint the local device did NOT create. Editing/re-broadcasting someone else's geofence is not offered here; the one interactive control is the receiver-local opt-in that decides whether THIS device raises crossing notifications for it (foreign geofences are silent by default — see org.meshtastic.core.data.manager .GeofenceMonitor). Reached for both locked and unlocked foreign geofences, so the locked case gets a view at all. Unlocked foreign geofences are still editable — onEdit, when non-null, opens the full editor. onDeleteForMe drops only our local copy, so it needs no mesh-wide permission and is offered even when the geofence is locked to its creator.

Link copied to clipboard

Unlocked foreign geofence: opted in, with the Edit affordance into the full editor.

Link copied to clipboard

Locked foreign geofence: opt-in off, no Edit affordance — but the local delete is still offered.