add iPad specific files & ressources

Change-Id: I1bf6b4f1476ea668ea9973d8b8dfab8779cdabbc
This commit is contained in:
Siqi LIU
2013-07-30 23:54:59 +02:00
parent ba7be1c9ef
commit ef4c98cdbb
44 changed files with 2090 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>TOUCH_POINTER_ENABLED</key>
<true/>
<key>TIMER_AUTOSTART_ENABLED</key>
<false/>
</dict>
</plist>

View File

@@ -0,0 +1,576 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="3084" systemVersion="12E55" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" initialViewController="XiK-Ye-iB8">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="2083"/>
</dependencies>
<scenes>
<!--Server list vc ipad - Connect-->
<scene sceneID="ydU-fu-qHI">
<objects>
<viewController storyboardIdentifier="" id="5QV-E7-KNT" customClass="server_list_vc_ipad" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="singleLineEtched" showsSelectionImmediatelyOnTouchBegin="NO" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="0vt-Sx-o55">
<rect key="frame" x="0.0" y="64" width="540" height="556"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="server_item_cell" editingAccessoryType="disclosureIndicator" textLabel="h0a-Zq-2vY" detailTextLabel="Fsp-wI-AAW" style="IBUITableViewCellStyleValue1" id="HZp-VJ-Pgz">
<rect key="frame" x="0.0" y="54" width="540" height="46"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="31" y="1" width="478" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="h0a-Zq-2vY">
<rect key="frame" x="10" y="11" width="35" height="21"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</label>
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Fsp-wI-AAW">
<rect key="frame" x="424" y="11" width="44" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.21960784310000001" green="0.3294117647" blue="0.52941176469999995" alpha="1" colorSpace="calibratedRGB"/>
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</tableViewCell>
</prototypes>
<connections>
<outlet property="dataSource" destination="5QV-E7-KNT" id="Vhs-k2-fLj"/>
<outlet property="delegate" destination="5QV-E7-KNT" id="L4W-DD-RiQ"/>
</connections>
</tableView>
<navigationItem key="navigationItem" title="Connect" id="wYh-MF-Ao6">
<barButtonItem key="leftBarButtonItem" systemItem="cancel" id="yai-U0-WT9">
<connections>
<action selector="cancelModalView:" destination="5QV-E7-KNT" id="rSl-Rp-xQb"/>
</connections>
</barButtonItem>
<barButtonItem key="rightBarButtonItem" systemItem="add" id="pU6-XF-laS">
<connections>
<segue destination="65c-5D-pB7" kind="push" identifier="create_new_server" id="ORn-0W-dHd"/>
</connections>
</barButtonItem>
</navigationItem>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
<connections>
<outlet property="serverTable" destination="0vt-Sx-o55" id="Szp-pH-0rk"/>
<segue destination="m26-i1-eiL" kind="push" identifier="pinValidation" id="yUv-cB-P15"/>
<segue destination="B8g-8S-pgn" kind="push" identifier="SlideShowPreview" id="XCJ-4d-eG4"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="KBf-aZ-Hhk" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="254" y="-1374"/>
</scene>
<!--Pin Validation vc-->
<scene sceneID="wDk-2x-G9p">
<objects>
<viewController id="m26-i1-eiL" customClass="pinValidation_vc" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="hAq-tq-hru">
<rect key="frame" x="0.0" y="64" width="540" height="556"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="3128" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Bp1-Dv-nt4">
<rect key="frame" x="159" y="71" width="223" height="118"/>
<fontDescription key="fontDescription" name="HelveticaNeue-UltraLight" family="Helvetica Neue" pointSize="100"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Please enter the pin code above in Impress - Slide Show - Impress Remote" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="9zr-53-YfP">
<rect key="frame" x="137" y="267" width="266" height="38"/>
<fontDescription key="fontDescription" name="Helvetica-Light" family="Helvetica" pointSize="15"/>
<color key="textColor" name="alternateSelectedControlColor" catalog="System" colorSpace="catalog"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Waiting for validation from Impress..." lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="VVO-s2-eCV">
<rect key="frame" x="147" y="403" width="246" height="19"/>
<fontDescription key="fontDescription" name="Helvetica-Light" family="Helvetica" pointSize="15"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
<navigationItem key="navigationItem" id="V5z-WP-qrM"/>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
<connections>
<outlet property="pinLabel" destination="Bp1-Dv-nt4" id="6xd-P5-J5U"/>
<outlet property="statusLabel" destination="VVO-s2-eCV" id="Uhy-iy-HAW"/>
<segue destination="B8g-8S-pgn" kind="push" identifier="pinValidated" id="gCy-Mv-VrC"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="gh4-1U-6Dm" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1024" y="-500"/>
</scene>
<!--New Server View Controller - New Server-->
<scene sceneID="RcY-Im-ohw">
<objects>
<tableViewController id="65c-5D-pB7" customClass="newServerViewController" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="singleLineEtched" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="qow-Yc-8dL">
<rect key="frame" x="0.0" y="64" width="540" height="556"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<sections>
<tableViewSection footerTitle="Register a new server and remeber it for future connection" id="CVG-Eq-rLd">
<cells>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="b8A-jh-k26" customClass="EditableTableViewCell">
<rect key="frame" x="0.0" y="30" width="540" height="45"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="31" y="1" width="478" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="jrI-wU-4NT" customClass="EditableTableViewCell">
<rect key="frame" x="0.0" y="75" width="540" height="45"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="31" y="0.0" width="478" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="65c-5D-pB7" id="Omw-kB-sR2"/>
<outlet property="delegate" destination="65c-5D-pB7" id="eNx-uc-YkW"/>
</connections>
</tableView>
<navigationItem key="navigationItem" title="New Server" id="oAP-jt-6Z9">
<barButtonItem key="rightBarButtonItem" systemItem="save" id="PoE-MY-hSB">
<connections>
<action selector="save:" destination="65c-5D-pB7" id="Ww6-Jy-5eG"/>
</connections>
</barButtonItem>
</navigationItem>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="JK3-FB-UoN" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1024" y="-1831"/>
</scene>
<!--Slide Show Preview Table vc ipad-->
<scene sceneID="ejm-Sz-YCw">
<objects>
<tableViewController storyboardIdentifier="slideShowPreview" id="B8g-8S-pgn" customClass="slideShowPreviewTable_vc_ipad" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="singleLineEtched" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="Pc5-8o-PrW">
<rect key="frame" x="0.0" y="64" width="540" height="556"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<view key="tableHeaderView" contentMode="scaleToFill" id="YCJ-J4-RGt">
<rect key="frame" x="0.0" y="0.0" width="540" height="281"/>
<subviews>
<view contentMode="scaleToFill" id="Is1-dX-SaP">
<rect key="frame" x="36" y="53" width="468" height="208"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Title of the presentation(TODO)" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="5" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="JEW-I6-sw5">
<rect key="frame" x="22" y="30" width="424" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="28"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Last modified: 3 Jul 2013" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="0je-bV-nk1">
<rect key="frame" x="21" y="129" width="416" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="19"/>
<color key="textColor" name="alternateSelectedControlColor" catalog="System" colorSpace="catalog"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Author: author name" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="vfH-4C-Sag">
<rect key="frame" x="21" y="97" width="1664" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="19"/>
<color key="textColor" name="alternateSelectedControlColor" catalog="System" colorSpace="catalog"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Current slide: 5 of 22" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="mRZ-fv-RAC">
<rect key="frame" x="21" y="165" width="392" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="19"/>
<color key="textColor" name="alternateSelectedControlColor" catalog="System" colorSpace="catalog"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<sections>
<tableViewSection id="gMl-dC-GqD">
<cells>
<tableViewCell contentMode="scaleToFill" restorationIdentifier="" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="optionCell" id="tqg-R4-Coi">
<rect key="frame" x="0.0" y="291" width="540" height="45"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="31" y="1" width="478" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" restorationIdentifier="" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="optionCell" id="f4z-FH-mar">
<rect key="frame" x="0.0" y="336" width="540" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="31" y="0.0" width="478" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="optionCell" id="5jP-bD-Vcy">
<rect key="frame" x="0.0" y="380" width="540" height="45"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="31" y="0.0" width="478" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="B8g-8S-pgn" id="SGm-yW-lAs"/>
<outlet property="delegate" destination="B8g-8S-pgn" id="p2A-1P-NJP"/>
</connections>
</tableView>
<navigationItem key="navigationItem" id="4ju-ge-QPw"/>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
<connections>
<outlet property="optionsTable" destination="Pc5-8o-PrW" id="18R-Zo-CBq"/>
</connections>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="gg2-6d-fyF" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1768" y="-1374"/>
</scene>
<!--Base Presentation View Controller-->
<scene sceneID="5zi-ge-3SF">
<objects>
<viewController storyboardIdentifier="basePresentation" id="TYh-Hw-m1Q" customClass="BasePresentationViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="qHB-hR-vFc">
<rect key="frame" x="0.0" y="20" width="768" height="1004"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" id="KCA-UU-Lu1" userLabel="Preview">
<rect key="frame" x="0.0" y="0.0" width="768" height="459"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" tag="19" contentMode="scaleToFill" verticalCompressionResistancePriority="1000" image="Default-568h@2x.png" id="x7C-rs-s4K">
<rect key="frame" x="0.0" y="0.0" width="768" height="459"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.80000001192092896" contentMode="left" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wWm-KR-C5L">
<rect key="frame" x="685" y="427" width="83" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<rect key="contentStretch" x="1.3877787807814457e-17" y="0.0" width="1" height="1"/>
<fontDescription key="fontDescription" type="system" pointSize="25"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<view hidden="YES" contentMode="scaleToFill" id="2SJ-3f-E3k" userLabel="pointer">
<rect key="frame" x="191" y="277" width="8" height="7"/>
<color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
</view>
<button opaque="NO" alpha="0.69999999999999996" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="I1u-1Z-GsZ">
<rect key="frame" x="0.0" y="0.0" width="84" height="459"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<state key="normal" backgroundImage="previousButton_normal.png">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted" backgroundImage="previousButton_pressed.png">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="previousSlideAction:" destination="TYh-Hw-m1Q" eventType="touchUpInside" id="qvs-3Y-Ifz"/>
</connections>
</button>
<button opaque="NO" alpha="0.69999999999999996" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="bfp-PJ-NrP">
<rect key="frame" x="684" y="0.0" width="84" height="459"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" heightSizable="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<state key="normal" backgroundImage="nextButton_normal.png">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted" backgroundImage="nextButton_pressed.png">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="nextSlideAction:" destination="TYh-Hw-m1Q" eventType="touchUpInside" id="7OP-xX-gva"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<view clipsSubviews="YES" contentMode="scaleToFill" verticalCompressionResistancePriority="547" restorationIdentifier="" id="Pk1-fD-KAi" userLabel="NotesView">
<rect key="frame" x="-13" y="595" width="794" height="303"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Lecturer's Notes " textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="5Yn-0z-Cjz">
<rect key="frame" x="20" y="0.0" width="754" height="31"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" red="1" green="0.66274509800000003" blue="0.074509803920000006" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="17"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<webView tag="4" contentMode="scaleToFill" verticalCompressionResistancePriority="1" id="pAh-4g-JCn" userLabel="Notes">
<rect key="frame" x="20" y="29" width="754" height="274"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<rect key="contentStretch" x="0.0" y="1" width="1" height="1"/>
</webView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<tableView contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="Iok-mu-c0T" customClass="HorizontalTableView">
<rect key="frame" x="0.0" y="458" width="129" height="768"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
<prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="zSs-IC-htx">
<rect key="frame" x="0.0" y="22" width="129" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="129" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</tableViewCell>
</prototypes>
<connections>
<outlet property="dataSource" destination="TYh-Hw-m1Q" id="42R-0X-OyE"/>
<outlet property="delegate" destination="TYh-Hw-m1Q" id="mMV-1F-8OM"/>
</connections>
</tableView>
<view contentMode="scaleToFill" restorationIdentifier="" id="xYX-bt-wuI" userLabel="Bottom">
<rect key="frame" x="0.0" y="906" width="768" height="98"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="1" contentMode="left" text="00:00:00" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="dtc-vP-agf">
<rect key="frame" x="20" y="7" width="382" height="91"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="55"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<button opaque="NO" tag="2" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="8iO-H3-CJ7">
<rect key="frame" x="410" y="0.0" width="120" height="98"/>
<autoresizingMask key="autoresizingMask" flexibleMinY="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<state key="normal" image="timer_start_btn.png">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="stopWatchStart:" destination="VQa-vM-8pF" eventType="touchUpInside" id="om8-GY-NhP"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="MKb-4h-13P">
<rect key="frame" x="518" y="0.0" width="117" height="98"/>
<autoresizingMask key="autoresizingMask" flexibleMinY="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<state key="normal" image="timer_clear_btn.png">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="stopWatchClear:" destination="VQa-vM-8pF" eventType="touchUpInside" id="aD5-Wp-WRC"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</view>
<view alpha="0.50000000000000011" contentMode="scaleToFill" id="jX5-gj-cqE">
<rect key="frame" x="0.0" y="0.0" width="768" height="1004"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" image="libO_icon.png" id="Qe8-38-thk">
<rect key="frame" x="264" y="95" width="240" height="248"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES"/>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="1Yr-C2-huW">
<rect key="frame" x="294" y="610" width="180" height="77"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="28"/>
<state key="normal" title="Connect">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="startConnectionModal:" destination="TYh-Hw-m1Q" eventType="touchUpInside" id="8aS-7k-5Ga"/>
</connections>
</button>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="LibreOffice Impress Remote" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsLetterSpacingToFitWidth="YES" adjustsFontSizeToFit="NO" id="yiP-rQ-s7i">
<rect key="frame" x="124" y="471" width="520" height="62"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="AppleSDGothicNeo-Bold" family="Apple SD Gothic Neo" pointSize="38"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="tableCellGroupedBackgroundColor"/>
<size key="shadowOffset" width="0.0" height="0.0"/>
</label>
</subviews>
<color key="backgroundColor" red="0.29803921568627451" green="0.74509803921568629" blue="0.22745098039215686" alpha="1" colorSpace="calibratedRGB"/>
</view>
</subviews>
<color key="backgroundColor" red="0.90196079019999997" green="0.90196079019999997" blue="0.90196079019999997" alpha="1" colorSpace="calibratedRGB"/>
</view>
<toolbarItems/>
<connections>
<outlet property="NoteWebView" destination="pAh-4g-JCn" id="h2a-iy-ahp"/>
<outlet property="NotesView" destination="Pk1-fD-KAi" id="2ZD-si-fls"/>
<outlet property="clearButton" destination="MKb-4h-13P" id="7Xz-n6-sre"/>
<outlet property="currentSlideImageView" destination="x7C-rs-s4K" id="Qtf-99-j0C"/>
<outlet property="horizontalTableView" destination="Iok-mu-c0T" id="SJT-pa-4Hb"/>
<outlet property="movingPointer" destination="2SJ-3f-E3k" id="mxV-zz-hjx"/>
<outlet property="nextButton" destination="bfp-PJ-NrP" id="1Uf-1g-iQl"/>
<outlet property="previousButton" destination="I1u-1Z-GsZ" id="Vjj-em-GQj"/>
<outlet property="slideNumber" destination="wWm-KR-C5L" id="Vb0-Wv-6gb"/>
<outlet property="startButton" destination="8iO-H3-CJ7" id="ym1-Hg-BPE"/>
<outlet property="timeLabel" destination="dtc-vP-agf" id="WsH-Gm-dBN"/>
<outlet property="welcome_blocking_page" destination="jX5-gj-cqE" id="5dH-dT-AG4"/>
<outlet property="welcome_connect_button" destination="1Yr-C2-huW" id="fm5-IB-oyc"/>
<outlet property="welcome_label" destination="yiP-rQ-s7i" id="rGp-xL-dH2"/>
<outlet property="welcome_libO_icon" destination="Qe8-38-thk" id="w3C-h1-OL0"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="e0y-Q9-Urg" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-611" y="487"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="uu7-eo-v6A">
<objects>
<navigationController storyboardIdentifier="slidesTable" id="Z0a-WL-DOn" sceneMemberID="viewController">
<navigationBar key="navigationBar" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="238-WF-42z">
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<connections>
<segue destination="VQa-vM-8pF" kind="relationship" relationship="rootViewController" id="hqy-57-zTC"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="bhU-cc-Ssa" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-611" y="-493"/>
</scene>
<!--Main Split View Controller-->
<scene sceneID="myh-dM-403">
<objects>
<splitViewController id="XiK-Ye-iB8" customClass="MainSplitViewController" sceneMemberID="viewController">
<toolbarItems/>
<connections>
<segue destination="Z0a-WL-DOn" kind="relationship" relationship="masterViewController" id="2YO-8l-YoY"/>
<segue destination="TYh-Hw-m1Q" kind="relationship" relationship="detailViewController" id="qi1-27-bFk"/>
<segue destination="KDH-tS-eoR" kind="modal" identifier="connectionModalUp" modalPresentationStyle="formSheet" modalTransitionStyle="flipHorizontal" id="pYZ-nF-jdE"/>
</connections>
</splitViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="TtW-hD-5Ub" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-1587" y="-25"/>
</scene>
<!--Slide Show Swipe In List ipad-->
<scene sceneID="Abu-7b-l1S">
<objects>
<tableViewController clearsSelectionOnViewWillAppear="NO" id="VQa-vM-8pF" customClass="slideShowSwipeInList_ipad" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" rowHeight="170" sectionHeaderHeight="22" sectionFooterHeight="22" id="U9c-sP-NVQ">
<rect key="frame" x="0.0" y="64" width="320" height="788"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" cocoaTouchSystemColor="scrollViewTexturedBackgroundColor"/>
<prototypes>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="slide" rowHeight="178" id="c4j-oH-LnN">
<rect key="frame" x="0.0" y="22" width="320" height="178"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="320" height="177"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" tag="1" contentMode="scaleToFill" image="Default-568h@2x.png" id="dn1-99-Dde">
<rect key="frame" x="44" y="7" width="233" height="163"/>
</imageView>
<label clipsSubviews="YES" userInteractionEnabled="NO" tag="2" contentMode="left" text="1" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="1" highlighted="YES" id="qrH-bi-qw7">
<rect key="frame" x="291" y="156" width="29" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" none="YES" selected="YES" staticText="YES"/>
</accessibility>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</tableViewCell>
</prototypes>
<connections>
<outlet property="dataSource" destination="VQa-vM-8pF" id="Txq-JQ-qey"/>
<outlet property="delegate" destination="VQa-vM-8pF" id="ae6-wj-kAw"/>
</connections>
</tableView>
<navigationItem key="navigationItem" id="tG3-aQ-qyu"/>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="EJg-kN-O5N" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-145" y="-493"/>
</scene>
<!--Auto Dismiss Keyboard Navigation View Controller-->
<scene sceneID="tvQ-2n-hpX">
<objects>
<navigationController storyboardIdentifier="serverList" id="KDH-tS-eoR" customClass="autoDismissKeyboardNavigationViewController" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" id="9T5-Qi-Tr9">
<rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="5QV-E7-KNT" kind="relationship" relationship="rootViewController" id="euZ-Wr-AwZ"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="MVE-66-SWg" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-636" y="-1374"/>
</scene>
</scenes>
<resources>
<image name="Default-568h@2x.png" width="640" height="1136"/>
<image name="libO_icon.png" width="598" height="598"/>
<image name="nextButton_normal.png" width="42" height="230"/>
<image name="nextButton_pressed.png" width="42" height="230"/>
<image name="previousButton_normal.png" width="42" height="230"/>
<image name="previousButton_pressed.png" width="42" height="230"/>
<image name="timer_clear_btn.png" width="74" height="74"/>
<image name="timer_start_btn.png" width="74" height="74"/>
</resources>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
<simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination"/>
</simulatedMetricsContainer>
<inferredMetricsTieBreakers>
<segue reference="XCJ-4d-eG4"/>
</inferredMetricsTieBreakers>
</document>

