diff options
26 files changed, 611 insertions, 1009 deletions
diff --git a/Example Apps/Example ObjC/Base.lproj/ConnectionIAPTableViewController.storyboard b/Example Apps/Example ObjC/Base.lproj/ConnectionIAPTableViewController.storyboard deleted file mode 100644 index ec5eba61f..000000000 --- a/Example Apps/Example ObjC/Base.lproj/ConnectionIAPTableViewController.storyboard +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15400" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="J12-ul-Tx1"> - <device id="retina4_7" orientation="portrait" appearance="light"/> - <dependencies> - <deployment identifier="iOS"/> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15404"/> - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> - </dependencies> - <scenes> - <!--ConnectionIAP Table View Controller--> - <scene sceneID="kGx-OZ-JDF"> - <objects> - <tableViewController id="J12-ul-Tx1" customClass="ConnectionIAPTableViewController" sceneMemberID="viewController"> - <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="MzB-GZ-Ook"> - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> - <sections> - <tableViewSection id="Qz3-D9-j37"> - <cells> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="2sd-U1-9xV"> - <rect key="frame" x="0.0" y="10" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="2sd-U1-9xV" id="EhZ-2E-WQ5"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rjq-vZ-OjB"> - <rect key="frame" x="16" y="0.0" width="343" height="44"/> - <fontDescription key="fontDescription" type="system" pointSize="23"/> - <state key="normal" title="Connect"> - <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> - </state> - <connections> - <action selector="connectButtonWasPressed:" destination="J12-ul-Tx1" eventType="touchUpInside" id="95T-fc-kXs"/> - </connections> - </button> - </subviews> - <constraints> - <constraint firstItem="rjq-vZ-OjB" firstAttribute="top" secondItem="EhZ-2E-WQ5" secondAttribute="top" id="8GY-v0-41a"/> - <constraint firstAttribute="bottom" secondItem="rjq-vZ-OjB" secondAttribute="bottom" id="FKB-JG-o5G"/> - <constraint firstAttribute="trailingMargin" secondItem="rjq-vZ-OjB" secondAttribute="trailing" id="ISQ-6b-S34"/> - <constraint firstItem="rjq-vZ-OjB" firstAttribute="leading" secondItem="EhZ-2E-WQ5" secondAttribute="leadingMargin" id="PiJ-h3-NOR"/> - </constraints> - </tableViewCellContentView> - </tableViewCell> - </cells> - </tableViewSection> - </sections> - <connections> - <outlet property="dataSource" destination="J12-ul-Tx1" id="l6L-3i-WxG"/> - <outlet property="delegate" destination="J12-ul-Tx1" id="b7F-oB-vbR"/> - </connections> - </tableView> - <connections> - <outlet property="connectButton" destination="rjq-vZ-OjB" id="Sz8-r7-ddN"/> - <outlet property="connectTableViewCell" destination="2sd-U1-9xV" id="UME-sB-vsD"/> - </connections> - </tableViewController> - <placeholder placeholderIdentifier="IBFirstResponder" id="N5a-E0-fOt" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="898" y="630"/> - </scene> - </scenes> -</document> diff --git a/Example Apps/Example ObjC/Base.lproj/ConnectionTCPTableViewController.storyboard b/Example Apps/Example ObjC/Base.lproj/ConnectionTCPTableViewController.storyboard deleted file mode 100644 index e1b51b744..000000000 --- a/Example Apps/Example ObjC/Base.lproj/ConnectionTCPTableViewController.storyboard +++ /dev/null @@ -1,128 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15400" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="l5Q-ZP-1BO"> - <device id="retina4_7" orientation="portrait" appearance="light"/> - <dependencies> - <deployment identifier="iOS"/> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15404"/> - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> - </dependencies> - <scenes> - <!--ConnectionTCP Table View Controller--> - <scene sceneID="geJ-kX-PTm"> - <objects> - <tableViewController id="l5Q-ZP-1BO" customClass="ConnectionTCPTableViewController" sceneMemberID="viewController"> - <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="7ZH-AV-Zyf"> - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> - <sections> - <tableViewSection headerTitle="TCP Server" id="bF6-yi-Ial"> - <cells> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="pbJ-oz-jNt"> - <rect key="frame" x="0.0" y="55.5" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="pbJ-oz-jNt" id="B7X-yY-lwJ"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="IP Address" clearsOnBeginEditing="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="xqM-s4-9RV"> - <rect key="frame" x="16" y="0.0" width="343" height="44"/> - <constraints> - <constraint firstAttribute="height" constant="44" id="5Pw-mh-x83"/> - </constraints> - <fontDescription key="fontDescription" type="system" pointSize="17"/> - <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="URL"/> - </textField> - </subviews> - <constraints> - <constraint firstAttribute="centerY" secondItem="xqM-s4-9RV" secondAttribute="centerY" id="PcX-lz-oQo"/> - <constraint firstItem="xqM-s4-9RV" firstAttribute="trailing" secondItem="B7X-yY-lwJ" secondAttribute="trailingMargin" id="YF9-Uh-Yqm"/> - <constraint firstItem="xqM-s4-9RV" firstAttribute="leading" secondItem="B7X-yY-lwJ" secondAttribute="leadingMargin" id="pBt-SK-tuZ"/> - </constraints> - </tableViewCellContentView> - </tableViewCell> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="C5b-fS-v3d"> - <rect key="frame" x="0.0" y="99.5" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="C5b-fS-v3d" id="ZD4-xA-og5"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Port" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="hsI-ld-8xY"> - <rect key="frame" x="16" y="0.0" width="343" height="44"/> - <constraints> - <constraint firstAttribute="height" constant="44" id="FpG-5e-MHT"/> - </constraints> - <fontDescription key="fontDescription" type="system" pointSize="17"/> - <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="numberPad"/> - </textField> - </subviews> - <constraints> - <constraint firstAttribute="centerY" secondItem="hsI-ld-8xY" secondAttribute="centerY" id="X1e-g3-RJN"/> - <constraint firstItem="hsI-ld-8xY" firstAttribute="leading" secondItem="ZD4-xA-og5" secondAttribute="leadingMargin" id="oeB-5U-tOl"/> - <constraint firstItem="hsI-ld-8xY" firstAttribute="trailing" secondItem="ZD4-xA-og5" secondAttribute="trailingMargin" id="wXl-bK-7vU"/> - </constraints> - </tableViewCellContentView> - </tableViewCell> - </cells> - </tableViewSection> - <tableViewSection headerTitle="" id="rgl-Lm-uDH"> - <cells> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="ybX-Eh-Hbx"> - <rect key="frame" x="0.0" y="175.5" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ybX-Eh-Hbx" id="uI9-fK-205"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t37-4W-6F4"> - <rect key="frame" x="16" y="0.0" width="343" height="44"/> - <fontDescription key="fontDescription" type="system" pointSize="23"/> - <state key="normal" title="Connect"> - <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> - </state> - <connections> - <action selector="connectButtonWasPressed:" destination="l5Q-ZP-1BO" eventType="touchUpInside" id="tgb-10-M4m"/> - </connections> - </button> - </subviews> - <constraints> - <constraint firstItem="t37-4W-6F4" firstAttribute="top" secondItem="uI9-fK-205" secondAttribute="top" id="IfU-4k-EXx"/> - <constraint firstItem="t37-4W-6F4" firstAttribute="leading" secondItem="uI9-fK-205" secondAttribute="leadingMargin" id="cc3-uk-9fL"/> - <constraint firstAttribute="bottom" secondItem="t37-4W-6F4" secondAttribute="bottom" id="hnD-4g-xvT"/> - <constraint firstAttribute="trailingMargin" secondItem="t37-4W-6F4" secondAttribute="trailing" id="j4p-fi-0LP"/> - </constraints> - </tableViewCellContentView> - </tableViewCell> - </cells> - </tableViewSection> - </sections> - <connections> - <outlet property="dataSource" destination="l5Q-ZP-1BO" id="kIY-aI-9y3"/> - <outlet property="delegate" destination="l5Q-ZP-1BO" id="nhW-OL-xIC"/> - </connections> - </tableView> - <navigationItem key="navigationItem" id="JNL-hN-wDm"> - <nil key="title"/> - <segmentedControl key="titleView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="rXi-EW-KGG"> - <rect key="frame" x="180" y="7" width="240" height="30"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <segments> - <segment title="TCP Debug"/> - <segment title="iAP"/> - </segments> - </segmentedControl> - </navigationItem> - <connections> - <outlet property="connectButton" destination="t37-4W-6F4" id="f6v-Q4-ggs"/> - <outlet property="connectTableViewCell" destination="ybX-Eh-Hbx" id="hyh-CW-oXx"/> - <outlet property="ipAddressTextField" destination="xqM-s4-9RV" id="daz-uN-Rxa"/> - <outlet property="portTextField" destination="hsI-ld-8xY" id="5pF-XP-Xh3"/> - </connections> - </tableViewController> - <placeholder placeholderIdentifier="IBFirstResponder" id="0fm-wO-kFd" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="688" y="499"/> - </scene> - </scenes> -</document> diff --git a/Example Apps/Example ObjC/Base.lproj/Main.storyboard b/Example Apps/Example ObjC/Base.lproj/Main.storyboard index 8097692ff..d8339f5cb 100644 --- a/Example Apps/Example ObjC/Base.lproj/Main.storyboard +++ b/Example Apps/Example ObjC/Base.lproj/Main.storyboard @@ -1,64 +1,238 @@ <?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15400" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="mM3-m6-I5t"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="cVb-pX-Ls9"> <device id="retina4_7" orientation="portrait" appearance="light"/> <dependencies> <deployment identifier="iOS"/> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15404"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> <scenes> - <!--Navigation Controller--> - <scene sceneID="Tfy-dw-box"> + <!--Connection Tab Bar Controller--> + <scene sceneID="Gr3-mM-wyL"> <objects> - <navigationController automaticallyAdjustsScrollViewInsets="NO" id="mM3-m6-I5t" sceneMemberID="viewController"> + <tabBarController id="cVb-pX-Ls9" customClass="ConnectionTabBarController" sceneMemberID="viewController"> + <tabBar key="tabBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="eLA-bh-hG8"> + <rect key="frame" x="0.0" y="0.0" width="414" height="49"/> + <autoresizingMask key="autoresizingMask"/> + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </tabBar> + <connections> + <segue destination="dgV-HC-hDe" kind="relationship" relationship="viewControllers" id="q22-Sb-3o4"/> + <segue destination="8vf-eo-JUi" kind="relationship" relationship="viewControllers" id="FFB-PE-HX1"/> + </connections> + </tabBarController> + <placeholder placeholderIdentifier="IBFirstResponder" id="x0V-el-PXQ" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="65" y="547"/> + </scene> + <!--ConnectionIAP Table View Controller--> + <scene sceneID="pfi-BU-jC5"> + <objects> + <tableViewController id="j3O-gM-kPh" customClass="ConnectionIAPTableViewController" sceneMemberID="viewController"> + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="nK2-Le-mQF"> + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <color key="backgroundColor" systemColor="groupTableViewBackgroundColor"/> + <sections> + <tableViewSection id="58k-19-nbu"> + <cells> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="gMR-Wm-MEe"> + <rect key="frame" x="0.0" y="10" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="gMR-Wm-MEe" id="cwq-6n-iHz"> + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j3z-U1-Uqd"> + <rect key="frame" x="16" y="0.0" width="343" height="44"/> + <fontDescription key="fontDescription" type="system" pointSize="23"/> + <state key="normal" title="Connect"> + <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </state> + <connections> + <action selector="connectButtonWasPressed:" destination="j3O-gM-kPh" eventType="touchUpInside" id="f9B-xj-OdO"/> + </connections> + </button> + </subviews> + <constraints> + <constraint firstItem="j3z-U1-Uqd" firstAttribute="top" secondItem="cwq-6n-iHz" secondAttribute="top" id="47a-Zn-veA"/> + <constraint firstItem="j3z-U1-Uqd" firstAttribute="leading" secondItem="cwq-6n-iHz" secondAttribute="leadingMargin" id="6CQ-wt-6sH"/> + <constraint firstAttribute="trailingMargin" secondItem="j3z-U1-Uqd" secondAttribute="trailing" id="wcW-8C-DO2"/> + <constraint firstAttribute="bottom" secondItem="j3z-U1-Uqd" secondAttribute="bottom" id="xfA-tS-iv0"/> + </constraints> + </tableViewCellContentView> + </tableViewCell> + </cells> + </tableViewSection> + </sections> + <connections> + <outlet property="dataSource" destination="j3O-gM-kPh" id="ZgX-Du-Frj"/> + <outlet property="delegate" destination="j3O-gM-kPh" id="dSq-pP-sKs"/> + </connections> + </tableView> + <navigationItem key="navigationItem" id="sH2-qP-QUi"/> + <connections> + <outlet property="connectButton" destination="j3z-U1-Uqd" id="BZ7-9U-lNO"/> + <outlet property="connectTableViewCell" destination="gMR-Wm-MEe" id="Wr1-iE-mfy"/> + </connections> + </tableViewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="wMG-AM-dTq" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="1703" y="927"/> + </scene> + <!--iAP--> + <scene sceneID="yPB-aB-hYg"> + <objects> + <navigationController automaticallyAdjustsScrollViewInsets="NO" id="8vf-eo-JUi" sceneMemberID="viewController"> + <tabBarItem key="tabBarItem" title="iAP" image="car" catalog="system" id="fHY-Z2-s8b"/> <toolbarItems/> - <navigationBar key="navigationBar" contentMode="scaleToFill" id="eMh-g9-C8T"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> + <navigationBar key="navigationBar" contentMode="scaleToFill" largeTitles="YES" id="xC4-Pp-tH2"> + <rect key="frame" x="0.0" y="0.0" width="375" height="96"/> <autoresizingMask key="autoresizingMask"/> </navigationBar> <nil name="viewControllers"/> <connections> - <segue destination="cXb-Co-0MA" kind="relationship" relationship="rootViewController" id="tbn-vJ-YS8"/> + <segue destination="j3O-gM-kPh" kind="relationship" relationship="rootViewController" id="lnA-QL-KSx"/> </connections> </navigationController> - <placeholder placeholderIdentifier="IBFirstResponder" id="eXu-Zc-53v" userLabel="First Responder" sceneMemberID="firstResponder"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="GF4-rg-NH1" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="896" y="527"/> + <point key="canvasLocation" x="984.79999999999995" y="926.98650674662679"/> </scene> - <!--Connection Container View Controller--> - <scene sceneID="vG9-Hv-OW2"> + <!--ConnectionTCP Table View Controller--> + <scene sceneID="yx6-3n-U3u"> <objects> - <viewController id="cXb-Co-0MA" customClass="ConnectionContainerViewController" sceneMemberID="viewController"> - <layoutGuides> - <viewControllerLayoutGuide type="top" id="bfp-O0-sxl"/> - <viewControllerLayoutGuide type="bottom" id="fet-m3-F1O"/> - </layoutGuides> - <view key="view" contentMode="scaleToFill" id="jkb-9Y-Hwh"> + <tableViewController id="1Fv-Kz-xtS" customClass="ConnectionTCPTableViewController" sceneMemberID="viewController"> + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="UTK-Fg-VBI"> <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> - </view> - <navigationItem key="navigationItem" id="t1a-s2-nn6"> + <color key="backgroundColor" systemColor="groupTableViewBackgroundColor"/> + <sections> + <tableViewSection headerTitle="TCP Server" id="g4H-Th-Ib7"> + <cells> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="Bob-nW-ksw"> + <rect key="frame" x="0.0" y="32" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Bob-nW-ksw" id="sFi-G5-84d"> + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="IP Address" clearsOnBeginEditing="YES" minimumFontSize="17" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="fCb-gB-HDY"> + <rect key="frame" x="16" y="0.0" width="343" height="44"/> + <constraints> + <constraint firstAttribute="height" constant="44" id="kSa-Ff-ucg"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="URL"/> + </textField> + </subviews> + <constraints> + <constraint firstItem="fCb-gB-HDY" firstAttribute="leading" secondItem="sFi-G5-84d" secondAttribute="leadingMargin" id="WSR-91-qNM"/> + <constraint firstAttribute="centerY" secondItem="fCb-gB-HDY" secondAttribute="centerY" id="Zgh-CX-HkN"/> + <constraint firstItem="fCb-gB-HDY" firstAttribute="trailing" secondItem="sFi-G5-84d" secondAttribute="trailingMargin" id="sOd-7M-RJP"/> + </constraints> + </tableViewCellContentView> + </tableViewCell> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="e8E-w6-ADp"> + <rect key="frame" x="0.0" y="76" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="e8E-w6-ADp" id="w5S-O2-EX3"> + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Port" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="DTy-Ue-hZ4"> + <rect key="frame" x="16" y="0.0" width="343" height="44"/> + <constraints> + <constraint firstAttribute="height" constant="44" id="Uqa-cU-CHd"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="numberPad"/> + </textField> + </subviews> + <constraints> + <constraint firstItem="DTy-Ue-hZ4" firstAttribute="leading" secondItem="w5S-O2-EX3" secondAttribute="leadingMargin" id="GMn-sS-O0i"/> + <constraint firstAttribute="centerY" secondItem="DTy-Ue-hZ4" secondAttribute="centerY" id="VBc-V3-9MW"/> + <constraint firstItem="DTy-Ue-hZ4" firstAttribute="trailing" secondItem="w5S-O2-EX3" secondAttribute="trailingMargin" id="sRh-fO-Bu0"/> + </constraints> + </tableViewCellContentView> + </tableViewCell> + </cells> + </tableViewSection> + <tableViewSection headerTitle="" id="H3B-ZR-Hts"> + <cells> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="Afr-pc-H4S"> + <rect key="frame" x="0.0" y="147.5" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Afr-pc-H4S" id="CuH-mB-abh"> + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GMb-ms-Ezz"> + <rect key="frame" x="16" y="0.0" width="343" height="44"/> + <fontDescription key="fontDescription" type="system" pointSize="23"/> + <state key="normal" title="Connect"> + <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </state> + <connections> + <action selector="connectButtonWasPressed:" destination="1Fv-Kz-xtS" eventType="touchUpInside" id="3em-mS-uS3"/> + </connections> + </button> + </subviews> + <constraints> + <constraint firstAttribute="bottom" secondItem="GMb-ms-Ezz" secondAttribute="bottom" id="5T8-7I-Ryl"/> + <constraint firstItem="GMb-ms-Ezz" firstAttribute="top" secondItem="CuH-mB-abh" secondAttribute="top" id="TgD-UM-BIE"/> + <constraint firstItem="GMb-ms-Ezz" firstAttribute="leading" secondItem="CuH-mB-abh" secondAttribute="leadingMargin" id="k3V-Yz-mT2"/> + <constraint firstAttribute="trailingMargin" secondItem="GMb-ms-Ezz" secondAttribute="trailing" id="xIH-18-F5y"/> + </constraints> + </tableViewCellContentView> + </tableViewCell> + </cells> + </tableViewSection> + </sections> + <connections> + <outlet property="dataSource" destination="1Fv-Kz-xtS" id="a1J-VB-eG9"/> + <outlet property="delegate" destination="1Fv-Kz-xtS" id="5nf-D2-Y2G"/> + </connections> + </tableView> + <navigationItem key="navigationItem" id="yyD-H2-RJ8"> <nil key="title"/> - <segmentedControl key="titleView" opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="RYa-fE-Qek"> - <rect key="frame" x="67.5" y="6" width="240" height="32"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <segments> - <segment title="TCP Debug"/> - <segment title="iAP"/> - </segments> - <connections> - <action selector="connectionTypeSegmentedControlSelectedIndexDidChange:" destination="cXb-Co-0MA" eventType="valueChanged" id="i3j-Ux-1be"/> - </connections> - </segmentedControl> </navigationItem> <connections> - <outlet property="connectionTypeSegmentedControl" destination="RYa-fE-Qek" id="uda-9c-u0v"/> + <outlet property="connectButton" destination="GMb-ms-Ezz" id="7s3-Sk-fuh"/> + <outlet property="connectTableViewCell" destination="Afr-pc-H4S" id="WLC-c3-4ee"/> + <outlet property="ipAddressTextField" destination="fCb-gB-HDY" id="ncs-pN-e1m"/> + <outlet property="portTextField" destination="DTy-Ue-hZ4" id="7yx-Ke-mKZ"/> </connections> - </viewController> - <placeholder placeholderIdentifier="IBFirstResponder" id="ETn-uq-A6g" userLabel="First Responder" sceneMemberID="firstResponder"/> + </tableViewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="S9j-DZ-c95" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="1702" y="257"/> + </scene> + <!--TCP--> + <scene sceneID="bqP-uY-fAM"> + <objects> + <navigationController automaticallyAdjustsScrollViewInsets="NO" id="dgV-HC-hDe" sceneMemberID="viewController"> + <tabBarItem key="tabBarItem" title="TCP" image="dot.radiowaves.right" catalog="system" id="I9b-qZ-UOd"/> + <toolbarItems/> + <navigationBar key="navigationBar" contentMode="scaleToFill" largeTitles="YES" id="nMB-2t-t58"> + <rect key="frame" x="0.0" y="0.0" width="375" height="96"/> + <autoresizingMask key="autoresizingMask"/> + </navigationBar> + <nil name="viewControllers"/> + <connections> + <segue destination="1Fv-Kz-xtS" kind="relationship" relationship="rootViewController" id="iY0-sx-yuu"/> + </connections> + </navigationController> + <placeholder placeholderIdentifier="IBFirstResponder" id="Q34-E8-7pr" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1576" y="527"/> + <point key="canvasLocation" x="984.79999999999995" y="256.82158920539734"/> </scene> </scenes> + <resources> + <image name="car" catalog="system" width="128" height="93"/> + <image name="dot.radiowaves.right" catalog="system" width="117" height="128"/> + <systemColor name="groupTableViewBackgroundColor"> + <color red="0.94901960780000005" green="0.94901960780000005" blue="0.96862745100000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </systemColor> + </resources> </document> diff --git a/Example Apps/Example ObjC/ConnectionAnimatedTransition.h b/Example Apps/Example ObjC/ConnectionAnimatedTransition.h deleted file mode 100644 index a09f1fa77..000000000 --- a/Example Apps/Example ObjC/ConnectionAnimatedTransition.h +++ /dev/null @@ -1,12 +0,0 @@ -// -// ConnectionAnimatedTransition.h -// SmartDeviceLink-iOS - -#import <Foundation/Foundation.h> - -#import <UIKit/UIKit.h> - - -@interface ConnectionAnimatedTransition : NSObject <UIViewControllerAnimatedTransitioning> - -@end diff --git a/Example Apps/Example ObjC/ConnectionAnimatedTransition.m b/Example Apps/Example ObjC/ConnectionAnimatedTransition.m deleted file mode 100644 index 1a4d4d141..000000000 --- a/Example Apps/Example ObjC/ConnectionAnimatedTransition.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// ConnectionAnimatedTransition.m -// SmartDeviceLink-iOS - -#import "ConnectionAnimatedTransition.h" - - -static CGFloat const ChildViewPadding = 16; -static CGFloat const DampingFactor = 0.8; -static CGFloat const InitialSpringVelocity = 0.6; - - -@implementation ConnectionAnimatedTransition - -- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext { - return 0.4; -} - -- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext { - UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; - UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; - - BOOL goingRight = ([transitionContext initialFrameForViewController:toViewController].origin.x < [transitionContext finalFrameForViewController:toViewController].origin.x); - CGFloat travelDistance = [transitionContext containerView].bounds.size.width + ChildViewPadding; - CGAffineTransform travel = CGAffineTransformMakeTranslation((goingRight ? travelDistance : -travelDistance), 0); - - [[transitionContext containerView] addSubview:toViewController.view]; - toViewController.view.alpha = 0; - toViewController.view.transform = CGAffineTransformInvert(travel); - - [UIView animateWithDuration:[self transitionDuration:transitionContext] delay:0 usingSpringWithDamping:DampingFactor initialSpringVelocity:InitialSpringVelocity options:kNilOptions animations:^{ - fromViewController.view.transform = travel; - fromViewController.view.alpha = 0; - - toViewController.view.transform = [transitionContext targetTransform]; - toViewController.view.alpha = 1; - } completion:^(BOOL finished) { - fromViewController.view.transform = [transitionContext targetTransform]; - [transitionContext completeTransition:![transitionContext transitionWasCancelled]]; - }]; -} - -@end diff --git a/Example Apps/Example ObjC/ConnectionContainerViewController.h b/Example Apps/Example ObjC/ConnectionContainerViewController.h deleted file mode 100644 index 4e2d1ea32..000000000 --- a/Example Apps/Example ObjC/ConnectionContainerViewController.h +++ /dev/null @@ -1,9 +0,0 @@ -// -// ConnectionContainerViewController.h -// SmartDeviceLink-iOS - -#import <UIKit/UIKit.h> - -@interface ConnectionContainerViewController : UIViewController - -@end diff --git a/Example Apps/Example ObjC/ConnectionContainerViewController.m b/Example Apps/Example ObjC/ConnectionContainerViewController.m deleted file mode 100644 index 6075ccc8b..000000000 --- a/Example Apps/Example ObjC/ConnectionContainerViewController.m +++ /dev/null @@ -1,122 +0,0 @@ -// -// ConnectionContainerViewController.m -// SmartDeviceLink-iOS - -#import "ConnectionContainerViewController.h" - -#import "ConnectionTCPTableViewController.h" -#import "ConnectionIAPTableViewController.h" -#import "ConnectionTransitionContext.h" -#import "ConnectionAnimatedTransition.h" -#import "Preferences.h" - - -@interface ConnectionContainerViewController () - -@property (weak, nonatomic) IBOutlet UISegmentedControl *connectionTypeSegmentedControl; -@property (strong, nonatomic) NSArray<UIViewController *> *viewControllers; -@property (strong, nonatomic) UIViewController *currentViewController; - -@property (strong, nonatomic) UIPanGestureRecognizer *panGestureRecognizer; - -@end - - - -@implementation ConnectionContainerViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - - self.navigationController.navigationBar.translucent = NO; - - // Setup the child VCs - UIStoryboard *tcpControllerStoryboard = [UIStoryboard storyboardWithName:@"ConnectionTCPTableViewController" bundle:[NSBundle mainBundle]]; - UIStoryboard *iapControllerStoryboard = [UIStoryboard storyboardWithName:@"ConnectionIAPTableViewController" bundle:[NSBundle mainBundle]]; - ConnectionTCPTableViewController *tcpController = [tcpControllerStoryboard instantiateInitialViewController]; - ConnectionIAPTableViewController *iapController = [iapControllerStoryboard instantiateInitialViewController]; - self.viewControllers = @[tcpController, iapController]; - - // Setup the pan gesture - self.panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognizerDidFire:)]; - [self.view addGestureRecognizer:self.panGestureRecognizer]; - - // Setup initial view controller state - self.connectionTypeSegmentedControl.selectedSegmentIndex = [Preferences sharedPreferences].lastUsedSegment; - [self loadInitialChildViewController]; -} - -- (void)loadInitialChildViewController { - // On the initial load, we just add the new child VC with no animation - UIViewController *initialViewController = self.viewControllers[[Preferences sharedPreferences].lastUsedSegment]; - [self addChildViewController:initialViewController]; - [self.view addSubview:initialViewController.view]; - [initialViewController didMoveToParentViewController:self]; - - self.currentViewController = initialViewController; -} - - -#pragma mark - IBActions - -- (IBAction)connectionTypeSegmentedControlSelectedIndexDidChange:(UISegmentedControl *)sender { - [Preferences sharedPreferences].lastUsedSegment = sender.selectedSegmentIndex; - [self transitionToViewControllerForSelectedIndex:sender.selectedSegmentIndex]; -} - - -#pragma mark - Gestures - -- (void)panGestureRecognizerDidFire:(UIPanGestureRecognizer *)gesture { - BOOL goingRight = ([gesture velocityInView:gesture.view].x < 0.0f); - - NSUInteger currentSegmentIndex = self.connectionTypeSegmentedControl.selectedSegmentIndex; - if (goingRight && (currentSegmentIndex != self.viewControllers.count - 1)) { - // If we're swiping left (going right) and current segment is not all the way to the right - NSUInteger nextIndex = currentSegmentIndex + 1; - self.connectionTypeSegmentedControl.selectedSegmentIndex = nextIndex; - [self transitionToViewControllerForSelectedIndex:nextIndex]; - } else if (!goingRight && (currentSegmentIndex > 0)) { - // If we're swiping right (going left) and the current segment is not all the way to the left - NSUInteger nextIndex = currentSegmentIndex - 1; - self.connectionTypeSegmentedControl.selectedSegmentIndex = nextIndex; - [self transitionToViewControllerForSelectedIndex:nextIndex]; - } -} - - -#pragma mark - Private API - -- (void)transitionToViewControllerForSelectedIndex:(NSInteger)selectedIndex { - UIViewController *toViewController = self.viewControllers[selectedIndex]; - - if (toViewController == nil || toViewController == self.currentViewController) { - return; - } - - [self.currentViewController willMoveToParentViewController:nil]; - [self addChildViewController:toViewController]; - - id<UIViewControllerAnimatedTransitioning> animator = [[ConnectionAnimatedTransition alloc] init]; - NSUInteger fromIndex = [self.viewControllers indexOfObject:self.currentViewController]; - - ConnectionTransitionContext *transitionContext = [[ConnectionTransitionContext alloc] initWithFromViewController:self.currentViewController toViewController:toViewController direction:((selectedIndex > fromIndex) ? ConnectionTransitionDirectionRight : ConnectionTransitionDirectionLeft) transitionComplete:^(BOOL didComplete) { - [self.currentViewController.view removeFromSuperview]; - [self.currentViewController removeFromParentViewController]; - [toViewController didMoveToParentViewController:self]; - - if ([animator respondsToSelector:@selector(animationEnded:)]) { - [animator animationEnded:didComplete]; - } - - self.connectionTypeSegmentedControl.userInteractionEnabled = YES; - self.currentViewController = toViewController; - }]; - transitionContext.animated = YES; - transitionContext.interactive = NO; - - self.connectionTypeSegmentedControl.userInteractionEnabled = NO; - [animator animateTransition:transitionContext]; -} - -@end diff --git a/Example Apps/Example ObjC/ConnectionIAPTableViewController.m b/Example Apps/Example ObjC/ConnectionIAPTableViewController.m index b2d9b30b9..6364118f0 100644 --- a/Example Apps/Example ObjC/ConnectionIAPTableViewController.m +++ b/Example Apps/Example ObjC/ConnectionIAPTableViewController.m @@ -4,6 +4,7 @@ #import "ConnectionIAPTableViewController.h" +#import "Preferences.h" #import "ProxyManager.h" @@ -23,6 +24,10 @@ [[ProxyManager sharedManager] addObserver:self forKeyPath:NSStringFromSelector(@selector(state)) options:(NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew) context:nil]; // Tableview setup + if (@available(iOS 11.0, *)) { + self.tableView.dragInteractionEnabled = NO; + } + self.title = @"iAP"; self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; // Connect Button setup diff --git a/Example Apps/Example ObjC/ConnectionTCPTableViewController.m b/Example Apps/Example ObjC/ConnectionTCPTableViewController.m index 3ca9a78a0..7cd61d6af 100644 --- a/Example Apps/Example ObjC/ConnectionTCPTableViewController.m +++ b/Example Apps/Example ObjC/ConnectionTCPTableViewController.m @@ -32,6 +32,10 @@ [[ProxyManager sharedManager] addObserver:self forKeyPath:NSStringFromSelector(@selector(state)) options:(NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew) context:nil]; // Tableview setup + if (@available(iOS 11.0, *)) { + self.tableView.dragInteractionEnabled = NO; + } + self.title = @"TCP"; self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; self.ipAddressTextField.text = [Preferences sharedPreferences].ipAddress; self.portTextField.text = [@([Preferences sharedPreferences].port) stringValue]; diff --git a/Example Apps/Example ObjC/ConnectionTabBarController.h b/Example Apps/Example ObjC/ConnectionTabBarController.h new file mode 100644 index 000000000..9b20f2fb1 --- /dev/null +++ b/Example Apps/Example ObjC/ConnectionTabBarController.h @@ -0,0 +1,17 @@ +// +// ConnectionTabBarController.h +// SmartDeviceLink-Example-ObjC +// +// Created by Joel Fischer on 9/23/21. +// Copyright © 2021 smartdevicelink. All rights reserved. +// + +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +@interface ConnectionTabBarController : UITabBarController + +@end + +NS_ASSUME_NONNULL_END diff --git a/Example Apps/Example ObjC/ConnectionTabBarController.m b/Example Apps/Example ObjC/ConnectionTabBarController.m new file mode 100644 index 000000000..30f6329b2 --- /dev/null +++ b/Example Apps/Example ObjC/ConnectionTabBarController.m @@ -0,0 +1,31 @@ +// +// ConnectionTabBarController.m +// SmartDeviceLink-Example-ObjC +// +// Created by Joel Fischer on 9/23/21. +// Copyright © 2021 smartdevicelink. All rights reserved. +// + +#import "ConnectionTabBarController.h" + +#import "Preferences.h" + +@interface ConnectionTabBarController () <UITabBarControllerDelegate> + +@end + +@implementation ConnectionTabBarController + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.delegate = self; +} + +#pragma mark - UITabBarControllerDelegate + +- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { + Preferences.sharedPreferences.lastUsedSegment = [tabBar.items indexOfObject:item]; +} + +@end diff --git a/Example Apps/Example ObjC/ConnectionTransitionContext.h b/Example Apps/Example ObjC/ConnectionTransitionContext.h deleted file mode 100644 index eda85adef..000000000 --- a/Example Apps/Example ObjC/ConnectionTransitionContext.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// ConnectionTransitionContext.h -// SmartDeviceLink-iOS - -#import <Foundation/Foundation.h> - -#import <UIKit/UIKit.h> - - -typedef NS_ENUM(NSUInteger, ConnectionTransitionDirection) { - ConnectionTransitionDirectionLeft, - ConnectionTransitionDirectionRight -}; - -typedef void (^TransitionCompleteBlock)(BOOL didComplete); - - -@interface ConnectionTransitionContext : NSObject <UIViewControllerContextTransitioning> - -@property (assign, nonatomic, getter=isAnimated) BOOL animated; -@property (assign, nonatomic, getter=isInteractive) BOOL interactive; - -- (instancetype)initWithFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController direction:(ConnectionTransitionDirection)direction transitionComplete:(TransitionCompleteBlock)completion; - -@end diff --git a/Example Apps/Example ObjC/ConnectionTransitionContext.m b/Example Apps/Example ObjC/ConnectionTransitionContext.m deleted file mode 100644 index 7275952c3..000000000 --- a/Example Apps/Example ObjC/ConnectionTransitionContext.m +++ /dev/null @@ -1,112 +0,0 @@ -// -// ConnectionTransitionContext.m -// SmartDeviceLink-iOS - -#import "ConnectionTransitionContext.h" - - - -@interface ConnectionTransitionContext () - -@property (assign, nonatomic) UIModalPresentationStyle presentationStyle; - -@property (strong, nonatomic) UIView *containerView; -@property (strong, nonatomic) NSDictionary *viewControllers; - -@property (assign, nonatomic) CGRect disappearingFromRect; -@property (assign, nonatomic) CGRect disappearingToRect; -@property (assign, nonatomic) CGRect appearingFromRect; -@property (assign, nonatomic) CGRect appearingToRect; - -@property (copy, nonatomic) TransitionCompleteBlock block; - -@end - - - -@implementation ConnectionTransitionContext - -- (instancetype)initWithFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController direction:(ConnectionTransitionDirection)direction transitionComplete:(TransitionCompleteBlock)completion { - NSAssert((fromViewController.isViewLoaded && fromViewController.view.superview), @"The fromViewController must reside in the container view when initializing the transition context"); - - self = [super init]; - if (!self) { - return nil; - } - - self.presentationStyle = UIModalPresentationCustom; - self.containerView = fromViewController.view.superview; - self.viewControllers = @{ - UITransitionContextFromViewControllerKey: fromViewController, - UITransitionContextToViewControllerKey: toViewController - }; - - CGFloat travelDistance = (direction == ConnectionTransitionDirectionRight) ? -self.containerView.bounds.size.width : self.containerView.bounds.size.width; - self.disappearingFromRect = self.appearingToRect = self.containerView.bounds; - self.disappearingToRect = CGRectOffset(self.containerView.bounds, travelDistance, 0); - self.appearingFromRect = CGRectOffset(self.containerView.bounds, -travelDistance, 0); - - self.block = completion; - - return self; -} - - -#pragma mark - UIViewControllerContextTransitioning - -- (CGRect)initialFrameForViewController:(UIViewController *)vc { - if (vc == [self viewControllerForKey:UITransitionContextFromViewControllerKey]) { - return self.disappearingFromRect; - } else { - return self.appearingFromRect; - } -} - -- (CGRect)finalFrameForViewController:(UIViewController *)vc { - if (vc == [self viewControllerForKey:UITransitionContextFromViewControllerKey]) { - return self.disappearingToRect; - } else { - return self.appearingToRect; - } -} - -- (UIViewController *)viewControllerForKey:(NSString *)key { - return self.viewControllers[key]; -} - -- (void)completeTransition:(BOOL)didComplete { - if (self.block != NULL) { - self.block(didComplete); - } -} - -- (BOOL)transitionWasCancelled { - return NO; -} - -- (UIView *)viewForKey:(NSString *)key { - UIViewController *viewController = nil; - if ([key isEqualToString:UITransitionContextFromViewControllerKey]) { - viewController = [self viewControllerForKey:UITransitionContextFromViewControllerKey]; - } else { - viewController = [self viewControllerForKey:UITransitionContextToViewControllerKey]; - } - - return viewController.view; -} - -- (CGAffineTransform)targetTransform { - return CGAffineTransformIdentity; -} - - -#pragma mark Interactive Transition - -- (void)updateInteractiveTransition:(CGFloat)percentComplete {} -- (void)finishInteractiveTransition {} -- (void)cancelInteractiveTransition {} -- (void)pauseInteractiveTransition {} - - - -@end diff --git a/Example Apps/Example Swift/AppUserDefaults.swift b/Example Apps/Example Swift/AppUserDefaults.swift index 5fc63c437..9c12727cf 100644 --- a/Example Apps/Example Swift/AppUserDefaults.swift +++ b/Example Apps/Example Swift/AppUserDefaults.swift @@ -43,12 +43,12 @@ class AppUserDefaults { } } - var lastUsedSegment: Int? { + var lastUsedSegment: Int { get { return UserDefaults.standard.integer(forKey: Keys.lastUsedSegment) } set { - UserDefaults.standard.set(newValue!, forKey: Keys.lastUsedSegment) + UserDefaults.standard.set(newValue, forKey: Keys.lastUsedSegment) } } } diff --git a/Example Apps/Example Swift/ConnectionContainerViewController.swift b/Example Apps/Example Swift/ConnectionContainerViewController.swift deleted file mode 100644 index 4e6dd3895..000000000 --- a/Example Apps/Example Swift/ConnectionContainerViewController.swift +++ /dev/null @@ -1,84 +0,0 @@ -// -// ConnectionContainerViewController.swift -// SmartDeviceLink-ExampleSwift -// -// Copyright © 2017 smartdevicelink. All rights reserved. -// -import UIKit - -class ConnectionContainerViewController: UIViewController { - @IBOutlet weak var segmentedControl: UISegmentedControl! - var viewControllers: [UIViewController] = [] - var currentViewController: UIViewController? - - override func viewDidLoad() { - super.viewDidLoad() - - navigationController?.navigationBar.isTranslucent = false - let tcpControllerStoryboard = UIStoryboard(name: "ConnectionTCPTableViewController", bundle: nil) - let iapControllerStoryboard = UIStoryboard(name: "ConnectionIAPTableViewController", bundle: nil) - let tcpController = tcpControllerStoryboard.instantiateViewController(withIdentifier :"ConnectionTCPTableViewController") - let iapController = iapControllerStoryboard.instantiateViewController(withIdentifier :"ConnectionIAPTableViewController") - viewControllers.append(tcpController) - viewControllers.append(iapController) - - let defaultSegment = AppUserDefaults.shared.lastUsedSegment! - segmentedControl.selectedSegmentIndex = defaultSegment - loadChildViewController(index: defaultSegment) - - let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(slideToLeftWithGestureRecognizer(gestureRecognizer:))) - let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(slideToRightWithGestureRecognizer(gestureRecognizer:))) - leftSwipe.direction = .left - rightSwipe.direction = .right - view.addGestureRecognizer(leftSwipe) - view.addGestureRecognizer(rightSwipe) - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - @IBAction func slideToLeftWithGestureRecognizer(gestureRecognizer: UISwipeGestureRecognizer) { - if segmentedControl.selectedSegmentIndex == 0 { - segmentedControl.selectedSegmentIndex = 1 - removeFromView() - loadChildViewController(index: 1) - } - } - - @IBAction func slideToRightWithGestureRecognizer(gestureRecognizer: UISwipeGestureRecognizer) { - if segmentedControl.selectedSegmentIndex == 1 { - segmentedControl.selectedSegmentIndex = 0 - removeFromView() - loadChildViewController(index: 0) - } - } - // Grab changes in segmentedControl - @IBAction func indexChanged(_ sender: AnyObject) { - switch segmentedControl.selectedSegmentIndex { - case 0: - removeFromView() - loadChildViewController(index: 0) - case 1: - removeFromView() - loadChildViewController(index: 1) - default: - break - } - } - // Mark: - View functions - func removeFromView() { - let vc = self.children.last - vc?.view.removeFromSuperview() - vc?.removeFromParent() - } - - func loadChildViewController(index: Int?) { - AppUserDefaults.shared.lastUsedSegment = index - let initialViewController: UIViewController = viewControllers[index!] - self.addChild(initialViewController) - view.addSubview(initialViewController.view) - initialViewController.didMove(toParent: self) - } -} diff --git a/Example Apps/Example Swift/ConnectionIAPTableViewController.storyboard b/Example Apps/Example Swift/ConnectionIAPTableViewController.storyboard deleted file mode 100644 index 736ebf493..000000000 --- a/Example Apps/Example Swift/ConnectionIAPTableViewController.storyboard +++ /dev/null @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15400" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="J12-ul-Tx1"> - <device id="retina4_7" orientation="portrait" appearance="light"/> - <dependencies> - <deployment identifier="iOS"/> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15404"/> - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> - </dependencies> - <scenes> - <!--ConnectionIAP Table View Controller--> - <scene sceneID="kGx-OZ-JDF"> - <objects> - <tableViewController storyboardIdentifier="ConnectionIAPTableViewController" id="J12-ul-Tx1" customClass="ConnectionIAPTableViewController" customModule="SDL_Example_Swift" sceneMemberID="viewController"> - <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="MzB-GZ-Ook"> - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> - <sections> - <tableViewSection id="Qz3-D9-j37"> - <cells> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="2sd-U1-9xV"> - <rect key="frame" x="0.0" y="10" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="2sd-U1-9xV" id="EhZ-2E-WQ5"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rjq-vZ-OjB"> - <rect key="frame" x="16" y="0.0" width="343" height="44"/> - <fontDescription key="fontDescription" type="system" pointSize="23"/> - <state key="normal" title="Connect"> - <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> - </state> - <connections> - <action selector="connectButtonWasPressed:" destination="J12-ul-Tx1" eventType="touchUpInside" id="OEM-Ca-Pms"/> - </connections> - </button> - </subviews> - <constraints> - <constraint firstItem="rjq-vZ-OjB" firstAttribute="top" secondItem="EhZ-2E-WQ5" secondAttribute="top" id="8GY-v0-41a"/> - <constraint firstAttribute="bottom" secondItem="rjq-vZ-OjB" secondAttribute="bottom" id="FKB-JG-o5G"/> - <constraint firstAttribute="trailingMargin" secondItem="rjq-vZ-OjB" secondAttribute="trailing" id="ISQ-6b-S34"/> - <constraint firstItem="rjq-vZ-OjB" firstAttribute="leading" secondItem="EhZ-2E-WQ5" secondAttribute="leadingMargin" id="PiJ-h3-NOR"/> - </constraints> - </tableViewCellContentView> - </tableViewCell> - </cells> - </tableViewSection> - </sections> - <connections> - <outlet property="dataSource" destination="J12-ul-Tx1" id="kTG-wP-6Fl"/> - <outlet property="delegate" destination="J12-ul-Tx1" id="gKA-WB-R0A"/> - </connections> - </tableView> - <connections> - <outlet property="connectButton" destination="rjq-vZ-OjB" id="Sz8-r7-ddN"/> - <outlet property="connectTableViewCell" destination="2sd-U1-9xV" id="UME-sB-vsD"/> - <outlet property="table" destination="MzB-GZ-Ook" id="SME-OU-FAK"/> - </connections> - </tableViewController> - <placeholder placeholderIdentifier="IBFirstResponder" id="N5a-E0-fOt" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="898" y="630"/> - </scene> - </scenes> -</document> diff --git a/Example Apps/Example Swift/ConnectionIAPTableViewController.swift b/Example Apps/Example Swift/ConnectionIAPTableViewController.swift index 3898c7a86..5a389b2d8 100644 --- a/Example Apps/Example Swift/ConnectionIAPTableViewController.swift +++ b/Example Apps/Example Swift/ConnectionIAPTableViewController.swift @@ -6,7 +6,7 @@ // import UIKit -class ConnectionIAPTableViewController: UITableViewController, ProxyManagerDelegate { +class ConnectionIAPTableViewController: UITableViewController { @IBOutlet weak var connectTableViewCell: UITableViewCell! @IBOutlet weak var table: UITableView! @IBOutlet weak var connectButton: UIButton! @@ -16,32 +16,20 @@ class ConnectionIAPTableViewController: UITableViewController, ProxyManagerDeleg override func viewDidLoad() { super.viewDidLoad() ProxyManager.sharedManager.delegate = self + title = "iAP" table.keyboardDismissMode = .onDrag table.isScrollEnabled = false - initButton() + configureConnectButton() } - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - } - - func initButton() { + private func configureConnectButton() { self.connectTableViewCell.backgroundColor = UIColor.systemRed self.connectButton.setTitle("Connect", for: .normal) self.connectButton.setTitleColor(.white, for: .normal) } - // MARK: - IBActions - @IBAction func connectButtonWasPressed(_ sender: UIButton) { - switch proxyState { - case .stopped: - ProxyManager.sharedManager.start(with: .iap) - case .searching: - ProxyManager.sharedManager.stopConnection() - case .connected: - ProxyManager.sharedManager.stopConnection() - } - } - // MARK: - Delegate Functions +} + +extension ConnectionIAPTableViewController: ProxyManagerDelegate { func didChangeProxyState(_ newState: ProxyState) { proxyState = newState var newColor: UIColor? = nil @@ -49,13 +37,13 @@ class ConnectionIAPTableViewController: UITableViewController, ProxyManagerDeleg switch newState { case .stopped: - newColor = UIColor.systemRed + newColor = .systemRed newTitle = "Connect" case .searching: - newColor = UIColor.systemOrange + newColor = .systemOrange newTitle = "Stop Searching" case .connected: - newColor = UIColor.systemGreen + newColor = .systemGreen newTitle = "Disconnect" } @@ -68,3 +56,17 @@ class ConnectionIAPTableViewController: UITableViewController, ProxyManagerDeleg } } } + +// MARK: - IBActions +extension ConnectionIAPTableViewController { + @IBAction private func connectButtonWasPressed(_ sender: UIButton) { + switch proxyState { + case .stopped: + ProxyManager.sharedManager.start(with: .iap) + case .searching: + ProxyManager.sharedManager.stopConnection() + case .connected: + ProxyManager.sharedManager.stopConnection() + } + } +} diff --git a/Example Apps/Example Swift/ConnectionTCPTableViewController.storyboard b/Example Apps/Example Swift/ConnectionTCPTableViewController.storyboard deleted file mode 100644 index 6cf589b73..000000000 --- a/Example Apps/Example Swift/ConnectionTCPTableViewController.storyboard +++ /dev/null @@ -1,131 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15400" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="l5Q-ZP-1BO"> - <device id="retina4_7" orientation="portrait" appearance="light"/> - <dependencies> - <deployment identifier="iOS"/> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15404"/> - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> - </dependencies> - <scenes> - <!--ConnectionTCP Table View Controller--> - <scene sceneID="geJ-kX-PTm"> - <objects> - <tableViewController storyboardIdentifier="ConnectionTCPTableViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="l5Q-ZP-1BO" customClass="ConnectionTCPTableViewController" customModule="SDL_Example_Swift" sceneMemberID="viewController"> - <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="7ZH-AV-Zyf"> - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> - <sections> - <tableViewSection headerTitle="TCP Server" id="bF6-yi-Ial"> - <cells> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="pbJ-oz-jNt"> - <rect key="frame" x="0.0" y="55.5" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="pbJ-oz-jNt" id="B7X-yY-lwJ"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="IP Address" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="xqM-s4-9RV"> - <rect key="frame" x="16" y="0.0" width="343" height="44"/> - <constraints> - <constraint firstAttribute="height" constant="44" id="5Pw-mh-x83"/> - </constraints> - <fontDescription key="fontDescription" type="system" pointSize="17"/> - <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="URL"/> - </textField> - </subviews> - <constraints> - <constraint firstAttribute="centerY" secondItem="xqM-s4-9RV" secondAttribute="centerY" id="PcX-lz-oQo"/> - <constraint firstItem="xqM-s4-9RV" firstAttribute="trailing" secondItem="B7X-yY-lwJ" secondAttribute="trailingMargin" id="YF9-Uh-Yqm"/> - <constraint firstItem="xqM-s4-9RV" firstAttribute="leading" secondItem="B7X-yY-lwJ" secondAttribute="leadingMargin" id="pBt-SK-tuZ"/> - </constraints> - </tableViewCellContentView> - <color key="backgroundColor" cocoaTouchSystemColor="tableCellGroupedBackgroundColor"/> - </tableViewCell> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="C5b-fS-v3d"> - <rect key="frame" x="0.0" y="99.5" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="C5b-fS-v3d" id="ZD4-xA-og5"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Port" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="hsI-ld-8xY"> - <rect key="frame" x="16" y="0.0" width="343" height="44"/> - <constraints> - <constraint firstAttribute="height" constant="44" id="FpG-5e-MHT"/> - </constraints> - <fontDescription key="fontDescription" type="system" pointSize="17"/> - <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="numberPad"/> - </textField> - </subviews> - <constraints> - <constraint firstAttribute="centerY" secondItem="hsI-ld-8xY" secondAttribute="centerY" id="X1e-g3-RJN"/> - <constraint firstItem="hsI-ld-8xY" firstAttribute="leading" secondItem="ZD4-xA-og5" secondAttribute="leadingMargin" id="oeB-5U-tOl"/> - <constraint firstItem="hsI-ld-8xY" firstAttribute="trailing" secondItem="ZD4-xA-og5" secondAttribute="trailingMargin" id="wXl-bK-7vU"/> - </constraints> - </tableViewCellContentView> - <color key="backgroundColor" cocoaTouchSystemColor="tableCellGroupedBackgroundColor"/> - </tableViewCell> - </cells> - </tableViewSection> - <tableViewSection headerTitle="" id="rgl-Lm-uDH"> - <cells> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="ybX-Eh-Hbx"> - <rect key="frame" x="0.0" y="175.5" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ybX-Eh-Hbx" id="uI9-fK-205"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t37-4W-6F4"> - <rect key="frame" x="16" y="0.0" width="343" height="44"/> - <fontDescription key="fontDescription" type="system" pointSize="23"/> - <state key="normal" title="Connect"> - <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> - </state> - <connections> - <action selector="connectButtonWasPressed:" destination="l5Q-ZP-1BO" eventType="touchUpInside" id="4Kr-4D-O7b"/> - </connections> - </button> - </subviews> - <constraints> - <constraint firstItem="t37-4W-6F4" firstAttribute="top" secondItem="uI9-fK-205" secondAttribute="top" id="IfU-4k-EXx"/> - <constraint firstItem="t37-4W-6F4" firstAttribute="leading" secondItem="uI9-fK-205" secondAttribute="leadingMargin" id="cc3-uk-9fL"/> - <constraint firstAttribute="bottom" secondItem="t37-4W-6F4" secondAttribute="bottom" id="hnD-4g-xvT"/> - <constraint firstAttribute="trailingMargin" secondItem="t37-4W-6F4" secondAttribute="trailing" id="j4p-fi-0LP"/> - </constraints> - </tableViewCellContentView> - </tableViewCell> - </cells> - </tableViewSection> - </sections> - <connections> - <outlet property="dataSource" destination="l5Q-ZP-1BO" id="r5q-yg-LY6"/> - <outlet property="delegate" destination="l5Q-ZP-1BO" id="xFj-yP-z0A"/> - </connections> - </tableView> - <navigationItem key="navigationItem" id="JNL-hN-wDm"> - <nil key="title"/> - <segmentedControl key="titleView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="rXi-EW-KGG"> - <rect key="frame" x="180" y="7" width="240" height="30"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <segments> - <segment title="TCP Debug"/> - <segment title="iAP"/> - </segments> - </segmentedControl> - </navigationItem> - <connections> - <outlet property="connectButton" destination="t37-4W-6F4" id="f6v-Q4-ggs"/> - <outlet property="connectTableViewCell" destination="ybX-Eh-Hbx" id="hyh-CW-oXx"/> - <outlet property="ipAddressTextField" destination="xqM-s4-9RV" id="daz-uN-Rxa"/> - <outlet property="portTextField" destination="hsI-ld-8xY" id="5pF-XP-Xh3"/> - <outlet property="table" destination="7ZH-AV-Zyf" id="4nR-6A-RzX"/> - </connections> - </tableViewController> - <placeholder placeholderIdentifier="IBFirstResponder" id="0fm-wO-kFd" userLabel="First Responder" sceneMemberID="firstResponder"/> - </objects> - <point key="canvasLocation" x="688" y="499"/> - </scene> - </scenes> -</document> diff --git a/Example Apps/Example Swift/ConnectionTCPTableViewController.swift b/Example Apps/Example Swift/ConnectionTCPTableViewController.swift index 5195ce462..e03c6dac5 100644 --- a/Example Apps/Example Swift/ConnectionTCPTableViewController.swift +++ b/Example Apps/Example Swift/ConnectionTCPTableViewController.swift @@ -6,7 +6,7 @@ // import UIKit -class ConnectionTCPTableViewController: UITableViewController, UINavigationControllerDelegate, ProxyManagerDelegate { +class ConnectionTCPTableViewController: UITableViewController, UINavigationControllerDelegate { @IBOutlet weak var ipAddressTextField: UITextField! @IBOutlet weak var portTextField: UITextField! @IBOutlet weak var connectTableViewCell: UITableViewCell! @@ -18,46 +18,23 @@ class ConnectionTCPTableViewController: UITableViewController, UINavigationContr override func viewDidLoad() { super.viewDidLoad() ProxyManager.sharedManager.delegate = self + title = "TCP" table.keyboardDismissMode = .onDrag table.isScrollEnabled = false ipAddressTextField.text = AppUserDefaults.shared.ipAddress portTextField.text = AppUserDefaults.shared.port - initButton() + configureConnectButton() } - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - } - - func initButton() { + private func configureConnectButton() { self.connectTableViewCell.backgroundColor = UIColor.systemRed self.connectButton.setTitle("Connect", for: .normal) self.connectButton.setTitleColor(.white, for: .normal) } - // MARK: - IBActions - @IBAction func connectButtonWasPressed(_ sender: UIButton) { - let ipAddress = ipAddressTextField.text - let port = portTextField.text - - if ipAddress != "" || port != "" { - AppUserDefaults.shared.ipAddress = ipAddress - AppUserDefaults.shared.port = port +} - switch proxyState { - case .stopped: - ProxyManager.sharedManager.start(with: .tcp) - case .searching: - ProxyManager.sharedManager.stopConnection() - case .connected: - ProxyManager.sharedManager.stopConnection() - } - } else { - let alertMessage = UIAlertController(title: "Missing Info!", message: "Make sure to set your IP Address and Port", preferredStyle: .alert) - alertMessage.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) - self.present(alertMessage, animated: true, completion: nil) - } - } - // MARK: - Delegate Functions +// MARK: - Delegate Functions +extension ConnectionTCPTableViewController: ProxyManagerDelegate { func didChangeProxyState(_ newState: ProxyState) { proxyState = newState var newColor: UIColor? = nil @@ -84,3 +61,29 @@ class ConnectionTCPTableViewController: UITableViewController, UINavigationContr } } } + +// MARK: - IBActions +extension ConnectionTCPTableViewController { + @IBAction func connectButtonWasPressed(_ sender: UIButton) { + let ipAddress = ipAddressTextField.text + let port = portTextField.text + + if ipAddress != "" || port != "" { + AppUserDefaults.shared.ipAddress = ipAddress + AppUserDefaults.shared.port = port + + switch proxyState { + case .stopped: + ProxyManager.sharedManager.start(with: .tcp) + case .searching: + ProxyManager.sharedManager.stopConnection() + case .connected: + ProxyManager.sharedManager.stopConnection() + } + } else { + let alertMessage = UIAlertController(title: "Missing Info!", message: "Make sure to set your IP Address and Port", preferredStyle: .alert) + alertMessage.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) + self.present(alertMessage, animated: true, completion: nil) + } + } +} diff --git a/Example Apps/Example Swift/ConnectionTabBarController.swift b/Example Apps/Example Swift/ConnectionTabBarController.swift new file mode 100644 index 000000000..3486a2aff --- /dev/null +++ b/Example Apps/Example Swift/ConnectionTabBarController.swift @@ -0,0 +1,26 @@ +// +// ConnectionTabBarController.swift +// SmartDeviceLink-Example-Swift +// +// Created by Joel Fischer on 9/23/21. +// Copyright © 2021 smartdevicelink. All rights reserved. +// + +import UIKit + +class ConnectionTabBarController: UITabBarController { + override func viewDidLoad() { + super.viewDidLoad() + + delegate = self + selectedIndex = AppUserDefaults.shared.lastUsedSegment + } +} + +extension ConnectionTabBarController: UITabBarControllerDelegate { + override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { + if let index = tabBar.items?.firstIndex(where: {$0 == item}) { + AppUserDefaults.shared.lastUsedSegment = index + } + } +} diff --git a/Example Apps/Example Swift/Main.storyboard b/Example Apps/Example Swift/Main.storyboard index 3adca9d22..24cf6f50e 100644 --- a/Example Apps/Example Swift/Main.storyboard +++ b/Example Apps/Example Swift/Main.storyboard @@ -1,64 +1,245 @@ <?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15400" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="mM3-m6-I5t"> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="eYu-bD-AQx"> <device id="retina4_7" orientation="portrait" appearance="light"/> <dependencies> <deployment identifier="iOS"/> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15404"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> <scenes> - <!--Navigation Controller--> - <scene sceneID="Tfy-dw-box"> + <!--Connection Tab Bar Controller--> + <scene sceneID="nha-wC-GFn"> <objects> - <navigationController automaticallyAdjustsScrollViewInsets="NO" id="mM3-m6-I5t" sceneMemberID="viewController"> + <tabBarController id="eYu-bD-AQx" customClass="ConnectionTabBarController" customModule="SDL_Example_Swift" customModuleProvider="target" sceneMemberID="viewController"> + <tabBar key="tabBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="1du-k9-Mo1"> + <rect key="frame" x="0.0" y="0.0" width="414" height="49"/> + <autoresizingMask key="autoresizingMask"/> + <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </tabBar> + <connections> + <segue destination="3c6-84-W1v" kind="relationship" relationship="viewControllers" id="4AX-6q-yOp"/> + <segue destination="Q0y-Gf-PPI" kind="relationship" relationship="viewControllers" id="SJZ-P9-mHI"/> + </connections> + </tabBarController> + <placeholder placeholderIdentifier="IBFirstResponder" id="PUz-pd-tt1" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="1607" y="533"/> + </scene> + <!--TCP--> + <scene sceneID="Dzi-kz-rh7"> + <objects> + <navigationController automaticallyAdjustsScrollViewInsets="NO" id="3c6-84-W1v" sceneMemberID="viewController"> + <tabBarItem key="tabBarItem" title="TCP" image="dot.radiowaves.right" catalog="system" id="CyN-Ke-69P"/> <toolbarItems/> - <navigationBar key="navigationBar" contentMode="scaleToFill" id="eMh-g9-C8T"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> + <navigationBar key="navigationBar" contentMode="scaleToFill" largeTitles="YES" id="Ai0-l3-zE7"> + <rect key="frame" x="0.0" y="0.0" width="375" height="96"/> <autoresizingMask key="autoresizingMask"/> </navigationBar> <nil name="viewControllers"/> <connections> - <segue destination="cXb-Co-0MA" kind="relationship" relationship="rootViewController" id="tbn-vJ-YS8"/> + <segue destination="S8J-13-JhS" kind="relationship" relationship="rootViewController" id="Tbo-rT-7Bb"/> </connections> </navigationController> - <placeholder placeholderIdentifier="IBFirstResponder" id="eXu-Zc-53v" userLabel="First Responder" sceneMemberID="firstResponder"/> + <placeholder placeholderIdentifier="IBFirstResponder" id="HQE-d2-yCj" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="896" y="527"/> + <point key="canvasLocation" x="2525.5999999999999" y="228.93553223388307"/> </scene> - <!--Connection Container View Controller--> - <scene sceneID="vG9-Hv-OW2"> + <!--iAP--> + <scene sceneID="DfT-0m-fCj"> <objects> - <viewController id="cXb-Co-0MA" customClass="ConnectionContainerViewController" customModule="SDL_Example_Swift" sceneMemberID="viewController"> - <layoutGuides> - <viewControllerLayoutGuide type="top" id="bfp-O0-sxl"/> - <viewControllerLayoutGuide type="bottom" id="fet-m3-F1O"/> - </layoutGuides> - <view key="view" contentMode="scaleToFill" id="jkb-9Y-Hwh"> + <navigationController automaticallyAdjustsScrollViewInsets="NO" id="Q0y-Gf-PPI" sceneMemberID="viewController"> + <tabBarItem key="tabBarItem" title="iAP" image="car" catalog="system" id="UcM-qm-mVj"/> + <toolbarItems/> + <navigationBar key="navigationBar" contentMode="scaleToFill" largeTitles="YES" id="gnm-bX-s0x"> + <rect key="frame" x="0.0" y="0.0" width="375" height="96"/> + <autoresizingMask key="autoresizingMask"/> + </navigationBar> + <nil name="viewControllers"/> + <connections> + <segue destination="ccd-Lb-qlW" kind="relationship" relationship="rootViewController" id="Bho-ot-jCK"/> + </connections> + </navigationController> + <placeholder placeholderIdentifier="IBFirstResponder" id="TAk-se-TLo" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="2526" y="906"/> + </scene> + <!--ConnectionTCP Table View Controller--> + <scene sceneID="PT3-CO-2Fj"> + <objects> + <tableViewController storyboardIdentifier="ConnectionTCPTableViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="S8J-13-JhS" customClass="ConnectionTCPTableViewController" customModule="SDL_Example_Swift" sceneMemberID="viewController"> + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="46o-kW-bdX"> <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/> - </view> - <navigationItem key="navigationItem" id="t1a-s2-nn6"> + <color key="backgroundColor" systemColor="groupTableViewBackgroundColor"/> + <sections> + <tableViewSection headerTitle="TCP Server" id="ywt-qG-svz"> + <cells> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="Qnt-Cr-o9a"> + <rect key="frame" x="0.0" y="32" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Qnt-Cr-o9a" id="IB7-jx-7fA"> + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="IP Address" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="b7h-uu-1mR"> + <rect key="frame" x="16" y="0.0" width="343" height="44"/> + <constraints> + <constraint firstAttribute="height" constant="44" id="sbI-uw-UFA"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="URL"/> + </textField> + </subviews> + <constraints> + <constraint firstItem="b7h-uu-1mR" firstAttribute="leading" secondItem="IB7-jx-7fA" secondAttribute="leadingMargin" id="7dE-j3-uvS"/> + <constraint firstAttribute="centerY" secondItem="b7h-uu-1mR" secondAttribute="centerY" id="aJm-Mz-t2g"/> + <constraint firstItem="b7h-uu-1mR" firstAttribute="trailing" secondItem="IB7-jx-7fA" secondAttribute="trailingMargin" id="cIV-e1-nZa"/> + </constraints> + </tableViewCellContentView> + <color key="backgroundColor" systemColor="tableCellGroupedBackgroundColor"/> + </tableViewCell> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="L2E-NM-Bd2"> + <rect key="frame" x="0.0" y="76" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="L2E-NM-Bd2" id="NUS-jV-INS"> + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Port" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="yLC-iL-Joa"> + <rect key="frame" x="16" y="0.0" width="343" height="44"/> + <constraints> + <constraint firstAttribute="height" constant="44" id="lhP-dD-Uz7"/> + </constraints> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" keyboardType="numberPad"/> + </textField> + </subviews> + <constraints> + <constraint firstItem="yLC-iL-Joa" firstAttribute="leading" secondItem="NUS-jV-INS" secondAttribute="leadingMargin" id="0bP-7J-xZh"/> + <constraint firstAttribute="centerY" secondItem="yLC-iL-Joa" secondAttribute="centerY" id="Fdo-tB-6ID"/> + <constraint firstItem="yLC-iL-Joa" firstAttribute="trailing" secondItem="NUS-jV-INS" secondAttribute="trailingMargin" id="MHG-gS-JhY"/> + </constraints> + </tableViewCellContentView> + <color key="backgroundColor" systemColor="tableCellGroupedBackgroundColor"/> + </tableViewCell> + </cells> + </tableViewSection> + <tableViewSection headerTitle="" id="4vf-dA-rRm"> + <cells> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="A2J-cL-Ha3"> + <rect key="frame" x="0.0" y="147.5" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="A2J-cL-Ha3" id="lG9-iw-A3p"> + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="96f-qb-2Sa"> + <rect key="frame" x="16" y="0.0" width="343" height="44"/> + <fontDescription key="fontDescription" type="system" pointSize="23"/> + <state key="normal" title="Connect"> + <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </state> + <connections> + <action selector="connectButtonWasPressed:" destination="S8J-13-JhS" eventType="touchUpInside" id="6DA-Z6-NYQ"/> + </connections> + </button> + </subviews> + <constraints> + <constraint firstAttribute="bottom" secondItem="96f-qb-2Sa" secondAttribute="bottom" id="CKa-pV-EY1"/> + <constraint firstItem="96f-qb-2Sa" firstAttribute="leading" secondItem="lG9-iw-A3p" secondAttribute="leadingMargin" id="GKy-km-YAW"/> + <constraint firstAttribute="trailingMargin" secondItem="96f-qb-2Sa" secondAttribute="trailing" id="eIk-Tr-M9z"/> + <constraint firstItem="96f-qb-2Sa" firstAttribute="top" secondItem="lG9-iw-A3p" secondAttribute="top" id="uc3-Gf-1FQ"/> + </constraints> + </tableViewCellContentView> + </tableViewCell> + </cells> + </tableViewSection> + </sections> + <connections> + <outlet property="dataSource" destination="S8J-13-JhS" id="nDj-x5-rp3"/> + <outlet property="delegate" destination="S8J-13-JhS" id="Wew-e6-3vW"/> + </connections> + </tableView> + <navigationItem key="navigationItem" id="NJc-xM-Wtz"> <nil key="title"/> - <segmentedControl key="titleView" opaque="NO" contentMode="scaleToFill" misplaced="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="RYa-fE-Qek"> - <rect key="frame" x="67.5" y="6" width="240" height="32"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <segments> - <segment title="TCP Debug"/> - <segment title="iAP"/> - </segments> - <connections> - <action selector="indexChanged:" destination="cXb-Co-0MA" eventType="valueChanged" id="VKA-yi-yYw"/> - </connections> - </segmentedControl> </navigationItem> <connections> - <outlet property="segmentedControl" destination="RYa-fE-Qek" id="w1s-Cm-qxn"/> + <outlet property="connectButton" destination="96f-qb-2Sa" id="TSJ-lt-dUN"/> + <outlet property="connectTableViewCell" destination="A2J-cL-Ha3" id="GbU-WY-Kkr"/> + <outlet property="ipAddressTextField" destination="b7h-uu-1mR" id="tFt-ty-Fr8"/> + <outlet property="portTextField" destination="yLC-iL-Joa" id="R25-qT-On9"/> + <outlet property="table" destination="46o-kW-bdX" id="dj3-LW-4TM"/> + </connections> + </tableViewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="m47-Fd-A6E" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="3318" y="229"/> + </scene> + <!--ConnectionIAP Table View Controller--> + <scene sceneID="jwH-4w-VAc"> + <objects> + <tableViewController storyboardIdentifier="ConnectionIAPTableViewController" id="ccd-Lb-qlW" customClass="ConnectionIAPTableViewController" customModule="SDL_Example_Swift" sceneMemberID="viewController"> + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="none" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="nDU-Sx-iwg"> + <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <color key="backgroundColor" systemColor="groupTableViewBackgroundColor"/> + <sections> + <tableViewSection id="dhw-a6-tO6"> + <cells> + <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="Cgm-3J-LII"> + <rect key="frame" x="0.0" y="10" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Cgm-3J-LII" id="cRo-ox-IzT"> + <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PdA-3h-dSa"> + <rect key="frame" x="16" y="0.0" width="343" height="44"/> + <fontDescription key="fontDescription" type="system" pointSize="23"/> + <state key="normal" title="Connect"> + <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </state> + <connections> + <action selector="connectButtonWasPressed:" destination="ccd-Lb-qlW" eventType="touchUpInside" id="Tde-fn-o40"/> + </connections> + </button> + </subviews> + <constraints> + <constraint firstAttribute="bottom" secondItem="PdA-3h-dSa" secondAttribute="bottom" id="92e-PW-VC2"/> + <constraint firstItem="PdA-3h-dSa" firstAttribute="top" secondItem="cRo-ox-IzT" secondAttribute="top" id="TTS-Zu-Aib"/> + <constraint firstItem="PdA-3h-dSa" firstAttribute="leading" secondItem="cRo-ox-IzT" secondAttribute="leadingMargin" id="eeX-wg-dmk"/> + <constraint firstAttribute="trailingMargin" secondItem="PdA-3h-dSa" secondAttribute="trailing" id="tIj-Xo-jcQ"/> + </constraints> + </tableViewCellContentView> + </tableViewCell> + </cells> + </tableViewSection> + </sections> + <connections> + <outlet property="dataSource" destination="ccd-Lb-qlW" id="fNO-hh-HjX"/> + <outlet property="delegate" destination="ccd-Lb-qlW" id="UkS-JU-b6I"/> + </connections> + </tableView> + <navigationItem key="navigationItem" id="y5U-GZ-gzX"/> + <connections> + <outlet property="connectButton" destination="PdA-3h-dSa" id="iSb-JV-iUg"/> + <outlet property="connectTableViewCell" destination="Cgm-3J-LII" id="qXv-i4-omk"/> + <outlet property="table" destination="nDU-Sx-iwg" id="5X0-VE-2Zs"/> </connections> - </viewController> - <placeholder placeholderIdentifier="IBFirstResponder" id="ETn-uq-A6g" userLabel="First Responder" sceneMemberID="firstResponder"/> + </tableViewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="iAo-Ms-Mov" userLabel="First Responder" sceneMemberID="firstResponder"/> </objects> - <point key="canvasLocation" x="1576" y="527"/> + <point key="canvasLocation" x="3318" y="905"/> </scene> </scenes> + <resources> + <image name="car" catalog="system" width="128" height="93"/> + <image name="dot.radiowaves.right" catalog="system" width="117" height="128"/> + <systemColor name="groupTableViewBackgroundColor"> + <color red="0.94901960780000005" green="0.94901960780000005" blue="0.96862745100000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> + </systemColor> + <systemColor name="tableCellGroupedBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> </document> diff --git a/Example Apps/Shared/Images.xcassets/Contents.json b/Example Apps/Shared/Images.xcassets/Contents.json index da4a164c9..73c00596a 100644 --- a/Example Apps/Shared/Images.xcassets/Contents.json +++ b/Example Apps/Shared/Images.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -}
\ No newline at end of file +} diff --git a/Example Apps/Shared/Images.xcassets/dot.radiowaves.right.imageset/Contents.json b/Example Apps/Shared/Images.xcassets/dot.radiowaves.right.imageset/Contents.json new file mode 100644 index 000000000..02e7f1513 --- /dev/null +++ b/Example Apps/Shared/Images.xcassets/dot.radiowaves.right.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dot.radiowaves.right@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example Apps/Shared/Images.xcassets/dot.radiowaves.right.imageset/dot.radiowaves.right@2x.png b/Example Apps/Shared/Images.xcassets/dot.radiowaves.right.imageset/dot.radiowaves.right@2x.png Binary files differnew file mode 100644 index 000000000..3f5353253 --- /dev/null +++ b/Example Apps/Shared/Images.xcassets/dot.radiowaves.right.imageset/dot.radiowaves.right@2x.png diff --git a/Example Apps/Shared/dot.radiowaves.right@2x.png b/Example Apps/Shared/dot.radiowaves.right@2x.png Binary files differnew file mode 100644 index 000000000..3f5353253 --- /dev/null +++ b/Example Apps/Shared/dot.radiowaves.right@2x.png diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj index 1dcef80c6..c467b2120 100644 --- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj +++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj @@ -1409,6 +1409,8 @@ 4AC0128126D9612E00537E31 /* SDLPreloadPresentChoicesOperationUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AC0127F26D9612E00537E31 /* SDLPreloadPresentChoicesOperationUtilities.m */; }; 4AC0128326D9686F00537E31 /* SDLPreloadPresentChoicesOperationUtilitiesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AC0128226D9686F00537E31 /* SDLPreloadPresentChoicesOperationUtilitiesSpec.m */; }; 4AD1F1742559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AD1F1732559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m */; }; + 4ADBD1F826FCED4000ABB045 /* ConnectionTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ADBD1F726FCED4000ABB045 /* ConnectionTabBarController.swift */; }; + 4ADBD1FB26FCEDFC00ABB045 /* ConnectionTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ADBD1FA26FCEDFC00ABB045 /* ConnectionTabBarController.m */; }; 4AE8A7022537796E000666C0 /* SmartDeviceLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AE8A7012537796E000666C0 /* SmartDeviceLink.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5D0A9F911F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F901F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m */; }; 5D0A9F931F15560B00CC80DD /* SDLNavigationCapabilitySpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D0A9F921F15560B00CC80DD /* SDLNavigationCapabilitySpec.m */; }; @@ -1426,14 +1428,9 @@ 5D1FF2A221304515000EB9B4 /* ButtonManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF29B21304515000EB9B4 /* ButtonManager.m */; }; 5D1FF2A721304531000EB9B4 /* Preferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2A421304531000EB9B4 /* Preferences.m */; }; 5D1FF2A821304531000EB9B4 /* TextValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2A621304531000EB9B4 /* TextValidator.m */; }; - 5D1FF2AF21304568000EB9B4 /* ConnectionTCPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2A921304567000EB9B4 /* ConnectionTCPTableViewController.storyboard */; }; 5D1FF2B021304568000EB9B4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2AB21304567000EB9B4 /* Main.storyboard */; }; - 5D1FF2B121304568000EB9B4 /* ConnectionIAPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2AD21304567000EB9B4 /* ConnectionIAPTableViewController.storyboard */; }; 5D1FF2B821304581000EB9B4 /* ConnectionIAPTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2B421304580000EB9B4 /* ConnectionIAPTableViewController.m */; }; - 5D1FF2B921304581000EB9B4 /* ConnectionContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2B521304581000EB9B4 /* ConnectionContainerViewController.m */; }; 5D1FF2BA21304581000EB9B4 /* ConnectionTCPTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2B621304581000EB9B4 /* ConnectionTCPTableViewController.m */; }; - 5D1FF2BF21304598000EB9B4 /* ConnectionAnimatedTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2BC21304598000EB9B4 /* ConnectionAnimatedTransition.m */; }; - 5D1FF2C021304598000EB9B4 /* ConnectionTransitionContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2BE21304598000EB9B4 /* ConnectionTransitionContext.m */; }; 5D1FF2C3213045EB000EB9B4 /* AppConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2C2213045EB000EB9B4 /* AppConstants.m */; }; 5D1FF2C4213045EB000EB9B4 /* AppConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2C2213045EB000EB9B4 /* AppConstants.m */; }; 5D1FF2C6213045F2000EB9B4 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2C5213045F1000EB9B4 /* Images.xcassets */; }; @@ -1452,12 +1449,9 @@ 5D1FF2E521304761000EB9B4 /* AppUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2E221304761000EB9B4 /* AppUserDefaults.swift */; }; 5D1FF2E621304761000EB9B4 /* ProxyManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2E321304761000EB9B4 /* ProxyManagerDelegate.swift */; }; 5D1FF2E721304761000EB9B4 /* TextValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2E421304761000EB9B4 /* TextValidator.swift */; }; - 5D1FF2EB2130479C000EB9B4 /* ConnectionContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2E82130479C000EB9B4 /* ConnectionContainerViewController.swift */; }; 5D1FF2EC2130479C000EB9B4 /* ConnectionTCPTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2E92130479C000EB9B4 /* ConnectionTCPTableViewController.swift */; }; 5D1FF2ED2130479C000EB9B4 /* ConnectionIAPTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2EA2130479C000EB9B4 /* ConnectionIAPTableViewController.swift */; }; 5D1FF2F1213047AB000EB9B4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2EE213047AB000EB9B4 /* Main.storyboard */; }; - 5D1FF2F2213047AB000EB9B4 /* ConnectionIAPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2EF213047AB000EB9B4 /* ConnectionIAPTableViewController.storyboard */; }; - 5D1FF2F3213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2F0213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard */; }; 5D1FF2F5213047B3000EB9B4 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5D1FF2F4213047B2000EB9B4 /* LaunchScreen.xib */; }; 5D1FF2F8213047C1000EB9B4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D1FF2F7213047C1000EB9B4 /* AppDelegate.swift */; }; 5D4346471E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D4346461E6F0BDA00B639C6 /* SDLLogFileModuleSpec.m */; }; @@ -3297,6 +3291,9 @@ 4AC0127F26D9612E00537E31 /* SDLPreloadPresentChoicesOperationUtilities.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLPreloadPresentChoicesOperationUtilities.m; path = private/SDLPreloadPresentChoicesOperationUtilities.m; sourceTree = "<group>"; }; 4AC0128226D9686F00537E31 /* SDLPreloadPresentChoicesOperationUtilitiesSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLPreloadPresentChoicesOperationUtilitiesSpec.m; path = DevAPISpecs/SDLPreloadPresentChoicesOperationUtilitiesSpec.m; sourceTree = "<group>"; }; 4AD1F1732559957100637FE1 /* SDLVoiceCommandUpdateOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommandUpdateOperationSpec.m; path = DevAPISpecs/SDLVoiceCommandUpdateOperationSpec.m; sourceTree = "<group>"; }; + 4ADBD1F726FCED4000ABB045 /* ConnectionTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ConnectionTabBarController.swift; path = "Example Apps/Example Swift/ConnectionTabBarController.swift"; sourceTree = SOURCE_ROOT; }; + 4ADBD1F926FCEDFC00ABB045 /* ConnectionTabBarController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ConnectionTabBarController.h; path = "Example Apps/Example ObjC/ConnectionTabBarController.h"; sourceTree = SOURCE_ROOT; }; + 4ADBD1FA26FCEDFC00ABB045 /* ConnectionTabBarController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ConnectionTabBarController.m; path = "Example Apps/Example ObjC/ConnectionTabBarController.m"; sourceTree = SOURCE_ROOT; }; 4AE8A7012537796E000666C0 /* SmartDeviceLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SmartDeviceLink.h; path = public/SmartDeviceLink.h; sourceTree = "<group>"; }; 4AE8A707253779F9000666C0 /* EAAccessory+OCMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "EAAccessory+OCMock.h"; sourceTree = "<group>"; }; 5D0A9F901F15550400CC80DD /* SDLSystemCapabilityTypeSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityTypeSpec.m; sourceTree = "<group>"; }; @@ -3331,19 +3328,11 @@ 5D1FF2A421304531000EB9B4 /* Preferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Preferences.m; path = "Example Apps/Example ObjC/Preferences.m"; sourceTree = SOURCE_ROOT; }; 5D1FF2A521304531000EB9B4 /* TextValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextValidator.h; path = "Example Apps/Example ObjC/TextValidator.h"; sourceTree = SOURCE_ROOT; }; 5D1FF2A621304531000EB9B4 /* TextValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TextValidator.m; path = "Example Apps/Example ObjC/TextValidator.m"; sourceTree = SOURCE_ROOT; }; - 5D1FF2AA21304567000EB9B4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = "Example Apps/Example ObjC/Base.lproj/ConnectionTCPTableViewController.storyboard"; sourceTree = SOURCE_ROOT; }; 5D1FF2AC21304567000EB9B4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = "Example Apps/Example ObjC/Base.lproj/Main.storyboard"; sourceTree = SOURCE_ROOT; }; - 5D1FF2AE21304567000EB9B4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = "Example Apps/Example ObjC/Base.lproj/ConnectionIAPTableViewController.storyboard"; sourceTree = SOURCE_ROOT; }; - 5D1FF2B221304580000EB9B4 /* ConnectionContainerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionContainerViewController.h; path = "Example Apps/Example ObjC/ConnectionContainerViewController.h"; sourceTree = SOURCE_ROOT; }; 5D1FF2B321304580000EB9B4 /* ConnectionTCPTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionTCPTableViewController.h; path = "Example Apps/Example ObjC/ConnectionTCPTableViewController.h"; sourceTree = SOURCE_ROOT; }; 5D1FF2B421304580000EB9B4 /* ConnectionIAPTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionIAPTableViewController.m; path = "Example Apps/Example ObjC/ConnectionIAPTableViewController.m"; sourceTree = SOURCE_ROOT; }; - 5D1FF2B521304581000EB9B4 /* ConnectionContainerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionContainerViewController.m; path = "Example Apps/Example ObjC/ConnectionContainerViewController.m"; sourceTree = SOURCE_ROOT; }; 5D1FF2B621304581000EB9B4 /* ConnectionTCPTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionTCPTableViewController.m; path = "Example Apps/Example ObjC/ConnectionTCPTableViewController.m"; sourceTree = SOURCE_ROOT; }; 5D1FF2B721304581000EB9B4 /* ConnectionIAPTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionIAPTableViewController.h; path = "Example Apps/Example ObjC/ConnectionIAPTableViewController.h"; sourceTree = SOURCE_ROOT; }; - 5D1FF2BB21304598000EB9B4 /* ConnectionAnimatedTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionAnimatedTransition.h; path = "Example Apps/Example ObjC/ConnectionAnimatedTransition.h"; sourceTree = SOURCE_ROOT; }; - 5D1FF2BC21304598000EB9B4 /* ConnectionAnimatedTransition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionAnimatedTransition.m; path = "Example Apps/Example ObjC/ConnectionAnimatedTransition.m"; sourceTree = SOURCE_ROOT; }; - 5D1FF2BD21304598000EB9B4 /* ConnectionTransitionContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConnectionTransitionContext.h; path = "Example Apps/Example ObjC/ConnectionTransitionContext.h"; sourceTree = SOURCE_ROOT; }; - 5D1FF2BE21304598000EB9B4 /* ConnectionTransitionContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ConnectionTransitionContext.m; path = "Example Apps/Example ObjC/ConnectionTransitionContext.m"; sourceTree = SOURCE_ROOT; }; 5D1FF2C1213045EB000EB9B4 /* AppConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppConstants.h; path = "Example Apps/Shared/AppConstants.h"; sourceTree = SOURCE_ROOT; }; 5D1FF2C2213045EB000EB9B4 /* AppConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppConstants.m; path = "Example Apps/Shared/AppConstants.m"; sourceTree = SOURCE_ROOT; }; 5D1FF2C5213045F1000EB9B4 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "Example Apps/Shared/Images.xcassets"; sourceTree = SOURCE_ROOT; }; @@ -3363,12 +3352,9 @@ 5D1FF2E221304761000EB9B4 /* AppUserDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppUserDefaults.swift; path = "Example Apps/Example Swift/AppUserDefaults.swift"; sourceTree = SOURCE_ROOT; }; 5D1FF2E321304761000EB9B4 /* ProxyManagerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ProxyManagerDelegate.swift; path = "Example Apps/Example Swift/ProxyManagerDelegate.swift"; sourceTree = SOURCE_ROOT; }; 5D1FF2E421304761000EB9B4 /* TextValidator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TextValidator.swift; path = "Example Apps/Example Swift/TextValidator.swift"; sourceTree = SOURCE_ROOT; }; - 5D1FF2E82130479C000EB9B4 /* ConnectionContainerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ConnectionContainerViewController.swift; path = "Example Apps/Example Swift/ConnectionContainerViewController.swift"; sourceTree = SOURCE_ROOT; }; 5D1FF2E92130479C000EB9B4 /* ConnectionTCPTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ConnectionTCPTableViewController.swift; path = "Example Apps/Example Swift/ConnectionTCPTableViewController.swift"; sourceTree = SOURCE_ROOT; }; 5D1FF2EA2130479C000EB9B4 /* ConnectionIAPTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ConnectionIAPTableViewController.swift; path = "Example Apps/Example Swift/ConnectionIAPTableViewController.swift"; sourceTree = SOURCE_ROOT; }; 5D1FF2EE213047AB000EB9B4 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = "Example Apps/Example Swift/Main.storyboard"; sourceTree = SOURCE_ROOT; }; - 5D1FF2EF213047AB000EB9B4 /* ConnectionIAPTableViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = ConnectionIAPTableViewController.storyboard; path = "Example Apps/Example Swift/ConnectionIAPTableViewController.storyboard"; sourceTree = SOURCE_ROOT; }; - 5D1FF2F0213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = ConnectionTCPTableViewController.storyboard; path = "Example Apps/Example Swift/ConnectionTCPTableViewController.storyboard"; sourceTree = SOURCE_ROOT; }; 5D1FF2F4213047B2000EB9B4 /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = LaunchScreen.xib; path = "Example Apps/Example Swift/LaunchScreen.xib"; sourceTree = SOURCE_ROOT; }; 5D1FF2F6213047C1000EB9B4 /* SmartDeviceLink-Example-Swift-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "SmartDeviceLink-Example-Swift-Bridging-Header.h"; path = "Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Bridging-Header.h"; sourceTree = SOURCE_ROOT; }; 5D1FF2F7213047C1000EB9B4 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = "Example Apps/Example Swift/AppDelegate.swift"; sourceTree = SOURCE_ROOT; }; @@ -4562,14 +4548,13 @@ 5D0218EC1A8E796100D1BF62 /* Connection */ = { isa = PBXGroup; children = ( - 5D4832991A8EA27200252386 /* Storyboards */, - 5D4832A21A94F8F100252386 /* Transition */, - 5D1FF2B221304580000EB9B4 /* ConnectionContainerViewController.h */, - 5D1FF2B521304581000EB9B4 /* ConnectionContainerViewController.m */, + 5D1FF2AB21304567000EB9B4 /* Main.storyboard */, 5D1FF2B721304581000EB9B4 /* ConnectionIAPTableViewController.h */, 5D1FF2B421304580000EB9B4 /* ConnectionIAPTableViewController.m */, 5D1FF2B321304580000EB9B4 /* ConnectionTCPTableViewController.h */, 5D1FF2B621304581000EB9B4 /* ConnectionTCPTableViewController.m */, + 4ADBD1F926FCEDFC00ABB045 /* ConnectionTabBarController.h */, + 4ADBD1FA26FCEDFC00ABB045 /* ConnectionTabBarController.m */, ); name = Connection; sourceTree = "<group>"; @@ -4891,16 +4876,6 @@ name = General; sourceTree = "<group>"; }; - 5D4832991A8EA27200252386 /* Storyboards */ = { - isa = PBXGroup; - children = ( - 5D1FF2AD21304567000EB9B4 /* ConnectionIAPTableViewController.storyboard */, - 5D1FF2A921304567000EB9B4 /* ConnectionTCPTableViewController.storyboard */, - 5D1FF2AB21304567000EB9B4 /* Main.storyboard */, - ); - name = Storyboards; - sourceTree = "<group>"; - }; 5D48329A1A8EA31500252386 /* Utilities */ = { isa = PBXGroup; children = ( @@ -4937,17 +4912,6 @@ name = SDL; sourceTree = "<group>"; }; - 5D4832A21A94F8F100252386 /* Transition */ = { - isa = PBXGroup; - children = ( - 5D1FF2BB21304598000EB9B4 /* ConnectionAnimatedTransition.h */, - 5D1FF2BC21304598000EB9B4 /* ConnectionAnimatedTransition.m */, - 5D1FF2BD21304598000EB9B4 /* ConnectionTransitionContext.h */, - 5D1FF2BE21304598000EB9B4 /* ConnectionTransitionContext.m */, - ); - name = Transition; - sourceTree = "<group>"; - }; 5D5934EE1A85160900687FB9 /* Protocol */ = { isa = PBXGroup; children = ( @@ -6928,9 +6892,6 @@ children = ( 5D1FF2F4213047B2000EB9B4 /* LaunchScreen.xib */, 88A0AA5F207CFEA60075132C /* Connection */, - 5D1FF2E82130479C000EB9B4 /* ConnectionContainerViewController.swift */, - 5D1FF2EA2130479C000EB9B4 /* ConnectionIAPTableViewController.swift */, - 5D1FF2E92130479C000EB9B4 /* ConnectionTCPTableViewController.swift */, ); name = UI; sourceTree = "<group>"; @@ -7031,19 +6992,12 @@ 88A0AA5F207CFEA60075132C /* Connection */ = { isa = PBXGroup; children = ( - 88A0AA60207CFEAC0075132C /* Storyboards */, - ); - name = Connection; - sourceTree = "<group>"; - }; - 88A0AA60207CFEAC0075132C /* Storyboards */ = { - isa = PBXGroup; - children = ( - 5D1FF2EF213047AB000EB9B4 /* ConnectionIAPTableViewController.storyboard */, - 5D1FF2F0213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard */, 5D1FF2EE213047AB000EB9B4 /* Main.storyboard */, + 5D1FF2EA2130479C000EB9B4 /* ConnectionIAPTableViewController.swift */, + 5D1FF2E92130479C000EB9B4 /* ConnectionTCPTableViewController.swift */, + 4ADBD1F726FCED4000ABB045 /* ConnectionTabBarController.swift */, ); - name = Storyboards; + name = Connection; sourceTree = "<group>"; }; 88A70C392233087500574CA4 /* Requests */ = { @@ -8081,8 +8035,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5D1FF2B121304568000EB9B4 /* ConnectionIAPTableViewController.storyboard in Resources */, - 5D1FF2AF21304568000EB9B4 /* ConnectionTCPTableViewController.storyboard in Resources */, 5D1FF2C6213045F2000EB9B4 /* Images.xcassets in Resources */, 5D1FF2B021304568000EB9B4 /* Main.storyboard in Resources */, 5D1FF2D12130466D000EB9B4 /* LaunchScreen.xib in Resources */, @@ -8121,10 +8073,8 @@ buildActionMask = 2147483647; files = ( 5D1FF2F1213047AB000EB9B4 /* Main.storyboard in Resources */, - 5D1FF2F3213047AB000EB9B4 /* ConnectionTCPTableViewController.storyboard in Resources */, 5D1FF2C7213045F2000EB9B4 /* Images.xcassets in Resources */, 5D1FF2F5213047B3000EB9B4 /* LaunchScreen.xib in Resources */, - 5D1FF2F2213047AB000EB9B4 /* ConnectionIAPTableViewController.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -8148,17 +8098,15 @@ 5D1FF2CA2130463F000EB9B4 /* AppDelegate.m in Sources */, 5D1FF2BA21304581000EB9B4 /* ConnectionTCPTableViewController.m in Sources */, B30509052511E79B008C5401 /* ProxyManager.m in Sources */, - 5D1FF2B921304581000EB9B4 /* ConnectionContainerViewController.m in Sources */, 5D1FF29D21304515000EB9B4 /* RPCPermissionsManager.m in Sources */, 5D1FF2A121304515000EB9B4 /* VehicleDataManager.m in Sources */, - 5D1FF2BF21304598000EB9B4 /* ConnectionAnimatedTransition.m in Sources */, 5D1FF2A721304531000EB9B4 /* Preferences.m in Sources */, 5D1FF2CC2130464E000EB9B4 /* main.m in Sources */, 4A40255D250026830080E159 /* SubscribeButtonManager.m in Sources */, - 5D1FF2C021304598000EB9B4 /* ConnectionTransitionContext.m in Sources */, 5D1FF2A221304515000EB9B4 /* ButtonManager.m in Sources */, 5D1FF2A021304515000EB9B4 /* AudioManager.m in Sources */, 5D1FF29E21304515000EB9B4 /* MenuManager.m in Sources */, + 4ADBD1FB26FCEDFC00ABB045 /* ConnectionTabBarController.m in Sources */, 5D1FF2C3213045EB000EB9B4 /* AppConstants.m in Sources */, 5D1FF2B821304581000EB9B4 /* ConnectionIAPTableViewController.m in Sources */, 5D1FF29C21304515000EB9B4 /* PerformInteractionManager.m in Sources */, @@ -9301,8 +9249,8 @@ 5D1FF2C4213045EB000EB9B4 /* AppConstants.m in Sources */, 5D1FF2DA21304746000EB9B4 /* ButtonManager.swift in Sources */, 5DC49BDD237314B500B2B8F2 /* SceneDelegate.swift in Sources */, + 4ADBD1F826FCED4000ABB045 /* ConnectionTabBarController.swift in Sources */, 5D1FF2DC21304746000EB9B4 /* AlertManager.swift in Sources */, - 5D1FF2EB2130479C000EB9B4 /* ConnectionContainerViewController.swift in Sources */, 5D1FF2E021304746000EB9B4 /* MenuManager.swift in Sources */, 5D1FF2DF21304746000EB9B4 /* PerformInteractionManager.swift in Sources */, 5D1FF2ED2130479C000EB9B4 /* ConnectionIAPTableViewController.swift in Sources */, @@ -9358,14 +9306,6 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - 5D1FF2A921304567000EB9B4 /* ConnectionTCPTableViewController.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 5D1FF2AA21304567000EB9B4 /* Base */, - ); - name = ConnectionTCPTableViewController.storyboard; - sourceTree = "<group>"; - }; 5D1FF2AB21304567000EB9B4 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( @@ -9374,14 +9314,6 @@ name = Main.storyboard; sourceTree = "<group>"; }; - 5D1FF2AD21304567000EB9B4 /* ConnectionIAPTableViewController.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 5D1FF2AE21304567000EB9B4 /* Base */, - ); - name = ConnectionIAPTableViewController.storyboard; - sourceTree = "<group>"; - }; 5D1FF2CF2130466D000EB9B4 /* LaunchScreen.xib */ = { isa = PBXVariantGroup; children = ( @@ -9579,7 +9511,10 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_SIGN_COMPARE = NO; GCC_WARN_UNKNOWN_PRAGMAS = YES; |