refactored again, removed protocol and enforce base class of subject
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
1129ac4468
commit
dbfce2c999
@ -9,7 +9,8 @@ import Foundation
|
|||||||
import UIKit
|
import UIKit
|
||||||
import Combine
|
import Combine
|
||||||
|
|
||||||
open class Control<ModelType: Modelable>: UIControl, ModelHandlerControlable, ViewProtocol, Resettable {
|
|
||||||
|
open class Control<ModelType: Modelable>: UIControl, ModelHandlerable, ViewProtocol, Resettable {
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Combine Properties
|
// MARK: - Combine Properties
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
public class SelectorGroupHandlerBase<GroupModelType: SelectorGroupModelable, ModelHandlerType: ModelHandlerable<GroupModelType.SelectorModelType> & UIControl>: Control<GroupModelType>, Changable {
|
public class SelectorGroupHandlerBase<GroupModelType: SelectorGroupModelable, ModelHandlerType: Control<GroupModelType.SelectorModelType>>: Control<GroupModelType>, Changable {
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Public Properties
|
// MARK: - Public Properties
|
||||||
@ -97,7 +97,7 @@ public class SelectorGroupHandlerBase<GroupModelType: SelectorGroupModelable, Mo
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SelectorGroupSelectedHandlerBase<GroupModelType: SelectorGroupSelectedModelable, ModelHandlerType: ModelHandlerable & UIControl>: SelectorGroupHandlerBase<GroupModelType, ModelHandlerType> where GroupModelType.SelectorModelType == ModelHandlerType.ModelType {
|
public class SelectorGroupSelectedHandlerBase<GroupModelType: SelectorGroupSelectedModelable, ModelHandlerType: Control<GroupModelType.SelectorModelType>>: SelectorGroupHandlerBase<GroupModelType, ModelHandlerType> where GroupModelType.SelectorModelType == ModelHandlerType.ModelType {
|
||||||
|
|
||||||
public var selectedModel: ModelHandlerType.ModelType? {
|
public var selectedModel: ModelHandlerType.ModelType? {
|
||||||
return model.selectedModel
|
return model.selectedModel
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import UIKit
|
|||||||
import Combine
|
import Combine
|
||||||
|
|
||||||
|
|
||||||
open class View<ModelType: Modelable>: UIView, ModelHandlerViewable, ViewProtocol, Resettable {
|
open class View<ModelType: Modelable>: UIView, ModelHandlerable, ViewProtocol, Resettable {
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Combine Properties
|
// MARK: - Combine Properties
|
||||||
|
|||||||
@ -23,7 +23,7 @@ public class CheckboxGroup: CheckboxGroupBase<DefaultCheckboxGroupModel, Checkbo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CheckboxGroupBase<GroupModelType: CheckboxGroupModel, ModelHandlerType: ModelHandlerControlable<GroupModelType.SelectorModelType>>: SelectorGroupHandlerBase<GroupModelType, ModelHandlerType> {
|
public class CheckboxGroupBase<GroupModelType: CheckboxGroupModel, ModelHandlerType: CheckboxBase<GroupModelType.SelectorModelType>>: SelectorGroupHandlerBase<GroupModelType, ModelHandlerType> {
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Public Properties
|
// MARK: - Public Properties
|
||||||
|
|||||||
@ -31,7 +31,7 @@ public class RadioBoxGroup: RadioBoxGroupBase<DefaultRadioBoxGroupModel, RadioBo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RadioBoxGroupBase<GroupModelType: RadioBoxGroupModel, ModelHandlerType: ModelHandlerControlable<GroupModelType.SelectorModelType>>: SelectorGroupSelectedHandlerBase<GroupModelType, ModelHandlerType> {
|
public class RadioBoxGroupBase<GroupModelType: RadioBoxGroupModel, ModelHandlerType: RadioBoxBase<GroupModelType.SelectorModelType>>: SelectorGroupSelectedHandlerBase<GroupModelType, ModelHandlerType> {
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Private Properties
|
// MARK: - Private Properties
|
||||||
|
|||||||
@ -34,7 +34,7 @@ public class RadioButtonGroup: RadioButtonGroupBase<DefaultRadioButtonGroupModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RadioButtonGroupBase<GroupModelType: RadioButtonGroupModel, ModelHandlerType: ModelHandlerControlable<GroupModelType.SelectorModelType>>: SelectorGroupSelectedHandlerBase<GroupModelType, ModelHandlerType> {
|
public class RadioButtonGroupBase<GroupModelType: RadioButtonGroupModel, ModelHandlerType: RadioButtonBase<GroupModelType.SelectorModelType>>: SelectorGroupSelectedHandlerBase<GroupModelType, ModelHandlerType> {
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Public Properties
|
// MARK: - Public Properties
|
||||||
|
|||||||
@ -32,7 +32,7 @@ public class RadioSwatchGroup: RadioSwatchGroupBase<DefaultRadioSwatchGroupModel
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RadioSwatchGroupBase<GroupModelType: RadioSwatchGroupModel, ModelHandlerType: ModelHandlerControlable<GroupModelType.SelectorModelType>>: Control<GroupModelType>, Changable, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UICollectionViewDelegate {
|
public class RadioSwatchGroupBase<GroupModelType: RadioSwatchGroupModel, ModelHandlerType: RadioSwatchBase<GroupModelType.SelectorModelType>>: Control<GroupModelType>, Changable, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UICollectionViewDelegate {
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Public Properties
|
// MARK: - Public Properties
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import Foundation
|
|||||||
import Combine
|
import Combine
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
public protocol ModelHandlerable<ModelType>: AnyObject, Initable {
|
public protocol ModelHandlerable: AnyObject, Initable {
|
||||||
associatedtype ModelType: Modelable
|
associatedtype ModelType: Modelable
|
||||||
var model: ModelType { get set }
|
var model: ModelType { get set }
|
||||||
var modelPublisher: Published<ModelType>.Publisher { get }
|
var modelPublisher: Published<ModelType>.Publisher { get }
|
||||||
@ -42,9 +42,3 @@ extension ModelHandlerable {
|
|||||||
.store(in: &subscribers)
|
.store(in: &subscribers)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//enforment of a specific class, helps later with subclassing using generics
|
|
||||||
//https://sarunw.com/posts/how-to-declare-swift-protocol-for-specific-class/
|
|
||||||
public protocol ModelHandlerControlable<ModelType>: ModelHandlerable, UIControl {}
|
|
||||||
|
|
||||||
public protocol ModelHandlerViewable<ModelType>: ModelHandlerable, UIView {}
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user