View File

@@ -0,0 +1,16 @@
//
// AppDelegate_ipad.h
// iosremote
//
// Created by Siqi Liu on 7/28/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "AppDelegate.h"
@class BasePresentationViewController;
@class MainSplitViewController;
@interface AppDelegate_ipad : AppDelegate
@end

View File

@@ -0,0 +1,16 @@
//
// AppDelegate_ipad.m
// iosremote
//
// Created by Siqi Liu on 7/28/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "AppDelegate_ipad.h"
#import "slideShowSwipeInList_ipad.h"
#import "MainSplitViewController.h"
#import "BasePresentationViewController.h"
@implementation AppDelegate_ipad
@end

View File

@@ -0,0 +1,43 @@
//
// ControlVariables.h
// iosremote
//
// Created by Siqi Liu on 7/28/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#ifndef iosremote_ControlVariables_h
#define iosremote_ControlVariables_h
// Width (or length before rotation) of the table view embedded within another table view's row
#define kTableLength 768
// Width of the cells of the embedded table view (after rotation, which means it controls the rowHeight property)
#define kCellWidth 172
// Height of the cells of the embedded table view (after rotation, which would be the table's width)
#define kCellHeight 129
// Padding for the Cell containing the article image and title
#define kArticleCellVerticalInnerPadding 6
#define kArticleCellHorizontalInnerPadding 7
// Padding for the title label in an article's cell
#define kArticleTitleLabelPadding 10
// Vertical padding for the embedded table view within the row
#define kRowVerticalPadding 1
// Horizontal padding for the embedded table view within the row
#define kRowHorizontalPadding 1
// The background color of the vertical table view
#define kVerticalTableBackgroundColor [UIColor colorWithRed:0.58823529 green:0.58823529 blue:0.58823529 alpha:1.0]
// Background color for the horizontal table view (the one embedded inside the rows of our vertical table)
#define kHorizontalTableBackgroundColor [UIColor blackColor]
// The background color on the horizontal table view for when we select a particular cell
#define kHorizontalTableSelectedBackgroundColor [UIColor colorWithRed:0.0 green:0.59607843 blue:0.37254902 alpha:1.0]
#define kHorizontalTableCellHighlightedBackgroundColor [UIColor colorWithRed:0 green:0.4745098 blue:0.29019808 alpha:0.9]
#endif

View File

@@ -0,0 +1,16 @@
//
// HorizontalSlideCell.h
// iosremote
//
// Created by Siqi Liu on 7/28/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface HorizontalSlideCell : UITableViewCell
@property (strong, nonatomic) UIImageView *thumbnail;
@property (strong, nonatomic) UILabel *numberLabel;
@end

View File

@@ -0,0 +1,65 @@
//
// HorizontalSlideCell.m
// iosremote
//
// Created by Siqi Liu on 7/28/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "HorizontalSlideCell.h"
#import "ControlVariables.h"
@implementation HorizontalSlideCell
@synthesize thumbnail = _thumbnail;
@synthesize numberLabel = _numberLabel;
- (NSString *)reuseIdentifier
{
return @"HorizontalTableSlideCell";
}
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
self.thumbnail = [[UIImageView alloc] initWithFrame:CGRectMake(kArticleCellHorizontalInnerPadding, kArticleCellVerticalInnerPadding, kCellWidth - kArticleCellHorizontalInnerPadding * 2, kCellHeight - kArticleCellVerticalInnerPadding * 2)];
self.thumbnail.opaque = YES;
[self.contentView addSubview:self.thumbnail];
self.numberLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.thumbnail.frame.size.width * 0.8, self.thumbnail.frame.size.height * 0.8, self.thumbnail.frame.size.width * 0.2, self.thumbnail.frame.size.height * 0.2)];
self.numberLabel.opaque = YES;
self.numberLabel.backgroundColor = kHorizontalTableCellHighlightedBackgroundColor;
self.numberLabel.textColor = [UIColor whiteColor];
self.numberLabel.font = [UIFont boldSystemFontOfSize:11];
self.numberLabel.textAlignment = UITextAlignmentCenter;
self.numberLabel.numberOfLines = 1;
[self.thumbnail addSubview:self.numberLabel];
self.backgroundColor = [UIColor colorWithRed:0 green:0.40784314 blue:0.21568627 alpha:1.0];
self.selectedBackgroundView = [[UIView alloc] initWithFrame:self.thumbnail.frame];
self.selectedBackgroundView.backgroundColor = kHorizontalTableSelectedBackgroundColor;
self.transform = CGAffineTransformMakeRotation(M_PI * 0.5);
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end

