ReservoirHUDView.swift 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //
  2. // ReservoirVolumeHUDView.swift
  3. // Naterade
  4. //
  5. // Created by Nathan Racklyeft on 5/2/16.
  6. // Copyright © 2016 Nathan Racklyeft. All rights reserved.
  7. //
  8. import UIKit
  9. import LoopKitUI
  10. public final class ReservoirHUDView: LevelHUDView, NibLoadable {
  11. override public var orderPriority: HUDViewOrderPriority {
  12. return 4
  13. }
  14. @IBOutlet private weak var volumeLabel: UILabel!
  15. public class func instantiate() -> ReservoirHUDView {
  16. return nib().instantiate(withOwner: nil, options: nil)[0] as! ReservoirHUDView
  17. }
  18. override public func awakeFromNib() {
  19. super.awakeFromNib()
  20. volumeLabel.isHidden = true
  21. }
  22. override public func levelDidChange() {
  23. super.levelDidChange()
  24. switch level {
  25. case .none:
  26. volumeLabel.isHidden = true
  27. case let x? where x > 0.25:
  28. volumeLabel.isHidden = true
  29. case let x? where x > 0.10:
  30. volumeLabel.textColor = tintColor
  31. volumeLabel.isHidden = false
  32. default:
  33. volumeLabel.textColor = tintColor
  34. volumeLabel.isHidden = false
  35. }
  36. }
  37. private lazy var timeFormatter: DateFormatter = {
  38. let formatter = DateFormatter()
  39. formatter.dateStyle = .none
  40. formatter.timeStyle = .short
  41. return formatter
  42. }()
  43. private lazy var numberFormatter: NumberFormatter = {
  44. let formatter = NumberFormatter()
  45. formatter.numberStyle = .decimal
  46. formatter.maximumFractionDigits = 0
  47. return formatter
  48. }()
  49. public func setReservoirVolume(volume: Double, at date: Date) {
  50. if let units = numberFormatter.string(from: volume) {
  51. volumeLabel.text = String(format: LocalizedString("%@U", comment: "Format string for reservoir volume. (1: The localized volume)"), units)
  52. let time = timeFormatter.string(from: date)
  53. caption?.text = time
  54. accessibilityValue = String(format: LocalizedString("%1$@ units remaining at %2$@", comment: "Accessibility format string for (1: localized volume)(2: time)"), units, time)
  55. }
  56. }
  57. public override func tintColorDidChange() {
  58. super.tintColorDidChange()
  59. volumeLabel.tintColor = tintColor
  60. }
  61. }