mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
After this change, a developer can now clone the project and run without the build failing due to lint errors! 😃
* I ran `swiftlint --fix` to resolve many auto-correctable issues (mostly whitespace)
* Excluded the `Meshtastic/Protobufs` directory from lint, since that code is automatically generated.
* Converted some single letter method parameters to lowercase.
* Converted several instances `force_cast` to instead use `guard` or `if let` to unwrap optional values. During this change, some of the SwiftUI views became "too complex to be solved in a reasonable time", so I broke up the views into distinct sub-expressions.
I was able to build and run the app on an iOS simulator.
64 lines
1.7 KiB
Swift
64 lines
1.7 KiB
Swift
//
|
|
// 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))
|
|
// }
|
|
// }
|