vds_ios/VDS/Classes/ModelColorHelpers.swift
Matt Bruce 1c30a5ff84 added new color helper
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2022-08-04 15:32:53 -05:00

69 lines
2.0 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
}
open class ModelSurfaceColorHelper<ModelType:Surfaceable>: Colorable {
public var lightColor: UIColor = .clear
public var darkColor: UIColor = .clear
public func getColor(_ viewModel: ModelType) -> UIColor {
return viewModel.surface == .light ? lightColor : darkColor
}
}
open class ModelSingleColorHelper<ModelType:Disabling & Surfaceable>: Colorable {
public var disabled = ModelSurfaceColorHelper<ModelType>()
public var enabled = ModelSurfaceColorHelper<ModelType>()
public func getColor(_ viewModel: ModelType) -> UIColor {
return viewModel.disabled ? disabled.getColor(viewModel) : enabled.getColor(viewModel)
}
}
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)
}
}