diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index 3d7bdc49..bed0e280 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ 0198F79F225679880066C936 /* FormValidationProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0198F79E225679870066C936 /* FormValidationProtocol.swift */; }; 0198F7A62256A80B0066C936 /* MFRadioButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 0198F7A02256A80A0066C936 /* MFRadioButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0198F7A82256A80B0066C936 /* MFRadioButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 0198F7A22256A80A0066C936 /* MFRadioButton.m */; }; + 01CA51B5229716F60071A6EE /* Switch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01CA51B4229716F60071A6EE /* Switch.swift */; }; 01DF55E021F8FAA800CC099B /* MFTextFieldListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */; }; 01DF567021FA5AB300CC099B /* TextFieldListFormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */; }; 01E569D3223FFFA500327251 /* ThreeLayerViewController.swift in Headers */ = {isa = PBXBuildFile; fileRef = D2A5146A2214905000345BFB /* ThreeLayerViewController.swift */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -175,6 +176,7 @@ 0198F79E225679870066C936 /* FormValidationProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormValidationProtocol.swift; sourceTree = ""; }; 0198F7A02256A80A0066C936 /* MFRadioButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFRadioButton.h; sourceTree = ""; }; 0198F7A22256A80A0066C936 /* MFRadioButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFRadioButton.m; sourceTree = ""; }; + 01CA51B4229716F60071A6EE /* Switch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Switch.swift; sourceTree = ""; }; 01DF55DF21F8FAA800CC099B /* MFTextFieldListView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MFTextFieldListView.swift; sourceTree = ""; }; 01DF566F21FA5AB300CC099B /* TextFieldListFormViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFieldListFormViewController.swift; sourceTree = ""; }; D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUINavigationController.h; sourceTree = ""; }; @@ -445,6 +447,7 @@ D29770C621F7C4AE00B2F0D0 /* TopLabelsView.m */, D282AACA2243C61700C46919 /* ButtonView.swift */, 016A1070228122180009D605 /* SwitchLineItem.swift */, + 01CA51B4229716F60071A6EE /* Switch.swift */, D20A9A5D2243D3E300ADE781 /* TwoButtonView.swift */, D2A514662213885800345BFB /* StandardHeaderView.swift */, D2A5145C2211D22A00345BFB /* MVMCoreUIMoleculeViewProtocol.h */, @@ -940,6 +943,7 @@ D29770FC21F7C77400B2F0D0 /* MVMCoreUITextFieldView.m in Sources */, D29DF25121E6A177003B2FB9 /* MFDigitTextBox.m in Sources */, DBC4391B224421A0001AB423 /* CaretButton.swift in Sources */, + 01CA51B5229716F60071A6EE /* Switch.swift in Sources */, 0198F7A82256A80B0066C936 /* MFRadioButton.m in Sources */, D29DF13221E6851E003B2FB9 /* MVMCoreUITopAlertBaseView.m in Sources */, D29DF29C21E7ADB9003B2FB9 /* MFProgrammaticTableViewController.m in Sources */, @@ -1101,10 +1105,10 @@ buildSettings = { BITCODE_GENERATION_MODE = bitcode; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = FCMA4QKS77; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -1119,7 +1123,6 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.vzw.MVMCoreUI; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -1132,10 +1135,10 @@ buildSettings = { BITCODE_GENERATION_MODE = bitcode; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = FCMA4QKS77; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -1150,7 +1153,6 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.vzw.MVMCoreUI; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/MVMCoreUI/Molecules/Switch.swift b/MVMCoreUI/Molecules/Switch.swift new file mode 100644 index 00000000..81818ee3 --- /dev/null +++ b/MVMCoreUI/Molecules/Switch.swift @@ -0,0 +1,87 @@ +// +// Switch.swift +// MVMCoreUI +// +// Created by Priya on 5/23/19. +// Copyright © 2019 Verizon Wireless. All rights reserved. +// + +import UIKit + +@objcMembers public class Switch: ViewConstrainingView, FormValidationProtocol{ + public var mvmSwitch = MVMCoreUISwitch() + var isRequired = false + var delegateObject: DelegateObject? + + @objc func switchChanged() { + let delegate = delegateObject as? MVMCoreUIDelegateObject + if let delegate = delegate { + let formValidator = delegate.formValidationProtocol?.formValidatorModel?() + formValidator?.enableByValidation() + } + } + + open override func setupView() { + super.setupView() + mvmSwitch.addTarget(self, action: #selector(Switch.switchChanged), for: .valueChanged) + self.clipsToBounds = true + addSubview(mvmSwitch) + mvmSwitch.translatesAutoresizingMaskIntoConstraints = false + setupContainerConstraints() + } + + public override func updateView(_ size: CGFloat) { + super.updateView(size) + mvmSwitch.updateView(size) + } + + open override func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: DelegateObject?, additionalData: [AnyHashable: Any]?) { + super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData) + isRequired = json?[KeyRequired] as? Bool ?? false + self.delegateObject = delegateObject + if let delegateObject = delegateObject as? MVMCoreUIDelegateObject { + FormValidator.setupValidation(molecule: self, delegate: delegateObject.formValidationProtocol) + } + if let onColorString = json?.optionalStringForKey("onTintColor") { + mvmSwitch.onTintColor = .mfGet(forHex: onColorString) + } + if let offColorString = json?.optionalStringForKey("offTintColor") { + mvmSwitch.offTintColor = .mfGet(forHex: offColorString) + } + if let onKnobColorString = json?.optionalStringForKey("onKnobTintColor") { + mvmSwitch.onKnobTintColor = .mfGet(forHex: onKnobColorString) + } + if let offKnobColorString = json?.optionalStringForKey("offKnobTintColor") { + mvmSwitch.offKnobTintColor = .mfGet(forHex: offKnobColorString) + } + mvmSwitch.setState(json?.optionalBoolForKey("state") ?? false, animated: true) + } + + func setupContainerConstraints() { + mvmSwitch.topAnchor.constraint(equalTo: topAnchor).isActive = true + mvmSwitch.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true + mvmSwitch.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true + mvmSwitch.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true + } + + public func isValidField() -> Bool { + return (isRequired == false) ? true : mvmSwitch.isOn + } + + public func formFieldName() -> String? { + return json?.optionalStringForKey(KeyFieldKey) + } + + public func formFieldValue() -> Any? { + return mvmSwitch.isOn + } + + public override func needsToBeConstrained() -> Bool { + return true + } + + public override func moleculeAlignment() -> UIStackView.Alignment { + return UIStackView.Alignment.leading + } +} + diff --git a/MVMCoreUI/Molecules/SwitchLineItem.swift b/MVMCoreUI/Molecules/SwitchLineItem.swift index cc4d076f..703f5878 100644 --- a/MVMCoreUI/Molecules/SwitchLineItem.swift +++ b/MVMCoreUI/Molecules/SwitchLineItem.swift @@ -8,8 +8,8 @@ import UIKit -@objcMembers public class Switch: ViewConstrainingView, FormValidationProtocol{ - public var mvmSwitch = MVMCoreUISwitch() +@objcMembers public class SwitchLineItem: ViewConstrainingView, FormValidationProtocol{ + public var mvmSwitch = Switch() public var label = Label() public var leftContainerView = UIView() public var mfTextButton = MFTextButton(nil, constrainHeight: true, forWidth: 0) @@ -26,7 +26,7 @@ import UIKit open override func setupView() { super.setupView() - mvmSwitch.addTarget(self, action: #selector(Switch.switchChanged), for: .valueChanged) + // mvmSwitch.addTarget(self, action: #selector(SwitchLineItem.switchChanged), for: .valueChanged) leftContainerView.addSubview(label) leftContainerView.addSubview(mfTextButton) addSubview(leftContainerView) @@ -50,24 +50,25 @@ import UIKit super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData) isRequired = json?[KeyRequired] as? Bool ?? false self.delegateObject = delegateObject + mvmSwitch.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData) label.setWithJSON(json?.optionalDictionaryForKey("label"), delegateObject: delegateObject, additionalData: additionalData) mfTextButton.setWithJSON(json?.optionalDictionaryForKey("textButton"), delegateObject: delegateObject, additionalData: additionalData) - if let delegateObject = delegateObject as? MVMCoreUIDelegateObject { - FormValidator.setupValidation(molecule: self, delegate: delegateObject.formValidationProtocol) - } - if let onColorString = json?.optionalStringForKey("onTintColor") { - mvmSwitch.onTintColor = .mfGet(forHex: onColorString) - } - if let offColorString = json?.optionalStringForKey("offTintColor") { - mvmSwitch.offTintColor = .mfGet(forHex: offColorString) - } - if let onKnobColorString = json?.optionalStringForKey("onKnobTintColor") { - mvmSwitch.onKnobTintColor = .mfGet(forHex: onKnobColorString) - } - if let offKnobColorString = json?.optionalStringForKey("offKnobTintColor") { - mvmSwitch.offKnobTintColor = .mfGet(forHex: offKnobColorString) - } - mvmSwitch.setState(json?.optionalBoolForKey("state") ?? false, animated: true) +// if let delegateObject = delegateObject as? MVMCoreUIDelegateObject { +// FormValidator.setupValidation(molecule: self, delegate: delegateObject.formValidationProtocol) +// } +// if let onColorString = json?.optionalStringForKey("onTintColor") { +// mvmSwitch.onTintColor = .mfGet(forHex: onColorString) +// } +// if let offColorString = json?.optionalStringForKey("offTintColor") { +// mvmSwitch.offTintColor = .mfGet(forHex: offColorString) +// } +// if let onKnobColorString = json?.optionalStringForKey("onKnobTintColor") { +// mvmSwitch.onKnobTintColor = .mfGet(forHex: onKnobColorString) +// } +// if let offKnobColorString = json?.optionalStringForKey("offKnobTintColor") { +// mvmSwitch.offKnobTintColor = .mfGet(forHex: offKnobColorString) +// } +// mvmSwitch.setState(json?.optionalBoolForKey("state") ?? false, animated: true) // if left container no width if (label.text?.count ?? 0) <= 0 && (mfTextButton.titleLabel?.text?.count ?? 0) <= 0 { mvmSwitch.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 0).isActive = true @@ -129,17 +130,17 @@ import UIKit } - public func isValidField() -> Bool { - return (isRequired == false) ? true : mvmSwitch.isOn - } +// public func isValidField() -> Bool { +// return (isRequired == false) ? true : mvmSwitch.isOn +// } public func formFieldName() -> String? { return json?.optionalStringForKey(KeyFieldKey) } - - public func formFieldValue() -> Any? { - return mvmSwitch.isOn - } +// +// public func formFieldValue() -> Any? { +// return mvmSwitch.isOn +// } public override func needsToBeConstrained() -> Bool { return true diff --git a/MVMCoreUI/OtherHandlers/MVMCoreUIMoleculeMappingObject.m b/MVMCoreUI/OtherHandlers/MVMCoreUIMoleculeMappingObject.m index 391dd561..0cc21b30 100644 --- a/MVMCoreUI/OtherHandlers/MVMCoreUIMoleculeMappingObject.m +++ b/MVMCoreUI/OtherHandlers/MVMCoreUIMoleculeMappingObject.m @@ -34,6 +34,7 @@ @"caretButton": CaretButton.class, @"textField" : MFTextField.class, @"checkbox" : MVMCoreUICheckBox.class, + @"switchLineItem" : SwitchLineItem.class, @"switch" : Switch.class } mutableCopy]; });