mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
More map cleanup
This commit is contained in:
parent
0c70921935
commit
70e1bdb835
13 changed files with 210 additions and 126 deletions
64
Meshtastic/Views/MapKitMap/Custom/MapButtons.swift
Normal file
64
Meshtastic/Views/MapKitMap/Custom/MapButtons.swift
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
//
|
||||
// MapButtons.swift
|
||||
// Meshtastic
|
||||
//
|
||||
// Copyright © Garth Vander Houwen 4/23/23.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct MapButtons: View {
|
||||
let buttonWidth: CGFloat = 22
|
||||
let width: CGFloat = 45
|
||||
@Binding var tracking: UserTrackingModes
|
||||
@Binding var isPresentingInfoSheet: Bool
|
||||
var body: some View {
|
||||
VStack {
|
||||
let impactLight = UIImpactFeedbackGenerator(style: .light)
|
||||
Button(action: {
|
||||
self.isPresentingInfoSheet.toggle()
|
||||
}) {
|
||||
Image(systemName: isPresentingInfoSheet ? "info.circle.fill" : "info.circle")
|
||||
.resizable()
|
||||
.frame(width: buttonWidth, height: buttonWidth, alignment: .center)
|
||||
.offset(y: -2)
|
||||
}
|
||||
Divider()
|
||||
Button(action: {
|
||||
switch self.tracking {
|
||||
case .none:
|
||||
self.tracking = .follow
|
||||
case .follow:
|
||||
self.tracking = .followWithHeading
|
||||
case .followWithHeading:
|
||||
self.tracking = .none
|
||||
}
|
||||
impactLight.impactOccurred()
|
||||
}) {
|
||||
Image(systemName: tracking.icon)
|
||||
.frame(width: buttonWidth, height: buttonWidth, alignment: .center)
|
||||
.offset(y: 3)
|
||||
}
|
||||
}
|
||||
.frame(width: width, height: width*2, alignment: .center)
|
||||
.background(Color(UIColor.systemBackground))
|
||||
.cornerRadius(8)
|
||||
.shadow(radius: 1)
|
||||
.offset(x: 3, y: 25)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Previews
|
||||
struct MapControl_Previews: PreviewProvider {
|
||||
@State static var tracking: UserTrackingModes = .none
|
||||
@State static var isPresentingInfoSheet = false
|
||||
static var previews: some View {
|
||||
Group {
|
||||
MapButtons(tracking: $tracking, isPresentingInfoSheet: $isPresentingInfoSheet)
|
||||
.environment(\.colorScheme, .light)
|
||||
MapButtons(tracking: $tracking, isPresentingInfoSheet: $isPresentingInfoSheet)
|
||||
.environment(\.colorScheme, .dark)
|
||||
}
|
||||
.previewLayout(.fixed(width: 60, height: 100))
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue