summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorleonid lokhmatov, Luxoft <zaqqqqqqqq@gmail.com>2020-12-22 03:27:50 +0200
committerleonid lokhmatov, Luxoft <zaqqqqqqqq@gmail.com>2020-12-22 03:27:50 +0200
commitd2b1bccb717be1535770868913917452b12ebd34 (patch)
treecfa57524d1d15619755c6536b09c06e8b01681b1
parent657fd1dd37d2ac23979739f4395ffb7c2af4e5b4 (diff)
downloadsdl_ios-d2b1bccb717be1535770868913917452b12ebd34.tar.gz
[0296] 'upd video stream cap': reset example app to develop (4)
-rw-r--r--Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleAppViewController.h20
-rw-r--r--Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleAppViewController.m140
-rw-r--r--Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleRootView.h19
-rw-r--r--Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleRootView.m84
-rw-r--r--Example Apps/Example ObjC/ExampleApps/OldStyleApp/TouchModel.h19
-rw-r--r--Example Apps/Example ObjC/ExampleApps/OldStyleApp/TouchModel.m25
-rw-r--r--Example Apps/Example ObjC/ExampleApps/Resources/ExampleApps.storyboard409
-rw-r--r--Example Apps/Example ObjC/ExampleApps/Resources/art.scnassets/ship.scnbin220179 -> 0 bytes
-rw-r--r--Example Apps/Example ObjC/ExampleApps/Resources/art.scnassets/texture.pngbin349666 -> 0 bytes
-rw-r--r--Example Apps/Example ObjC/ExampleApps/SC3DApp/GameViewController.h15
-rw-r--r--Example Apps/Example ObjC/ExampleApps/SC3DApp/GameViewController.m192
-rw-r--r--Example Apps/Example ObjC/ExampleApps/UIApp/TestUIAppViewController.h18
-rw-r--r--Example Apps/Example ObjC/ExampleApps/UIApp/TestUIAppViewController.m153
-rw-r--r--Example Apps/Example ObjC/Models/SDLTCPConfig.h22
-rw-r--r--Example Apps/Example ObjC/Models/SDLTCPConfig.m25
-rw-r--r--Example Apps/Example ObjC/Models/VideoStreamSettings.h22
-rw-r--r--Example Apps/Example ObjC/Models/VideoStreamSettings.m18
-rw-r--r--Example Apps/Example Video ObjC/ConnectionContainerViewController.h9
-rw-r--r--Example Apps/Example Video ObjC/ConnectionContainerViewController.m154
-rw-r--r--Example Apps/Example Video ObjC/ConnectionIAPTableViewController.h10
-rw-r--r--Example Apps/Example Video ObjC/ConnectionIAPTableViewController.m99
-rw-r--r--Example Apps/Example Video ObjC/ConnectionTCPTableViewController.h11
-rw-r--r--Example Apps/Example Video ObjC/ConnectionTCPTableViewController.m167
-rw-r--r--Example Apps/Example Video ObjC/ProxyManager.h41
-rw-r--r--Example Apps/Example Video ObjC/ProxyManager.m482
-rw-r--r--Example Apps/Example Video ObjC/Resources/ExampleVideoApp.storyboard196
-rw-r--r--Example Apps/Example Video ObjC/SDLTCPConfig.h21
-rw-r--r--Example Apps/Example Video ObjC/SDLTCPConfig.m24
-rw-r--r--Example Apps/Example Video ObjC/TouchModel.h18
-rw-r--r--Example Apps/Example Video ObjC/TouchModel.m24
-rw-r--r--Example Apps/Example Video ObjC/VideoSourceView.h18
-rw-r--r--Example Apps/Example Video ObjC/VideoSourceView.m83
-rw-r--r--Example Apps/Example Video ObjC/VideoSourceViewController.h19
-rw-r--r--Example Apps/Example Video ObjC/VideoSourceViewController.m140
-rw-r--r--Example Apps/Example Video ObjC/VideoStreamSettings.h21
-rw-r--r--Example Apps/Example Video ObjC/VideoStreamSettings.m21
-rw-r--r--Example Apps/Example Video ObjC/VideoStreamingSettingsViewController.h17
-rw-r--r--Example Apps/Example Video ObjC/VideoStreamingSettingsViewController.m157
-rw-r--r--Example Apps/Shared/resources/sdl_video.mp4bin1048 -> 0 bytes
39 files changed, 0 insertions, 2913 deletions
diff --git a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleAppViewController.h b/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleAppViewController.h
deleted file mode 100644
index e80e5f2f6..000000000
--- a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleAppViewController.h
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// SimpleAppViewController.h
-// SmartDeviceLink-iOS
-//
-// Created by Leonid Lokhmatov on 5/25/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import <UIKit/UIKit.h>
-#import "SDLStreamingMediaDelegate.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SimpleAppViewController<SDLStreamingMediaDelegate> : UIViewController
-
-+ (instancetype)createViewController;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleAppViewController.m b/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleAppViewController.m
deleted file mode 100644
index 5e1e5fa20..000000000
--- a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleAppViewController.m
+++ /dev/null
@@ -1,140 +0,0 @@
-//
-// SimpleAppViewController.m
-// SmartDeviceLink-iOS
-//
-// Created by Leonid Lokhmatov on 5/25/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import "SimpleAppViewController.h"
-#import "SDLTouchManagerDelegate.h"
-#import "SimpleRootView.h"
-#import "TouchModel.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-
-
-@interface SimpleAppViewController ()
-@property (strong, nonatomic, nullable) IBOutletCollection(UIButton) NSArray *buttons;
-@end
-
-
-@interface SimpleAppViewController (SDLTouchManagerDelegate) <SDLTouchManagerDelegate>
-@end
-
-
-@implementation SimpleAppViewController
-
-+ (SimpleAppViewController*)createViewController {
- UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"ExampleApps" bundle:nil];
- SimpleAppViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"idSimpleAppViewController"];
- return vc;
-}
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- for (UIButton *button in self.buttons) {
- button.tag = 0;
- }
-}
-
-- (SimpleRootView *)rootView {
- return (SimpleRootView *)self.view;
-}
-
-- (void)updateOnTouchButton:(UIView * _Nullable)viewCandidate {
- if (!viewCandidate) {
- return;
- }
- for (UIButton *button in self.buttons) {
- if (button == viewCandidate) {
- button.tag += 1;
- [button setTitle:[NSString stringWithFormat:@"%03d", (int)button.tag] forState:UIControlStateNormal];
- break;
- }
- }
-}
-
-@end
-
-
-//#Touch_Input:
-@implementation SimpleAppViewController (SDLTouchManagerDelegate)
-
-static const CGFloat MinSz = -8.0;
-
-- (void)touchManager:(SDLTouchManager *)manager didReceiveSingleTapForView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- CGRect frame = view.frame;
- if (nil == view) {
- frame.origin = point;
- frame = CGRectInset(frame, MinSz, MinSz);
- }
- self.rootView.singleTap = [TouchModel touchPoint:point inRect:frame];
- [self updateOnTouchButton:view];
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, NSStringFromClass(view.class), self.rootView.singleTap);
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceiveDoubleTapForView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- CGRect frame = view.frame;
- if (nil == view) {
- frame.origin = point;
- frame = CGRectInset(frame, MinSz, MinSz);
- }
- self.rootView.doubleTap = [TouchModel touchPoint:point inRect:frame];
- [self updateOnTouchButton:view];
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, NSStringFromClass(view.class), self.rootView.doubleTap);
-}
-
-// panning
-- (void)touchManager:(SDLTouchManager *)manager panningDidStartInView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceivePanningFromPoint:(CGPoint)fromPoint toPoint:(CGPoint)toPoint {
- NSLog(@"%s: %@-->%@", __PRETTY_FUNCTION__, NSStringFromCGPoint(fromPoint), NSStringFromCGPoint(toPoint));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager panningDidEndInView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager panningCanceledAtPoint:(CGPoint)point {
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, NSStringFromCGPoint(point));
-}
-
-// pinch
-- (void)touchManager:(SDLTouchManager *)manager pinchDidStartInView:(UIView *_Nullable)view atCenterPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceivePinchAtCenterPoint:(CGPoint)point withScale:(CGFloat)scale {
- NSLog(@"%s: %@ : %2.2f", __PRETTY_FUNCTION__, NSStringFromCGPoint(point), scale);
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceivePinchInView:(UIView *_Nullable)view atCenterPoint:(CGPoint)point withScale:(CGFloat)scale {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager pinchDidEndInView:(UIView *_Nullable)view atCenterPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager pinchCanceledAtCenterPoint:(CGPoint)point {
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, NSStringFromCGPoint(point));
-}
-
-#pragma mark - SDLStreamingMediaDelegate
-
-- (void)videoStreamingSizeDidUpdate:(CGSize)displaySize {
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, NSStringFromCGSize(displaySize));
-}
-
-- (void)videoStreamingSizeDoesNotMatch {
- NSLog(@"%s", __PRETTY_FUNCTION__);
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleRootView.h b/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleRootView.h
deleted file mode 100644
index 052822e84..000000000
--- a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleRootView.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// SimpleRootView.h
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Leonid Lokhmatov on 5/27/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import <UIKit/UIKit.h>
-#import "TouchModel.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SimpleRootView : UIView
-@property (strong, nonatomic, nullable) TouchModel *singleTap;
-@property (strong, nonatomic, nullable) TouchModel *doubleTap;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleRootView.m b/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleRootView.m
deleted file mode 100644
index dbf3ed933..000000000
--- a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/SimpleRootView.m
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// SimpleRootView.m
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Leonid Lokhmatov on 5/27/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import "SimpleRootView.h"
-
-@interface SimpleRootView ()
-@property (strong, nonatomic, nullable) IBOutlet UIView *singleTapView;
-@property (strong, nonatomic, nullable) IBOutlet UIView *doubleTapView;
-@end
-
-@implementation SimpleRootView
-
-- (void)awakeFromNib {
- [super awakeFromNib];
- [self prepareTapView:self.singleTapView];
- [self prepareTapView:self.doubleTapView];
-}
-
-- (void)prepareTapView:(UIView*)view {
- view.layer.borderColor = self.doubleTapView.backgroundColor.CGColor;
- view.backgroundColor = [UIColor clearColor];
- view.layer.borderWidth = 3;
- view.layer.cornerRadius = 3;
- view.hidden = YES;
-}
-
-- (void)layoutSubviews {
- [super layoutSubviews];
- if (self.singleTap) {
- self.singleTapView.frame = self.singleTap.rect;
- }
- if (self.doubleTap) {
- self.doubleTapView.frame = self.doubleTap.rect;
- }
-}
-
-- (void)hideSingleTapViewDelayed {
- [self.class cancelPreviousPerformRequestsWithTarget:self selector:@selector(doHideSingleTapView) object:nil];
- [self performSelector:@selector(doHideSingleTapView) withObject:nil afterDelay:0.5];
-}
-
-- (void)doHideSingleTapView {
- self.singleTapView.hidden = YES;
-}
-
-- (void)hideDoubleTapViewDelayed {
- [self.class cancelPreviousPerformRequestsWithTarget:self selector:@selector(doHideDoubleTapView) object:nil];
- [self performSelector:@selector(doHideDoubleTapView) withObject:nil afterDelay:0.5];
-}
-
-- (void)doHideDoubleTapView {
- self.doubleTapView.hidden = YES;
-}
-
-- (void)setSingleTap:(TouchModel *)singleTap {
- _singleTap = singleTap;
- self.singleTapView.hidden = (nil == singleTap);
- [self hideSingleTapViewDelayed];
-
- if (self.window) {
- [self setNeedsLayout];
- } else {
- [self layoutSubviews];
- }
-}
-
-- (void)setDoubleTap:(TouchModel *)doubleTap {
- _doubleTap = doubleTap;
- self.doubleTapView.hidden = (nil == doubleTap);
- [self hideDoubleTapViewDelayed];
-
- if (self.window) {
- [self setNeedsLayout];
- } else {
- [self layoutSubviews];
- }
-}
-
-@end
diff --git a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/TouchModel.h b/Example Apps/Example ObjC/ExampleApps/OldStyleApp/TouchModel.h
deleted file mode 100644
index e592fbb44..000000000
--- a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/TouchModel.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// TouchModel.h
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Leonid Lokhmatov on 5/27/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface TouchModel : NSObject
-@property (assign, nonatomic) CGRect rect;
-@property (assign, nonatomic) CGPoint point;
-+ (instancetype)touchPoint:(CGPoint)point inRect:(CGRect)rect;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/TouchModel.m b/Example Apps/Example ObjC/ExampleApps/OldStyleApp/TouchModel.m
deleted file mode 100644
index 33799973d..000000000
--- a/Example Apps/Example ObjC/ExampleApps/OldStyleApp/TouchModel.m
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// TouchModel.m
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Leonid Lokhmatov on 5/27/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import "TouchModel.h"
-
-@implementation TouchModel
-
-+ (instancetype)touchPoint:(CGPoint)point inRect:(CGRect)rect {
- TouchModel *model = [self new];
- model.point = point;
- model.rect = rect;
- return model;
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"%@-->%@", NSStringFromCGPoint(self.point), NSStringFromCGRect(self.rect)];
-}
-
-@end
-
diff --git a/Example Apps/Example ObjC/ExampleApps/Resources/ExampleApps.storyboard b/Example Apps/Example ObjC/ExampleApps/Resources/ExampleApps.storyboard
deleted file mode 100644
index cda238e5d..000000000
--- a/Example Apps/Example ObjC/ExampleApps/Resources/ExampleApps.storyboard
+++ /dev/null
@@ -1,409 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
- <device id="retina4_0" orientation="portrait" appearance="light"/>
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15510"/>
- <capability name="Safe area layout guides" minToolsVersion="9.0"/>
- <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
- </dependencies>
- <scenes>
- <!--Test UI app-->
- <scene sceneID="iuI-7D-x0R">
- <objects>
- <viewController storyboardIdentifier="idTestUIAppViewController" title="Test UI app" id="Hsq-Z0-fjm" customClass="TestUIAppViewController" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="aQ7-UZ-Vsd">
- <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YpC-6N-2oc" userLabel="display view">
- <rect key="frame" x="10" y="10" width="300" height="450"/>
- <subviews>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="characterWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6fY-J4-opr" userLabel="Sub-1 (LT)">
- <rect key="frame" x="5" y="5" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemPinkColor" red="1" green="0.1764705882" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="width" constant="50" id="6oN-eG-IdT"/>
- <constraint firstAttribute="height" constant="50" id="fcY-Jm-t2x"/>
- </constraints>
- <string key="text">This is an overview of how SmartDeviceLink (SDL) works. It will go through higher level discussions about certain aspects of SDL to give an intro level of understanding. For more general information on SmartDeviceLink (SDL) as a technology, there is a white-paper available here.
-SmartDeviceLink is a connectivity protocol and set of associated libraries that allow third-party applications to communicate with cars. This allows drivers to safely access the content they want through their vehicle.
-There are different components to SDL that make everything work. The following diagram shows how some of those pieces are connected.</string>
- <fontDescription key="fontDescription" type="system" pointSize="10"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="characterWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JmY-MF-9O1" userLabel="Sub-2 (RT)">
- <rect key="frame" x="245" y="5" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemGreenColor" red="0.20392156859999999" green="0.78039215689999997" blue="0.34901960780000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="width" constant="50" id="QwI-dJ-2fu"/>
- <constraint firstAttribute="height" constant="50" id="b00-Tt-3i3"/>
- </constraints>
- <string key="text">This is an overview of how SmartDeviceLink (SDL) works. It will go through higher level discussions about certain aspects of SDL to give an intro level of understanding. For more general information on SmartDeviceLink (SDL) as a technology, there is a white-paper available here.
-SmartDeviceLink is a connectivity protocol and set of associated libraries that allow third-party applications to communicate with cars. This allows drivers to safely access the content they want through their vehicle.
-There are different components to SDL that make everything work. The following diagram shows how some of those pieces are connected.</string>
- <fontDescription key="fontDescription" type="system" pointSize="10"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="characterWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="B7P-Jy-76s" userLabel="Lab-3 (RB)">
- <rect key="frame" x="245" y="395" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemPurpleColor" red="0.68627450980000004" green="0.32156862749999998" blue="0.87058823529999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="width" constant="50" id="ZSS-WH-lDG"/>
- <constraint firstAttribute="height" constant="50" id="eep-Lt-Alt"/>
- </constraints>
- <string key="text">This is an overview of how SmartDeviceLink (SDL) works. It will go through higher level discussions about certain aspects of SDL to give an intro level of understanding. For more general information on SmartDeviceLink (SDL) as a technology, there is a white-paper available here.
-SmartDeviceLink is a connectivity protocol and set of associated libraries that allow third-party applications to communicate with cars. This allows drivers to safely access the content they want through their vehicle.
-There are different components to SDL that make everything work. The following diagram shows how some of those pieces are connected.</string>
- <fontDescription key="fontDescription" type="system" pointSize="10"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="characterWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6FH-6a-VDP" userLabel="Lab-4 (LB)">
- <rect key="frame" x="5" y="395" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemTealColor" red="0.35294117650000001" green="0.7843137255" blue="0.98039215690000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="height" constant="50" id="GLW-6Q-9rK"/>
- <constraint firstAttribute="width" constant="50" id="xEc-ex-OWB"/>
- </constraints>
- <string key="text">This is an overview of how SmartDeviceLink (SDL) works. It will go through higher level discussions about certain aspects of SDL to give an intro level of understanding. For more general information on SmartDeviceLink (SDL) as a technology, there is a white-paper available here.
-SmartDeviceLink is a connectivity protocol and set of associated libraries that allow third-party applications to communicate with cars. This allows drivers to safely access the content they want through their vehicle.
-There are different components to SDL that make everything work. The following diagram shows how some of those pieces are connected.</string>
- <fontDescription key="fontDescription" type="system" pointSize="10"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="large" translatesAutoresizingMaskIntoConstraints="NO" id="Dee-Us-sqx">
- <rect key="frame" x="131.5" y="206.5" width="37" height="37"/>
- <color key="color" cocoaTouchSystemColor="darkTextColor"/>
- </activityIndicatorView>
- </subviews>
- <color key="backgroundColor" systemColor="systemOrangeColor" red="1" green="0.58431372550000005" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstItem="6fY-J4-opr" firstAttribute="leading" secondItem="YpC-6N-2oc" secondAttribute="leading" constant="5" id="9l8-Tl-Csb"/>
- <constraint firstAttribute="trailing" secondItem="B7P-Jy-76s" secondAttribute="trailing" priority="750" constant="5" id="Ahm-fF-lmq"/>
- <constraint firstItem="6FH-6a-VDP" firstAttribute="leading" secondItem="YpC-6N-2oc" secondAttribute="leading" constant="5" id="Ckt-UO-4I4"/>
- <constraint firstAttribute="bottom" secondItem="B7P-Jy-76s" secondAttribute="bottom" priority="750" constant="5" id="JLE-bR-X9A"/>
- <constraint firstAttribute="trailing" secondItem="JmY-MF-9O1" secondAttribute="trailing" priority="750" constant="5" id="LqK-xj-mCw"/>
- <constraint firstAttribute="height" constant="450" id="OtQ-8k-485" userLabel="display height"/>
- <constraint firstItem="Dee-Us-sqx" firstAttribute="centerY" secondItem="YpC-6N-2oc" secondAttribute="centerY" id="Xxx-Ht-bZp"/>
- <constraint firstItem="6fY-J4-opr" firstAttribute="top" secondItem="YpC-6N-2oc" secondAttribute="top" constant="5" id="dBS-Di-mRh"/>
- <constraint firstAttribute="bottom" secondItem="6FH-6a-VDP" secondAttribute="bottom" priority="750" constant="5" id="nfp-aX-Xqp"/>
- <constraint firstItem="Dee-Us-sqx" firstAttribute="centerX" secondItem="YpC-6N-2oc" secondAttribute="centerX" id="sjC-3r-ByV"/>
- <constraint firstItem="JmY-MF-9O1" firstAttribute="top" secondItem="YpC-6N-2oc" secondAttribute="top" constant="5" id="uxi-DE-lXh"/>
- <constraint firstAttribute="width" constant="300" id="wet-vQ-1wB" userLabel="display width"/>
- </constraints>
- </view>
- </subviews>
- <color key="backgroundColor" cocoaTouchSystemColor="scrollViewTexturedBackgroundColor"/>
- <constraints>
- <constraint firstItem="YpC-6N-2oc" firstAttribute="top" secondItem="esS-VV-iMO" secondAttribute="top" constant="10" id="2ay-Z0-Y3t" userLabel="display y"/>
- <constraint firstItem="YpC-6N-2oc" firstAttribute="leading" secondItem="esS-VV-iMO" secondAttribute="leading" constant="10" id="LKv-vf-kJx" userLabel="display x"/>
- </constraints>
- <viewLayoutGuide key="safeArea" id="esS-VV-iMO"/>
- </view>
- <connections>
- <outlet property="displayConstraintH" destination="OtQ-8k-485" id="l0K-Jp-Gbb"/>
- <outlet property="displayConstraintW" destination="wet-vQ-1wB" id="L8R-BT-GM6"/>
- <outlet property="displayConstraintX" destination="LKv-vf-kJx" id="Sfc-0x-D6U"/>
- <outlet property="displayConstraintY" destination="2ay-Z0-Y3t" id="ccZ-ws-5U1"/>
- <outlet property="displayView" destination="YpC-6N-2oc" id="un0-Jd-ppS"/>
- <outlet property="spinner" destination="Dee-Us-sqx" id="UoU-8o-1JG"/>
- <outlet property="subview1" destination="6fY-J4-opr" id="pfm-30-XFr"/>
- <outlet property="subview2" destination="JmY-MF-9O1" id="v75-c8-x1W"/>
- <outlet property="subview3" destination="B7P-Jy-76s" id="pbH-L2-SEa"/>
- <outlet property="subview4" destination="6FH-6a-VDP" id="hqS-1g-0gJ"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="tCN-TA-ZPI" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="135" y="-174.29577464788733"/>
- </scene>
- <!--VideoWindow-->
- <scene sceneID="hLm-cg-tNj">
- <objects>
- <avPlayerViewController storyboardIdentifier="idVideoWindow" title="VideoWindow" videoGravity="AVLayerVideoGravityResizeAspect" id="ReI-EM-aoQ" sceneMemberID="viewController"/>
- <placeholder placeholderIdentifier="IBFirstResponder" id="fBX-4X-Xn3" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="823" y="-174"/>
- </scene>
- <!--Simple VC-->
- <scene sceneID="sXf-8T-TkQ">
- <objects>
- <viewController storyboardIdentifier="idSimpleAppViewController" title="Simple VC" id="afi-yv-teE" customClass="SimpleAppViewController" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="ro5-P9-ro3" customClass="SimpleRootView">
- <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ey4-1z-FIR" userLabel="display view">
- <rect key="frame" x="10" y="10" width="300" height="548"/>
- <subviews>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="characterWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TJT-oW-v24" userLabel="All text area">
- <rect key="frame" x="9" y="9" width="282" height="530"/>
- <color key="backgroundColor" systemColor="systemYellowColor" red="1" green="0.80000000000000004" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <mutableString key="text">In the United States of America, there is a popular saying that "there are few things as American as apple pie".[9] In the United States, pie and especially apple pie, became "bound up in American mythology" to the point that in 1902, The New York Times asserted that "Pie is the food of the heroic" and stated that "No pie-eating people can ever be permanently vanquished".[2]
-
-The slang expression "to eat humble pie" comes from the umble pie, which was made with "chopped or minced innards of an animal", a "cheap offal filling...eaten by the poor".[27] The slang expression "it's a piece of pie", meaning that something is easy, dates from 1889.[28] The slang expression "pie-eyed", meaning drunk, dates from 1904.[29] The expression "pie in the sky", to refer to an unlikely proposal or idea, dates from a 1911 Wobbly song by Joe Hill.[30]The Pilgrim fathers and early settlers brought their pie recipes with them to America, adapting to the ingredients and techniques available to them in the New World. Settlers' recipes were for English-style meat pies.[9] The newcomers used the fruits and berries that they were familiar with from Europe, but also began incorporating North American vegetables and game that they were not familiar with, with guidance from Indigenous people.[21] Settlers favoured pies over bread because pies required less flour and did not require a brick bread oven, and because any mixture of ingredients could be added to pies to "stretch" their "meager provisions".[22] The apple pie made with American apples became popular, because apples were easy to dry and store in barrels over the winter.[22] Early American pies had thick, heavy crusts made with rough flour and suet.[22] As pioneers spread westward, pies continued to be an important supply of food; while apple pies made from dried apples were popular, cooks often had to use fillers or substitutes to stretch out their barrels of apples, such as crushed crackers, vinegar-soaked potatoes, sour green tomatoes and soft-shelled river turtle meat.[22]
-
-The first Thanksgiving feast included fowl and venison, which may have been included in pies.[9] Colonists appreciated the food preservation aspect of crusty-topped pies, which were often seasoned with "dried fruit, cinnamon, pepper and nutmeg".[9] Their first pies included pies that were based on berries and fruits pointed out to them by the Native North Americans.[1] Pies allowed colonial cooks to use round shallow pans to literally "cut corners" and to create a regional variation of shallow pie.[23] By the late 1700s, cookbooks show a wide range of newly developed sweet pies.[9]
-
-Pies became more refined with subsequent waves of immigrants; the Pennsylvania Dutch contributed a more aromatic, spiced, and less-sweet style of pie-making; the French brought the approach of making pie with butter and a range of tart, galette and pâté (forcemeat of meat and fish in dough) recipes.[22] Swedish immigrants in the plains states brought recipes for fish pie and berry pie; Finnish immigrants brought their recipes for pasties and meat pies.[22] In the northern states, pumpkin pie was popular, as pumpkins were plentiful.[22] Once the British had established Caribbean colonies, sugar became less expensive and more widely available, which meant that sweet pies could be readily made.[2] Molasses was popular in American pies due to the rum and slave trade with the Caribbean Islands, although maple syrup was an important sweetener in Northern states, after Indigenous people taught settlers how to tap maple trees and boil down the sap.[22] In the Midwest, cheese and cream pies were popular, due to the availability of big dairy farms.[22] In the US south, African-Americans enjoyed sweet potato pies, due to the widespread availability of this type of potato.[22]
-
-By the 1870s, the new science of nutrition led to criticism of pies, notably by Sarah Tyson Rorer, a cooking teacher and food editor who warned the public about how much energy pies take to digest.[22] Rorer stated that all pie crusts "...are to be condemned" and her cookbook only included an apple tart, jelly and meringue-covered crackers, pâté, and a "hygienic pie" which had "apple slices or a pumpkin custard baked in biscuit dough".[3] In 1866, Harper's Magazine included an article by C.W. Gesner that stated that although we "...cry for pie when we are infants", "Pie kills us finally", as the "heavy crust" cannot be digested.[3]
-
-Another factor that decreased the popularity of pies was industrialization and increasing movement of women into the labour market, which changed pie making from a weekly ritual to an "occasional undertaking" on special occasions.[22] In the 1950s, after WWII, the popularity of pies rebounded in the US, especially with commercial food inventions such as instant pudding mixes, Cool Whip topping, and Jello gelatin (which could be used as fillings) ready-made crusts, which were sold frozen, and alternative crusts made with crushed potato chips.[22] There was a pie renaissance in the 1980s, when old-fashioned pie recipes were rediscovered and a wide range of cross-cultural pies were explored.[22]</mutableString>
- <fontDescription key="fontDescription" type="system" pointSize="10"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PKZ-ch-9wl">
- <rect key="frame" x="5" y="5" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemRedColor" red="1" green="0.23137254900000001" blue="0.18823529410000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="height" constant="50" id="A3G-al-rLJ"/>
- <constraint firstAttribute="width" constant="50" id="Gaf-Hr-4es"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
- <state key="normal" title="Click">
- <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="disabled">
- <color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="selected">
- <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="highlighted">
- <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- </button>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qxE-TV-gZz">
- <rect key="frame" x="245" y="493" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemBrownColor" red="0.63529411759999999" green="0.51764705879999995" blue="0.36862745099999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="width" constant="50" id="Fa8-g9-ocy"/>
- <constraint firstAttribute="height" constant="50" id="zup-kM-vrH"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
- <state key="normal" title="Click">
- <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="disabled">
- <color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="selected">
- <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="highlighted">
- <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- </button>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4JX-Pj-iKW">
- <rect key="frame" x="245" y="5" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemGreenColor" red="0.20392156859999999" green="0.78039215689999997" blue="0.34901960780000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="width" constant="50" id="A61-gw-DKz"/>
- <constraint firstAttribute="height" constant="50" id="ZAI-HC-LrS"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
- <state key="normal" title="Click">
- <color key="titleColor" red="0.15317772569999999" green="0.12028289759999999" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- </state>
- <state key="disabled">
- <color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="selected">
- <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="highlighted">
- <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- </button>
- <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="large" translatesAutoresizingMaskIntoConstraints="NO" id="heO-VY-VjL">
- <rect key="frame" x="131.5" y="255.5" width="37" height="37"/>
- <color key="color" cocoaTouchSystemColor="darkTextColor"/>
- </activityIndicatorView>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TNH-7i-LBE">
- <rect key="frame" x="5" y="493" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemTealColor" red="0.35294117650000001" green="0.7843137255" blue="0.98039215690000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="width" constant="50" id="A64-hz-7vL"/>
- <constraint firstAttribute="height" constant="50" id="o9a-QN-Y6u"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
- <state key="normal" title="Click">
- <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="disabled">
- <color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="selected">
- <color key="titleColor" systemColor="systemPinkColor" red="1" green="0.1764705882" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- </state>
- <state key="highlighted">
- <color key="titleShadowColor" systemColor="systemPinkColor" red="1" green="0.1764705882" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- </state>
- </button>
- <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QmW-VP-tKv" userLabel="single tap view">
- <rect key="frame" x="47" y="118" width="49" height="44"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </view>
- <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="FSF-qa-Ph5" userLabel="double tap view">
- <rect key="frame" x="126" y="118" width="49" height="44"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </view>
- </subviews>
- <color key="backgroundColor" systemColor="systemOrangeColor" red="1" green="0.58431372550000005" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstItem="heO-VY-VjL" firstAttribute="centerX" secondItem="Ey4-1z-FIR" secondAttribute="centerX" id="2Br-ok-EIh"/>
- <constraint firstAttribute="trailing" secondItem="4JX-Pj-iKW" secondAttribute="trailing" constant="5" id="56i-jf-OM6"/>
- <constraint firstItem="PKZ-ch-9wl" firstAttribute="top" secondItem="Ey4-1z-FIR" secondAttribute="top" constant="5" id="6cV-pP-qgz"/>
- <constraint firstAttribute="bottom" secondItem="qxE-TV-gZz" secondAttribute="bottom" constant="5" id="H21-wa-cgx"/>
- <constraint firstItem="TJT-oW-v24" firstAttribute="leading" secondItem="Ey4-1z-FIR" secondAttribute="leadingMargin" constant="1" id="JvI-Nz-DjE"/>
- <constraint firstAttribute="trailingMargin" secondItem="TJT-oW-v24" secondAttribute="trailing" constant="1" id="THe-Rk-tFd"/>
- <constraint firstItem="PKZ-ch-9wl" firstAttribute="leading" secondItem="Ey4-1z-FIR" secondAttribute="leading" constant="5" id="WdA-k6-sZb"/>
- <constraint firstItem="heO-VY-VjL" firstAttribute="centerY" secondItem="Ey4-1z-FIR" secondAttribute="centerY" id="irZ-ua-C1a"/>
- <constraint firstAttribute="bottom" secondItem="TNH-7i-LBE" secondAttribute="bottom" constant="5" id="lJb-K8-rOt"/>
- <constraint firstItem="4JX-Pj-iKW" firstAttribute="top" secondItem="Ey4-1z-FIR" secondAttribute="top" constant="5" id="p0s-Ds-2UH"/>
- <constraint firstAttribute="trailing" secondItem="qxE-TV-gZz" secondAttribute="trailing" constant="5" id="pLg-aA-fdC"/>
- <constraint firstItem="TNH-7i-LBE" firstAttribute="leading" secondItem="Ey4-1z-FIR" secondAttribute="leading" constant="5" id="uko-zi-wcc"/>
- <constraint firstItem="TJT-oW-v24" firstAttribute="top" secondItem="Ey4-1z-FIR" secondAttribute="topMargin" constant="1" id="v68-KQ-Aol"/>
- <constraint firstAttribute="bottomMargin" secondItem="TJT-oW-v24" secondAttribute="bottom" constant="1" id="wW2-st-tCN"/>
- </constraints>
- </view>
- </subviews>
- <color key="backgroundColor" systemColor="systemPurpleColor" red="0.68627450980000004" green="0.32156862749999998" blue="0.87058823529999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstItem="MAo-Oq-qpx" firstAttribute="trailing" secondItem="Ey4-1z-FIR" secondAttribute="trailing" constant="10" id="MIm-Ww-bv7"/>
- <constraint firstItem="Ey4-1z-FIR" firstAttribute="top" secondItem="MAo-Oq-qpx" secondAttribute="top" constant="10" id="bix-sz-KxU"/>
- <constraint firstItem="MAo-Oq-qpx" firstAttribute="bottom" secondItem="Ey4-1z-FIR" secondAttribute="bottom" constant="10" id="e7M-Hm-lte"/>
- <constraint firstItem="Ey4-1z-FIR" firstAttribute="leading" secondItem="MAo-Oq-qpx" secondAttribute="leading" constant="10" id="wv3-8Z-boi"/>
- </constraints>
- <viewLayoutGuide key="safeArea" id="MAo-Oq-qpx"/>
- <connections>
- <outlet property="doubleTapView" destination="FSF-qa-Ph5" id="0zI-JM-gnq"/>
- <outlet property="singleTapView" destination="QmW-VP-tKv" id="RO8-qR-XqL"/>
- </connections>
- </view>
- <connections>
- <outletCollection property="buttons" destination="PKZ-ch-9wl" id="leI-2f-Dv0"/>
- <outletCollection property="buttons" destination="4JX-Pj-iKW" id="6Es-8h-vxZ"/>
- <outletCollection property="buttons" destination="TNH-7i-LBE" id="3UO-P1-hbN"/>
- <outletCollection property="buttons" destination="qxE-TV-gZz" id="6LU-S7-MUP"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="PEX-vZ-Rwq" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="1507.5" y="-173.2394366197183"/>
- </scene>
- <!--PreviewVC-->
- <scene sceneID="Jo6-kD-QNk">
- <objects>
- <viewController storyboardIdentifier="preview_vc" id="q8J-E5-NMK" customClass="PreviewVC" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="ylD-pA-bAw">
- <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" ambiguous="YES" minimumZoomScale="0.25" maximumZoomScale="10" translatesAutoresizingMaskIntoConstraints="NO" id="B1M-Y6-o2v">
- <rect key="frame" x="10" y="10" width="300" height="438"/>
- <subviews>
- <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Iw2-de-ZyO">
- <rect key="frame" x="113" y="184" width="74" height="70"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </imageView>
- </subviews>
- <color key="backgroundColor" systemColor="linkColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <viewLayoutGuide key="contentLayoutGuide" id="ffF-Kb-LDy"/>
- <viewLayoutGuide key="frameLayoutGuide" id="gxm-9d-9nN"/>
- <connections>
- <outlet property="delegate" destination="q8J-E5-NMK" id="7XZ-3f-dyK"/>
- </connections>
- </scrollView>
- <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" text="xxx text" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="nj4-Uy-tiY">
- <rect key="frame" x="10" y="498" width="300" height="60"/>
- <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- <constraints>
- <constraint firstAttribute="height" constant="60" id="rWB-1O-5n0"/>
- </constraints>
- <color key="textColor" systemColor="labelColor" cocoaTouchSystemColor="darkTextColor"/>
- <fontDescription key="fontDescription" name="CourierNewPSMT" family="Courier New" pointSize="16"/>
- <textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" smartDashesType="no" smartInsertDeleteType="no" smartQuotesType="no"/>
- </textView>
- <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.5" maxValue="10" translatesAutoresizingMaskIntoConstraints="NO" id="ULX-bg-omq">
- <rect key="frame" x="8" y="478" width="304" height="30"/>
- <constraints>
- <constraint firstAttribute="height" constant="29" id="qxR-af-KkQ"/>
- </constraints>
- <connections>
- <action selector="actDisplaySliderDidRelease:" destination="q8J-E5-NMK" eventType="editingDidEnd" id="O1Y-JY-U3Q"/>
- <action selector="actDisplaySliderDidRelease:" destination="q8J-E5-NMK" eventType="touchCancel" id="bda-gF-3x9"/>
- <action selector="actDisplaySliderDidRelease:" destination="q8J-E5-NMK" eventType="touchUpOutside" id="g1S-83-xF7"/>
- <action selector="actDisplaySliderDidRelease:" destination="q8J-E5-NMK" eventType="touchUpInside" id="kSu-qe-Uhe"/>
- <action selector="actScaleDidUpdate:" destination="q8J-E5-NMK" eventType="valueChanged" id="Xjj-o9-g8Z"/>
- </connections>
- </slider>
- </subviews>
- <color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- <constraints>
- <constraint firstItem="hO5-c4-PJq" firstAttribute="trailing" secondItem="ULX-bg-omq" secondAttribute="trailing" constant="10" id="7Mm-uJ-I0R"/>
- <constraint firstItem="ULX-bg-omq" firstAttribute="leading" secondItem="hO5-c4-PJq" secondAttribute="leading" constant="10" id="7by-ww-Emc"/>
- <constraint firstItem="B1M-Y6-o2v" firstAttribute="top" secondItem="hO5-c4-PJq" secondAttribute="top" constant="10" id="CUf-Ei-MrX"/>
- <constraint firstItem="hO5-c4-PJq" firstAttribute="trailing" secondItem="nj4-Uy-tiY" secondAttribute="trailing" constant="10" id="DiG-j7-73Q"/>
- <constraint firstItem="hO5-c4-PJq" firstAttribute="trailing" secondItem="B1M-Y6-o2v" secondAttribute="trailing" constant="10" id="NNC-6c-dZm"/>
- <constraint firstItem="nj4-Uy-tiY" firstAttribute="top" secondItem="B1M-Y6-o2v" secondAttribute="bottom" constant="50" id="S3R-6s-avz"/>
- <constraint firstItem="B1M-Y6-o2v" firstAttribute="leading" secondItem="hO5-c4-PJq" secondAttribute="leading" constant="10" id="YxE-Gz-xvL"/>
- <constraint firstItem="hO5-c4-PJq" firstAttribute="bottom" secondItem="nj4-Uy-tiY" secondAttribute="bottom" constant="10" id="b11-J4-TLE"/>
- <constraint firstItem="nj4-Uy-tiY" firstAttribute="leading" secondItem="hO5-c4-PJq" secondAttribute="leading" constant="10" id="cIT-nz-Ro4"/>
- <constraint firstItem="hO5-c4-PJq" firstAttribute="bottom" secondItem="ULX-bg-omq" secondAttribute="bottom" constant="61" id="r7D-e8-W2B"/>
- </constraints>
- <viewLayoutGuide key="safeArea" id="hO5-c4-PJq"/>
- </view>
- <connections>
- <outlet property="imageView" destination="Iw2-de-ZyO" id="z2P-zg-fzg"/>
- <outlet property="scaleSlider" destination="ULX-bg-omq" id="Ebf-mK-bKA"/>
- <outlet property="scrollView" destination="B1M-Y6-o2v" id="XbX-3J-mnr"/>
- <outlet property="textInfo" destination="nj4-Uy-tiY" id="oEI-LO-c1T"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="fCs-pb-wfQ" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="581.25" y="507.04225352112678"/>
- </scene>
- <!--3D App-->
- <scene sceneID="9au-4b-JQm">
- <objects>
- <viewController storyboardIdentifier="idGameViewController" title="3D App" id="0BT-CH-WFx" customClass="GameViewController" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="xfv-mV-w6v" customClass="FunnyRenderView">
- <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <sceneKitView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="036-0y-eGt">
- <rect key="frame" x="15" y="15" width="290" height="538"/>
- </sceneKitView>
- </subviews>
- <color key="backgroundColor" systemColor="systemPurpleColor" red="0.68627450980000004" green="0.32156862749999998" blue="0.87058823529999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstItem="SRc-lN-OtU" firstAttribute="bottom" secondItem="036-0y-eGt" secondAttribute="bottom" constant="15" id="MzH-ag-Yrs"/>
- <constraint firstItem="SRc-lN-OtU" firstAttribute="trailing" secondItem="036-0y-eGt" secondAttribute="trailing" constant="15" id="cdX-0c-TFP"/>
- <constraint firstItem="036-0y-eGt" firstAttribute="leading" secondItem="SRc-lN-OtU" secondAttribute="leading" constant="15" id="klt-AK-6hL"/>
- <constraint firstItem="036-0y-eGt" firstAttribute="top" secondItem="SRc-lN-OtU" secondAttribute="top" constant="15" id="qIo-sw-4ff"/>
- </constraints>
- <viewLayoutGuide key="safeArea" id="SRc-lN-OtU"/>
- <connections>
- <outlet property="scnView" destination="036-0y-eGt" id="ibx-a9-WiA"/>
- </connections>
- </view>
- <connections>
- <outlet property="scnView" destination="036-0y-eGt" id="Sdg-9U-zuX"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="Gat-XI-GYP" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="2190" y="-330"/>
- </scene>
- </scenes>
-</document>
diff --git a/Example Apps/Example ObjC/ExampleApps/Resources/art.scnassets/ship.scn b/Example Apps/Example ObjC/ExampleApps/Resources/art.scnassets/ship.scn
deleted file mode 100644
index ea345ea05..000000000
--- a/Example Apps/Example ObjC/ExampleApps/Resources/art.scnassets/ship.scn
+++ /dev/null
Binary files differ
diff --git a/Example Apps/Example ObjC/ExampleApps/Resources/art.scnassets/texture.png b/Example Apps/Example ObjC/ExampleApps/Resources/art.scnassets/texture.png
deleted file mode 100644
index ba392589b..000000000
--- a/Example Apps/Example ObjC/ExampleApps/Resources/art.scnassets/texture.png
+++ /dev/null
Binary files differ
diff --git a/Example Apps/Example ObjC/ExampleApps/SC3DApp/GameViewController.h b/Example Apps/Example ObjC/ExampleApps/SC3DApp/GameViewController.h
deleted file mode 100644
index 6088ab8c8..000000000
--- a/Example Apps/Example ObjC/ExampleApps/SC3DApp/GameViewController.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// GameViewController.h
-// TestMetal
-//
-// Created by Leonid Lokhmatov on 5/24/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import <UIKit/UIKit.h>
-#import <SceneKit/SceneKit.h>
-#import "SDLStreamingMediaDelegate.h"
-
-@interface GameViewController<SDLStreamingMediaDelegate> : UIViewController
-+ (instancetype)createViewController;
-@end
diff --git a/Example Apps/Example ObjC/ExampleApps/SC3DApp/GameViewController.m b/Example Apps/Example ObjC/ExampleApps/SC3DApp/GameViewController.m
deleted file mode 100644
index 843619408..000000000
--- a/Example Apps/Example ObjC/ExampleApps/SC3DApp/GameViewController.m
+++ /dev/null
@@ -1,192 +0,0 @@
-//
-// GameViewController.m
-// TestMetal
-//
-// Created by Leonid Lokhmatov on 5/24/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import "GameViewController.h"
-
-@interface GameViewController ()
-@property (strong, nonatomic) IBOutlet SCNView *scnView;
-@end
-
-
-@interface FunnyRenderView : UIView
-@property (strong, nonatomic) IBOutlet SCNView *scnView;
-@end
-
-@interface FunnyRenderLayer : CALayer
-@property (strong, nonatomic) IBOutlet SCNView *scnView;
-@end
-
-@implementation FunnyRenderLayer
-
-- (void)renderInContext:(CGContextRef)ctx {
- [self.delegate drawLayer:self inContext:ctx];
-}
-
-@end
-
-
-@implementation FunnyRenderView
-
-+ (Class)layerClass {
- return [FunnyRenderLayer class];
-}
-
-- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
- if (layer == self.layer) {
- if (self.scnView) {
- CGContextSetFillColorWithColor(ctx, self.backgroundColor.CGColor);
- CGContextFillRect(ctx, self.bounds);
- UIImage *image = self.scnView.snapshot;
- const CGRect rect = self.scnView.frame;
- CGContextDrawImage(ctx, rect, image.CGImage);
- }
- }
-}
-
-//- (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates {
-// BOOL ok = [super drawViewHierarchyInRect:rect afterScreenUpdates:afterUpdates];
-// [self.layer drawInContext:UIGraphicsGetCurrentContext()];
-// return ok;
-//}
-
-
-@end
-
-
-@implementation GameViewController
-
-+ (GameViewController*)createViewController {
- UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"ExampleApps" bundle:nil];
- GameViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"idGameViewController"];
- return vc;
-}
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- [self startSceneView:self.scnView];
- self.view.layer.geometryFlipped = YES;
-
- // add a tap gesture recognizer
- [self setupRecognizer];
-}
-
-- (void)startSceneView:(SCNView *)scnView {
- // create a new scene
- SCNScene *scene = [SCNScene sceneNamed:@"art.scnassets/ship.scn"];
-
- // create and add a camera to the scene
- SCNNode *cameraNode = [SCNNode node];
- cameraNode.camera = [SCNCamera camera];
- [scene.rootNode addChildNode:cameraNode];
-
- // place the camera
- cameraNode.position = SCNVector3Make(0, 0, 15);
-
- // create and add a light to the scene
- SCNNode *lightNode = [SCNNode node];
- lightNode.light = [SCNLight light];
- lightNode.light.type = SCNLightTypeOmni;
- lightNode.position = SCNVector3Make(0, 10, 10);
- [scene.rootNode addChildNode:lightNode];
-
- // create and add an ambient light to the scene
- SCNNode *ambientLightNode = [SCNNode node];
- ambientLightNode.light = [SCNLight light];
- ambientLightNode.light.type = SCNLightTypeAmbient;
- ambientLightNode.light.color = [UIColor darkGrayColor];
- [scene.rootNode addChildNode:ambientLightNode];
-
- // retrieve the ship node
- SCNNode *ship = [scene.rootNode childNodeWithName:@"ship" recursively:YES];
-
- // animate the 3d object
- [ship runAction:[SCNAction repeatActionForever:[SCNAction rotateByX:0 y:2 z:0 duration:1]]];
-
- // set the scene to the view
- scnView.scene = scene;
-
- // allows the user to manipulate the camera
- scnView.allowsCameraControl = YES;
-
- // show statistics such as fps and timing information
- scnView.showsStatistics = YES;
-
- // configure the view
- scnView.backgroundColor = [UIColor blackColor];
-}
-
-- (void)setupRecognizer {
- UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
- NSMutableArray *gestureRecognizers = [NSMutableArray array];
- [gestureRecognizers addObject:tapGesture];
- [gestureRecognizers addObjectsFromArray:self.scnView.gestureRecognizers];
- self.scnView.gestureRecognizers = gestureRecognizers;
-}
-
-- (void)handleTap:(UIGestureRecognizer*)gestureRecognize {
- // retrieve the SCNView
- SCNView *scnView = self.scnView;
-
- // check what nodes are tapped
- CGPoint p = [gestureRecognize locationInView:scnView];
- NSArray *hitResults = [scnView hitTest:p options:nil];
-
- // check that we clicked on at least one object
- if([hitResults count] > 0){
- // retrieved the first clicked object
- SCNHitTestResult *result = [hitResults objectAtIndex:0];
-
- // get its material
- SCNMaterial *material = result.node.geometry.firstMaterial;
-
- // highlight it
- [SCNTransaction begin];
- [SCNTransaction setAnimationDuration:0.5];
-
- // on completion - unhighlight
- [SCNTransaction setCompletionBlock:^{
- [SCNTransaction begin];
- [SCNTransaction setAnimationDuration:0.5];
- material.emission.contents = [UIColor blackColor];
- [SCNTransaction commit];
- }];
-
- material.emission.contents = [UIColor redColor];
-
- [SCNTransaction commit];
- }
-}
-
-- (BOOL)shouldAutorotate {
- return YES;
-}
-
-- (BOOL)prefersStatusBarHidden {
- return YES;
-}
-
-//- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
-// if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
-// return UIInterfaceOrientationMaskAllButUpsideDown;
-// } else {
-// return UIInterfaceOrientationMaskAll;
-// }
-//}
-
-#pragma mark - SDLStreamingMediaDelegate
-
-- (void)videoStreamingSizeDidUpdate:(CGSize)displaySize {
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, NSStringFromCGSize(displaySize));
-}
-
-- (void)videoStreamingSizeDoesNotMatch {
- NSLog(@"%s", __PRETTY_FUNCTION__);
-}
-
-@end
diff --git a/Example Apps/Example ObjC/ExampleApps/UIApp/TestUIAppViewController.h b/Example Apps/Example ObjC/ExampleApps/UIApp/TestUIAppViewController.h
deleted file mode 100644
index a2123da97..000000000
--- a/Example Apps/Example ObjC/ExampleApps/UIApp/TestUIAppViewController.h
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// TestUIAppViewController.h
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Leonid Lokhmatov on 5/25/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import <UIKit/UIKit.h>
-#import "SDLStreamingMediaDelegate.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface TestUIAppViewController<SDLStreamingMediaDelegate> : UIViewController
-+ (instancetype)createViewController;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example ObjC/ExampleApps/UIApp/TestUIAppViewController.m b/Example Apps/Example ObjC/ExampleApps/UIApp/TestUIAppViewController.m
deleted file mode 100644
index df7992611..000000000
--- a/Example Apps/Example ObjC/ExampleApps/UIApp/TestUIAppViewController.m
+++ /dev/null
@@ -1,153 +0,0 @@
-//
-// TestUIAppViewController.m
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Leonid Lokhmatov on 5/25/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import "TestUIAppViewController.h"
-#import "SDLStreamingMediaManagerConstants.h"
-
-@interface TestUIAppViewController ()
-@property (strong, nonatomic) IBOutlet UIView *displayView;
-@property (strong, nonatomic) IBOutlet NSLayoutConstraint *displayConstraintX;
-@property (strong, nonatomic) IBOutlet NSLayoutConstraint *displayConstraintY;
-@property (strong, nonatomic) IBOutlet NSLayoutConstraint *displayConstraintW;
-@property (strong, nonatomic) IBOutlet NSLayoutConstraint *displayConstraintH;
-
-@property (strong, nonatomic) IBOutlet UIView *subview1;
-@property (strong, nonatomic) IBOutlet UIView *subview2;
-@property (strong, nonatomic) IBOutlet UIView *subview3;
-@property (strong, nonatomic) IBOutlet UIView *subview4;
-@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *spinner;
-@property (assign, nonatomic) BOOL subscribedForVideoNotifications;
-@property (strong, nonatomic) NSTimer * animeTimer;
-@property (strong, nonatomic) NSArray * animeColorViews;
-@property (assign, nonatomic) int animeIndex;
-@property (assign, nonatomic) BOOL enableDebugFrame;
-@end
-
-@implementation TestUIAppViewController
-
-+ (TestUIAppViewController*)createViewController {
- UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"ExampleApps" bundle:nil];
- TestUIAppViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"idTestUIAppViewController"];
- return vc;
-}
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- self.animeColorViews = @[self.subview1, self.subview2, self.subview3, self.subview4];
- self.animeIndex = 0;
- [self subscribeForNotifications];
- self.enableDebugFrame = YES;
-}
-
-#pragma mark - Notifications
-
-- (void)subscribeForNotifications {
- if (!self.subscribedForVideoNotifications) {
- self.subscribedForVideoNotifications = YES;
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_videoStreamDidStartNotification:) name:SDLVideoStreamDidStartNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_videoStreamDidStopNotification:) name:SDLVideoStreamDidStopNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_videoStreamSuspendedNotification:) name:SDLVideoStreamSuspendedNotification object:nil];
- }
-}
-
-- (void)unsubscribeFromNotifications {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- self.subscribedForVideoNotifications = NO;
-}
-
-- (void)_videoStreamDidStartNotification:(NSNotification*)notification {
- NSLog(@"**V-START");
- dispatch_async(dispatch_get_main_queue(), ^{
- [self startAnime];
- });
-}
-
-- (void)_videoStreamDidStopNotification:(NSNotification*)notification {
- NSLog(@"**V-STOP");
- dispatch_async(dispatch_get_main_queue(), ^{
- [self stopAnime];
- });
-}
-
-- (void)_videoStreamSuspendedNotification:(NSNotification*)notification {
- NSLog(@"**V-SUSPEND");
- dispatch_async(dispatch_get_main_queue(), ^{
- [self stopAnime];
- });
-}
-
-#pragma mark - Animationd
-
-- (void)startAnime {
- NSLog(@"%s: thread: %@", __PRETTY_FUNCTION__, [NSThread isMainThread]?@"main":@"bg thread");
- [self animateView:self.subview1 duration:1];
- [self animateView:self.subview2 duration:1.5];
- [self animateView:self.subview3 duration:2];
- [self animateView:self.subview4 duration:2.5];
- [self.spinner startAnimating];
-
- // note: CA animation does not work offscreen that is why the timer
- [self.animeTimer invalidate];
- self.animeTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(animeTickTimer:) userInfo:nil repeats:YES];
-}
-
-- (void)stopAnime {
- NSLog(@"%s: thread: %@", __PRETTY_FUNCTION__, [NSThread isMainThread]?@"main":@"bg thread");
- [self stopAnimateView:self.subview1];
- [self stopAnimateView:self.subview2];
- [self stopAnimateView:self.subview3];
- [self stopAnimateView:self.subview4];
- [self.spinner stopAnimating];
-
- [self.animeTimer invalidate];
- self.animeTimer = nil;
-}
-
-- (void)animateView:(UIView*)view duration:(float)duration {
- CATransform3D myRotationTransform = CATransform3DMakeRotation(M_PI * 2.0, 0, 0, 1);
- view.layer.transform = myRotationTransform;
- CABasicAnimation *myAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
- myAnimation.duration = duration;
- myAnimation.fromValue = @0.0;
- myAnimation.toValue = @(M_PI * 2.0);
- myAnimation.repeatCount = 999;
- [view.layer addAnimation:myAnimation forKey:@"transform.rotation"];
-}
-
-- (void)stopAnimateView:(UIView*)view {
- [view.layer removeAllAnimations];
-}
-
-- (void)animeTickTimer:(NSTimer*)timer {
- const NSUInteger viewCount = self.animeColorViews.count;
- if (1 < viewCount) {
- UIView *view0 = self.animeColorViews[0];
- UIView *prevView = view0;
- UIColor * color0 = prevView.backgroundColor;
- for (int i=1; i < viewCount; ++i) {
- UIView * nextView = self.animeColorViews[i];
- prevView.backgroundColor = nextView.backgroundColor;
- prevView = nextView;
- }
- prevView.backgroundColor = color0;
- }
-}
-
-#pragma mark - SDLStreamingMediaDelegate
-
-- (void)videoStreamingSizeDidUpdate:(CGSize)displaySize {
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, NSStringFromCGSize(displaySize));
-}
-
-- (void)videoStreamingSizeDoesNotMatch {
- NSLog(@"%s", __PRETTY_FUNCTION__);
-}
-
-@end
-
diff --git a/Example Apps/Example ObjC/Models/SDLTCPConfig.h b/Example Apps/Example ObjC/Models/SDLTCPConfig.h
deleted file mode 100644
index 8b5491282..000000000
--- a/Example Apps/Example ObjC/Models/SDLTCPConfig.h
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-// SDLTCPConfig.h
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Leonid Lokhmatov on 5/19/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLTCPConfig : NSObject
-
-+ (instancetype)configWithHost:(NSString*)host port:(UInt16)port;
-
-@property (strong, nonatomic) NSString *ipAddress;
-@property (assign, nonatomic) UInt16 port;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example ObjC/Models/SDLTCPConfig.m b/Example Apps/Example ObjC/Models/SDLTCPConfig.m
deleted file mode 100644
index 9000c1987..000000000
--- a/Example Apps/Example ObjC/Models/SDLTCPConfig.m
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// SDLTCPConfig.m
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Leonid Lokhmatov on 5/19/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import "SDLTCPConfig.h"
-
-@implementation SDLTCPConfig
-
-+ (instancetype)configWithHost:(NSString*)host port:(UInt16)port {
- return [[self alloc] initWithHost:host port:port];
-}
-
-- (instancetype)initWithHost:(NSString*)host port:(UInt16)port {
- if ((self = [super init])) {
- _ipAddress = host;
- _port = port;
- }
- return self;
-}
-
-@end
diff --git a/Example Apps/Example ObjC/Models/VideoStreamSettings.h b/Example Apps/Example ObjC/Models/VideoStreamSettings.h
deleted file mode 100644
index e1ab7a69f..000000000
--- a/Example Apps/Example ObjC/Models/VideoStreamSettings.h
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-// VideoStreamSettings.h
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Leonid Lokhmatov on 7/28/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import <Foundation/Foundation.h>
-
-@class SDLSupportedStreamingRange;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface VideoStreamSettings : NSObject
-@property (nonatomic, copy) NSString * SDLVersion;
-@property (strong, nonatomic, nullable) SDLSupportedStreamingRange *supportedLandscapeStreamingRange;
-@property (strong, nonatomic, nullable) SDLSupportedStreamingRange *supportedPortraitStreamingRange;
-- (NSString *)detailedDescription;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example ObjC/Models/VideoStreamSettings.m b/Example Apps/Example ObjC/Models/VideoStreamSettings.m
deleted file mode 100644
index b0f8a9a63..000000000
--- a/Example Apps/Example ObjC/Models/VideoStreamSettings.m
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// VideoStreamSettings.m
-// SmartDeviceLink-Example-ObjC
-//
-// Created by Leonid Lokhmatov on 7/28/20.
-// Copyright © 2018 Luxoft. All rights reserved
-//
-
-#import "VideoStreamSettings.h"
-#import "SDLSupportedStreamingRange.h"
-
-@implementation VideoStreamSettings
-
-- (NSString *)detailedDescription {
- return [NSString stringWithFormat:@"SDLVersion: %@\nsupportedLandscapeStreamingRange: %@\nsupportedPortraitStreamingRange: %@", self.SDLVersion, self.supportedLandscapeStreamingRange, self.supportedPortraitStreamingRange];
-}
-
-@end
diff --git a/Example Apps/Example Video ObjC/ConnectionContainerViewController.h b/Example Apps/Example Video ObjC/ConnectionContainerViewController.h
deleted file mode 100644
index 4e2d1ea32..000000000
--- a/Example Apps/Example Video 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 Video ObjC/ConnectionContainerViewController.m b/Example Apps/Example Video ObjC/ConnectionContainerViewController.m
deleted file mode 100644
index 0e0af883b..000000000
--- a/Example Apps/Example Video ObjC/ConnectionContainerViewController.m
+++ /dev/null
@@ -1,154 +0,0 @@
-//
-// ConnectionContainerViewController.m
-// SmartDeviceLink-iOS
-
-#import "ConnectionContainerViewController.h"
-
-#import "ConnectionTCPTableViewController.h"
-#import "ConnectionIAPTableViewController.h"
-#import "ConnectionTransitionContext.h"
-#import "ConnectionAnimatedTransition.h"
-#import "Preferences.h"
-#import "SDLImageResolution.h"
-#import "SDLSupportedStreamingRange.h"
-#import "VideoStreamSettings.h"
-#import "VideoStreamingSettingsViewController.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;
-
-@property (strong, nonatomic) ConnectionTCPTableViewController *tcpController;
-@property (strong, nonatomic) ConnectionIAPTableViewController *iapController;
-@property (strong, nonatomic) VideoStreamSettings *videoStreamSettings;
-
-@end
-
-
-
-@implementation ConnectionContainerViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- self.navigationController.navigationBar.translucent = NO;
-
- // setup video settings
- self.videoStreamSettings = [VideoStreamSettings new];
- SDLImageResolution *minResolutionLand = [[SDLImageResolution alloc] initWithWidth:400 height:300];
- SDLImageResolution *maxResolutionLand = [[SDLImageResolution alloc] initWithWidth:1000 height:800];
- self.videoStreamSettings.supportedLandscapeStreamingRange = [[SDLSupportedStreamingRange alloc] initWithResolutionsMinimum:minResolutionLand maximun:maxResolutionLand];
-
- SDLImageResolution *minResolutionPort = [[SDLImageResolution alloc] initWithWidth:300 height:400];
- SDLImageResolution *maxResolutionPort = [[SDLImageResolution alloc] initWithWidth:800 height:1000];
- self.videoStreamSettings.supportedPortraitStreamingRange = [[SDLSupportedStreamingRange alloc] initWithResolutionsMinimum:minResolutionPort maximun:maxResolutionPort];
-
- // Setup the child VCs
- UIStoryboard *tcpControllerStoryboard = [UIStoryboard storyboardWithName:@"ConnectionTCPTableViewController" bundle:nil];
- self.tcpController = [tcpControllerStoryboard instantiateInitialViewController];
- self.tcpController.videoStreamSettings = self.videoStreamSettings;
-
- UIStoryboard *iapControllerStoryboard = [UIStoryboard storyboardWithName:@"ConnectionIAPTableViewController" bundle:nil];
- self.iapController = [iapControllerStoryboard instantiateInitialViewController];
- self.iapController.videoStreamSettings = self.videoStreamSettings;
-
- self.viewControllers = @[self.tcpController, self.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 - Navigation
-
-- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
- // Get the new view controller using [segue destinationViewController].
- // Pass the selected object to the new view controller.
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, segue);
-
- VideoStreamingSettingsViewController *settingsController = [[segue destinationViewController] isKindOfClass:[VideoStreamingSettingsViewController class]] ? [segue destinationViewController] : nil;
- settingsController.videoStreamSettings = self.videoStreamSettings;
-}
-
-#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 Video ObjC/ConnectionIAPTableViewController.h b/Example Apps/Example Video ObjC/ConnectionIAPTableViewController.h
deleted file mode 100644
index 09440d371..000000000
--- a/Example Apps/Example Video ObjC/ConnectionIAPTableViewController.h
+++ /dev/null
@@ -1,10 +0,0 @@
-//
-// ConnectionIAPTableViewController.h
-// SmartDeviceLink-iOS
-
-#import <UIKit/UIKit.h>
-#import "VideoStreamSettings.h"
-
-@interface ConnectionIAPTableViewController : UITableViewController
-@property (strong, nonatomic, nullable) VideoStreamSettings *videoStreamSettings;
-@end
diff --git a/Example Apps/Example Video ObjC/ConnectionIAPTableViewController.m b/Example Apps/Example Video ObjC/ConnectionIAPTableViewController.m
deleted file mode 100644
index bfb931069..000000000
--- a/Example Apps/Example Video ObjC/ConnectionIAPTableViewController.m
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// ConnectionIAPTableViewController.m
-// SmartDeviceLink-iOS
-
-#import "ConnectionIAPTableViewController.h"
-
-#import "ProxyManager.h"
-
-
-@interface ConnectionIAPTableViewController ()
-
-@property (weak, nonatomic) IBOutlet UITableViewCell *connectTableViewCell;
-@property (weak, nonatomic) IBOutlet UIButton *connectButton;
-
-@end
-
-
-@implementation ConnectionIAPTableViewController
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- // Observe Proxy Manager state
- [[ProxyManager sharedManager] addObserver:self forKeyPath:NSStringFromSelector(@selector(state)) options:(NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew) context:nil];
-
- // Tableview setup
- self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
-
- // Connect Button setup
- self.connectButton.tintColor = [UIColor whiteColor];
-}
-
-- (void)dealloc {
- @try {
- [[ProxyManager sharedManager] removeObserver:self forKeyPath:NSStringFromSelector(@selector(state))];
- } @catch (NSException __unused *exception) {}
-}
-
-
-#pragma mark - IBActions
-
-- (IBAction)connectButtonWasPressed:(UIButton *)sender {
- ProxyState state = [ProxyManager sharedManager].state;
- switch (state) {
- case ProxyStateStopped: {
- [[ProxyManager sharedManager] startWithProxyTransportType:ProxyTransportTypeIAP];
- } break;
- case ProxyStateSearchingForConnection: {
- [[ProxyManager sharedManager] stopConnection];
- } break;
- case ProxyStateConnected: {
- [[ProxyManager sharedManager] stopConnection];
- } break;
- default: break;
- }
-}
-
-
-#pragma mark - KVO
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
- if ([keyPath isEqualToString:NSStringFromSelector(@selector(state))]) {
- ProxyState newState = [change[NSKeyValueChangeNewKey] unsignedIntegerValue];
- [self proxyManagerDidChangeState:newState];
- }
-}
-
-
-#pragma mark - Private Methods
-
-- (void)proxyManagerDidChangeState:(ProxyState)newState {
- UIColor* newColor = nil;
- NSString* newTitle = nil;
-
- switch (newState) {
- case ProxyStateStopped: {
- newColor = [UIColor redColor];
- newTitle = @"Connect";
- } break;
- case ProxyStateSearchingForConnection: {
- newColor = [UIColor blueColor];
- newTitle = @"Stop Searching";
- } break;
- case ProxyStateConnected: {
- newColor = [UIColor greenColor];
- newTitle = @"Disconnect";
- } break;
- default: break;
- }
-
- if (newColor || newTitle) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.connectTableViewCell setBackgroundColor:newColor];
- [self.connectButton setTitle:newTitle forState:UIControlStateNormal];
- });
- }
-}
-
-
-@end
diff --git a/Example Apps/Example Video ObjC/ConnectionTCPTableViewController.h b/Example Apps/Example Video ObjC/ConnectionTCPTableViewController.h
deleted file mode 100644
index 43db61a88..000000000
--- a/Example Apps/Example Video ObjC/ConnectionTCPTableViewController.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// ConnectionTCPTableViewController.h
-// SmartDeviceLink-iOS
-
-#import <UIKit/UIKit.h>
-
-@class VideoStreamSettings;
-
-@interface ConnectionTCPTableViewController : UITableViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
-@property (strong, nonatomic, nullable) VideoStreamSettings *videoStreamSettings;
-@end
diff --git a/Example Apps/Example Video ObjC/ConnectionTCPTableViewController.m b/Example Apps/Example Video ObjC/ConnectionTCPTableViewController.m
deleted file mode 100644
index 2c610e745..000000000
--- a/Example Apps/Example Video ObjC/ConnectionTCPTableViewController.m
+++ /dev/null
@@ -1,167 +0,0 @@
-//
-// ConnectionTCPTableViewController.m
-// SmartDeviceLink-iOS
-
-#import <AVFoundation/AVFoundation.h>
-#import <MobileCoreServices/MobileCoreServices.h>
-#import "ConnectionTCPTableViewController.h"
-#import "Preferences.h"
-#import "ProxyManager.h"
-#import "SDLStreamingMediaManager.h"
-#import "SDLManager.h"
-#import "SDLStreamingMediaDelegate.h"
-#import "SDLTCPConfig.h"
-#import "VideoSourceViewController.h"
-#import "VideoStreamSettings.h"
-
-
-@interface ConnectionTCPTableViewController ()
-
-@property (weak, nonatomic) IBOutlet UITextField *ipAddressTextField;
-@property (weak, nonatomic) IBOutlet UITextField *portTextField;
-
-@property (weak, nonatomic) IBOutlet UITableViewCell *connectTableViewCell;
-@property (weak, nonatomic) IBOutlet UIButton *connectButton;
-@property (weak, nonatomic) IBOutlet UISegmentedControl *appSelector;
-
-@property (strong, nonatomic, nullable) VideoSourceViewController *videoSourceViewController;
-
-@end
-
-
-@implementation ConnectionTCPTableViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- // Observe Proxy Manager state
- [[ProxyManager sharedManager] addObserver:self forKeyPath:NSStringFromSelector(@selector(state)) options:(NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew) context:nil];
-
- // Tableview setup
- self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
- self.ipAddressTextField.text = [Preferences sharedPreferences].ipAddress;
- self.portTextField.text = [@([Preferences sharedPreferences].port) stringValue];
-
- // Connect Button setup
- self.connectButton.tintColor = [UIColor whiteColor];
-}
-
-- (void)dealloc {
- @try {
- [[ProxyManager sharedManager] removeObserver:self forKeyPath:NSStringFromSelector(@selector(state))];
- } @catch (NSException __unused *exception) {}
-}
-
-
-#pragma mark - IBActions
-
-- (IBAction)connectButtonWasPressed:(UIButton *)sender {
- [Preferences sharedPreferences].ipAddress = self.ipAddressTextField.text;
- [Preferences sharedPreferences].port = self.portTextField.text.integerValue;
-
- [self.view endEditing:YES]; // hide keyboard
-
- ProxyState state = [ProxyManager sharedManager].state;
- switch (state) {
- case ProxyStateStopped: {
- [self startProxy];
- } break;
- case ProxyStateSearchingForConnection: {
- [[ProxyManager sharedManager] stopConnection];
- } break;
- case ProxyStateConnected: {
- [[ProxyManager sharedManager] stopConnection];
- } break;
- default: break;
- }
-}
-
-#pragma mark - Table view delegate
-
-- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- if (indexPath.section != 0) {
- return;
- }
-
- switch (indexPath.row) {
- case 0: {
- [self.ipAddressTextField becomeFirstResponder];
- } break;
- case 1: {
- [self.portTextField becomeFirstResponder];
- } break;
- default: break;
- }
-}
-
-
-#pragma mark - KVO
-
-- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
- if ([keyPath isEqualToString:NSStringFromSelector(@selector(state))]) {
- ProxyState newState = [change[NSKeyValueChangeNewKey] unsignedIntegerValue];
- dispatch_async(dispatch_get_main_queue(), ^{
- [self proxyManagerDidChangeState:newState];
- });
- }
-}
-
-- (void)proxyManagerDidChangeState:(ProxyState)newState {
- UIColor* newColor = nil;
- NSString* newTitle = nil;
-
- switch (newState) {
- case ProxyStateStopped: {
- newColor = [UIColor redColor];
- newTitle = @"Connect";
- [self finishApp];
- } break;
- case ProxyStateSearchingForConnection: {
- newColor = [UIColor blueColor];
- newTitle = @"Stop Searching";
- } break;
- case ProxyStateConnected: {
- newColor = [UIColor greenColor];
- newTitle = @"Disconnect";
- [self presentVideoApp];
- } break;
- default: break;
- }
-
- if (newColor || newTitle) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.connectTableViewCell setBackgroundColor:newColor];
- [self.connectButton setTitle:newTitle forState:UIControlStateNormal];
- });
- }
-}
-
-- (void)startProxy {
- SDLTCPConfig *tcpConfig = [SDLTCPConfig configWithHost:self.ipAddressTextField.text port:self.portTextField.text.integerValue];
-
- if (!self.videoSourceViewController) {
- self.videoSourceViewController = [VideoSourceViewController createInstance];
- }
- ProxyManager *proxy = [ProxyManager sharedManager];
- proxy.videoSourceViewController = self.videoSourceViewController;
- proxy.videoStreamSettings = self.videoStreamSettings;
-
- [proxy startProxyTCP:tcpConfig];
-}
-
-// start & show / stop & hide video app
-
-- (void)presentVideoApp {
- // dont push it twice
- if (![self.navigationController.viewControllers containsObject:self.videoSourceViewController]) {
- [self.navigationController pushViewController:self.videoSourceViewController animated:YES];
- }
-}
-
-- (void)finishApp {
- if (self.videoSourceViewController) {
- [self.navigationController popToViewController:self.parentViewController animated:YES];
- }
-}
-
-@end
diff --git a/Example Apps/Example Video ObjC/ProxyManager.h b/Example Apps/Example Video ObjC/ProxyManager.h
deleted file mode 100644
index 1c9c48ed2..000000000
--- a/Example Apps/Example Video ObjC/ProxyManager.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// ProxyManager.h
-// SmartDeviceLink-iOS
-
-#import <UIKit/UIKit.h>
-#import "SDLTCPConfig.h"
-
-@class SDLManager;
-
-typedef NS_ENUM(NSUInteger, ProxyTransportType) {
- ProxyTransportTypeTCP,
- ProxyTransportTypeIAP
-};
-
-typedef NS_ENUM(NSUInteger, ProxyState) {
- ProxyStateStopped,
- ProxyStateSearchingForConnection,
- ProxyStateConnected
-};
-
-@protocol SDLStreamingMediaDelegate;
-@class VideoStreamSettings;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface ProxyManager : NSObject
-
-@property (assign, nonatomic, readonly) ProxyState state;
-@property (strong, nonatomic, nullable) SDLManager *sdlManager;
-
-@property (strong, nonatomic, nullable) UIViewController<SDLStreamingMediaDelegate> *videoSourceViewController;
-@property (strong, nonatomic, nullable) VideoStreamSettings *videoStreamSettings;
-
-+ (instancetype)sharedManager;
-- (void)startWithProxyTransportType:(ProxyTransportType)proxyTransportType;
-- (void)startProxyTCP:(SDLTCPConfig *)tcpConfig;
-- (void)stopConnection;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example Video ObjC/ProxyManager.m b/Example Apps/Example Video ObjC/ProxyManager.m
deleted file mode 100644
index 75c72c4ed..000000000
--- a/Example Apps/Example Video ObjC/ProxyManager.m
+++ /dev/null
@@ -1,482 +0,0 @@
-//
-// ProxyManager.m
-// SmartDeviceLink-iOS
-
-#import "AppConstants.h"
-#import "AlertManager.h"
-#import "ButtonManager.h"
-#import "MenuManager.h"
-#import "PerformInteractionManager.h"
-#import "Preferences.h"
-#import "ProxyManager.h"
-#import "RPCPermissionsManager.h"
-#import "SmartDeviceLink.h"
-#import "SubscribeButtonManager.h"
-#import "VehicleDataManager.h"
-#import "SDLCarWindow.h"
-#import "SDLStreamingMediaDelegate.h"
-#import "VideoStreamSettings.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-
-@interface ProxyManager () <SDLManagerDelegate>
-
-// Describes the first time the HMI state goes non-none and full.
-@property (assign, nonatomic) SDLHMILevel firstHMILevel;
-
-@property (strong, nonatomic) VehicleDataManager *vehicleDataManager;
-@property (strong, nonatomic) PerformInteractionManager *performManager;
-@property (strong, nonatomic) ButtonManager *buttonManager;
-@property (strong, nonatomic) SubscribeButtonManager *subscribeButtonManager;
-@property (nonatomic, copy, nullable) RefreshUIHandler refreshUIHandler;
-@end
-
-//#Touch_Input:
-@interface ProxyManager (SDLTouchManagerDelegate) <SDLTouchManagerDelegate>
-- (void)touchEventAvailable:(SDLRPCNotificationNotification *)notification;
-@end
-
-
-@implementation ProxyManager
-
-#pragma mark - Initialization
-
-+ (instancetype)sharedManager {
- static ProxyManager *sharedManager = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedManager = [[ProxyManager alloc] init];
- });
-
- return sharedManager;
-}
-
-- (instancetype)init {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- _state = ProxyStateStopped;
- _firstHMILevel = SDLHMILevelNone;
-
- //#Touch_Input: Pre sdl_ios v6.3
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(touchEventAvailable:) name:SDLDidReceiveTouchEventNotification object:nil];
-
- return self;
-}
-
-- (void)sdlex_startManager {
- __weak typeof (self) weakSelf = self;
- [self.sdlManager startWithReadyHandler:^(BOOL success, NSError * _Nullable error) {
- if (!success) {
- SDLLogE(@"SDL errored starting up: %@", error);
- [weakSelf sdlex_updateProxyState:ProxyStateStopped];
- return;
- }
-
- self.vehicleDataManager = [[VehicleDataManager alloc] initWithManager:self.sdlManager refreshUIHandler:self.refreshUIHandler];
- self.performManager = [[PerformInteractionManager alloc] initWithManager:self.sdlManager];
- self.buttonManager = [[ButtonManager alloc] initWithManager:self.sdlManager refreshUIHandler:self.refreshUIHandler];
- self.subscribeButtonManager = [[SubscribeButtonManager alloc] initWithManager:self.sdlManager];
-
- [weakSelf sdlex_updateProxyState:ProxyStateConnected];
- [RPCPermissionsManager setupPermissionsCallbacksWithManager:weakSelf.sdlManager];
- [weakSelf sdlex_showInitialData];
-
- SDLLogD(@"SDL file manager storage: %lu mb", (long)self.sdlManager.fileManager.bytesAvailable / 1024 / 1024);
- }];
-}
-
-- (void)stopConnection {
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.sdlManager stop];
- });
-
- [self sdlex_updateProxyState:ProxyStateStopped];
-}
-
-- (void)sdlex_updateProxyState:(ProxyState)newState {
- if (self.state != newState) {
- [self willChangeValueForKey:@"state"];
- _state = newState;
- [self didChangeValueForKey:@"state"];
- }
-}
-
-#pragma mark - SDL Configuration
-
-- (void)startProxyTCP:(SDLTCPConfig *)tcpConfig {
- assert(nil != tcpConfig);
- if (self.sdlManager) {
- [self.sdlManager stop];
- self.sdlManager = nil;
- }
-
- [self sdlex_updateProxyState:ProxyStateSearchingForConnection];
-
- SDLLifecycleConfiguration *lifecycleConfiguration = [SDLLifecycleConfiguration debugConfigurationWithAppName:ExampleAppName fullAppId:ExampleFullAppId ipAddress:tcpConfig.ipAddress port:tcpConfig.port];
-
- UIImage *appLogo = [[UIImage imageNamed:ExampleAppLogoName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
- SDLArtwork *appIconArt = [SDLArtwork persistentArtworkWithImage:appLogo asImageFormat:SDLArtworkImageFormatPNG];
-
- lifecycleConfiguration.shortAppName = ExampleAppNameShort;
- lifecycleConfiguration.appIcon = appIconArt;
- lifecycleConfiguration.voiceRecognitionCommandNames = @[ExampleAppNameTTS];
- lifecycleConfiguration.ttsName = [SDLTTSChunk textChunksFromString:ExampleAppName];
- lifecycleConfiguration.language = SDLLanguageEnUs;
- lifecycleConfiguration.languagesSupported = @[SDLLanguageEnUs, SDLLanguageFrCa, SDLLanguageEsMx];
- lifecycleConfiguration.appType = SDLAppHMITypeProjection;
-
- SDLRGBColor *green = [[SDLRGBColor alloc] initWithRed:126 green:188 blue:121];
- SDLRGBColor *white = [[SDLRGBColor alloc] initWithRed:249 green:251 blue:254];
- SDLRGBColor *darkGrey = [[SDLRGBColor alloc] initWithRed:57 green:78 blue:96];
- SDLRGBColor *grey = [[SDLRGBColor alloc] initWithRed:186 green:198 blue:210];
- lifecycleConfiguration.dayColorScheme = [[SDLTemplateColorScheme alloc] initWithPrimaryRGBColor:green secondaryRGBColor:grey backgroundRGBColor:white];
- lifecycleConfiguration.nightColorScheme = [[SDLTemplateColorScheme alloc] initWithPrimaryRGBColor:green secondaryRGBColor:grey backgroundRGBColor:darkGrey];
-
- SDLLockScreenConfiguration *lockScreenConfiguration = [SDLLockScreenConfiguration enabledConfigurationWithAppIcon:[UIImage imageNamed:ExampleAppLogoName] backgroundColor:nil];
-
-
- SDLStreamingMediaConfiguration *streamingConfig = nil;
- if (self.videoSourceViewController) {
- streamingConfig = [SDLStreamingMediaConfiguration autostreamingInsecureConfigurationWithInitialViewController:self.videoSourceViewController];
- streamingConfig.delegate = self.videoSourceViewController;
- } else {
- streamingConfig = [SDLStreamingMediaConfiguration insecureConfiguration];
- }
- streamingConfig.supportedPortraitStreamingRange = self.videoStreamSettings.supportedPortraitStreamingRange;
- streamingConfig.supportedLandscapeStreamingRange = self.videoStreamSettings.supportedLandscapeStreamingRange;
-
- SDLEncryptionConfiguration *encryptionConfig = [SDLEncryptionConfiguration defaultConfiguration];
- SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfiguration lockScreen:lockScreenConfiguration logging:[self.class sdlex_logConfiguration] streamingMedia:streamingConfig fileManager:[SDLFileManagerConfiguration defaultConfiguration] encryption:encryptionConfig];
-
- self.sdlManager = [[SDLManager alloc] initWithConfiguration:config delegate:self];
- self.sdlManager.sdlMsgVersionString = self.videoStreamSettings.SDLVersion;
-
- __weak typeof (self) weakSelf = self;
- [self.sdlManager startWithReadyHandler:^(BOOL success, NSError * _Nullable error) {
- if (!success) {
- NSLog(@"SDL start error: %@", error);
- [weakSelf sdlex_updateProxyState:ProxyStateStopped];
- return;
- }
-
- weakSelf.vehicleDataManager = [[VehicleDataManager alloc] initWithManager:weakSelf.sdlManager refreshUIHandler:weakSelf.refreshUIHandler];
- weakSelf.performManager = [[PerformInteractionManager alloc] initWithManager:weakSelf.sdlManager];
- weakSelf.buttonManager = [[ButtonManager alloc] initWithManager:weakSelf.sdlManager refreshUIHandler:weakSelf.refreshUIHandler];
-
- [weakSelf sdlex_updateProxyState:ProxyStateConnected];
- [RPCPermissionsManager setupPermissionsCallbacksWithManager:weakSelf.sdlManager];
- [weakSelf sdlex_showInitialData];
-
- //#Touch_Input, decide who is the delegate
- if ([weakSelf.videoSourceViewController conformsToProtocol:@protocol(SDLTouchManagerDelegate)]) {
- weakSelf.sdlManager.streamManager.touchManager.touchEventDelegate = (id<SDLTouchManagerDelegate>) weakSelf.videoSourceViewController;
- } else {
- weakSelf.sdlManager.streamManager.touchManager.touchEventDelegate = self;
- }
-
- NSLog(@"SDL started, file manager storage: %lu mb", (long)weakSelf.sdlManager.fileManager.bytesAvailable / 1024 / 1024);
- }];
-}
-
-- (void)startWithProxyTransportType:(ProxyTransportType)proxyTransportType {
- [self sdlex_updateProxyState:ProxyStateSearchingForConnection];
-
- SDLLifecycleConfiguration *lifecycleConfig = proxyTransportType == ProxyTransportTypeIAP ? [self.class sdlex_iapLifecycleConfiguration] : [self.class sdlex_tcpLifecycleConfiguration];
- [self sdlex_setupConfigurationWithLifecycleConfiguration:lifecycleConfig];
-}
-
-+ (SDLLifecycleConfiguration *)sdlex_iapLifecycleConfiguration {
- return [self.class sdlex_setLifecycleConfigurationPropertiesOnConfiguration:[SDLLifecycleConfiguration defaultConfigurationWithAppName:ExampleAppName fullAppId:ExampleFullAppId]];
-}
-
-+ (SDLLifecycleConfiguration *)sdlex_tcpLifecycleConfiguration {
- return [self.class sdlex_setLifecycleConfigurationPropertiesOnConfiguration:[SDLLifecycleConfiguration debugConfigurationWithAppName:ExampleAppName fullAppId:ExampleFullAppId ipAddress:[Preferences sharedPreferences].ipAddress port:[Preferences sharedPreferences].port]];
-}
-
-- (void)sdlex_setupConfigurationWithLifecycleConfiguration:(SDLLifecycleConfiguration *)lifecycleConfiguration {
- if (self.sdlManager != nil) {
- [self.sdlManager stop];
- self.sdlManager = nil;
- }
-
- SDLLockScreenConfiguration *lockScreenConfiguration = [SDLLockScreenConfiguration enabledConfigurationWithAppIcon:[UIImage imageNamed:ExampleAppLogoName] backgroundColor:nil];
- SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfiguration lockScreen:lockScreenConfiguration logging:[self.class sdlex_logConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration] encryption:[SDLEncryptionConfiguration defaultConfiguration]];
- self.sdlManager = [[SDLManager alloc] initWithConfiguration:config delegate:self];
- [self sdlex_startManager];
-}
-
-+ (SDLLifecycleConfiguration *)sdlex_setLifecycleConfigurationPropertiesOnConfiguration:(SDLLifecycleConfiguration *)config {
- UIImage *appLogo = [[UIImage imageNamed:ExampleAppLogoName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
- SDLArtwork *appIconArt = [SDLArtwork persistentArtworkWithImage:appLogo asImageFormat:SDLArtworkImageFormatPNG];
-
- config.shortAppName = ExampleAppNameShort;
- config.appIcon = appIconArt;
- config.voiceRecognitionCommandNames = @[ExampleAppNameTTS];
- config.ttsName = [SDLTTSChunk textChunksFromString:ExampleAppName];
- config.language = SDLLanguageEnUs;
- config.languagesSupported = @[SDLLanguageEnUs, SDLLanguageFrCa, SDLLanguageEsMx];
- config.appType = SDLAppHMITypeDefault;
-
- SDLRGBColor *green = [[SDLRGBColor alloc] initWithRed:126 green:188 blue:121];
- SDLRGBColor *white = [[SDLRGBColor alloc] initWithRed:249 green:251 blue:254];
- SDLRGBColor *darkGrey = [[SDLRGBColor alloc] initWithRed:57 green:78 blue:96];
- SDLRGBColor *grey = [[SDLRGBColor alloc] initWithRed:186 green:198 blue:210];
- config.dayColorScheme = [[SDLTemplateColorScheme alloc] initWithPrimaryRGBColor:green secondaryRGBColor:grey backgroundRGBColor:white];
- config.nightColorScheme = [[SDLTemplateColorScheme alloc] initWithPrimaryRGBColor:green secondaryRGBColor:grey backgroundRGBColor:darkGrey];
-
- return config;
-}
-
-+ (SDLLogConfiguration *)sdlex_logConfiguration {
- SDLLogConfiguration *logConfig = [SDLLogConfiguration debugConfiguration];
- SDLLogFileModule *sdlExampleModule = [SDLLogFileModule moduleWithName:@"SDL Obj-C Example App" files:[NSSet setWithArray:@[@"ProxyManager", @"AlertManager", @"AudioManager", @"ButtonManager", @"SubscribeButtonManager", @"MenuManager", @"PerformInteractionManager", @"RPCPermissionsManager", @"VehicleDataManager"]]];
- logConfig.modules = [logConfig.modules setByAddingObject:sdlExampleModule];
- logConfig.targets = [logConfig.targets setByAddingObject:[SDLLogTargetFile logger]];
- logConfig.globalLogLevel = SDLLogLevelDebug;
-
- return logConfig;
-}
-
-#pragma mark - Screen UI Helpers
-
-- (void)sdlex_createMenus {
- self.sdlManager.screenManager.menu = [MenuManager allMenuItemsWithManager:self.sdlManager performManager:self.performManager];
- self.sdlManager.screenManager.voiceCommands = [MenuManager allVoiceMenuItemsWithManager:self.sdlManager];
-}
-
-- (void)sdlex_showInitialData {
- if (![self.sdlManager.hmiLevel isEqualToEnum:SDLHMILevelFull]) { return; }
-
- SDLSetDisplayLayout *setDisplayLayout = [[SDLSetDisplayLayout alloc] initWithPredefinedLayout:SDLPredefinedLayoutNonMedia];
- [self.sdlManager sendRequest:setDisplayLayout];
-
- [self sdlex_updateScreen];
- self.sdlManager.screenManager.softButtonObjects = [self.buttonManager allScreenSoftButtons];
-}
-
-- (nullable RefreshUIHandler)refreshUIHandler {
- if(!_refreshUIHandler) {
- __weak typeof(self) weakSelf = self;
- weakSelf.refreshUIHandler = ^{
- [weakSelf sdlex_updateScreen];
- };
- }
-
- return _refreshUIHandler;
-}
-
-- (void)sdlex_updateScreen {
- if (![self.sdlManager.hmiLevel isEqualToEnum:SDLHMILevelFull]) { return; }
-
- SDLScreenManager *screenManager = self.sdlManager.screenManager;
- BOOL isTextEnabled = self.buttonManager.isTextEnabled;
- BOOL areImagesVisible = self.buttonManager.areImagesEnabled;
-
- [screenManager beginUpdates];
- screenManager.textAlignment = SDLTextAlignmentLeft;
- screenManager.title = isTextEnabled ? @"Home" : nil;
- screenManager.textField1 = isTextEnabled ? SmartDeviceLinkText : nil;
- screenManager.textField2 = isTextEnabled ? [NSString stringWithFormat:@"Obj-C %@", ExampleAppText] : nil;
- screenManager.textField3 = isTextEnabled ? self.vehicleDataManager.vehicleOdometerData : nil;
-
- if ([self sdlex_imageFieldSupported:SDLImageFieldNameGraphic]) {
- screenManager.primaryGraphic = areImagesVisible ? [SDLArtwork persistentArtworkWithImage:[[UIImage imageNamed:ExampleAppLogoName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] asImageFormat:SDLArtworkImageFormatPNG] : nil;
- }
-
- if ([self sdlex_imageFieldSupported:SDLImageFieldNameSecondaryGraphic]) {
- screenManager.secondaryGraphic = areImagesVisible ? [SDLArtwork persistentArtworkWithImage:[UIImage imageNamed:CarBWIconImageName] asImageFormat:SDLArtworkImageFormatPNG] : nil;
- }
-
- [screenManager endUpdatesWithCompletionHandler:^(NSError * _Nullable error) {
- SDLLogD(@"Updated text and graphics, error? %@", error);
- }];
-}
-
-/**
- * Checks if SDL Core's HMI current template supports the template image field (i.e. primary graphic, secondary graphic, etc.)
- *
- * @param imageFieldName The name for the image field
- * @return True if the image field is supported, false if not
- */
-- (BOOL)sdlex_imageFieldSupported:(SDLImageFieldName)imageFieldName {
- for (SDLImageField *imageField in self.sdlManager.systemCapabilityManager.defaultMainWindowCapability.imageFields) {
- if ([imageField.name isEqualToString:imageFieldName]) {
- return YES;
- }
- }
- return NO;
-}
-
-#pragma mark - SDLManagerDelegate
-
-/// Called when the connection beween this app and the module has closed.
-- (void)managerDidDisconnect {
- if (self.state != ProxyStateStopped) {
- [self sdlex_updateProxyState:ProxyStateSearchingForConnection];
- }
-
- self.firstHMILevel = SDLHMILevelNone;
-}
-
-/// Called when the state of the SDL app has changed. The state limits the type of RPC that can be sent. Refer to the class documentation for each RPC to determine what state(s) the RPC can be sent.
-/// @param oldLevel The old HMI Level
-/// @param newLevel The new HMI Level
-- (void)hmiLevel:(SDLHMILevel)oldLevel didChangeToLevel:(SDLHMILevel)newLevel {
- NSLog(@"hmiLevel:changed:HMI[%@-->%@]", oldLevel, newLevel);
-
- if (![newLevel isEqualToEnum:SDLHMILevelNone] && ([self.firstHMILevel isEqualToEnum:SDLHMILevelNone])) {
- // This is our first time in a non-NONE state
- self.firstHMILevel = newLevel;
-
- // Send static menu items.
- [self sdlex_createMenus];
-
- // Subscribe to vehicle data.
- [self.vehicleDataManager subscribeToVehicleOdometer];
- }
-
- if ([newLevel isEqualToEnum:SDLHMILevelFull]) {
- // The SDL app is in the foreground. Always try to show the initial state to guard against some possible weird states. Duplicates will be ignored by Core.
- [self sdlex_showInitialData];
- [self.subscribeButtonManager subscribeToAllPresetButtons];
- } else if ([newLevel isEqualToEnum:SDLHMILevelLimited]) {
- // An active NAV or MEDIA SDL app is in the background
- } else if ([newLevel isEqualToEnum:SDLHMILevelBackground]) {
- // The SDL app is not in the foreground
- } else if ([newLevel isEqualToEnum:SDLHMILevelNone]) {
- // The SDL app is not yet running
- }
-
- // Preventing Device Sleep
- dispatch_async(dispatch_get_main_queue(), ^{
- [UIApplication sharedApplication].idleTimerDisabled = ![newLevel isEqualToEnum:SDLHMILevelNone];
- });
-}
-
-/// Called when the SDL app's HMI context changes.
-/// @param oldContext The old HMI context
-/// @param newContext The new HMI context
-- (void)systemContext:(nullable SDLSystemContext)oldContext didChangeToContext:(SDLSystemContext)newContext {
- NSLog(@"systemContext:changed:[%@-->%@]", oldContext, newContext);
-
- if ([newContext isEqualToEnum:SDLSystemContextAlert]) {
- // The SDL app's screen is obscured by an alert
- } else if ([newContext isEqualToEnum:SDLSystemContextHMIObscured]) {
- // The SDL app's screen is obscured
- } else if ([newContext isEqualToEnum:SDLSystemContextMain]) {
- // The SDL app's main screen is open
- } else if ([newContext isEqualToEnum:SDLSystemContextMenu]) {
- // The SDL app's menu is open
- } else if ([newContext isEqualToEnum:SDLSystemContextVoiceRecognitionSession]) {
- // A voice recognition session is in progress
- }
-}
-
-/// Called when the audio state of the SDL app has changed. The audio state only needs to be monitored if the app is streaming audio.
-/// @param oldState The old audio streaming state
-/// @param newState The new audio streaming state
-- (void)audioStreamingState:(nullable SDLAudioStreamingState)oldState didChangeToState:(SDLAudioStreamingState)newState {
- NSLog(@"audioStreamingState:changed:[%@-->%@]", oldState, newState);
-
- if ([newState isEqualToEnum:SDLAudioStreamingStateAudible]) {
- // The SDL app's audio can be heard
- } else if ([newState isEqualToEnum:SDLAudioStreamingStateNotAudible]) {
- // The SDL app's audio cannot be heard
- } else if ([newState isEqualToEnum:SDLAudioStreamingStateAttenuated]) {
- // The SDL app's audio volume has been lowered to let the system speak over the audio. This usually happens with voice recognition commands.
- }
-}
-
-/// Called when the car's head unit language is different from the default langage set in the SDLConfiguration AND the head unit language is supported by the app (as set in `languagesSupported` of SDLConfiguration). This method is only called when a connection to Core is first established. If desired, you can update the app's name and text-to-speech name to reflect the head unit's language.
-/// @param language The head unit's current VR+TTS language
-/// @param hmiLanguage The head unit's current HMI language
-/// @return A SDLLifecycleConfigurationUpdate object
-- (nullable SDLLifecycleConfigurationUpdate *)managerShouldUpdateLifecycleToLanguage:(SDLLanguage)language hmiLanguage:(SDLLanguage)hmiLanguage {
- SDLLifecycleConfigurationUpdate *update = [[SDLLifecycleConfigurationUpdate alloc] init];
-
- if ([hmiLanguage isEqualToEnum:SDLLanguageEnUs]) {
- update.appName = ExampleAppName;
- } else if ([hmiLanguage isEqualToEnum:SDLLanguageEsMx]) {
- update.appName = ExampleAppNameSpanish;
- } else if ([hmiLanguage isEqualToEnum:SDLLanguageFrCa]) {
- update.appName = ExampleAppNameFrench;
- } else {
- return nil;
- }
-
- update.ttsName = [SDLTTSChunk textChunksFromString:update.appName];
-
- return update;
-}
-
-@end
-
-//#Touch_Input:
-@implementation ProxyManager (SDLTouchManagerDelegate)
-
-- (void)touchManager:(SDLTouchManager *)manager didReceiveSingleTapForView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- NSLog(@"%s: %@:%@ > %@", __PRETTY_FUNCTION__, NSStringFromClass(view.class), NSStringFromCGRect(view.frame), NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceiveDoubleTapForView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-// panning
-- (void)touchManager:(SDLTouchManager *)manager panningDidStartInView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceivePanningFromPoint:(CGPoint)fromPoint toPoint:(CGPoint)toPoint {
- NSLog(@"%s: %@-->%@", __PRETTY_FUNCTION__, NSStringFromCGPoint(fromPoint), NSStringFromCGPoint(toPoint));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager panningDidEndInView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager panningCanceledAtPoint:(CGPoint)point {
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, NSStringFromCGPoint(point));
-}
-
-// pinch
-- (void)touchManager:(SDLTouchManager *)manager pinchDidStartInView:(UIView *_Nullable)view atCenterPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceivePinchAtCenterPoint:(CGPoint)point withScale:(CGFloat)scale {
- NSLog(@"%s: %@ : %2.2f", __PRETTY_FUNCTION__, NSStringFromCGPoint(point), scale);
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceivePinchInView:(UIView *_Nullable)view atCenterPoint:(CGPoint)point withScale:(CGFloat)scale {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager pinchDidEndInView:(UIView *_Nullable)view atCenterPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager pinchCanceledAtCenterPoint:(CGPoint)point {
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, NSStringFromCGPoint(point));
-}
-
-/// touch notification
-- (void)touchEventAvailable:(SDLRPCNotificationNotification *)notification {
- if (![notification.notification isKindOfClass:SDLOnTouchEvent.class]) {
- return;
- }
-// SDLOnTouchEvent *touchEvent = (SDLOnTouchEvent *)notification.notification;
-//
-// // Grab something like type
-// SDLTouchType type = touchEvent.type;
-// NSLog(@"%s > %@ : %@", __PRETTY_FUNCTION__, type, touchEvent);
-}
-
-@end
-
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example Video ObjC/Resources/ExampleVideoApp.storyboard b/Example Apps/Example Video ObjC/Resources/ExampleVideoApp.storyboard
deleted file mode 100644
index 1e34c5555..000000000
--- a/Example Apps/Example Video ObjC/Resources/ExampleVideoApp.storyboard
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
- <device id="retina4_7" orientation="portrait" appearance="light"/>
- <dependencies>
- <deployment identifier="iOS"/>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15510"/>
- <capability name="Safe area layout guides" minToolsVersion="9.0"/>
- <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
- </dependencies>
- <scenes>
- <!--Video Source-->
- <scene sceneID="sXf-8T-TkQ">
- <objects>
- <viewController storyboardIdentifier="idVideoSourceViewController" title="Video Source" id="afi-yv-teE" customClass="VideoSourceViewController" sceneMemberID="viewController">
- <view key="view" contentMode="scaleToFill" id="ro5-P9-ro3" customClass="VideoSourceView">
- <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ey4-1z-FIR" userLabel="display view">
- <rect key="frame" x="10" y="10" width="355" height="647"/>
- <subviews>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="characterWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TJT-oW-v24" userLabel="All text area">
- <rect key="frame" x="9" y="9" width="337" height="629"/>
- <color key="backgroundColor" systemColor="systemYellowColor" red="1" green="0.80000000000000004" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <string key="text">In the United States of America, there is a popular saying that "there are few things as American as apple pie".[9] In the United States, pie and especially apple pie, became "bound up in American mythology" to the point that in 1902, The New York Times asserted that "Pie is the food of the heroic" and stated that "No pie-eating people can ever be permanently vanquished".[2]
-
-The slang expression "to eat humble pie" comes from the umble pie, which was made with "chopped or minced innards of an animal", a "cheap offal filling...eaten by the poor".[27] The slang expression "it's a piece of pie", meaning that something is easy, dates from 1889.[28] The slang expression "pie-eyed", meaning drunk, dates from 1904.[29] The expression "pie in the sky", to refer to an unlikely proposal or idea, dates from a 1911 Wobbly song by Joe Hill.[30]The Pilgrim fathers and early settlers brought their pie recipes with them to America, adapting to the ingredients and techniques available to them in the New World. Settlers' recipes were for English-style meat pies.[9] The newcomers used the fruits and berries that they were familiar with from Europe, but also began incorporating North American vegetables and game that they were not familiar with, with guidance from Indigenous people.[21] Settlers favoured pies over bread because pies required less flour and did not require a brick bread oven, and because any mixture of ingredients could be added to pies to "stretch" their "meager provisions".[22] The apple pie made with American apples became popular, because apples were easy to dry and store in barrels over the winter.[22] Early American pies had thick, heavy crusts made with rough flour and suet.[22] As pioneers spread westward, pies continued to be an important supply of food; while apple pies made from dried apples were popular, cooks often had to use fillers or substitutes to stretch out their barrels of apples, such as crushed crackers, vinegar-soaked potatoes, sour green tomatoes and soft-shelled river turtle meat.[22]
-
-The first Thanksgiving feast included fowl and venison, which may have been included in pies.[9] Colonists appreciated the food preservation aspect of crusty-topped pies, which were often seasoned with "dried fruit, cinnamon, pepper and nutmeg".[9] Their first pies included pies that were based on berries and fruits pointed out to them by the Native North Americans.[1] Pies allowed colonial cooks to use round shallow pans to literally "cut corners" and to create a regional variation of shallow pie.[23] By the late 1700s, cookbooks show a wide range of newly developed sweet pies.[9]
-
-Pies became more refined with subsequent waves of immigrants; the Pennsylvania Dutch contributed a more aromatic, spiced, and less-sweet style of pie-making; the French brought the approach of making pie with butter and a range of tart, galette and pâté (forcemeat of meat and fish in dough) recipes.[22] Swedish immigrants in the plains states brought recipes for fish pie and berry pie; Finnish immigrants brought their recipes for pasties and meat pies.[22] In the northern states, pumpkin pie was popular, as pumpkins were plentiful.[22] Once the British had established Caribbean colonies, sugar became less expensive and more widely available, which meant that sweet pies could be readily made.[2] Molasses was popular in American pies due to the rum and slave trade with the Caribbean Islands, although maple syrup was an important sweetener in Northern states, after Indigenous people taught settlers how to tap maple trees and boil down the sap.[22] In the Midwest, cheese and cream pies were popular, due to the availability of big dairy farms.[22] In the US south, African-Americans enjoyed sweet potato pies, due to the widespread availability of this type of potato.[22]
-
-By the 1870s, the new science of nutrition led to criticism of pies, notably by Sarah Tyson Rorer, a cooking teacher and food editor who warned the public about how much energy pies take to digest.[22] Rorer stated that all pie crusts "...are to be condemned" and her cookbook only included an apple tart, jelly and meringue-covered crackers, pâté, and a "hygienic pie" which had "apple slices or a pumpkin custard baked in biscuit dough".[3] In 1866, Harper's Magazine included an article by C.W. Gesner that stated that although we "...cry for pie when we are infants", "Pie kills us finally", as the "heavy crust" cannot be digested.[3]
-
-Another factor that decreased the popularity of pies was industrialization and increasing movement of women into the labour market, which changed pie making from a weekly ritual to an "occasional undertaking" on special occasions.[22] In the 1950s, after WWII, the popularity of pies rebounded in the US, especially with commercial food inventions such as instant pudding mixes, Cool Whip topping, and Jello gelatin (which could be used as fillings) ready-made crusts, which were sold frozen, and alternative crusts made with crushed potato chips.[22] There was a pie renaissance in the 1980s, when old-fashioned pie recipes were rediscovered and a wide range of cross-cultural pies were explored.[22]</string>
- <fontDescription key="fontDescription" type="system" pointSize="10"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PKZ-ch-9wl">
- <rect key="frame" x="5" y="5" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemRedColor" red="1" green="0.23137254900000001" blue="0.18823529410000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="height" constant="50" id="A3G-al-rLJ"/>
- <constraint firstAttribute="width" constant="50" id="Gaf-Hr-4es"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
- <state key="normal" title="Click">
- <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="disabled">
- <color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="selected">
- <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="highlighted">
- <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- </button>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qxE-TV-gZz">
- <rect key="frame" x="300" y="592" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemBrownColor" red="0.63529411759999999" green="0.51764705879999995" blue="0.36862745099999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="width" constant="50" id="Fa8-g9-ocy"/>
- <constraint firstAttribute="height" constant="50" id="zup-kM-vrH"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
- <state key="normal" title="Click">
- <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="disabled">
- <color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="selected">
- <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="highlighted">
- <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- </button>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4JX-Pj-iKW">
- <rect key="frame" x="300" y="5" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemGreenColor" red="0.20392156859999999" green="0.78039215689999997" blue="0.34901960780000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="width" constant="50" id="A61-gw-DKz"/>
- <constraint firstAttribute="height" constant="50" id="ZAI-HC-LrS"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
- <state key="normal" title="Click">
- <color key="titleColor" red="0.15317772569999999" green="0.12028289759999999" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- </state>
- <state key="disabled">
- <color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="selected">
- <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="highlighted">
- <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- </button>
- <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="large" translatesAutoresizingMaskIntoConstraints="NO" id="heO-VY-VjL">
- <rect key="frame" x="159" y="305" width="37" height="37"/>
- <color key="color" cocoaTouchSystemColor="darkTextColor"/>
- </activityIndicatorView>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TNH-7i-LBE">
- <rect key="frame" x="5" y="592" width="50" height="50"/>
- <color key="backgroundColor" systemColor="systemTealColor" red="0.35294117650000001" green="0.7843137255" blue="0.98039215690000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstAttribute="width" constant="50" id="A64-hz-7vL"/>
- <constraint firstAttribute="height" constant="50" id="o9a-QN-Y6u"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
- <state key="normal" title="Click">
- <color key="titleColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="disabled">
- <color key="titleColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </state>
- <state key="selected">
- <color key="titleColor" systemColor="systemPinkColor" red="1" green="0.1764705882" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- </state>
- <state key="highlighted">
- <color key="titleShadowColor" systemColor="systemPinkColor" red="1" green="0.1764705882" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- </state>
- </button>
- <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QmW-VP-tKv" userLabel="single tap view">
- <rect key="frame" x="47" y="118" width="49" height="44"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </view>
- <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="FSF-qa-Ph5" userLabel="double tap view">
- <rect key="frame" x="126" y="118" width="49" height="44"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
- </view>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="1000" text="Size:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UqU-Kl-MFo">
- <rect key="frame" x="10" y="45" width="42" height="30"/>
- <constraints>
- <constraint firstAttribute="height" constant="30" id="N6U-d9-dCh"/>
- <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="42" id="WJO-KZ-EZQ"/>
- </constraints>
- <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
- <nil key="textColor"/>
- <nil key="highlightedColor"/>
- </label>
- </subviews>
- <color key="backgroundColor" systemColor="systemOrangeColor" red="1" green="0.58431372550000005" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstItem="heO-VY-VjL" firstAttribute="centerX" secondItem="Ey4-1z-FIR" secondAttribute="centerX" id="2Br-ok-EIh"/>
- <constraint firstAttribute="trailing" secondItem="4JX-Pj-iKW" secondAttribute="trailing" constant="5" id="56i-jf-OM6"/>
- <constraint firstItem="PKZ-ch-9wl" firstAttribute="top" secondItem="Ey4-1z-FIR" secondAttribute="top" constant="5" id="6cV-pP-qgz"/>
- <constraint firstItem="UqU-Kl-MFo" firstAttribute="top" secondItem="Ey4-1z-FIR" secondAttribute="top" constant="45" id="6xn-y5-V2U"/>
- <constraint firstAttribute="bottom" secondItem="qxE-TV-gZz" secondAttribute="bottom" constant="5" id="H21-wa-cgx"/>
- <constraint firstItem="TJT-oW-v24" firstAttribute="leading" secondItem="Ey4-1z-FIR" secondAttribute="leadingMargin" constant="1" id="JvI-Nz-DjE"/>
- <constraint firstItem="UqU-Kl-MFo" firstAttribute="leading" secondItem="Ey4-1z-FIR" secondAttribute="leading" constant="10" id="SVa-TV-CCy"/>
- <constraint firstAttribute="trailingMargin" secondItem="TJT-oW-v24" secondAttribute="trailing" constant="1" id="THe-Rk-tFd"/>
- <constraint firstItem="PKZ-ch-9wl" firstAttribute="leading" secondItem="Ey4-1z-FIR" secondAttribute="leading" constant="5" id="WdA-k6-sZb"/>
- <constraint firstItem="heO-VY-VjL" firstAttribute="centerY" secondItem="Ey4-1z-FIR" secondAttribute="centerY" id="irZ-ua-C1a"/>
- <constraint firstAttribute="bottom" secondItem="TNH-7i-LBE" secondAttribute="bottom" constant="5" id="lJb-K8-rOt"/>
- <constraint firstItem="4JX-Pj-iKW" firstAttribute="top" secondItem="Ey4-1z-FIR" secondAttribute="top" constant="5" id="p0s-Ds-2UH"/>
- <constraint firstAttribute="trailing" secondItem="qxE-TV-gZz" secondAttribute="trailing" constant="5" id="pLg-aA-fdC"/>
- <constraint firstItem="TNH-7i-LBE" firstAttribute="leading" secondItem="Ey4-1z-FIR" secondAttribute="leading" constant="5" id="uko-zi-wcc"/>
- <constraint firstItem="TJT-oW-v24" firstAttribute="top" secondItem="Ey4-1z-FIR" secondAttribute="topMargin" constant="1" id="v68-KQ-Aol"/>
- <constraint firstAttribute="bottomMargin" secondItem="TJT-oW-v24" secondAttribute="bottom" constant="1" id="wW2-st-tCN"/>
- </constraints>
- </view>
- </subviews>
- <color key="backgroundColor" systemColor="systemPurpleColor" red="0.68627450980000004" green="0.32156862749999998" blue="0.87058823529999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
- <constraints>
- <constraint firstItem="MAo-Oq-qpx" firstAttribute="trailing" secondItem="Ey4-1z-FIR" secondAttribute="trailing" constant="10" id="MIm-Ww-bv7"/>
- <constraint firstItem="Ey4-1z-FIR" firstAttribute="top" secondItem="MAo-Oq-qpx" secondAttribute="top" constant="10" id="bix-sz-KxU"/>
- <constraint firstItem="MAo-Oq-qpx" firstAttribute="bottom" secondItem="Ey4-1z-FIR" secondAttribute="bottom" constant="10" id="e7M-Hm-lte"/>
- <constraint firstItem="Ey4-1z-FIR" firstAttribute="leading" secondItem="MAo-Oq-qpx" secondAttribute="leading" constant="10" id="wv3-8Z-boi"/>
- </constraints>
- <viewLayoutGuide key="safeArea" id="MAo-Oq-qpx"/>
- <connections>
- <outlet property="doubleTapView" destination="FSF-qa-Ph5" id="0zI-JM-gnq"/>
- <outlet property="singleTapView" destination="QmW-VP-tKv" id="RO8-qR-XqL"/>
- </connections>
- </view>
- <connections>
- <outlet property="infoLabel" destination="UqU-Kl-MFo" id="WoE-7p-peW"/>
- <outletCollection property="buttons" destination="PKZ-ch-9wl" id="leI-2f-Dv0"/>
- <outletCollection property="buttons" destination="4JX-Pj-iKW" id="6Es-8h-vxZ"/>
- <outletCollection property="buttons" destination="TNH-7i-LBE" id="3UO-P1-hbN"/>
- <outletCollection property="buttons" destination="qxE-TV-gZz" id="6LU-S7-MUP"/>
- </connections>
- </viewController>
- <placeholder placeholderIdentifier="IBFirstResponder" id="PEX-vZ-Rwq" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
- </objects>
- <point key="canvasLocation" x="1507.5" y="-173.2394366197183"/>
- </scene>
- </scenes>
-</document>
diff --git a/Example Apps/Example Video ObjC/SDLTCPConfig.h b/Example Apps/Example Video ObjC/SDLTCPConfig.h
deleted file mode 100644
index 4eee37ee8..000000000
--- a/Example Apps/Example Video ObjC/SDLTCPConfig.h
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// SDLTCPConfig.h
-// SmartDeviceLink-Example-ObjC
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface SDLTCPConfig : NSObject
-
-+ (instancetype)configWithHost:(NSString *)host port:(UInt16)port;
-
-@property (strong, nonatomic) NSString *ipAddress;
-@property (assign, nonatomic) UInt16 port;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example Video ObjC/SDLTCPConfig.m b/Example Apps/Example Video ObjC/SDLTCPConfig.m
deleted file mode 100644
index f97dcf389..000000000
--- a/Example Apps/Example Video ObjC/SDLTCPConfig.m
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// SDLTCPConfig.m
-// SmartDeviceLink-Example-ObjC
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import "SDLTCPConfig.h"
-
-@implementation SDLTCPConfig
-
-+ (instancetype)configWithHost:(NSString *)host port:(UInt16)port {
- return [[self alloc] initWithHost:host port:port];
-}
-
-- (instancetype)initWithHost:(NSString *)host port:(UInt16)port {
- if ((self = [super init])) {
- _ipAddress = host;
- _port = port;
- }
- return self;
-}
-
-@end
diff --git a/Example Apps/Example Video ObjC/TouchModel.h b/Example Apps/Example Video ObjC/TouchModel.h
deleted file mode 100644
index 53b590225..000000000
--- a/Example Apps/Example Video ObjC/TouchModel.h
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// TouchModel.h
-// SmartDeviceLink-Example-ObjC
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import <UIKit/UIKit.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface TouchModel : NSObject
-@property (assign, nonatomic) CGRect rect;
-@property (assign, nonatomic) CGPoint point;
-+ (instancetype)touchPoint:(CGPoint)point inRect:(CGRect)rect;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example Video ObjC/TouchModel.m b/Example Apps/Example Video ObjC/TouchModel.m
deleted file mode 100644
index 96106bf8d..000000000
--- a/Example Apps/Example Video ObjC/TouchModel.m
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// TouchModel.m
-// SmartDeviceLink-Example-ObjC
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import "TouchModel.h"
-
-@implementation TouchModel
-
-+ (instancetype)touchPoint:(CGPoint)point inRect:(CGRect)rect {
- TouchModel *model = [self new];
- model.point = point;
- model.rect = rect;
- return model;
-}
-
-- (NSString *)description {
- return [NSString stringWithFormat:@"%@-->%@", NSStringFromCGPoint(self.point), NSStringFromCGRect(self.rect)];
-}
-
-@end
-
diff --git a/Example Apps/Example Video ObjC/VideoSourceView.h b/Example Apps/Example Video ObjC/VideoSourceView.h
deleted file mode 100644
index add1667a9..000000000
--- a/Example Apps/Example Video ObjC/VideoSourceView.h
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// SimpleRootView.h
-// SmartDeviceLink-Example-ObjC
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import <UIKit/UIKit.h>
-#import "TouchModel.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface VideoSourceView : UIView
-@property (strong, nonatomic, nullable) TouchModel *singleTap;
-@property (strong, nonatomic, nullable) TouchModel *doubleTap;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example Video ObjC/VideoSourceView.m b/Example Apps/Example Video ObjC/VideoSourceView.m
deleted file mode 100644
index 7cc285e32..000000000
--- a/Example Apps/Example Video ObjC/VideoSourceView.m
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// SimpleRootView.m
-// SmartDeviceLink-Example-ObjC
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import "VideoSourceView.h"
-
-@interface VideoSourceView ()
-@property (strong, nonatomic, nullable) IBOutlet UIView *singleTapView;
-@property (strong, nonatomic, nullable) IBOutlet UIView *doubleTapView;
-@end
-
-@implementation VideoSourceView
-
-- (void)awakeFromNib {
- [super awakeFromNib];
- [self prepareTapView:self.singleTapView];
- [self prepareTapView:self.doubleTapView];
-}
-
-- (void)prepareTapView:(UIView*)view {
- view.layer.borderColor = self.doubleTapView.backgroundColor.CGColor;
- view.backgroundColor = [UIColor clearColor];
- view.layer.borderWidth = 3;
- view.layer.cornerRadius = 3;
- view.hidden = YES;
-}
-
-- (void)layoutSubviews {
- [super layoutSubviews];
- if (self.singleTap) {
- self.singleTapView.frame = self.singleTap.rect;
- }
- if (self.doubleTap) {
- self.doubleTapView.frame = self.doubleTap.rect;
- }
-}
-
-- (void)hideSingleTapViewDelayed {
- [self.class cancelPreviousPerformRequestsWithTarget:self selector:@selector(doHideSingleTapView) object:nil];
- [self performSelector:@selector(doHideSingleTapView) withObject:nil afterDelay:0.5];
-}
-
-- (void)doHideSingleTapView {
- self.singleTapView.hidden = YES;
-}
-
-- (void)hideDoubleTapViewDelayed {
- [self.class cancelPreviousPerformRequestsWithTarget:self selector:@selector(doHideDoubleTapView) object:nil];
- [self performSelector:@selector(doHideDoubleTapView) withObject:nil afterDelay:0.5];
-}
-
-- (void)doHideDoubleTapView {
- self.doubleTapView.hidden = YES;
-}
-
-- (void)setSingleTap:(TouchModel *)singleTap {
- _singleTap = singleTap;
- self.singleTapView.hidden = (nil == singleTap);
- [self hideSingleTapViewDelayed];
-
- if (self.window) {
- [self setNeedsLayout];
- } else {
- [self layoutSubviews];
- }
-}
-
-- (void)setDoubleTap:(TouchModel *)doubleTap {
- _doubleTap = doubleTap;
- self.doubleTapView.hidden = (nil == doubleTap);
- [self hideDoubleTapViewDelayed];
-
- if (self.window) {
- [self setNeedsLayout];
- } else {
- [self layoutSubviews];
- }
-}
-
-@end
diff --git a/Example Apps/Example Video ObjC/VideoSourceViewController.h b/Example Apps/Example Video ObjC/VideoSourceViewController.h
deleted file mode 100644
index 7caac5bc3..000000000
--- a/Example Apps/Example Video ObjC/VideoSourceViewController.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// VideoSourceViewController.h
-// SmartDeviceLink-iOS
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import <UIKit/UIKit.h>
-#import "SDLStreamingMediaDelegate.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface VideoSourceViewController : UIViewController <SDLStreamingMediaDelegate>
-
-+ (instancetype)createInstance;
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example Video ObjC/VideoSourceViewController.m b/Example Apps/Example Video ObjC/VideoSourceViewController.m
deleted file mode 100644
index 860b72994..000000000
--- a/Example Apps/Example Video ObjC/VideoSourceViewController.m
+++ /dev/null
@@ -1,140 +0,0 @@
-//
-// VideoSourceViewController.m
-// SmartDeviceLink-iOS
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import "VideoSourceViewController.h"
-#import "SDLTouchManagerDelegate.h"
-#import "VideoSourceView.h"
-#import "TouchModel.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-
-
-@interface VideoSourceViewController ()
-@property (strong, nonatomic, nullable) IBOutletCollection(UIButton) NSArray *buttons;
-@property (strong, nonatomic) IBOutlet UILabel *infoLabel;
-@end
-
-
-@implementation VideoSourceViewController
-
-+ (VideoSourceViewController *)createInstance {
- UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"ExampleVideoApp" bundle:nil];
- VideoSourceViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"idVideoSourceViewController"];
- return vc;
-}
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- for (UIButton *button in self.buttons) {
- button.tag = 0;
- }
-}
-
-- (VideoSourceView *)rootView {
- return (VideoSourceView *)self.view;
-}
-
-- (void)updateOnTouchButton:(UIView * _Nullable)viewCandidate {
- if (!viewCandidate) {
- return;
- }
- for (UIButton *button in self.buttons) {
- if (button == viewCandidate) {
- button.tag += 1;
- [button setTitle:[NSString stringWithFormat:@"%03d", (int)button.tag] forState:UIControlStateNormal];
- break;
- }
- }
-}
-
-#pragma mark - SDLStreamingMediaDelegate
-
-- (void)videoManager:(id)manager didUpdateSize:(CGSize)displaySize {
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, NSStringFromCGSize(displaySize));
- // Do something with the new size
- self.view.frame = (CGRect){CGPointZero, displaySize};
- self.infoLabel.text = [NSString stringWithFormat:@"Size: %@", NSStringFromCGSize(displaySize)];
-}
-
-- (void)videoManagerDidStop:(id)manager {
- NSLog(@"%s", __PRETTY_FUNCTION__);
- [self dismissViewControllerAnimated:YES completion:nil];
-}
-
-@end
-
-
-//#Touch_Input:
-@implementation VideoSourceViewController (SDLTouchManagerDelegate)
-
-static const CGFloat MinSz = -8.0;
-
-- (void)touchManager:(SDLTouchManager *)manager didReceiveSingleTapForView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- CGRect frame = view.frame;
- if (nil == view) {
- frame.origin = point;
- frame = CGRectInset(frame, MinSz, MinSz);
- }
- self.rootView.singleTap = [TouchModel touchPoint:point inRect:frame];
- [self updateOnTouchButton:view];
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, NSStringFromClass(view.class), self.rootView.singleTap);
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceiveDoubleTapForView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- CGRect frame = view.frame;
- if (nil == view) {
- frame.origin = point;
- frame = CGRectInset(frame, MinSz, MinSz);
- }
- self.rootView.doubleTap = [TouchModel touchPoint:point inRect:frame];
- [self updateOnTouchButton:view];
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, NSStringFromClass(view.class), self.rootView.doubleTap);
-}
-
-// panning
-- (void)touchManager:(SDLTouchManager *)manager panningDidStartInView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceivePanningFromPoint:(CGPoint)fromPoint toPoint:(CGPoint)toPoint {
- NSLog(@"%s: %@-->%@", __PRETTY_FUNCTION__, NSStringFromCGPoint(fromPoint), NSStringFromCGPoint(toPoint));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager panningDidEndInView:(UIView *_Nullable)view atPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager panningCanceledAtPoint:(CGPoint)point {
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, NSStringFromCGPoint(point));
-}
-
-// pinch
-- (void)touchManager:(SDLTouchManager *)manager pinchDidStartInView:(UIView *_Nullable)view atCenterPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceivePinchAtCenterPoint:(CGPoint)point withScale:(CGFloat)scale {
- NSLog(@"%s: %@ : %2.2f", __PRETTY_FUNCTION__, NSStringFromCGPoint(point), scale);
-}
-
-- (void)touchManager:(SDLTouchManager *)manager didReceivePinchInView:(UIView *_Nullable)view atCenterPoint:(CGPoint)point withScale:(CGFloat)scale {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager pinchDidEndInView:(UIView *_Nullable)view atCenterPoint:(CGPoint)point {
- NSLog(@"%s: %@ > %@", __PRETTY_FUNCTION__, view, NSStringFromCGPoint(point));
-}
-
-- (void)touchManager:(SDLTouchManager *)manager pinchCanceledAtCenterPoint:(CGPoint)point {
- NSLog(@"%s: %@", __PRETTY_FUNCTION__, NSStringFromCGPoint(point));
-}
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example Video ObjC/VideoStreamSettings.h b/Example Apps/Example Video ObjC/VideoStreamSettings.h
deleted file mode 100644
index a402d2036..000000000
--- a/Example Apps/Example Video ObjC/VideoStreamSettings.h
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// VideoStreamSettings.h
-// SmartDeviceLink-Example-ObjC
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import <Foundation/Foundation.h>
-
-@class SDLSupportedStreamingRange;
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface VideoStreamSettings : NSObject
-@property (nonatomic, copy) NSString * SDLVersion;
-@property (strong, nonatomic, nullable) SDLSupportedStreamingRange *supportedLandscapeStreamingRange;
-@property (strong, nonatomic, nullable) SDLSupportedStreamingRange *supportedPortraitStreamingRange;
-- (NSString *)detailedDescription;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example Video ObjC/VideoStreamSettings.m b/Example Apps/Example Video ObjC/VideoStreamSettings.m
deleted file mode 100644
index bb84b04e4..000000000
--- a/Example Apps/Example Video ObjC/VideoStreamSettings.m
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// VideoStreamSettings.m
-// SmartDeviceLink-Example-ObjC
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import "VideoStreamSettings.h"
-#import "SDLSupportedStreamingRange.h"
-
-@implementation VideoStreamSettings
-
-- (NSString *)detailedDescription {
- return [NSString stringWithFormat:@"SDLVersion: %@\nsupportedLandscapeStreamingRange: %@\nsupportedPortraitStreamingRange: %@", self.SDLVersion, self.supportedLandscapeStreamingRange, self.supportedPortraitStreamingRange];
-}
-
-- (NSString *)description {
- return [self detailedDescription];
-}
-
-@end
diff --git a/Example Apps/Example Video ObjC/VideoStreamingSettingsViewController.h b/Example Apps/Example Video ObjC/VideoStreamingSettingsViewController.h
deleted file mode 100644
index 9e3f962fc..000000000
--- a/Example Apps/Example Video ObjC/VideoStreamingSettingsViewController.h
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// VideoStreamingSettingsViewController.h
-// SmartDeviceLink-Example-ObjC
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import <UIKit/UIKit.h>
-#import "VideoStreamSettings.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface VideoStreamingSettingsViewController : UIViewController
-@property(nonatomic, strong) VideoStreamSettings *videoStreamSettings;
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Example Apps/Example Video ObjC/VideoStreamingSettingsViewController.m b/Example Apps/Example Video ObjC/VideoStreamingSettingsViewController.m
deleted file mode 100644
index f47953ce3..000000000
--- a/Example Apps/Example Video ObjC/VideoStreamingSettingsViewController.m
+++ /dev/null
@@ -1,157 +0,0 @@
-//
-// VideoStreamingSettingsViewController.m
-// SmartDeviceLink-Example-ObjC
-//
-// Copyright © 2020 Luxoft. All rights reserved
-//
-
-#import "VideoStreamingSettingsViewController.h"
-#import "SDLImageResolution.h"
-#import "SDLSupportedStreamingRange.h"
-
-@interface VideoStreamingSettingsViewController ()
-@property (nonatomic, strong) IBOutlet UILabel *labDescription;
-@property (nonatomic, strong) IBOutlet UISegmentedControl *toggleSDLVersion;
-@end
-
-static NSString *const VersionString6 = @"6.2.0";
-static NSString *const VersionString7 = @"7.0.0";
-static NSString *const VersionString0 = @"1.0.0";
-
-@implementation VideoStreamingSettingsViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
-
- if (!self.videoStreamSettings) {
- self.videoStreamSettings = [VideoStreamSettings new];
- }
- [self showSettingsOnScreen];
-
- self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Reset" style:UIBarButtonItemStylePlain target:self action:@selector(resetSettingsAction:)];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-
- [self applyDataModel];
-}
-
-#pragma mark - Navigation
-
-- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
-}
-
-- (IBAction)actionAccept:(id)sender {
- [self.navigationController popViewControllerAnimated:YES];
-}
-
-- (IBAction)actionSwitchSDLVersion:(UISegmentedControl*)segments {
- switch (segments.selectedSegmentIndex) {
- case 0:
- self.videoStreamSettings.SDLVersion = VersionString6;
- break;
-
- case 1:
- self.videoStreamSettings.SDLVersion = VersionString7;
- break;
-
- default:
- self.videoStreamSettings.SDLVersion = VersionString0;
- break;
- }
- [self showSettingsOnScreen];
-}
-
-- (IBAction)actionSwitchPortraitPreset:(UISegmentedControl*)segments {
- switch (segments.selectedSegmentIndex) {
- default:
- case 0: {
- SDLSupportedStreamingRange *strRange = [SDLSupportedStreamingRange new];
- strRange.minimumResolution = [[SDLImageResolution alloc] initWithWidth:30 height:40];
- strRange.maximumResolution = [[SDLImageResolution alloc] initWithWidth:60 height:80];
- strRange.minimumDiagonal = 0.5;
- strRange.minimumAspectRatio = 1.0;
- strRange.maximumAspectRatio = 2.0;
- self.videoStreamSettings.supportedPortraitStreamingRange = strRange;
- } break;
-
- case 1: {
- SDLSupportedStreamingRange *strRange = [SDLSupportedStreamingRange new];
- strRange.minimumResolution = [[SDLImageResolution alloc] initWithWidth:100 height:150];
- strRange.maximumResolution = [[SDLImageResolution alloc] initWithWidth:200 height:300];
- strRange.minimumDiagonal = 2;
- strRange.minimumAspectRatio = 1.0;
- strRange.maximumAspectRatio = 2.5;
- self.videoStreamSettings.supportedPortraitStreamingRange = strRange;
- } break;
-
- case 2: {
- SDLSupportedStreamingRange *strRange = [SDLSupportedStreamingRange new];
- strRange.minimumResolution = [[SDLImageResolution alloc] initWithWidth:300 height:400];
- strRange.maximumResolution = [[SDLImageResolution alloc] initWithWidth:900 height:1200];
- strRange.minimumDiagonal = 5;
- strRange.minimumAspectRatio = 2.0;
- strRange.maximumAspectRatio = 5.0;
- self.videoStreamSettings.supportedPortraitStreamingRange = strRange;
- } break;
- }
-
- [self showSettingsOnScreen];
-}
-
-- (IBAction)actionSwitchLandscapePreset:(UISegmentedControl*)segments {
- switch (segments.selectedSegmentIndex) {
- default:
- case 0: {
- SDLSupportedStreamingRange *strRange = [SDLSupportedStreamingRange new];
- strRange.minimumResolution = [[SDLImageResolution alloc] initWithWidth:45 height:35];
- strRange.maximumResolution = [[SDLImageResolution alloc] initWithWidth:90 height:70];
- strRange.minimumDiagonal = 0.5;
- strRange.minimumAspectRatio = 1.0;
- strRange.maximumAspectRatio = 2.0;
- self.videoStreamSettings.supportedLandscapeStreamingRange = strRange;
- } break;
-
- case 1: {
- SDLSupportedStreamingRange *strRange = [SDLSupportedStreamingRange new];
- strRange.minimumResolution = [[SDLImageResolution alloc] initWithWidth:320 height:200];
- strRange.maximumResolution = [[SDLImageResolution alloc] initWithWidth:350 height:220];
- strRange.minimumDiagonal = 7.0;
- strRange.minimumAspectRatio = 1.0;
- strRange.maximumAspectRatio = 2.5;
- self.videoStreamSettings.supportedLandscapeStreamingRange = strRange;
- } break;
-
- case 2: {
- SDLSupportedStreamingRange *strRange = [SDLSupportedStreamingRange new];
- strRange.minimumResolution = [[SDLImageResolution alloc] initWithWidth:800 height:380];
- strRange.maximumResolution = [[SDLImageResolution alloc] initWithWidth:820 height:400];
- strRange.minimumDiagonal = 9.0;
- strRange.minimumAspectRatio = 2.0;
- strRange.maximumAspectRatio = 5.0;
- self.videoStreamSettings.supportedLandscapeStreamingRange = strRange;
- } break;
- }
-
- [self showSettingsOnScreen];
-}
-
-- (IBAction)resetSettingsAction:(id)sender {
- self.videoStreamSettings.supportedLandscapeStreamingRange = nil;
- self.videoStreamSettings.supportedPortraitStreamingRange = nil;
- self.videoStreamSettings.SDLVersion = VersionString0;
- [self showSettingsOnScreen];
-}
-
-#pragma mark - privates
-
-- (void)applyDataModel {
- [self.toggleSDLVersion setSelectedSegmentIndex:[self.videoStreamSettings.SDLVersion isEqualToString:VersionString7] ? 1 : 0];
-}
-
-- (void)showSettingsOnScreen {
- self.labDescription.text = [NSString stringWithFormat:@"%@", self.videoStreamSettings.detailedDescription];
-}
-
-@end
diff --git a/Example Apps/Shared/resources/sdl_video.mp4 b/Example Apps/Shared/resources/sdl_video.mp4
deleted file mode 100644
index 9fa253a75..000000000
--- a/Example Apps/Shared/resources/sdl_video.mp4
+++ /dev/null
Binary files differ