View File

@@ -0,0 +1,17 @@
//
// PresentationViewController.h
// iosremote
//
// Created by Siqi Liu on 7/26/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "slideShowPreviewTable_vc_ipad.h"
@interface MainSplitViewController : UISplitViewController <MainSplitViewControllerProtocol>
- (void) didReceivePresentationStarted;
@property (strong, nonatomic) UIViewController * splitController;
@end

View File

@@ -0,0 +1,80 @@
//
// PresentationViewController.m
// iosremote
//
// Created by Siqi Liu on 7/26/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "MainSplitViewController.h"
#import "server_list_vc_ipad.h"
#import "CommunicationManager.h"
#import "BasePresentationViewController.h"
#import "slideShowSwipeInList_ipad.h"
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface MainSplitViewController ()
@property UINavigationController * masterViewController;
@property BasePresentationViewController * detailViewController;
@end
@implementation MainSplitViewController
# pragma mark - System defaults
- (BOOL) shouldAutorotate
{
return YES;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[[[[UIApplication sharedApplication] delegate] window] setRootViewController:self];
// Do any additional setup after loading the view.
self.detailViewController = [self.viewControllers objectAtIndex:1];
self.masterViewController = [self.viewControllers objectAtIndex:0];
self.delegate = self.detailViewController;
}
-(void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void) didReceivePresentationStarted
{
[self.detailViewController hideMaster:NO];
[self dismissViewControllerAnimated:YES completion:nil];
// [(UITableView *)[(slideShowSwipeInList_ipad *)[[self viewControllers] objectAtIndex:2] view] reloadData];
[(slideShowSwipeInList_ipad *)[(UINavigationController *)[[self viewControllers] objectAtIndex:0] topViewController] didReceivePresentationStarted];
[(BasePresentationViewController *)[[self viewControllers] objectAtIndex:1] setWelcomePageVisible:NO];
}
@end

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -0,0 +1,13 @@
//
// autoDismissKeyboardNavigationViewController.h
// iosremote
//
// Created by Siqi Liu on 7/28/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface autoDismissKeyboardNavigationViewController : UINavigationController
@end

View File

@@ -0,0 +1,43 @@
//
// autoDismissKeyboardNavigationViewController.m
// iosremote
//
// Created by Siqi Liu on 7/28/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "autoDismissKeyboardNavigationViewController.h"
@interface autoDismissKeyboardNavigationViewController ()
@end
@implementation autoDismissKeyboardNavigationViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (BOOL)disablesAutomaticKeyboardDismissal
{
return NO;
}
@end

View File

@@ -0,0 +1,15 @@
//
// server_list_vc_ipad.h
// iosremote
//
// Created by Siqi Liu on 7/26/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "serverList_vc.h"
@interface server_list_vc_ipad : server_list_vc
- (IBAction)cancelModalView:(id)sender;
@end

View File

@@ -0,0 +1,46 @@
//
// server_list_vc_ipad.m
// iosremote
//
// Created by Siqi Liu on 7/26/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "server_list_vc_ipad.h"
@interface server_list_vc_ipad ()
@end
@implementation server_list_vc_ipad
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)viewDidUnload {
[super viewDidUnload];
}
#pragma mark - Actions
- (IBAction)cancelModalView:(id)sender {
[self.presentingViewController dismissModalViewControllerAnimated:YES];
}
@end

View File

@@ -0,0 +1,21 @@
//
// slideShowPreview_vc~ipad.h
// iosremote
//
// Created by Siqi Liu on 7/26/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "slideShowPreviewTable_vc.h"
@protocol MainSplitViewControllerProtocol <NSObject>
- (void) didReceivePresentationStarted;
@end
@interface slideShowPreviewTable_vc_ipad : slideShowPreviewTable_vc
@property (strong, nonatomic) id <MainSplitViewControllerProtocol> delegate;
@end

View File

@@ -0,0 +1,73 @@
//
// slideShowPreview_vc~ipad.m
// iosremote
//
// Created by Siqi Liu on 7/26/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "slideShowPreviewTable_vc_ipad.h"
#import "slideShowPreviewTable_vc.h"
#import "CommunicationManager.h"
#import "CommandTransmitter.h"
#import "CommandInterpreter.h"
#import "SlideShow.h"
#import "MainSplitViewController.h"
@interface slideShowPreviewTable_vc_ipad ()
@end
@implementation slideShowPreviewTable_vc_ipad
#pragma mark - System defaults
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void) viewDidLoad
{
[super viewDidLoad];
if (self.navigationController)
self.delegate = (MainSplitViewController *) self.navigationController.presentingViewController;
else
self.delegate = (MainSplitViewController *) self.presentingViewController;
NSLog(@"%@", [self.delegate class]);
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self.optionsArray = [NSArray arrayWithObjects:OPTION_TIMER, nil];
} else
self.optionsArray = [NSArray arrayWithObjects:OPTION_TIMER, OPTION_POINTER, nil];
self.comManager = [CommunicationManager sharedComManager];
self.comManager.delegate = self;
}
- (void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if ([self.comManager.interpreter.slideShow size] > 0){
NSLog(@"3");
[self.delegate didReceivePresentationStarted];
}
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
self.slideShowStartObserver = [[NSNotificationCenter defaultCenter] addObserverForName:STATUS_CONNECTED_SLIDESHOW_RUNNING
object:nil
queue:mainQueue
usingBlock:^(NSNotification *note) {
[self.delegate didReceivePresentationStarted];
}];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end

View File

@@ -0,0 +1,14 @@
//
// slideShowPreview_vc~iphone.h
// iosremote
//
// Created by Siqi Liu on 7/26/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "slideShowPreviewTable_vc.h"
@interface slideShowPreviewTable_vc_iphone : slideShowPreviewTable_vc
@end

View File

@@ -0,0 +1,39 @@
//
// slideShowPreview_vc~iphone.m
// iosremote
//
// Created by Siqi Liu on 7/26/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "slideShowPreviewTable_vc_iphone.h"
#import "CommandInterpreter.h"
#import "SlideShow.h"
@implementation slideShowPreviewTable_vc_iphone
- (void) viewDidLoad
{
[super viewDidLoad];
self.optionsArray = [NSArray arrayWithObjects:OPTION_TIMER, OPTION_POINTER, nil];
self.comManager = [CommunicationManager sharedComManager];
self.comManager.delegate = self;
}
- (void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if ([self.comManager.interpreter.slideShow size] > 0){
[self performSegueWithIdentifier:@"slideShowSegue" sender:self];
}
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
self.slideShowStartObserver = [[NSNotificationCenter defaultCenter] addObserverForName:STATUS_CONNECTED_SLIDESHOW_RUNNING
object:nil
queue:mainQueue
usingBlock:^(NSNotification *note) {
[self performSegueWithIdentifier:@"slideShowSegue" sender:self];
}];
}
@end

View File

@@ -0,0 +1,13 @@
//
// slideShowSwipeInList~ipad.h
// iosremote
//
// Created by Siqi Liu on 7/27/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
@interface slideShowSwipeInList_ipad : UITableViewController
- (void) didReceivePresentationStarted;
@end

View File

@@ -0,0 +1,168 @@
//
// slideShowSwipeInList~ipad.m
// iosremote
//
// Created by Siqi Liu on 7/27/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "slideShowSwipeInList_ipad.h"
#import "CommunicationManager.h"
#import "CommandInterpreter.h"
#import "SlideShow.h"
#import "CommandTransmitter.h"
#import "SWRevealViewController.h"
#import "slideShowPreviewTable_vc.h"
#import <QuartzCore/CALayer.h>
@interface slideShowSwipeInList_ipad ()
@property (nonatomic, strong) CommunicationManager *comManager;
@property (nonatomic, strong) SlideShow *slideshow;
@property (nonatomic, strong) id slideChangedObserver;
@end
@implementation slideShowSwipeInList_ipad
@synthesize comManager = _comManager;
@synthesize slideshow = _slideshow;
@synthesize slideChangedObserver = _slideChangedObserver;
dispatch_queue_t backgroundQueue;
- (void) handleBack:(id)sender
{
[self.comManager.transmitter stopPresentation];
[self.tableView reloadData];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (SlideShow *)slideshow
{
return self.comManager.interpreter.slideShow;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.comManager = [CommunicationManager sharedComManager];
self.slideshow.secondaryDelegate = self;
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Stop Presentation"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(handleBack:)];
[backButton setTintColor:[UIColor redColor]];
self.navigationItem.leftBarButtonItem = backButton;
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
self.slideChangedObserver =[center addObserverForName:MSG_SLIDE_CHANGED
object:nil
queue:mainQueue
usingBlock:^(NSNotification *note) {
if ([self.tableView numberOfRowsInSection:0] > 0){
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.slideshow.currentSlide inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
}];
UIImageView *bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"slideshowRail"]];
[bgImageView setFrame:self.tableView.frame];
self.tableView.backgroundView = bgImageView;
}
- (void)viewDidUnload
{
[[NSNotificationCenter defaultCenter] removeObserver:self.slideChangedObserver];
[super viewDidUnload];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void) viewWillAppear:(BOOL)animated
{
[self.tableView reloadData];
[super viewWillAppear:animated];
}
- (void) viewDidAppear:(BOOL)animated
{
if ([self.comManager.interpreter.slideShow size] > 0) {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.slideshow.currentSlide
inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
}
}
- (void) didReceivePresentationStarted
{
self.slideshow.secondaryDelegate = self;
[self.tableView reloadData];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.slideshow size];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return @"Slides";
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"slide";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier];
UILabel * slideNumber = (UILabel *)[cell viewWithTag:2];
// Starting 20, all tags are used for thumbnails in this sidebar
[cell setTag:20+indexPath.row];
[self.slideshow getContentAtIndex:indexPath.row forView:cell];
[slideNumber setText:[NSString stringWithFormat:@"%u", indexPath.row+1]];
return cell;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
// Otherwise selection will disable background color and make slide number unreadable
if(cell.selected){
UILabel *label = (UILabel *)[cell viewWithTag:2];
if ([label backgroundColor]!=[UIColor lightGrayColor]) {
[label setBackgroundColor:[UIColor lightGrayColor]];
}
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.comManager.transmitter gotoSlide:indexPath.row];
[[[self.tableView cellForRowAtIndexPath:indexPath] viewWithTag:2] setBackgroundColor:[UIColor lightGrayColor]];
}
@end

View File

@@ -0,0 +1,12 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#import <UIKit/UIKit.h>
@interface slideShowSwipeInList : UITableViewController <UITableViewDataSource, UITableViewDelegate>
@end

View File

