189 lines
9.1 KiB
Swift
189 lines
9.1 KiB
Swift
//
|
|
// Facade.swift
|
|
// MVMCoreUI
|
|
//
|
|
// Created by Kevin Christiano on 4/30/20.
|
|
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public typealias FacadeElements = (fill: UIColor?, text: UIColor?, border: UIColor?)
|
|
|
|
|
|
public class Facade: Codable {
|
|
//--------------------------------------------------
|
|
// MARK: - Properties
|
|
//--------------------------------------------------
|
|
|
|
public var isInverted: Bool = false
|
|
|
|
public lazy var enabled: FacadeElements = (fill: enabled_fillColor(),
|
|
text: enabled_textColor(),
|
|
border: enabled_borderColor())
|
|
|
|
public lazy var disabled: FacadeElements = (fill: disabled_fillColor(),
|
|
text: disabled_textColor(),
|
|
border: disabled_borderColor())
|
|
|
|
public var backgroundColor_standard: Color?
|
|
public var backgroundColor_inverted: Color?
|
|
|
|
public var enabledFillColor: Color?
|
|
public var enabledTextColor: Color?
|
|
public var enabledBorderColor: Color?
|
|
|
|
public var enabledFillColor_inverted: Color?
|
|
public var enabledTextColor_inverted: Color?
|
|
public var enabledBorderColor_inverted: Color?
|
|
|
|
public var disabledFillColor: Color?
|
|
public var disabledTextColor: Color?
|
|
public var disabledBorderColor: Color?
|
|
|
|
public var disabledFillColor_inverted: Color?
|
|
public var disabledTextColor_inverted: Color?
|
|
public var disabledBorderColor_inverted: Color?
|
|
|
|
public var borderWidth: CGFloat?
|
|
public var borderWidth_inverted: CGFloat?
|
|
|
|
//--------------------------------------------------
|
|
// MARK: - Initializer
|
|
//--------------------------------------------------
|
|
|
|
public init(isInverted: Bool = false,
|
|
backgroundColor_standard: UIColor? = nil,
|
|
backgroundColor_inverted: UIColor? = nil,
|
|
enabledFillColor: UIColor? = nil,
|
|
enabledTextColor: UIColor? = nil,
|
|
enabledBorderColor: UIColor? = nil,
|
|
disabledFillColor: UIColor? = nil,
|
|
disabledTextColor: UIColor? = nil,
|
|
disabledBorderColor: UIColor? = nil,
|
|
enabledFillColor_inverted: UIColor? = nil,
|
|
enabledTextColor_inverted: UIColor? = nil,
|
|
enabledBorderColor_inverted: UIColor? = nil,
|
|
disabledFillColor_inverted: UIColor? = nil,
|
|
disabledTextColor_inverted: UIColor? = nil,
|
|
disabledBorderColor_inverted: UIColor? = nil,
|
|
borderWidth: CGFloat? = nil,
|
|
borderWidth_inverted: CGFloat? = nil) {
|
|
|
|
self.isInverted = isInverted
|
|
self.backgroundColor_standard = Color(uiColor: backgroundColor_standard)
|
|
self.backgroundColor_inverted = Color(uiColor: backgroundColor_inverted)
|
|
self.enabledFillColor = Color(uiColor: enabledFillColor)
|
|
self.enabledTextColor = Color(uiColor: enabledTextColor)
|
|
self.enabledBorderColor = Color(uiColor: enabledBorderColor)
|
|
self.disabledFillColor = Color(uiColor: disabledFillColor)
|
|
self.disabledTextColor = Color(uiColor: disabledTextColor)
|
|
self.disabledBorderColor = Color(uiColor: disabledBorderColor)
|
|
self.enabledFillColor_inverted = Color(uiColor: enabledFillColor_inverted)
|
|
self.enabledTextColor_inverted = Color(uiColor: enabledTextColor_inverted)
|
|
self.enabledBorderColor_inverted = Color(uiColor: enabledBorderColor_inverted)
|
|
self.disabledFillColor_inverted = Color(uiColor: disabledFillColor_inverted)
|
|
self.disabledTextColor_inverted = Color(uiColor: disabledTextColor_inverted)
|
|
self.disabledBorderColor_inverted = Color(uiColor: disabledBorderColor_inverted)
|
|
self.borderWidth = borderWidth
|
|
self.borderWidth_inverted = borderWidth_inverted
|
|
}
|
|
|
|
//--------------------------------------------------
|
|
// MARK: - Methods
|
|
//--------------------------------------------------
|
|
|
|
public func backgroundColor() -> UIColor? {
|
|
return (isInverted ? backgroundColor_inverted : backgroundColor_standard)?.uiColor
|
|
}
|
|
|
|
public func getBorderWidth() -> CGFloat? {
|
|
return isInverted ? borderWidth_inverted : borderWidth
|
|
}
|
|
|
|
public func enabled_fillColor() -> UIColor? {
|
|
return (isInverted ? enabledFillColor_inverted : enabledFillColor)?.uiColor
|
|
}
|
|
|
|
public func enabled_textColor() -> UIColor? {
|
|
return (isInverted ? enabledTextColor_inverted : enabledTextColor)?.uiColor
|
|
}
|
|
|
|
public func enabled_borderColor() -> UIColor? {
|
|
return (isInverted ? enabledBorderColor_inverted : enabledBorderColor)?.uiColor
|
|
}
|
|
|
|
public func disabled_fillColor() -> UIColor? {
|
|
return (isInverted ? disabledFillColor_inverted : disabledFillColor)?.uiColor
|
|
}
|
|
|
|
public func disabled_textColor() -> UIColor? {
|
|
return (isInverted ? disabledTextColor_inverted : disabledTextColor)?.uiColor
|
|
}
|
|
|
|
public func disabled_borderColor() -> UIColor? {
|
|
return (isInverted ? disabledBorderColor_inverted : disabledBorderColor)?.uiColor
|
|
}
|
|
|
|
//--------------------------------------------------
|
|
// MARK: - Keys
|
|
//--------------------------------------------------
|
|
|
|
private enum CodingKeys: String, CodingKey {
|
|
case backgroundColor_standard
|
|
case backgroundColor_inverted
|
|
case enabledFillColor
|
|
case enabledTextColor
|
|
case enabledBorderColor
|
|
case enabledFillColor_inverted
|
|
case enabledTextColor_inverted
|
|
case enabledBorderColor_inverted
|
|
case disabledFillColor
|
|
case disabledTextColor
|
|
case disabledBorderColor
|
|
case disabledFillColor_inverted
|
|
case disabledTextColor_inverted
|
|
case disabledBorderColor_inverted
|
|
}
|
|
|
|
//--------------------------------------------------
|
|
// MARK: - Codec
|
|
//--------------------------------------------------
|
|
|
|
required public init(from decoder: Decoder) throws {
|
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
|
backgroundColor_standard = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor_standard)
|
|
backgroundColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor_inverted)
|
|
enabledFillColor = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledFillColor)
|
|
enabledTextColor = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledTextColor)
|
|
enabledBorderColor = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledBorderColor)
|
|
enabledFillColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledFillColor_inverted)
|
|
enabledTextColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledTextColor_inverted)
|
|
enabledBorderColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledBorderColor_inverted)
|
|
disabledFillColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledFillColor)
|
|
disabledTextColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledTextColor)
|
|
disabledBorderColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledBorderColor)
|
|
disabledFillColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledFillColor_inverted)
|
|
disabledTextColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledTextColor_inverted)
|
|
disabledBorderColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledBorderColor_inverted)
|
|
}
|
|
|
|
public func encode(to encoder: Encoder) throws {
|
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
try container.encodeIfPresent(backgroundColor_standard, forKey: .backgroundColor_standard)
|
|
try container.encodeIfPresent(backgroundColor_inverted, forKey: .backgroundColor_inverted)
|
|
try container.encodeIfPresent(enabledFillColor, forKey: .enabledFillColor)
|
|
try container.encodeIfPresent(enabledTextColor, forKey: .enabledTextColor)
|
|
try container.encodeIfPresent(enabledBorderColor, forKey: .enabledBorderColor)
|
|
try container.encodeIfPresent(enabledFillColor_inverted, forKey: .enabledFillColor_inverted)
|
|
try container.encodeIfPresent(enabledTextColor_inverted, forKey: .enabledTextColor_inverted)
|
|
try container.encodeIfPresent(enabledBorderColor_inverted, forKey: .enabledBorderColor_inverted)
|
|
try container.encodeIfPresent(disabledFillColor, forKey: .disabledFillColor)
|
|
try container.encodeIfPresent(disabledTextColor, forKey: .disabledTextColor)
|
|
try container.encodeIfPresent(disabledBorderColor, forKey: .disabledBorderColor)
|
|
try container.encodeIfPresent(disabledFillColor_inverted, forKey: .disabledFillColor_inverted)
|
|
try container.encodeIfPresent(disabledTextColor_inverted, forKey: .disabledTextColor_inverted)
|
|
try container.encodeIfPresent(disabledBorderColor_inverted, forKey: .disabledBorderColor_inverted)
|
|
}
|
|
}
|