vds_ios/VDS/Classes/ModelColorHelpers.swift
Matt Bruce 3acde8b4c8 created color helpers
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2022-08-04 15:11:02 -05:00

51 lines
1.4 KiB
Swift

//
// ModelColorHelper.swift
// VDS
//
// Created by Matt Bruce on 8/4/22.
//
import Foundation
import UIKit
public protocol Colorable {
associatedtype ModelType
func getColor(_ viewModel: ModelType) -> UIColor
}
public protocol BinaryColorable{
var userTrueColor: Bool { get }
}
open class BinaryColorHelper<ModelType:BinaryColorable> {
public var trueColor: UIColor = .clear
public var falseColor: UIColor = .clear
public func getColor(_ viewModel: ModelType) -> UIColor {
return viewModel.userTrueColor ? trueColor : falseColor
}
}
open class BinarySurfaceColorHelper<ModelType:Surfaceable & BinaryColorable>: Colorable{
public var light = BinaryColorHelper<ModelType>()
public var dark = BinaryColorHelper<ModelType>()
public func getColor(_ viewModel: ModelType) -> UIColor {
if viewModel.surface == .light {
return light.getColor(viewModel)
} else {
return dark.getColor(viewModel)
}
}
}
open class BinaryModelColorHelper<ModelType:Disabling & Surfaceable & BinaryColorable>: Colorable {
public var disabled = BinarySurfaceColorHelper<ModelType>()
public var enabled = BinarySurfaceColorHelper<ModelType>()
public func getColor(_ viewModel: ModelType) -> UIColor {
return viewModel.disabled ? disabled.getColor(viewModel) : enabled.getColor(viewModel)
}
}