Newer Older
81 lines | 2.245kb
Bogdan Timofte authored 2 weeks ago
1
//
2
//  SwiftUIView.swift
3
//  USB Meter
4
//
5
//  Created by Bogdan Timofte on 14/03/2020.
6
//  Copyright © 2020 Bogdan Timofte. All rights reserved.
7
//
8

            
9
import SwiftUI
10

            
11

            
12
struct RSSIView: View {
13

            
14
    var RSSI: Int
15

            
16
    var body: some View {
17
        GeometryReader { box in
18
            HStack (alignment: VerticalAlignment.bottom, spacing: 3) {
19
                ZStack {
20
                    Rectangle().stroke()
21
                    if self.RSSI >= -110 {
22
                        Rectangle()
23
                            .foregroundColor(self.clr())
24
                    }
25
                }
26
                .frame(height: box.size.height * 0.2)
27
                ZStack {
28
                    Rectangle().stroke()
29
                    if self.RSSI >= -100 {
30
                        Rectangle()
31
                        .foregroundColor(self.clr())
32
                    }
33
                }
34
                .frame(height: box.size.height * 0.4)
35
                ZStack {
36
                    Rectangle().stroke()
37
                    if self.RSSI >= -80 {
38
                        Rectangle()
39
                        .foregroundColor(self.clr())
40
                    }
41
                }
42
                .frame(height: box.size.height * 0.6)
43
                ZStack {
44
                    Rectangle().stroke()
45
                    if self.RSSI >= -60 {
46
                        Rectangle()
47
                        .foregroundColor(self.clr())
48
                    }
49
                }
50
                .frame(height: box.size.height * 0.8)
51
                ZStack {
52
                    Rectangle().stroke()
53
                    if self.RSSI >= -50 {
54
                        Rectangle()
55
                        .foregroundColor(self.clr())
56
                    }
57
                }
58
                .frame(height: box.size.height/1)
59
            }
60
        }
61
    }
62

            
63
    private func clr() -> Color {
64
        switch RSSI {
65
        case let x where x < -100:
66
            return .red
67
        case let x where x < -80:
68
            return .orange
69
        default:
70
            return .green
71
        }
72
    }
73

            
74
}
75

            
76

            
77
struct SwiftUIView_Previews: PreviewProvider {
78
    static var previews: some View {
79
        RSSIView(RSSI: -80).frame(width: 64, height: 64, alignment: .center)
80
    }
81
}