mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
feat: add nodelist sort options
This commit is contained in:
parent
f84a75569d
commit
4ceb4c5199
17 changed files with 368 additions and 89 deletions
|
|
@ -1,4 +1,4 @@
|
|||
package com.geeksville.mesh.ui.map.components
|
||||
package com.geeksville.mesh.ui.map
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
|
|
@ -23,7 +23,7 @@ import androidx.compose.ui.unit.dp
|
|||
import com.geeksville.mesh.R
|
||||
|
||||
@Composable
|
||||
fun CacheLayout(
|
||||
internal fun CacheLayout(
|
||||
cacheEstimate: String,
|
||||
onExecuteJob: () -> Unit,
|
||||
onCancelDownload: () -> Unit,
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geeksville.mesh.ui.map.components
|
||||
package com.geeksville.mesh.ui.map
|
||||
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.animation.core.FastOutSlowInEasing
|
||||
|
|
@ -16,7 +16,7 @@ import androidx.compose.ui.res.stringResource
|
|||
import com.geeksville.mesh.R
|
||||
|
||||
@Composable
|
||||
fun DownloadButton(
|
||||
internal fun DownloadButton(
|
||||
enabled: Boolean,
|
||||
onClick: () -> Unit,
|
||||
) {
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geeksville.mesh.ui.map.components
|
||||
package com.geeksville.mesh.ui.map
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
|
|
@ -42,7 +42,7 @@ import com.geeksville.mesh.util.CustomRecentEmojiProvider
|
|||
import com.geeksville.mesh.waypoint
|
||||
|
||||
@Composable
|
||||
fun EditWaypointDialog(
|
||||
internal fun EditWaypointDialog(
|
||||
waypoint: Waypoint,
|
||||
onSendClicked: (Waypoint) -> Unit,
|
||||
onDeleteClicked: (Waypoint) -> Unit,
|
||||
|
|
@ -50,19 +50,14 @@ import com.geeksville.mesh.database.entity.Packet
|
|||
import com.geeksville.mesh.model.UIViewModel
|
||||
import com.geeksville.mesh.model.map.CustomTileSource
|
||||
import com.geeksville.mesh.model.map.MarkerWithLabel
|
||||
import com.geeksville.mesh.ui.MessagesFragment
|
||||
import com.geeksville.mesh.ui.ScreenFragment
|
||||
import com.geeksville.mesh.ui.map.components.CacheLayout
|
||||
import com.geeksville.mesh.ui.map.components.DownloadButton
|
||||
import com.geeksville.mesh.ui.map.components.EditWaypointDialog
|
||||
import com.geeksville.mesh.ui.components.IconButton
|
||||
import com.geeksville.mesh.ui.map.components.rememberMapViewWithLifecycle
|
||||
import com.geeksville.mesh.ui.theme.AppTheme
|
||||
import com.geeksville.mesh.util.SqlTileWriterExt
|
||||
import com.geeksville.mesh.util.requiredZoomLevel
|
||||
import com.geeksville.mesh.util.formatAgo
|
||||
import com.geeksville.mesh.util.zoomIn
|
||||
import com.geeksville.mesh.waypoint
|
||||
import com.google.accompanist.themeadapter.appcompat.AppCompatTheme
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import org.osmdroid.bonuspack.utils.BonusPackHelper.getBitmapFromVectorDrawable
|
||||
|
|
@ -90,7 +85,6 @@ import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay
|
|||
import java.io.File
|
||||
import java.text.DateFormat
|
||||
|
||||
|
||||
@AndroidEntryPoint
|
||||
class MapFragment : ScreenFragment("Map Fragment"), Logging {
|
||||
|
||||
|
|
@ -104,7 +98,7 @@ class MapFragment : ScreenFragment("Map Fragment"), Logging {
|
|||
return ComposeView(requireContext()).apply {
|
||||
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
|
||||
setContent {
|
||||
AppCompatTheme {
|
||||
AppTheme {
|
||||
MapView(model)
|
||||
}
|
||||
}
|
||||
|
|
@ -192,7 +186,7 @@ fun MapView(
|
|||
requestPermissionAndToggleLauncher.launch(context.getLocationPermissions())
|
||||
}
|
||||
|
||||
val nodes by model.nodeDB.nodes.collectAsStateWithLifecycle()
|
||||
val nodes by model.filteredNodes.collectAsStateWithLifecycle(emptyList())
|
||||
val waypoints by model.waypoints.observeAsState(emptyMap())
|
||||
|
||||
var showDownloadButton: Boolean by remember { mutableStateOf(false) }
|
||||
|
|
@ -462,7 +456,7 @@ fun MapView(
|
|||
}
|
||||
|
||||
with(map) {
|
||||
UpdateMarkers(onNodesChanged(nodes.values), onWaypointChanged(waypoints.values))
|
||||
UpdateMarkers(onNodesChanged(nodes), onWaypointChanged(waypoints.values))
|
||||
}
|
||||
|
||||
// private fun addWeatherLayer() {
|
||||
|
|
@ -482,7 +476,7 @@ fun MapView(
|
|||
// }
|
||||
|
||||
fun MapView.zoomToNodes() {
|
||||
val nodeMarkers = onNodesChanged(nodes.values)
|
||||
val nodeMarkers = onNodesChanged(nodes)
|
||||
if (nodeMarkers.isNotEmpty()) {
|
||||
val box = BoundingBox.fromGeoPoints(nodeMarkers.map { it.position })
|
||||
val center = GeoPoint(box.centerLatitude, box.centerLongitude)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package com.geeksville.mesh.ui.map.components
|
||||
package com.geeksville.mesh.ui.map
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
|
|
@ -32,7 +32,7 @@ private fun PowerManager.WakeLock.safeRelease() {
|
|||
}
|
||||
|
||||
@Composable
|
||||
fun rememberMapViewWithLifecycle(context: Context): MapView {
|
||||
internal fun rememberMapViewWithLifecycle(context: Context): MapView {
|
||||
val mapView = remember {
|
||||
MapView(context).apply {
|
||||
clipToOutline = true
|
||||
Loading…
Add table
Add a link
Reference in a new issue