@@ -0,0 +1,183 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#import "slideShowSwipeInList_iphone.h"
#import "CommunicationManager.h"
#import "CommandInterpreter.h"
#import "SlideShow.h"
#import "CommandTransmitter.h"
#import "SWRevealViewController.h"
#import "slideShowPreviewTable_vc.h"
#import "ControlVariables.h"
#import "stopWatch.h"
#import <QuartzCore/CALayer.h>
@interface slideShowSwipeInList ()
@property (nonatomic, strong) CommunicationManager *comManager;
@property (nonatomic, strong) SlideShow *slideshow;
@property (nonatomic, strong) stopWatch *stopWatch;
@end
@implementation slideShowSwipeInList
@synthesize comManager = _comManager;
@synthesize slideshow = _slideshow;
dispatch_queue_t backgroundQueue;
- (void) viewDidLoad
{
[super viewDidLoad];
self.comManager = [CommunicationManager sharedComManager];
self.slideshow = self.comManager.interpreter.slideShow;
self.slideshow.secondaryDelegate = self;
self.clearsSelectionOnViewWillAppear = NO;
self.stopWatch = [[stopWatch alloc] init];
if ([[NSUserDefaults standardUserDefaults] boolForKey:KEY_TIMER]) {
[self.stopWatch start];
}
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"slideshowRail.png"]];
[tempImageView setFrame:self.tableView.frame];
self.tableView.backgroundView = tempImageView;
}
- (void) viewDidAppear:(BOOL)animated
{
if (!self.stopWatch.set) {
[self.stopWatch setupWithTableViewCell:[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]];
}
[self.stopWatch updateStartButtonIcon];
if ([self.comManager.interpreter.slideShow size] > 0) {
[self.stopWatch updateStartButtonIcon];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.slideshow.currentSlide
inSection:1];
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
}
}
- (void) prepareForSegue: (UIStoryboardSegue *) segue sender: (id) sender
{
// configure the segue.
// in this case we dont swap out the front view controller, which is a UINavigationController.
// but we could..
if ( [segue isKindOfClass: [SWRevealViewControllerSegue class]] )
{
SWRevealViewControllerSegue* rvcs = (SWRevealViewControllerSegue*) segue;
SWRevealViewController* rvc = self.revealViewController;
NSAssert( rvc != nil, @"oops! must have a revealViewController" );
NSAssert( [rvc.frontViewController isKindOfClass: [UINavigationController class]], @"oops! for this segue we want a permanent navigation controller in the front!" );
rvcs.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {
UINavigationController* nc = (UINavigationController*)rvc.frontViewController;
[nc setViewControllers: @[ dvc ] animated: YES ];
[rvc setFrontViewPosition: FrontViewPositionLeft animated: YES];
};
}
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Section one used for stopwatch
if (section == 0)
return 1;
else
return [self.slideshow size];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
switch (section) {
case 0:
return @"Stop Watch";
break;
case 1:
return @"Slides";
default:
break;
}
return nil;
}
- (void) tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier: @"sw_customized_segue" sender: [tableView cellForRowAtIndexPath: indexPath]];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0) {
static NSString *CellIdentifier = @"stopWatch";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
cell.contentView.backgroundColor = [UIColor whiteColor];
return cell;
} else {
static NSString *CellIdentifier = @"slide";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier];
UILabel * slideNumber = (UILabel *)[cell viewWithTag:2];
// Starting 20, all tags are used for thumbnails in this sidebar
[cell setTag:20+indexPath.row];
[self.slideshow getContentAtIndex:indexPath.row forView:cell];
[slideNumber setText:[NSString stringWithFormat:@"%u", indexPath.row+1]];
cell.backgroundColor = [UIColor colorWithRed:0 green:0.40784314 blue:0.21568627 alpha:1.0];
return cell;
}
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
// Otherwise selection will disable background color and make slide number unreadable
if(indexPath.section == 1 && cell.selected){
UILabel *label = (UILabel *)[cell viewWithTag:2];
if ([label backgroundColor]!=[UIColor lightGrayColor]) {
[label setBackgroundColor:[UIColor lightGrayColor]];
}
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0)
return;
[self.comManager.transmitter gotoSlide:indexPath.row];
[[[self.tableView cellForRowAtIndexPath:indexPath] viewWithTag:2] setBackgroundColor:[UIColor lightGrayColor]];
[self.revealViewController revealToggle: self];
}
- (void)viewDidUnload {
[self setStopWatch:nil];
[super viewDidUnload];
}
@end

View File

@@ -0,0 +1,31 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#import <UIKit/UIKit.h>
#import "SlideShow.h"
@interface slideShow_vc : UIViewController <AsyncLoadHorizontalTableDelegate>
- (IBAction)nextSlideAction:(id)sender;
- (IBAction)previousSlideAction:(id)sender;
- (IBAction)pointerAction:(id)sender;
- (IBAction)accPointerAction:(id)sender;
@property (weak, nonatomic) IBOutlet UIView *notesView;
@property (weak, nonatomic) IBOutlet UIWebView *lecturer_notes;
@property (weak, nonatomic) IBOutlet UIImageView *slideView;
@property (weak, nonatomic) IBOutlet UIImageView *secondarySlideView;
@property (weak, nonatomic) IBOutlet UILabel *slideNumber;
@property (weak, nonatomic) IBOutlet UIView *movingPointer;
@property (weak, nonatomic) IBOutlet UIImageView *touchPointerImage;
@property (weak, nonatomic) IBOutlet UIView *blockingView;
@property (weak, nonatomic) IBOutlet UIView *bottomView;
@property (weak, nonatomic) IBOutlet UIButton *pointerBtn;
@end

View File

