69 lines
2.0 KiB
Swift
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)
|
|
}
|
|
}
|
|
|