From 0f6f0e849266cd6a95885c91a425c2ac894bea23 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Tue, 8 Dec 2020 12:56:07 +0530 Subject: [PATCH 1/5] Added indexColor property for NumberedList & UnOrderedList --- .../Lists/NumberedListModel.swift | 12 +++++++++--- .../StringAndMoleculeModel.swift | 9 +++++++-- .../StringAndMoleculeView.swift | 1 + .../Lists/UnOrderedListModel.swift | 10 ++++++++-- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift index eeacb98d..38ddfd02 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift @@ -17,16 +17,18 @@ import Foundation case moleculeName case backgroundColor case list + case indexColor } // Numbered list model comes in the from of list = [MoleculeModelProtocol] public required init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) - + + let indexColor = try typeContainer.decodeIfPresent(Color.self, forKey: .indexColor) let list: [MoleculeModelProtocol] = try typeContainer.decodeModels(codingKey: .list) var models: [MoleculeStackItemModel] = [] for (index, molecule) in list.enumerated() { - models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: "\(index+1).", molecule: molecule))) + models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: "\(index+1).", molecule: molecule, indexColor: indexColor))) } super.init(molecules: models, spacing: 0) } @@ -36,11 +38,15 @@ import Foundation try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) try container.encode(moleculeName, forKey: .moleculeName) + var indexColor: Color? var models: [MoleculeModelProtocol] = [] for molecule in molecules { - models.append(((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel).molecule) + let stringAndMoleculeModel: StringAndMoleculeModel = ((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel) + indexColor = stringAndMoleculeModel.indexColor + models.append(stringAndMoleculeModel.molecule) } try container.encodeModels(models, forKey: .list) + try container.encodeIfPresent(indexColor, forKey: .indexColor) } } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift index 3adb0bb3..37d5f580 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift @@ -13,10 +13,12 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { public var backgroundColor: Color? public var string: String public var molecule: MoleculeModelProtocol - - public init(string: String, molecule: MoleculeModelProtocol) { + public var indexColor: Color? + + public init(string: String, molecule: MoleculeModelProtocol, indexColor: Color?) { self.string = string self.molecule = molecule + self.indexColor = indexColor } private enum CodingKeys: String, CodingKey { @@ -24,6 +26,7 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { case backgroundColor case string case molecule + case indexColor } public required init(from decoder: Decoder) throws { @@ -31,6 +34,7 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) string = try typeContainer.decode(String.self, forKey: .string) molecule = try typeContainer.decodeModel(codingKey: .molecule) + indexColor = try typeContainer.decodeIfPresent(Color.self, forKey: .indexColor) } public func encode(to encoder: Encoder) throws { @@ -39,5 +43,6 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { try container.encode(string, forKey: .string) try container.encodeModel(molecule, forKey: .molecule) try container.encode(moleculeName, forKey: .moleculeName) + try container.encodeIfPresent(indexColor, forKey: .indexColor) } } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift index a2a76f68..b95dd8cd 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift @@ -84,6 +84,7 @@ open class StringAndMoleculeView: View { super.set(with: model, delegateObject, additionalData) guard let model = model as? StringAndMoleculeModel else { return } label.text = model.string + label.textColor = model.indexColor?.uiColor ?? .black molecule.set(with: model.molecule, delegateObject, additionalData) } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift index 3866e918..c6e34197 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift @@ -19,6 +19,7 @@ import Foundation case backgroundColor case list case bulletChar + case indexColor } // Numbered list model comes in the from of list = [MoleculeModelProtocol] @@ -28,10 +29,11 @@ import Foundation self.bulletChar = bulletChar } + let indexColor = try typeContainer.decodeIfPresent(Color.self, forKey: .indexColor) let list: [MoleculeModelProtocol] = try typeContainer.decodeModels(codingKey: .list) var models: [MoleculeStackItemModel] = [] for molecule in list { - models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: bulletChar, molecule: molecule))) + models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: bulletChar, molecule: molecule, indexColor: indexColor))) } super.init(molecules: models, spacing: 0) } @@ -42,10 +44,14 @@ import Foundation try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) try container.encode(moleculeName, forKey: .moleculeName) + var indexColor: Color? var models: [MoleculeModelProtocol] = [] for molecule in molecules { - models.append(((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel).molecule) + let stringAndMoleculeModel: StringAndMoleculeModel = ((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel) + indexColor = stringAndMoleculeModel.indexColor + models.append(stringAndMoleculeModel.molecule) } try container.encodeModels(models, forKey: .list) + try container.encodeIfPresent(indexColor, forKey: .indexColor) } } From 7e175ef581b1497f94fdf9aef10536080c500c68 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Tue, 8 Dec 2020 15:41:50 +0530 Subject: [PATCH 2/5] Updated indexColor datatype to string --- .../VerticalCombinationViews/Lists/NumberedListModel.swift | 4 ++-- .../StringAndMoleculeStack/StringAndMoleculeModel.swift | 6 +++--- .../StringAndMoleculeStack/StringAndMoleculeView.swift | 4 +++- .../VerticalCombinationViews/Lists/UnOrderedListModel.swift | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift index 38ddfd02..4d00d1b1 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift @@ -24,7 +24,7 @@ import Foundation public required init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) - let indexColor = try typeContainer.decodeIfPresent(Color.self, forKey: .indexColor) + let indexColor = try typeContainer.decodeIfPresent(String.self, forKey: .indexColor) let list: [MoleculeModelProtocol] = try typeContainer.decodeModels(codingKey: .list) var models: [MoleculeStackItemModel] = [] for (index, molecule) in list.enumerated() { @@ -38,7 +38,7 @@ import Foundation try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) try container.encode(moleculeName, forKey: .moleculeName) - var indexColor: Color? + var indexColor: String? var models: [MoleculeModelProtocol] = [] for molecule in molecules { let stringAndMoleculeModel: StringAndMoleculeModel = ((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel) diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift index 37d5f580..0bfe9e2b 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift @@ -13,9 +13,9 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { public var backgroundColor: Color? public var string: String public var molecule: MoleculeModelProtocol - public var indexColor: Color? + public var indexColor: String? - public init(string: String, molecule: MoleculeModelProtocol, indexColor: Color?) { + public init(string: String, molecule: MoleculeModelProtocol, indexColor: String?) { self.string = string self.molecule = molecule self.indexColor = indexColor @@ -34,7 +34,7 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) string = try typeContainer.decode(String.self, forKey: .string) molecule = try typeContainer.decodeModel(codingKey: .molecule) - indexColor = try typeContainer.decodeIfPresent(Color.self, forKey: .indexColor) + indexColor = try typeContainer.decodeIfPresent(String.self, forKey: .indexColor) } public func encode(to encoder: Encoder) throws { diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift index b95dd8cd..d8c228ae 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift @@ -84,7 +84,9 @@ open class StringAndMoleculeView: View { super.set(with: model, delegateObject, additionalData) guard let model = model as? StringAndMoleculeModel else { return } label.text = model.string - label.textColor = model.indexColor?.uiColor ?? .black + if let indexColor = model.indexColor { + label.textColor = try? Color(colorString: indexColor)?.uiColor ?? .black + } molecule.set(with: model.molecule, delegateObject, additionalData) } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift index c6e34197..178794d1 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift @@ -29,7 +29,7 @@ import Foundation self.bulletChar = bulletChar } - let indexColor = try typeContainer.decodeIfPresent(Color.self, forKey: .indexColor) + let indexColor = try typeContainer.decodeIfPresent(String.self, forKey: .indexColor) let list: [MoleculeModelProtocol] = try typeContainer.decodeModels(codingKey: .list) var models: [MoleculeStackItemModel] = [] for molecule in list { @@ -44,7 +44,7 @@ import Foundation try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) try container.encode(moleculeName, forKey: .moleculeName) - var indexColor: Color? + var indexColor: String? var models: [MoleculeModelProtocol] = [] for molecule in molecules { let stringAndMoleculeModel: StringAndMoleculeModel = ((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel) From b9267f219fec644168319fe3ff4f88b2ef76cf86 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Tue, 8 Dec 2020 20:18:40 +0530 Subject: [PATCH 3/5] Updated indexColor key to stringColor & data type to Color --- .../Lists/NumberedListModel.swift | 12 ++++++------ .../StringAndMoleculeModel.swift | 12 ++++++------ .../StringAndMoleculeView.swift | 4 +--- .../Lists/UnOrderedListModel.swift | 12 ++++++------ 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift index 4d00d1b1..f40069a6 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift @@ -17,18 +17,18 @@ import Foundation case moleculeName case backgroundColor case list - case indexColor + case stringColor } // Numbered list model comes in the from of list = [MoleculeModelProtocol] public required init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) - let indexColor = try typeContainer.decodeIfPresent(String.self, forKey: .indexColor) + let stringColor = try typeContainer.decodeIfPresent(Color.self, forKey: .stringColor) let list: [MoleculeModelProtocol] = try typeContainer.decodeModels(codingKey: .list) var models: [MoleculeStackItemModel] = [] for (index, molecule) in list.enumerated() { - models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: "\(index+1).", molecule: molecule, indexColor: indexColor))) + models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: "\(index+1).", molecule: molecule, stringColor: stringColor))) } super.init(molecules: models, spacing: 0) } @@ -38,15 +38,15 @@ import Foundation try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) try container.encode(moleculeName, forKey: .moleculeName) - var indexColor: String? + var indexColor: Color? var models: [MoleculeModelProtocol] = [] for molecule in molecules { let stringAndMoleculeModel: StringAndMoleculeModel = ((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel) - indexColor = stringAndMoleculeModel.indexColor + indexColor = stringAndMoleculeModel.stringColor models.append(stringAndMoleculeModel.molecule) } try container.encodeModels(models, forKey: .list) - try container.encodeIfPresent(indexColor, forKey: .indexColor) + try container.encodeIfPresent(indexColor, forKey: .stringColor) } } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift index 0bfe9e2b..c87007f2 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift @@ -13,12 +13,12 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { public var backgroundColor: Color? public var string: String public var molecule: MoleculeModelProtocol - public var indexColor: String? + public var stringColor: Color? - public init(string: String, molecule: MoleculeModelProtocol, indexColor: String?) { + public init(string: String, molecule: MoleculeModelProtocol, stringColor: Color?) { self.string = string self.molecule = molecule - self.indexColor = indexColor + self.stringColor = stringColor } private enum CodingKeys: String, CodingKey { @@ -26,7 +26,7 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { case backgroundColor case string case molecule - case indexColor + case stringColor } public required init(from decoder: Decoder) throws { @@ -34,7 +34,7 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) string = try typeContainer.decode(String.self, forKey: .string) molecule = try typeContainer.decodeModel(codingKey: .molecule) - indexColor = try typeContainer.decodeIfPresent(String.self, forKey: .indexColor) + stringColor = try typeContainer.decodeIfPresent(Color.self, forKey: .stringColor) } public func encode(to encoder: Encoder) throws { @@ -43,6 +43,6 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { try container.encode(string, forKey: .string) try container.encodeModel(molecule, forKey: .molecule) try container.encode(moleculeName, forKey: .moleculeName) - try container.encodeIfPresent(indexColor, forKey: .indexColor) + try container.encodeIfPresent(stringColor, forKey: .stringColor) } } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift index d8c228ae..29f6ccf6 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift @@ -84,9 +84,7 @@ open class StringAndMoleculeView: View { super.set(with: model, delegateObject, additionalData) guard let model = model as? StringAndMoleculeModel else { return } label.text = model.string - if let indexColor = model.indexColor { - label.textColor = try? Color(colorString: indexColor)?.uiColor ?? .black - } + label.textColor = model.stringColor?.uiColor molecule.set(with: model.molecule, delegateObject, additionalData) } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift index 178794d1..067429e3 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift @@ -19,7 +19,7 @@ import Foundation case backgroundColor case list case bulletChar - case indexColor + case stringColor } // Numbered list model comes in the from of list = [MoleculeModelProtocol] @@ -29,11 +29,11 @@ import Foundation self.bulletChar = bulletChar } - let indexColor = try typeContainer.decodeIfPresent(String.self, forKey: .indexColor) + let stringColor = try typeContainer.decodeIfPresent(Color.self, forKey: .stringColor) let list: [MoleculeModelProtocol] = try typeContainer.decodeModels(codingKey: .list) var models: [MoleculeStackItemModel] = [] for molecule in list { - models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: bulletChar, molecule: molecule, indexColor: indexColor))) + models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: bulletChar, molecule: molecule, stringColor: stringColor))) } super.init(molecules: models, spacing: 0) } @@ -44,14 +44,14 @@ import Foundation try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) try container.encode(moleculeName, forKey: .moleculeName) - var indexColor: String? + var stringColor: Color? var models: [MoleculeModelProtocol] = [] for molecule in molecules { let stringAndMoleculeModel: StringAndMoleculeModel = ((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel) - indexColor = stringAndMoleculeModel.indexColor + stringColor = stringAndMoleculeModel.stringColor models.append(stringAndMoleculeModel.molecule) } try container.encodeModels(models, forKey: .list) - try container.encodeIfPresent(indexColor, forKey: .indexColor) + try container.encodeIfPresent(stringColor, forKey: .stringColor) } } From 77b5275a44905b48957a2b932ad6738bd594ea01 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Tue, 8 Dec 2020 21:38:44 +0530 Subject: [PATCH 4/5] Added numberColor, bulletColor & addressed review comments --- .../Lists/NumberedListModel.swift | 14 ++++++-------- .../StringAndMoleculeModel.swift | 6 +++--- .../StringAndMoleculeView.swift | 2 +- .../Lists/UnOrderedListModel.swift | 16 +++++++--------- 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift index f40069a6..7399a756 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift @@ -12,23 +12,24 @@ import Foundation public override class var identifier: String { return "numberedList" } + public var numberColor: Color? private enum CodingKeys: String, CodingKey { case moleculeName case backgroundColor case list - case stringColor + case numberColor } // Numbered list model comes in the from of list = [MoleculeModelProtocol] public required init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) - let stringColor = try typeContainer.decodeIfPresent(Color.self, forKey: .stringColor) + numberColor = try typeContainer.decodeIfPresent(Color.self, forKey: .numberColor) let list: [MoleculeModelProtocol] = try typeContainer.decodeModels(codingKey: .list) var models: [MoleculeStackItemModel] = [] for (index, molecule) in list.enumerated() { - models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: "\(index+1).", molecule: molecule, stringColor: stringColor))) + models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: "\(index+1).", molecule: molecule, stringColor: numberColor ?? Color(uiColor: .mvmBlack)))) } super.init(molecules: models, spacing: 0) } @@ -38,15 +39,12 @@ import Foundation try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) try container.encode(moleculeName, forKey: .moleculeName) - var indexColor: Color? var models: [MoleculeModelProtocol] = [] for molecule in molecules { - let stringAndMoleculeModel: StringAndMoleculeModel = ((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel) - indexColor = stringAndMoleculeModel.stringColor - models.append(stringAndMoleculeModel.molecule) + models.append(((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel).molecule) } try container.encodeModels(models, forKey: .list) - try container.encodeIfPresent(indexColor, forKey: .stringColor) + try container.encodeIfPresent(numberColor, forKey: .numberColor) } } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift index c87007f2..c22a1c17 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift @@ -13,9 +13,9 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { public var backgroundColor: Color? public var string: String public var molecule: MoleculeModelProtocol - public var stringColor: Color? + public var stringColor: Color - public init(string: String, molecule: MoleculeModelProtocol, stringColor: Color?) { + public init(string: String, molecule: MoleculeModelProtocol, stringColor: Color) { self.string = string self.molecule = molecule self.stringColor = stringColor @@ -34,7 +34,7 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) string = try typeContainer.decode(String.self, forKey: .string) molecule = try typeContainer.decodeModel(codingKey: .molecule) - stringColor = try typeContainer.decodeIfPresent(Color.self, forKey: .stringColor) + stringColor = try typeContainer.decode(Color.self, forKey: .stringColor) } public func encode(to encoder: Encoder) throws { diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift index 29f6ccf6..a9fd5da8 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeView.swift @@ -84,7 +84,7 @@ open class StringAndMoleculeView: View { super.set(with: model, delegateObject, additionalData) guard let model = model as? StringAndMoleculeModel else { return } label.text = model.string - label.textColor = model.stringColor?.uiColor + label.textColor = model.stringColor.uiColor molecule.set(with: model.molecule, delegateObject, additionalData) } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift index 067429e3..89cb391f 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift @@ -13,13 +13,14 @@ import Foundation return "unOrderedList" } public var bulletChar = "•" - + public var bulletColor: Color? + private enum CodingKeys: String, CodingKey { case moleculeName case backgroundColor case list case bulletChar - case stringColor + case bulletColor } // Numbered list model comes in the from of list = [MoleculeModelProtocol] @@ -29,11 +30,11 @@ import Foundation self.bulletChar = bulletChar } - let stringColor = try typeContainer.decodeIfPresent(Color.self, forKey: .stringColor) + bulletColor = try typeContainer.decodeIfPresent(Color.self, forKey: .bulletColor) let list: [MoleculeModelProtocol] = try typeContainer.decodeModels(codingKey: .list) var models: [MoleculeStackItemModel] = [] for molecule in list { - models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: bulletChar, molecule: molecule, stringColor: stringColor))) + models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: bulletChar, molecule: molecule, stringColor: bulletColor ?? Color(uiColor: .mvmBlack)))) } super.init(molecules: models, spacing: 0) } @@ -44,14 +45,11 @@ import Foundation try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor) try container.encode(moleculeName, forKey: .moleculeName) - var stringColor: Color? var models: [MoleculeModelProtocol] = [] for molecule in molecules { - let stringAndMoleculeModel: StringAndMoleculeModel = ((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel) - stringColor = stringAndMoleculeModel.stringColor - models.append(stringAndMoleculeModel.molecule) + models.append(((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel).molecule) } try container.encodeModels(models, forKey: .list) - try container.encodeIfPresent(stringColor, forKey: .stringColor) + try container.encodeIfPresent(bulletColor, forKey: .bulletColor) } } From 813eb68aad7555e5d49df50445593b0b365ce457 Mon Sep 17 00:00:00 2001 From: Krishna Kishore Bandaru Date: Wed, 9 Dec 2020 17:25:40 +0530 Subject: [PATCH 5/5] added default color in function param & removed optional properties --- .../Lists/NumberedListModel.swift | 8 ++++---- .../StringAndMoleculeStack/StringAndMoleculeModel.swift | 6 +++--- .../Lists/UnOrderedListModel.swift | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift index 7399a756..874868e5 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/NumberedListModel.swift @@ -12,7 +12,7 @@ import Foundation public override class var identifier: String { return "numberedList" } - public var numberColor: Color? + public var numberColor: Color private enum CodingKeys: String, CodingKey { case moleculeName @@ -25,11 +25,11 @@ import Foundation public required init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) - numberColor = try typeContainer.decodeIfPresent(Color.self, forKey: .numberColor) + numberColor = try typeContainer.decodeIfPresent(Color.self, forKey: .numberColor) ?? Color(uiColor: .mvmBlack) let list: [MoleculeModelProtocol] = try typeContainer.decodeModels(codingKey: .list) var models: [MoleculeStackItemModel] = [] for (index, molecule) in list.enumerated() { - models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: "\(index+1).", molecule: molecule, stringColor: numberColor ?? Color(uiColor: .mvmBlack)))) + models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: "\(index+1).", molecule: molecule, stringColor: numberColor))) } super.init(molecules: models, spacing: 0) } @@ -44,7 +44,7 @@ import Foundation models.append(((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel).molecule) } try container.encodeModels(models, forKey: .list) - try container.encodeIfPresent(numberColor, forKey: .numberColor) + try container.encode(numberColor, forKey: .numberColor) } } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift index c22a1c17..6556796b 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/StringAndMoleculeStack/StringAndMoleculeModel.swift @@ -15,7 +15,7 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { public var molecule: MoleculeModelProtocol public var stringColor: Color - public init(string: String, molecule: MoleculeModelProtocol, stringColor: Color) { + public init(string: String, molecule: MoleculeModelProtocol, stringColor: Color = Color(uiColor: .mvmBlack)) { self.string = string self.molecule = molecule self.stringColor = stringColor @@ -34,7 +34,7 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) string = try typeContainer.decode(String.self, forKey: .string) molecule = try typeContainer.decodeModel(codingKey: .molecule) - stringColor = try typeContainer.decode(Color.self, forKey: .stringColor) + stringColor = try typeContainer.decodeIfPresent(Color.self, forKey: .stringColor) ?? Color(uiColor: .mvmBlack) } public func encode(to encoder: Encoder) throws { @@ -43,6 +43,6 @@ public class StringAndMoleculeModel: MoleculeModelProtocol { try container.encode(string, forKey: .string) try container.encodeModel(molecule, forKey: .molecule) try container.encode(moleculeName, forKey: .moleculeName) - try container.encodeIfPresent(stringColor, forKey: .stringColor) + try container.encode(stringColor, forKey: .stringColor) } } diff --git a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift index 89cb391f..4013f3aa 100644 --- a/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift +++ b/MVMCoreUI/Atomic/Molecules/VerticalCombinationViews/Lists/UnOrderedListModel.swift @@ -13,7 +13,7 @@ import Foundation return "unOrderedList" } public var bulletChar = "•" - public var bulletColor: Color? + public var bulletColor: Color private enum CodingKeys: String, CodingKey { case moleculeName @@ -30,11 +30,11 @@ import Foundation self.bulletChar = bulletChar } - bulletColor = try typeContainer.decodeIfPresent(Color.self, forKey: .bulletColor) + bulletColor = try typeContainer.decodeIfPresent(Color.self, forKey: .bulletColor) ?? Color(uiColor: .mvmBlack) let list: [MoleculeModelProtocol] = try typeContainer.decodeModels(codingKey: .list) var models: [MoleculeStackItemModel] = [] for molecule in list { - models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: bulletChar, molecule: molecule, stringColor: bulletColor ?? Color(uiColor: .mvmBlack)))) + models.append(MoleculeStackItemModel(with: StringAndMoleculeModel(string: bulletChar, molecule: molecule, stringColor: bulletColor))) } super.init(molecules: models, spacing: 0) } @@ -50,6 +50,6 @@ import Foundation models.append(((molecule as! MoleculeStackItemModel).molecule as! StringAndMoleculeModel).molecule) } try container.encodeModels(models, forKey: .list) - try container.encodeIfPresent(bulletColor, forKey: .bulletColor) + try container.encode(bulletColor, forKey: .bulletColor) } }