vds_ios_sample/VDSSample/ViewControllers/CarouselScrollbarViewConttroller.swift

96 lines
3.0 KiB
Swift

//
// CarouselScrollbarViewConttroller.swift
// VDSSample
//
// Created by Kanamarlapudi, Vasavi on 15/03/24.
//
import Foundation
import UIKit
import VDS
import Combine
import VDSColorTokens
class CarouselScrollbarViewConttroller: BaseViewController<CarouselScrollbar> {
lazy var layoutPickerSelectorView = {
PickerSelectorView(title: "1UP",
picker: self.picker,
items: CarouselScrollbar.Layout.allCases)
}()
var slidesTextField = NumericField()
var disabledSwitch = Toggle()
var positionTextField = NumericField()
override func viewDidLoad() {
super.viewDidLoad()
addContentTopView(view: component)
setupPicker()
setupModel()
}
override func setupForm(){
super.setupForm()
addFormRow(label: "Disabled", view: disabledSwitch)
addFormRow(label: "Surface", view: surfacePickerSelectorView)
addFormRow(label: "Layout", view: layoutPickerSelectorView)
addFormRow(label: "Number Of Slides", view: slidesTextField)
addFormRow(label: "Position", view: positionTextField)
disabledSwitch.onChange = { [weak self] sender in
self?.component.isEnabled = !sender.isOn
}
slidesTextField
.numberPublisher
.sink { [weak self] number in
guard let number else {
self?.component.numberOfSlides = nil
return
}
self?.component.numberOfSlides = number.intValue
self?.component.position = Int(self?.positionTextField.text ?? "1")
}.store(in: &subscribers)
positionTextField
.numberPublisher
.sink { [weak self] number in
guard let number else {
self?.component.position = nil
return
}
self?.component.position = number.intValue
}.store(in: &subscribers)
}
func setupModel() {
//setup UI
component.numberOfSlides = 8
surfacePickerSelectorView.text = component.surface.rawValue
disabledSwitch.isOn = !component.isEnabled
slidesTextField.text = String(component.numberOfSlides ?? 1)
//setup test page to show scrubber id was changed
component.onScrubberDidChange = { [weak self] scrubberId in
guard let self else { return }
positionTextField.text = String(scrubberId)
}
}
func setupPicker(){
surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in
self?.component.surface = item
self?.contentTopView.backgroundColor = item.color
}
layoutPickerSelectorView.onPickerDidSelect = { [weak self] item in
self?.component.selectedLayout = item
self?.component.position = Int(self?.positionTextField.text ?? "1")
}
}
}