1 contributor
//
// SettingsView.swift
// USB Meter
//
// Created by Bogdan Timofte on 14/03/2020.
// Copyright © 2020 Bogdan Timofte. All rights reserved.
//
import SwiftUI
struct MeterSettingsView: View {
@EnvironmentObject private var meter: Meter
@State private var editingName = false
@State private var editingScreenTimeout = false
@State private var editingScreenBrightness = false
var body: some View {
ScrollView {
VStack (spacing: 10) {
// MARK: Name
VStack {
HStack {
Text ("Name").fontWeight(.semibold)
Spacer()
if !editingName {
Text(meter.name)
}
ChevronView( rotate: $editingName )
}
if editingName {
EditNameView(editingName: $editingName, newName: meter.name)
}
}
.padding()
.background(RoundedRectangle(cornerRadius: 15).foregroundColor(.secondary).opacity(0.1))
if meter.operationalState == .dataIsAvailable {
// MARK: Screen Timeout
// Ar trebui separat enabled/disabled de valorile in minute eventual stocata valoarea in iCloud la dezactivare pentru restaurare
VStack{
HStack {
Text ("Screen Timeout").fontWeight(.semibold)
Spacer()
if !editingScreenTimeout {
Text ( meter.screenTimeout != 0 ? "\(meter.screenTimeout) Minutes" : "Off" )
}
ChevronView( rotate: $editingScreenTimeout )
}
if editingScreenTimeout {
EditScreenTimeoutView()
}
}
.padding()
.background(RoundedRectangle(cornerRadius: 15).foregroundColor(.secondary).opacity(0.1))
// MARK: Screen Brightness
VStack{
HStack {
Text ("Screen Brightness").fontWeight(.semibold)
Spacer()
if !editingScreenBrightness {
Text ( "\(meter.screenBrightness)" )
}
ChevronView( rotate: $editingScreenBrightness )
}
if editingScreenBrightness {
EditScreenBrightnessView()
}
}
.padding()
.background(RoundedRectangle(cornerRadius: 15).foregroundColor(.secondary).opacity(0.1))
}
}
}
.padding()
.navigationBarTitle("Meter Settings")
.navigationBarItems( trailing: RSSIView( RSSI: meter.btSerial.RSSI ).frame( width: 24 ) )
}
}
struct EditNameView: View {
@EnvironmentObject private var meter: Meter
@Binding var editingName: Bool
@State var newName: String
var body: some View {
TextField("Name", text: self.$newName, onCommit: {
self.meter.name = self.newName
self.editingName = false
})
.textFieldStyle(RoundedBorderTextFieldStyle())
.lineLimit(1)
.disableAutocorrection(true)
.multilineTextAlignment(.center)
.padding(.horizontal)
}
}
struct EditScreenTimeoutView: View {
@EnvironmentObject private var meter: Meter
var body: some View {
Picker("", selection: self.$meter.screenTimeout ) {
Text("1").tag(1)
Text("2").tag(2)
Text("3").tag(3)
Text("4").tag(4)
Text("5").tag(5)
Text("6").tag(6)
Text("7").tag(7)
Text("8").tag(8)
Text("9").tag(9)
Text("Off").tag(0)
}
.pickerStyle( SegmentedPickerStyle() )
.padding(.horizontal)
}
}
struct EditScreenBrightnessView: View {
@EnvironmentObject private var meter: Meter
var body: some View {
Picker("", selection: self.$meter.screenBrightness ) {
Text("0").tag(0)
Text("1").tag(1)
Text("2").tag(2)
Text("3").tag(3)
Text("4").tag(4)
Text("5").tag(5)
}
.pickerStyle( SegmentedPickerStyle() )
.padding(.horizontal)
}
}