@@ -0,0 +1,401 @@
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#import "slideShow_vc_iphone.h"
#import "SlideShow.h"
#import "UIViewTransitionCategory.h"
#import "CommunicationManager.h"
#import "SWRevealViewController.h"
#import "CommandInterpreter.h"
#import "CommandTransmitter.h"
#import "slideShowPreviewTable_vc.h"
#import <QuartzCore/QuartzCore.h>
#import <CoreMotion/CoreMotion.h>
#define CURRENT_SLIDE_IMAGEVIEW 1
#define NEXT_SLIDE_IMAGEVIEW 2
#define TOUCH_POINTER_VIEW 3
#define CURRENT_SLIDE_NOTES 4
@interface slideShow_vc ()
@property (nonatomic, strong) CommunicationManager *comManager;
@property (nonatomic, strong) id slideShowImageNoteReadyObserver;
@property (nonatomic, strong) id slideShowFinishedObserver;
@property (nonatomic, strong) SlideShow* slideshow;
@property BOOL pointerCalibrationOn;
@property CGPoint refLeftUpperGravity;
@property CGPoint refRightUpperGravity;
@property CGPoint refRightLowerGravity;
// SWReveal Controller
@property (readwrite) IBOutlet UIBarButtonItem* revealButtonItem;
@property int count;
@end
@implementation slideShow_vc
@synthesize comManager = _comManager;
@synthesize slideShowImageNoteReadyObserver = _slideShowImageNoteReadyObserver;
@synthesize slideShowFinishedObserver = _slideShowFinishedObserver;
@synthesize slideshow = _slideshow;
#pragma mark - Pointer
- (CMMotionManager *)motionManager
{
CMMotionManager *motionManager = nil;
id appDelegate = [UIApplication sharedApplication].delegate;
if ([appDelegate respondsToSelector:@selector(motionManager)]) {
motionManager = [appDelegate motionManager];
}
return motionManager;
}
- (void)startMotionDetect
{
// __block float stepMoveFactorX = 5;
// __block float stepMoveFactorY = 5;
// __block double refX, refY;
[self.motionManager
startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init]
withHandler:^(CMAccelerometerData *data, NSError *error)
{
dispatch_async(dispatch_get_main_queue(),
^{
CGRect rect = self.movingPointer.frame;
NSLog(@"x:%f y:%f z:%f", data.acceleration.x, data.acceleration.y, data.acceleration.z);
// Used to calibrate pointer based on initial position
// if (self.pointerCalibrationOn){
// refX = data.acceleration.x;
// refY = data.acceleration.y;
// self.pointerCalibrationOn = NO;
// }
// float movetoX = rect.origin.x + ((data.acceleration.x - refX) * stepMoveFactorX);
float movetoX = self.touchPointerImage.frame.origin.x + self.touchPointerImage.frame.size.width * ABS(data.acceleration.x - self.refLeftUpperGravity.x) / ABS(self.refRightUpperGravity.x - self.refLeftUpperGravity.x);
float maxX = self.touchPointerImage.frame.origin.x + self.touchPointerImage.frame.size.width - rect.size.width;
// float movetoY = (rect.origin.y) + ((data.acceleration.y - refY) * stepMoveFactorY);
float movetoY = self.touchPointerImage.frame.origin.y + self.touchPointerImage.frame.size.height * ABS(data.acceleration.y - self.refRightUpperGravity.y) / ABS(self.refRightLowerGravity.y - self.refRightUpperGravity.y);
float maxY = self.touchPointerImage.frame.origin.y + self.touchPointerImage.frame.size.height;
if ( movetoX > self.touchPointerImage.frame.origin.x && movetoX < maxX ) {
rect.origin.x = movetoX;
};
if ( movetoY > self.touchPointerImage.frame.origin.y && movetoY < maxY ) {
rect.origin.y = movetoY;
};
[UIView animateWithDuration:0 delay:0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
self.movingPointer.frame = rect;
}
completion:nil
];
});
}];
}
- (IBAction)accPointerAction:(id)sender{
BOOL acc = [[NSUserDefaults standardUserDefaults] boolForKey:KEY_POINTER];
if (!acc) {
static BOOL pointer = NO;
if (!pointer){
[self startMotionDetect];
[self.movingPointer setHidden:NO];
}
else {
[self.motionManager stopAccelerometerUpdates];
self.pointerCalibrationOn = NO;
[self.movingPointer setHidden:YES];
}
pointer = !pointer;
}
}
- (IBAction)pointerAction:(id)sender {
if (self.count == 0 || self.count == 1){
CGPoint p;
p.x = [self.motionManager accelerometerData].acceleration.x;
p.y = [self.motionManager accelerometerData].acceleration.y;
self.refLeftUpperGravity = p;
if (self.count == 1) {
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Calibration"
message:@"Upper left corner calibrated, now point your device to the upper right corner of the screen and click Pointer button again"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:@"Help", nil];
[message show];
}
++self.count;
} else if (self.count == 2 || self.count == 3) {
CGPoint p;
p.x = [self.motionManager accelerometerData].acceleration.x;
p.y = [self.motionManager accelerometerData].acceleration.y;
self.refRightUpperGravity = p;
if (self.count == 3) {
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Calibration"
message:@"Upper right corner calibrated, now point your device to the lower right corner of the screen and click Pointer button again!"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:@"Help", nil];
[message show];
}
++self.count;
} else if (self.count == 4 || self.count == 5) {
CGPoint p;
p.x = [self.motionManager accelerometerData].acceleration.x;
p.y = [self.motionManager accelerometerData].acceleration.y;
self.refRightLowerGravity = p;
if (self.count == 5) {
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Calibration"
message:@"Lower right corner calibrated, enjoy your pointer!"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:@"Help", nil];
[message show];
}
++self.count;
} else {
if ([self.touchPointerImage isHidden]){
[self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.touchPointerImage];
CGPoint p = self.view.center;
p.y -= 50;
self.touchPointerImage.center = p;
}
[self.touchPointerImage fadeInfadeOutwithDuration:0.0 maxAlpha:1.0];
[self.blockingView fadeInfadeOutwithDuration:0.0 maxAlpha:0.7];
}
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
if (!self.touchPointerImage.isHidden){
CGPoint loc = [touch locationInView:self.touchPointerImage];
if (loc.x >= 0 && loc.x <= self.touchPointerImage.frame.size.width
&& loc.y >= 0 && loc.y <= self.touchPointerImage.frame.size.height){
CGPoint pointerInPercentage;
pointerInPercentage.x = loc.x / self.touchPointerImage.frame.size.width;
pointerInPercentage.y = loc.y / self.touchPointerImage.frame.size.height;
[self.comManager.transmitter setPointerVisibleAt:pointerInPercentage];
CGPoint p;
p.x = loc.x + self.touchPointerImage.frame.origin.x;
p.y = loc.y + self.touchPointerImage.frame.origin.y;
self.movingPointer.center = p;
[self.movingPointer setHidden:NO];
}
}
if ([touch view] == self.secondarySlideView)
{
// Change to the next slide when secondary slide is clicked
[self.comManager.transmitter gotoSlide:self.slideshow.currentSlide + 1];
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
if (!self.touchPointerImage.isHidden){
UITouch *touch = [[event allTouches] anyObject];
CGPoint loc = [touch locationInView:self.touchPointerImage];
if (loc.x >= 0 && loc.x <= self.touchPointerImage.frame.size.width
&& loc.y >= self.movingPointer.frame.size.height && loc.y <= self.touchPointerImage.frame.size.height - self.movingPointer.frame.size.height)
{
CGPoint pointerInPercentage;
pointerInPercentage.x = loc.x / self.touchPointerImage.frame.size.width;
pointerInPercentage.y = loc.y / self.touchPointerImage.frame.size.height;
[self.comManager.transmitter pointerCoordination:pointerInPercentage];
CGPoint p;
p.x = loc.x + self.touchPointerImage.frame.origin.x;
p.y = loc.y + self.touchPointerImage.frame.origin.y;
self.movingPointer.center = p;
}
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.movingPointer setHidden:YES];
[self.comManager.transmitter setPointerDismissed];
}
#pragma mark - System defaults
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (NSUInteger) supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (SlideShow *)slideshow
{
return self.comManager.interpreter.slideShow;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Unique tag assignment. Don't use 0 as it's default. 0-10 for central VC
[self.slideView setTag:CURRENT_SLIDE_IMAGEVIEW];
[self.secondarySlideView setTag:NEXT_SLIDE_IMAGEVIEW];
[self.lecturer_notes setTag:CURRENT_SLIDE_NOTES];
[self.touchPointerImage setTag:TOUCH_POINTER_VIEW];
self.comManager = [CommunicationManager sharedComManager];
self.slideshow.delegate = self;
[self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.slideView];
[self.slideshow getContentAtIndex:self.slideshow.currentSlide+1 forView:self.secondarySlideView];
[self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.lecturer_notes];
[self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.touchPointerImage];
[self.slideNumber setText:[NSString stringWithFormat:@"%u/%u", [self.slideshow currentSlide]+1, [self.slideshow size]]];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Stop Presentation"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(handleBack:)];
[backButton setTintColor:[UIColor redColor]];
self.revealViewController.navigationItem.leftBarButtonItem = backButton;
self.revealButtonItem = [[UIBarButtonItem alloc] initWithImage: [UIImage imageNamed:@"more_icon.png"]
style:UIBarButtonItemStyleBordered
target:self.revealViewController
action:@selector( revealToggle: )];
self.revealViewController.navigationItem.rightBarButtonItem = self.revealButtonItem;
[self.navigationController.navigationBar addGestureRecognizer: self.revealViewController.panGestureRecognizer];
self.pointerCalibrationOn = NO;
self.movingPointer.layer.cornerRadius = 3;
BOOL acc = [[NSUserDefaults standardUserDefaults] boolForKey:KEY_POINTER];
if (!acc) {
// Hook up acc detection
[self.pointerBtn addTarget:self action:@selector(pointerAction:) forControlEvents:UIControlEventTouchUpOutside];
[self.pointerBtn addTarget:self action:@selector(pointerAction:) forControlEvents:UIControlEventTouchUpInside];
} else {
// Disable all calibration functions for acc based pointer
self.count = INT_MAX;
}
}
- (void) handleBack:(id)sender
{
[self.comManager.transmitter stopPresentation];
[self.navigationController popViewControllerAnimated:YES];
}
- (void) viewDidAppear:(BOOL)animated
{
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
self.slideShowImageNoteReadyObserver =[center addObserverForName:MSG_SLIDE_CHANGED
object:nil
queue:mainQueue
usingBlock:^(NSNotification *note) {
[self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.slideView];
[self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.touchPointerImage];
[self.slideshow getContentAtIndex:self.slideshow.currentSlide+1 forView:self.secondarySlideView];
[self.slideshow getContentAtIndex:self.slideshow.currentSlide forView:self.lecturer_notes];
[self.slideNumber setText:[NSString stringWithFormat:@"%u/%u", [self.slideshow currentSlide]+1, [self.slideshow size]]];
}];
self.slideShowFinishedObserver = [center addObserverForName:STATUS_CONNECTED_NOSLIDESHOW
object:nil
queue:mainQueue
usingBlock:^(NSNotification *note) {
[self.navigationController popViewControllerAnimated:YES];
}];
self.slideView.layer.shadowColor = [[UIColor blackColor] CGColor];
self.slideView.layer.shadowOpacity = 0.5;
self.slideView.layer.shadowRadius = 4.0;
self.slideView.layer.shadowOffset = CGSizeMake(3.0f, 3.0f);
self.slideView.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.slideView.bounds].CGPath;
self.slideView.clipsToBounds = NO;
self.secondarySlideView.layer.shadowColor = [[UIColor blackColor] CGColor];
self.secondarySlideView.layer.shadowOpacity = 0.5;
self.secondarySlideView.layer.shadowRadius = 4.0;
self.secondarySlideView.layer.shadowOffset = CGSizeMake(3.0f, 3.0f);
self.secondarySlideView.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.secondarySlideView.bounds].CGPath;
self.secondarySlideView.clipsToBounds = NO;
// We calibrate once when presentation starts. needs a users alert to inform users to point at the center of the screen at the beginning
self.pointerCalibrationOn = YES;
[super viewDidAppear:animated];
}
- (void) viewDidDisappear:(BOOL)animated
{
self.count = 0;
[[NSNotificationCenter defaultCenter] removeObserver:self.slideShowFinishedObserver];
[[NSNotificationCenter defaultCenter] removeObserver:self.slideShowImageNoteReadyObserver];
[super viewDidDisappear:animated];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)viewDidUnload {
[self setLecturer_notes:nil];
[self setSlideView:nil];
[self setSlideNumber:nil];
[self setSecondarySlideView:nil];
[self setNotesView:nil];
[self setMovingPointer:nil];
[self setBlockingView:nil];
[self setBottomView:nil];
[self setPointerBtn:nil];
[super viewDidUnload];
}
- (IBAction)nextSlideAction:(id)sender {
[[self.comManager transmitter] nextTransition];
}
- (IBAction)previousSlideAction:(id)sender {
[[self.comManager transmitter] previousTransition];
}
@end

View File

@@ -0,0 +1,31 @@
//
// stopWatch.h
// iosremote
//
// Created by Siqi Liu on 7/29/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import <Foundation/Foundation.h>
#define TIMER_STATE_RUNNING 0
#define TIMER_STATE_PAUSED 1
#define TIMER_STATE_CLEARED 2
@interface stopWatch : NSObject
// StopWatch
@property (strong, nonatomic) NSTimer *stopWatchTimer;
@property (strong, nonatomic) NSDate *startDate;
@property BOOL set;
- (stopWatch *) initWithStartButton:(UIButton *)startButton
ClearButton:(UIButton *)clearButton
TimeLabel:(UILabel *)timeLabel;
- (void) setupWithTableViewCell:(UITableViewCell *)cell;
- (void) start;
- (void) clear;
- (void) updateStartButtonIcon;
@end

View File

@@ -0,0 +1,148 @@
//
// stopWatch.m
// iosremote
//
// Created by Siqi Liu on 7/29/13.
// Copyright (c) 2013 libreoffice. All rights reserved.
//
#import "stopWatch.h"
@interface stopWatch ()
@property NSTimeInterval lastInterval;
@property int state;
@property (weak, nonatomic) UIButton * startButton;
@property (weak, nonatomic) UIButton * clearButton;
@property (weak, nonatomic) UILabel * timeLabel;
@end
@implementation stopWatch
@synthesize startButton = _startButton;
@synthesize clearButton = _clearButton;
@synthesize timeLabel = _timeLabel;
@synthesize lastInterval = _lastInterval;
- (stopWatch *) init
{
self = [super init];
self.state = TIMER_STATE_CLEARED;
self.set = NO;
return self;
}
- (stopWatch *) initWithStartButton:(UIButton *)startButton
ClearButton:(UIButton *)clearButton
TimeLabel:(UILabel *)timeLabel
{
self = [self init];
self.startButton = startButton;
self.clearButton = clearButton;
self.timeLabel = timeLabel;
[self setupActions];
return self;
}
- (void) setupWithTableViewCell:(UITableViewCell *)cell
{
self.startButton = (UIButton *)[cell viewWithTag:2];
self.clearButton = (UIButton *)[cell viewWithTag:3];
self.timeLabel = (UILabel *)[cell viewWithTag:1];
[self setupActions];
}
- (void) setupActions
{
[self.startButton addTarget:self action:@selector(start) forControlEvents:UIControlEventTouchUpInside];
[self.clearButton addTarget:self action:@selector(clear) forControlEvents:UIControlEventTouchUpInside];
self.set = YES;
}
- (void)updateTimer
{
// Create date from the elapsed time
NSDate *currentDate = [NSDate date];
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:self.startDate] + self.lastInterval;
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
// Create a date formatter
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
// Format the elapsed time and set it to the label
NSString *timeString = [dateFormatter stringFromDate:timerDate];
self.timeLabel.text = timeString;
}
- (void) start
{
switch (self.state) {
case TIMER_STATE_RUNNING:
self.state = TIMER_STATE_PAUSED;
[self.stopWatchTimer invalidate];
self.lastInterval += [[NSDate date] timeIntervalSinceDate:self.startDate];
break;
case TIMER_STATE_PAUSED:
self.state = TIMER_STATE_RUNNING;
self.startDate = [NSDate date];
self.stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/10.0
target:self
selector:@selector(updateTimer)
userInfo:nil
repeats:YES];
break;
case TIMER_STATE_CLEARED:
self.state = TIMER_STATE_RUNNING;
self.startDate = [NSDate date];
// Create the stop watch timer that fires every 100 ms
self.stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/10.0
target:self
selector:@selector(updateTimer)
userInfo:nil
repeats:YES];
break;
default:
break;
}
[self updateStartButtonIcon];
}
- (void) updateStartButtonIcon
{
switch (self.state) {
case TIMER_STATE_RUNNING:
[self.startButton setImage:[UIImage imageNamed:@"timer_pause_btn"] forState:UIControlStateNormal];
break;
case TIMER_STATE_PAUSED:
[self.startButton setImage:[UIImage imageNamed:@"timer_resume_btn"] forState:UIControlStateNormal];
break;
case TIMER_STATE_CLEARED:
[self.startButton setImage:[UIImage imageNamed:@"timer_start_btn"] forState:UIControlStateNormal];
break;
default:
break;
}
}
- (void) clear
{
[self.stopWatchTimer invalidate];
self.stopWatchTimer = nil;
self.startDate = [NSDate date];
self.lastInterval = 0;
self.state = TIMER_STATE_CLEARED;
[self.startButton setImage:[UIImage imageNamed:@"timer_start_btn"] forState:UIControlStateNormal];
[self updateTimer];
}
@end

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
ios/iosremote/libO_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB