summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Example Apps/Example ObjC/Base.lproj/ConnectionIAPTableViewController.storyboard65
-rw-r--r--Example Apps/Example ObjC/Base.lproj/ConnectionTCPTableViewController.storyboard128
-rw-r--r--Example Apps/Example ObjC/Base.lproj/Main.storyboard246
-rw-r--r--Example Apps/Example ObjC/ConnectionAnimatedTransition.h12
-rw-r--r--Example Apps/Example ObjC/ConnectionAnimatedTransition.m43
-rw-r--r--Example Apps/Example ObjC/ConnectionContainerViewController.h9
-rw-r--r--Example Apps/Example ObjC/ConnectionContainerViewController.m122
-rw-r--r--Example Apps/Example ObjC/ConnectionIAPTableViewController.m5
-rw-r--r--Example Apps/Example ObjC/ConnectionTCPTableViewController.m4
-rw-r--r--Example Apps/Example ObjC/ConnectionTabBarController.h17
-rw-r--r--Example Apps/Example ObjC/ConnectionTabBarController.m31
-rw-r--r--Example Apps/Example ObjC/ConnectionTransitionContext.h25
-rw-r--r--Example Apps/Example ObjC/ConnectionTransitionContext.m112
-rw-r--r--Example Apps/Example Swift/AppUserDefaults.swift4
-rw-r--r--Example Apps/Example Swift/ConnectionContainerViewController.swift84
-rw-r--r--Example Apps/Example Swift/ConnectionIAPTableViewController.storyboard66
-rw-r--r--Example Apps/Example Swift/ConnectionIAPTableViewController.swift46
-rw-r--r--Example Apps/Example Swift/ConnectionTCPTableViewController.storyboard131
-rw-r--r--Example Apps/Example Swift/ConnectionTCPTableViewController.swift63
-rw-r--r--Example Apps/Example Swift/ConnectionTabBarController.swift26
-rw-r--r--Example Apps/Example Swift/Main.storyboard253
-rw-r--r--Example Apps/Shared/Images.xcassets/Contents.json6
-rw-r--r--Example Apps/Shared/Images.xcassets/dot.radiowaves.right.imageset/Contents.json21
-rw-r--r--Example Apps/Shared/Images.xcassets/dot.radiowaves.right.imageset/dot.radiowaves.right@2x.pngbin0 -> 1194 bytes
-rw-r--r--Example Apps/Shared/dot.radiowaves.right@2x.pngbin0 -> 1194 bytes
-rw-r--r--SmartDeviceLink-iOS.xcodeproj/project.pbxproj101
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
new file mode 100644
index 000000000..3f5353253
--- /dev/null
+++ b/Example Apps/Shared/Images.xcassets/dot.radiowaves.right.imageset/dot.radiowaves.right@2x.png
Binary files differ
diff --git a/Example Apps/Shared/dot.radiowaves.right@2x.png b/Example Apps/Shared/dot.radiowaves.right@2x.png
new file mode 100644
index 000000000..3f5353253
--- /dev/null
+++ b/Example Apps/Shared/dot.radiowaves.right@2x.png
Binary files differ
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;