From 114a73c8f93ef37dbf08d244e1245a5e53013aa2 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 20 Jun 2023 14:22:55 -0500 Subject: [PATCH] refactored to new properties Signed-off-by: Matt Bruce --- .../BadgeIndicatorViewController.swift | 107 +++++++++++++++--- 1 file changed, 91 insertions(+), 16 deletions(-) diff --git a/VDSSample/ViewControllers/BadgeIndicatorViewController.swift b/VDSSample/ViewControllers/BadgeIndicatorViewController.swift index d8f6d47..6c6e72e 100644 --- a/VDSSample/ViewControllers/BadgeIndicatorViewController.swift +++ b/VDSSample/ViewControllers/BadgeIndicatorViewController.swift @@ -28,7 +28,7 @@ class BadgeIndicatorViewController: BaseViewController { lazy var textSizePickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, - items: BadgeIndicator.TextSize.allCases) + items: BadgeIndicator.Size.allCases) }() lazy var maxDigitsPickerSelectorView = { @@ -51,9 +51,9 @@ class BadgeIndicatorViewController: BaseViewController { var textField = TextField() - var hideDotSwitch = UISwitch() - override func allTextFields() -> [TextField]? { [textField] } - + var hideDotSwitch = Toggle() + var hideBorderSwitch = Toggle() + override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: .makeWrapper(for: component)) @@ -61,28 +61,47 @@ class BadgeIndicatorViewController: BaseViewController { setupModel() } - var numberedForm = FormSection() - var hideDotRow: UIView? + var heightTextField = NumericField() + var widthTextField = NumericField() + var horizontalPaddingTextField = NumericField() + var verticalPaddingTextField = NumericField() + var dotSizeTextField = NumericField() + + override func allTextFields() -> [TextField]? { [textField, heightTextField, widthTextField, horizontalPaddingTextField, verticalPaddingTextField, dotSizeTextField] } + + + var numberedForm = FormSection().with { $0.title = "Numbered Kind"} + var dotForm = FormSection().with { $0.title = "Simple Kind"} + override func setupForm(){ super.setupForm() addFormRow(label: "Kind", view: kindPickerSelectorView) - hideDotRow = addFormRow(label: "Hide Dot", view: hideDotSwitch) - + addFormRow(label: "Height", view: heightTextField) + addFormRow(label: "Width", view: widthTextField) + addFormRow(label: "Horiztonal Padding", view: horizontalPaddingTextField) + addFormRow(label: "Vertical Padding", view: verticalPaddingTextField) addFormRow(label: "Fill Color", view: fillColorPickerSelectorView) addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "Hide Border", view: .makeWrapper(for: hideBorderSwitch)) addFormRow(label: "Border Light", view: borderColorLightPickerSelectorView) addFormRow(label: "Border Dark", view: borderColorDarkPickerSelectorView) addFormRow(label: "Size", view: textSizePickerSelectorView) + dotForm.addFormRow(label: "Hide Dot", view: .makeWrapper(for: hideDotSwitch)) + dotForm.addFormRow(label: "Dot Size", view: dotSizeTextField) numberedForm.addFormRow(label: "Text", view: textField) numberedForm.addFormRow(label: "Max Digits", view: maxDigitsPickerSelectorView) append(section: numberedForm) - numberedForm.isHidden = true + append(section: dotForm) hideDotSwitch.publisher(for: .valueChanged).sink { [weak self] control in self?.component.hideDot = control.isOn }.store(in: &subscribers) - + + hideBorderSwitch.publisher(for: .valueChanged).sink { [weak self] control in + self?.component.hideBorder = control.isOn + }.store(in: &subscribers) + textField .textPublisher .sink { [weak self] text in @@ -90,23 +109,80 @@ class BadgeIndicatorViewController: BaseViewController { self?.component.number = n.intValue } }.store(in: &subscribers) + + heightTextField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.height = CGFloat(truncating: n) + } else { + self?.component.height = nil + } + }.store(in: &subscribers) + + widthTextField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.width = CGFloat(truncating: n) + } else { + self?.component.width = nil + } + }.store(in: &subscribers) + + horizontalPaddingTextField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.horitonalPadding = CGFloat(truncating: n) + } else { + self?.component.horitonalPadding = nil + } + }.store(in: &subscribers) + + verticalPaddingTextField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.verticalPadding = CGFloat(truncating: n) + } else { + self?.component.verticalPadding = nil + } + }.store(in: &subscribers) + + dotSizeTextField + .textPublisher + .sink { [weak self] text in + if let n = NumberFormatter().number(from: text) { + self?.component.dotSize = CGFloat(truncating: n) + } else { + self?.component.dotSize = nil + } + }.store(in: &subscribers) + } func setupModel() { component.fillColor = .red component.number = 23 - component.kind = .numbered - component.textSize = .medium + component.kind = .simple + component.size = .medium //setup UI surfacePickerSelectorView.text = component.surface.rawValue kindPickerSelectorView.text = component.kind.rawValue fillColorPickerSelectorView.text = component.fillColor.rawValue - textSizePickerSelectorView.text = component.textSize.rawValue + textSizePickerSelectorView.text = component.size.rawValue maxDigitsPickerSelectorView.text = component.maxDigits.rawValue borderColorDarkPickerSelectorView.text = component.borderColorDark?.toVDSColor()?.rawValue ?? "" borderColorLightPickerSelectorView.text = component.borderColorLight?.toVDSColor()?.rawValue ?? "" textField.text = "\(component.number!)" + visibleForms() + } + + func visibleForms() { + numberedForm.isHidden = kindPickerSelectorView.selectedItem != .numbered + dotForm.isHidden = kindPickerSelectorView.selectedItem == .numbered } func setupPicker(){ @@ -118,8 +194,7 @@ class BadgeIndicatorViewController: BaseViewController { kindPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.kind = item - self?.numberedForm.isHidden = item != .numbered - self?.hideDotRow?.isHidden = item == .numbered + self?.visibleForms() } fillColorPickerSelectorView.onPickerDidSelect = { [weak self] item in @@ -127,7 +202,7 @@ class BadgeIndicatorViewController: BaseViewController { } textSizePickerSelectorView.onPickerDidSelect = { [weak self] item in - self?.component.textSize = item + self?.component.size = item } maxDigitsPickerSelectorView.onPickerDidSelect = { [weak self] item in