mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Preview enabled in connected devices (#1509)
* Update Muzi R1 Neo to actively supported * Preview enabled in connected devices * Fixing indentation * Fixing indentation --------- Co-authored-by: Jonathan Bennett <jbennett@incomsystems.biz> Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This commit is contained in:
parent
13fd9c3a93
commit
b57ba1557c
2 changed files with 58 additions and 36 deletions
|
|
@ -1,22 +1,31 @@
|
|||
/*
|
||||
Abstract:
|
||||
A view draws the indicator used in the upper right corner for views using BLE
|
||||
*/
|
||||
Abstract:
|
||||
A view draws the indicator used in the upper right corner for views using BLE
|
||||
*/
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct ConnectedDevice: View {
|
||||
@EnvironmentObject var accessoryManager: AccessoryManager
|
||||
var deviceConnected: Bool
|
||||
var name: String
|
||||
var mqttProxyConnected: Bool = false
|
||||
var mqttUplinkEnabled: Bool = false
|
||||
var mqttDownlinkEnabled: Bool = false
|
||||
var mqttTopic: String = ""
|
||||
var phoneOnly: Bool = false
|
||||
var showActivityLights: Bool
|
||||
|
||||
init(deviceConnected: Bool, name: String, mqttProxyConnected: Bool = false, mqttUplinkEnabled: Bool = false, mqttDownlinkEnabled: Bool = false, mqttTopic: String = "", phoneOnly: Bool = false, showActivityLights: Bool = true) {
|
||||
|
||||
let deviceConnected: Bool
|
||||
let name: String
|
||||
let mqttProxyConnected: Bool
|
||||
let mqttUplinkEnabled: Bool
|
||||
let mqttDownlinkEnabled: Bool
|
||||
let mqttTopic: String
|
||||
let phoneOnly: Bool
|
||||
let showActivityLights: Bool
|
||||
|
||||
init(
|
||||
deviceConnected: Bool,
|
||||
name: String,
|
||||
mqttProxyConnected: Bool = false,
|
||||
mqttUplinkEnabled: Bool = false,
|
||||
mqttDownlinkEnabled: Bool = false,
|
||||
mqttTopic: String = "",
|
||||
phoneOnly: Bool = false,
|
||||
showActivityLights: Bool = true
|
||||
) {
|
||||
self.deviceConnected = deviceConnected
|
||||
self.name = name
|
||||
self.mqttProxyConnected = mqttProxyConnected
|
||||
|
|
@ -27,12 +36,12 @@ struct ConnectedDevice: View {
|
|||
self.showActivityLights = showActivityLights
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
var body: some View {
|
||||
HStack {
|
||||
if showActivityLights {
|
||||
RXTXIndicatorWidget()
|
||||
}
|
||||
if (phoneOnly && UIDevice.current.userInterfaceIdiom == .phone) || !phoneOnly {
|
||||
if (phoneOnly && UIDevice.current.userInterfaceIdiom == .phone) || !phoneOnly {
|
||||
if deviceConnected {
|
||||
// Create an HStack for connected state with proper accessibility
|
||||
HStack {
|
||||
|
|
@ -64,24 +73,37 @@ struct ConnectedDevice: View {
|
|||
.accessibilityElement(children: .ignore)
|
||||
.accessibilityLabel("No Bluetooth device connected".localized)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.if(.os26) { $0.padding(.leading, 5.0) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ConnectedDevice_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
VStack(alignment: .trailing) {
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: true)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: false, mqttUplinkEnabled: true, mqttDownlinkEnabled: true)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: true, mqttUplinkEnabled: true, mqttDownlinkEnabled: true, mqttTopic: "msh/US/2/e/#")
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: false, mqttUplinkEnabled: true, mqttDownlinkEnabled: false)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: true, mqttUplinkEnabled: true, mqttDownlinkEnabled: false)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: false, mqttUplinkEnabled: false, mqttDownlinkEnabled: true)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: true, mqttUplinkEnabled: false, mqttDownlinkEnabled: true)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: true)
|
||||
ConnectedDevice(deviceConnected: false, name: "MEMO", mqttProxyConnected: false)
|
||||
}.previewLayout(.fixed(width: 150, height: 275))
|
||||
}
|
||||
#Preview("Multiple variants") {
|
||||
VStack(alignment: .trailing) {
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: true)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: false, mqttUplinkEnabled: true, mqttDownlinkEnabled: true)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: true, mqttUplinkEnabled: true, mqttDownlinkEnabled: true, mqttTopic: "msh/US/2/e/#")
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: false, mqttUplinkEnabled: true, mqttDownlinkEnabled: false)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: true, mqttUplinkEnabled: true, mqttDownlinkEnabled: false)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: false, mqttUplinkEnabled: false, mqttDownlinkEnabled: true)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: true, mqttUplinkEnabled: false, mqttDownlinkEnabled: true)
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: true)
|
||||
ConnectedDevice(deviceConnected: false, name: "MEMO", mqttProxyConnected: false)
|
||||
}
|
||||
.environmentObject(AccessoryManager.shared)
|
||||
}
|
||||
|
||||
#Preview("Navigation header item") {
|
||||
NavigationView {
|
||||
Text("Connect screen")
|
||||
.navigationTitle("Connect")
|
||||
.navigationBarItems(
|
||||
leading: MeshtasticLogo(),
|
||||
trailing: ZStack {
|
||||
ConnectedDevice(deviceConnected: true, name: "MEMO", mqttProxyConnected: false)
|
||||
.environmentObject(AccessoryManager.shared)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import OSLog
|
|||
struct RXTXIndicatorWidget: View {
|
||||
@EnvironmentObject var accessoryManager: AccessoryManager
|
||||
@State private var isPopoverOpen = false
|
||||
|
||||
|
||||
let fontSize: CGFloat = 7.0
|
||||
var body: some View {
|
||||
Button( action: {
|
||||
|
|
@ -38,7 +38,7 @@ struct RXTXIndicatorWidget: View {
|
|||
#else
|
||||
self.isPopoverOpen.toggle()
|
||||
#endif
|
||||
|
||||
|
||||
}) {
|
||||
VStack(spacing: 3.0) {
|
||||
HStack(spacing: 2.0) {
|
||||
|
|
@ -102,9 +102,9 @@ struct LEDIndicator: View {
|
|||
@Environment(\.colorScheme) var colorScheme
|
||||
@Binding var flash: Int
|
||||
let color: Color
|
||||
|
||||
|
||||
@State private var brightness: Double = 0.0
|
||||
|
||||
|
||||
var body: some View {
|
||||
Circle()
|
||||
.foregroundColor(color.opacity(brightness))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue