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 EditWaypointDialog(waypoint: Waypoint, displayUnits: Config.DisplayConfig.DisplayUnits, 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, 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.

Link copied to clipboard

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

Link copied to clipboard

Locked foreign geofence: read-only, opt-in off, no Edit affordance.