Browse Source

MovieViewController: added own view for landscape

Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org>
Carola Nitz 11 years ago
parent
commit
8de84b02e4

+ 3 - 5
Resources/VLCMovieViewController~ipad.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="5037" systemVersion="12F45" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4514" systemVersion="13B42" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none">
     <dependencies>
     <dependencies>
         <deployment defaultVersion="1552" identifier="iOS"/>
         <deployment defaultVersion="1552" identifier="iOS"/>
         <development version="5000" identifier="xcode"/>
         <development version="5000" identifier="xcode"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3747"/>
     </dependencies>
     </dependencies>
     <objects>
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="VLCMovieViewController">
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="VLCMovieViewController">
@@ -13,7 +13,6 @@
                 <outlet property="artworkImageView" destination="g3j-bZ-K3S" id="fPn-6f-Kez"/>
                 <outlet property="artworkImageView" destination="g3j-bZ-K3S" id="fPn-6f-Kez"/>
                 <outlet property="aspectRatioButton" destination="198" id="229"/>
                 <outlet property="aspectRatioButton" destination="198" id="229"/>
                 <outlet property="audioSwitcherButton" destination="277" id="292"/>
                 <outlet property="audioSwitcherButton" destination="277" id="292"/>
-                <outlet property="audioSwitcherContainer" destination="k3r-6B-CmK" id="sr9-Hq-Iqu"/>
                 <outlet property="backButton" destination="102" id="111"/>
                 <outlet property="backButton" destination="102" id="111"/>
                 <outlet property="brightnessLabel" destination="148" id="165"/>
                 <outlet property="brightnessLabel" destination="148" id="165"/>
                 <outlet property="brightnessSlider" destination="147" id="163"/>
                 <outlet property="brightnessSlider" destination="147" id="163"/>
@@ -52,7 +51,6 @@
                 <outlet property="trackNameLabel" destination="304" id="307"/>
                 <outlet property="trackNameLabel" destination="304" id="307"/>
                 <outlet property="videoFilterButton" destination="279" id="291"/>
                 <outlet property="videoFilterButton" destination="279" id="291"/>
                 <outlet property="videoFilterView" destination="141" id="156"/>
                 <outlet property="videoFilterView" destination="141" id="156"/>
-                <outlet property="videoeffectsContainer" destination="OCK-fG-mgo" id="eRb-1E-VEI"/>
                 <outlet property="view" destination="8" id="120"/>
                 <outlet property="view" destination="8" id="120"/>
                 <outlet property="volumeView" destination="281" id="299"/>
                 <outlet property="volumeView" destination="281" id="299"/>
             </connections>
             </connections>
@@ -529,4 +527,4 @@
         <image name="subtitleIcon.png" width="19" height="19"/>
         <image name="subtitleIcon.png" width="19" height="19"/>
         <image name="videoEffectsIcon.png" width="21" height="21"/>
         <image name="videoEffectsIcon.png" width="21" height="21"/>
     </resources>
     </resources>
-</document>
+</document>

+ 187 - 7
Resources/VLCMovieViewController~iphone.xib

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="5037" systemVersion="12F45" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="5037.2" systemVersion="12F45" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
     <dependencies>
     <dependencies>
         <deployment defaultVersion="1552" identifier="iOS"/>
         <deployment defaultVersion="1552" identifier="iOS"/>
         <development version="5000" identifier="xcode"/>
         <development version="5000" identifier="xcode"/>
@@ -13,23 +13,28 @@
                 <outlet property="artworkImageView" destination="yK6-Ph-SVE" id="Cm9-7F-iYZ"/>
                 <outlet property="artworkImageView" destination="yK6-Ph-SVE" id="Cm9-7F-iYZ"/>
                 <outlet property="aspectRatioButton" destination="202" id="222"/>
                 <outlet property="aspectRatioButton" destination="202" id="222"/>
                 <outlet property="audioSwitcherButton" destination="78" id="98"/>
                 <outlet property="audioSwitcherButton" destination="78" id="98"/>
-                <outlet property="audioSwitcherContainer" destination="mKM-iB-gtC" id="jf3-eu-m9Z"/>
+                <outlet property="audioSwitcherButtonLandscape" destination="awR-Dt-S0B" id="SSl-4q-pof"/>
                 <outlet property="backButton" destination="85" id="96"/>
                 <outlet property="backButton" destination="85" id="96"/>
                 <outlet property="brightnessLabel" destination="130" id="233"/>
                 <outlet property="brightnessLabel" destination="130" id="233"/>
                 <outlet property="brightnessSlider" destination="128" id="232"/>
                 <outlet property="brightnessSlider" destination="128" id="232"/>
                 <outlet property="bwdButton" destination="77" id="100"/>
                 <outlet property="bwdButton" destination="77" id="100"/>
+                <outlet property="bwdButtonLandscape" destination="pQj-0t-OnU" id="U8k-IC-a6H"/>
                 <outlet property="contrastLabel" destination="132" id="141"/>
                 <outlet property="contrastLabel" destination="132" id="141"/>
                 <outlet property="contrastSlider" destination="131" id="142"/>
                 <outlet property="contrastSlider" destination="131" id="142"/>
                 <outlet property="controllerPanel" destination="92" id="104"/>
                 <outlet property="controllerPanel" destination="92" id="104"/>
+                <outlet property="controllerPanelLandscape" destination="e7l-vK-ape" id="uR7-Ks-KKV"/>
                 <outlet property="currentScrubSpeedLabel" destination="244" id="248"/>
                 <outlet property="currentScrubSpeedLabel" destination="244" id="248"/>
                 <outlet property="fwdButton" destination="75" id="102"/>
                 <outlet property="fwdButton" destination="75" id="102"/>
+                <outlet property="fwdButtonLandscape" destination="jl2-cB-KOM" id="D5T-2S-hbf"/>
                 <outlet property="gammaLabel" destination="138" id="156"/>
                 <outlet property="gammaLabel" destination="138" id="156"/>
                 <outlet property="gammaSlider" destination="137" id="144"/>
                 <outlet property="gammaSlider" destination="137" id="144"/>
                 <outlet property="hueLabel" destination="134" id="234"/>
                 <outlet property="hueLabel" destination="134" id="234"/>
                 <outlet property="hueSlider" destination="133" id="235"/>
                 <outlet property="hueSlider" destination="133" id="235"/>
                 <outlet property="movieView" destination="91" id="93"/>
                 <outlet property="movieView" destination="91" id="93"/>
                 <outlet property="playPauseButton" destination="76" id="101"/>
                 <outlet property="playPauseButton" destination="76" id="101"/>
-                <outlet property="playbackSpeedButton" destination="183" id="209"/>
+                <outlet property="playPauseButtonLandscape" destination="nxS-aA-O6g" id="x1z-P6-yif"/>
+                <outlet property="playbackSpeedButton" destination="183" id="348-qM-uYE"/>
+                <outlet property="playbackSpeedButtonLandscape" destination="WXm-go-jev" id="TbP-eA-CzG"/>
                 <outlet property="playbackSpeedIndicator" destination="185" id="197"/>
                 <outlet property="playbackSpeedIndicator" destination="185" id="197"/>
                 <outlet property="playbackSpeedLabel" destination="167" id="198"/>
                 <outlet property="playbackSpeedLabel" destination="167" id="198"/>
                 <outlet property="playbackSpeedSlider" destination="168" id="196"/>
                 <outlet property="playbackSpeedSlider" destination="168" id="196"/>
@@ -39,6 +44,7 @@
                 <outlet property="playingExternallyView" destination="108" id="112"/>
                 <outlet property="playingExternallyView" destination="108" id="112"/>
                 <outlet property="positionSlider" destination="262" id="269"/>
                 <outlet property="positionSlider" destination="262" id="269"/>
                 <outlet property="repeatButton" destination="3Pu-h2-L0m" id="1LA-O2-2ry"/>
                 <outlet property="repeatButton" destination="3Pu-h2-L0m" id="1LA-O2-2ry"/>
+                <outlet property="repeatButtonLandscape" destination="lib-Hc-4qn" id="LIo-2m-jdb"/>
                 <outlet property="resetVideoFilterButton" destination="162" id="163"/>
                 <outlet property="resetVideoFilterButton" destination="162" id="163"/>
                 <outlet property="saturationLabel" destination="136" id="155"/>
                 <outlet property="saturationLabel" destination="136" id="155"/>
                 <outlet property="saturationSlider" destination="135" id="152"/>
                 <outlet property="saturationSlider" destination="135" id="152"/>
@@ -46,19 +52,22 @@
                 <outlet property="scrubIndicatorView" destination="241" id="247"/>
                 <outlet property="scrubIndicatorView" destination="241" id="247"/>
                 <outlet property="statusLabel" destination="210" id="211"/>
                 <outlet property="statusLabel" destination="210" id="211"/>
                 <outlet property="subtitleContainer" destination="umS-fw-84Z" id="cbT-b6-hSn"/>
                 <outlet property="subtitleContainer" destination="umS-fw-84Z" id="cbT-b6-hSn"/>
+                <outlet property="subtitleContainerLandscape" destination="cvq-YB-u9T" id="Qgb-5z-1Ij"/>
                 <outlet property="subtitleSwitcherButton" destination="74" id="103"/>
                 <outlet property="subtitleSwitcherButton" destination="74" id="103"/>
+                <outlet property="subtitleSwitcherButtonLandscape" destination="R1Z-5y-cee" id="4TF-nd-xx3"/>
                 <outlet property="timeDisplay" destination="276" id="277"/>
                 <outlet property="timeDisplay" destination="276" id="277"/>
                 <outlet property="toolbar" destination="250" id="272"/>
                 <outlet property="toolbar" destination="250" id="272"/>
                 <outlet property="trackNameLabel" destination="282" id="284"/>
                 <outlet property="trackNameLabel" destination="282" id="284"/>
                 <outlet property="videoFilterButton" destination="159" id="160"/>
                 <outlet property="videoFilterButton" destination="159" id="160"/>
+                <outlet property="videoFilterButtonLandscape" destination="v7P-Wn-QnX" id="fMG-Mv-Poa"/>
                 <outlet property="videoFilterView" destination="117" id="147"/>
                 <outlet property="videoFilterView" destination="117" id="147"/>
-                <outlet property="videoeffectsContainer" destination="iBJ-hE-7St" id="UXV-rn-I8w"/>
                 <outlet property="view" destination="1" id="105"/>
                 <outlet property="view" destination="1" id="105"/>
                 <outlet property="volumeView" destination="230" id="275"/>
                 <outlet property="volumeView" destination="230" id="275"/>
+                <outlet property="volumeViewLandscape" destination="SX3-Kb-W8g" id="aoW-X9-hE3"/>
             </connections>
             </connections>
         </placeholder>
         </placeholder>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
-        <view contentMode="scaleToFill" id="260" userLabel="Time view" customClass="VLCFrostedGlasView">
+        <view contentMode="scaleToFill" id="260" userLabel="Time view">
             <rect key="frame" x="0.0" y="0.0" width="300" height="40"/>
             <rect key="frame" x="0.0" y="0.0" width="300" height="40"/>
             <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
             <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
             <subviews>
             <subviews>
@@ -431,7 +440,7 @@
                             </connections>
                             </connections>
                         </button>
                         </button>
                         <view contentMode="scaleToFill" id="230" customClass="MPVolumeView">
                         <view contentMode="scaleToFill" id="230" customClass="MPVolumeView">
-                            <rect key="frame" x="60" y="61" width="244" height="22"/>
+                            <rect key="frame" x="78" y="63" width="226" height="22"/>
                             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
                             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         </view>
                         </view>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="3Pu-h2-L0m">
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="3Pu-h2-L0m">
@@ -523,6 +532,177 @@
             <rect key="frame" x="0.0" y="0.0" width="240" height="128"/>
             <rect key="frame" x="0.0" y="0.0" width="240" height="128"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
         </imageView>
         </imageView>
+        <view tag="1" contentMode="scaleToFill" id="e7l-vK-ape" userLabel="Controls panel" customClass="VLCFrostedGlasView">
+            <rect key="frame" x="0.0" y="0.0" width="480" height="50"/>
+            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <view contentMode="scaleToFill" id="beR-yq-gJK">
+                    <rect key="frame" x="343" y="5" width="40" height="40"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                    <subviews>
+                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="arrows.png" id="F9h-Mh-EMv" userLabel="arrows">
+                            <rect key="frame" x="0.0" y="15" width="5" height="9"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        </imageView>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="WXm-go-jev">
+                            <rect key="frame" x="7" y="0.0" width="32" height="40"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                            <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
+                            <state key="normal" image="speedIcon.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="videoDimensionAction:" destination="-1" eventType="touchUpInside" id="3KP-jS-fEF"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                </view>
+                <view contentMode="scaleToFill" id="hwg-8s-Ztc">
+                    <rect key="frame" x="433" y="5" width="40" height="40"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                    <subviews>
+                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="arrows.png" id="qin-4J-8lD" userLabel="arrows">
+                            <rect key="frame" x="0.0" y="15" width="5" height="9"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        </imageView>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="v7P-Wn-QnX">
+                            <rect key="frame" x="7" y="0.0" width="32" height="40"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                            <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
+                            <state key="normal" image="videoEffectsIcon.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="videoFilterToggle:" destination="-1" eventType="touchUpInside" id="Hsi-PA-QI7"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                </view>
+                <view contentMode="scaleToFill" id="cvq-YB-u9T">
+                    <rect key="frame" x="388" y="5" width="40" height="40"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                    <subviews>
+                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="arrows.png" id="ftV-xL-h7f" userLabel="arrows">
+                            <rect key="frame" x="0.0" y="15" width="5" height="9"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        </imageView>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="R1Z-5y-cee">
+                            <rect key="frame" x="7" y="0.0" width="28" height="40"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                            <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
+                            <state key="normal" image="subtitleIcon.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="switchSubtitleTrack:" destination="-1" eventType="touchUpInside" id="BsU-q4-2dQ"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                </view>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="jl2-cB-KOM">
+                    <rect key="frame" x="269" y="5" width="32" height="40"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                    <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
+                    <state key="normal" image="forwardIcon.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="forward:" destination="-1" eventType="touchUpInside" id="h5v-TT-Axc"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="pQj-0t-OnU">
+                    <rect key="frame" x="179" y="5" width="32" height="40"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                    <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
+                    <state key="normal" image="backIcon.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="backward:" destination="-1" eventType="touchUpInside" id="ngu-7R-uHn"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="nxS-aA-O6g">
+                    <rect key="frame" x="226" y="5" width="28" height="40"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                    <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
+                    <state key="normal" image="playIcon.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="playPause" destination="-2" eventType="touchUpInside" id="ajc-gW-8UA"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="awR-Dt-S0B">
+                    <rect key="frame" x="142" y="5" width="32" height="40"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
+                    <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
+                    <state key="normal" image="audioTrackIcon.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="switchAudioTrack:" destination="-1" eventType="touchUpInside" id="EYA-AC-aby"/>
+                    </connections>
+                </button>
+                <view contentMode="scaleToFill" id="SX3-Kb-W8g" customClass="MPVolumeView">
+                    <rect key="frame" x="20" y="16" width="117" height="22"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                </view>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="lib-Hc-4qn">
+                    <rect key="frame" x="306" y="5" width="32" height="40"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="18"/>
+                    <state key="normal" image="repeat.png">
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="toggleRepeatMode:" destination="-1" eventType="touchUpInside" id="1XB-hZ-pNx"/>
+                    </connections>
+                </button>
+            </subviews>
+        </view>
     </objects>
     </objects>
     <resources>
     <resources>
         <image name="PlayingExternally.png" width="122" height="91"/>
         <image name="PlayingExternally.png" width="122" height="91"/>
@@ -531,7 +711,7 @@
         <image name="backIcon.png" width="32" height="16"/>
         <image name="backIcon.png" width="32" height="16"/>
         <image name="forwardIcon.png" width="32" height="16"/>
         <image name="forwardIcon.png" width="32" height="16"/>
         <image name="playIcon.png" width="19" height="17"/>
         <image name="playIcon.png" width="19" height="17"/>
-        <image name="playbackControllerBg.png" width="352" height="90"/>
+        <image name="playbackControllerBg.png" width="3" height="90"/>
         <image name="ratioIcon.png" width="23" height="18"/>
         <image name="ratioIcon.png" width="23" height="18"/>
         <image name="repeat.png" width="23" height="18"/>
         <image name="repeat.png" width="23" height="18"/>
         <image name="resetIcon.png" width="24" height="30"/>
         <image name="resetIcon.png" width="24" height="30"/>

+ 11 - 2
Sources/VLCMovieViewController.h

@@ -26,18 +26,25 @@
 @property (nonatomic, strong) IBOutlet OBSlider *positionSlider;
 @property (nonatomic, strong) IBOutlet OBSlider *positionSlider;
 @property (nonatomic, strong) IBOutlet UIButton *timeDisplay;
 @property (nonatomic, strong) IBOutlet UIButton *timeDisplay;
 @property (nonatomic, strong) IBOutlet UIButton *playPauseButton;
 @property (nonatomic, strong) IBOutlet UIButton *playPauseButton;
+@property (nonatomic, strong) IBOutlet UIButton *playPauseButtonLandscape;
 @property (nonatomic, strong) IBOutlet UIButton *bwdButton;
 @property (nonatomic, strong) IBOutlet UIButton *bwdButton;
+@property (nonatomic, strong) IBOutlet UIButton *bwdButtonLandscape;
 @property (nonatomic, strong) IBOutlet UIButton *fwdButton;
 @property (nonatomic, strong) IBOutlet UIButton *fwdButton;
+@property (nonatomic, strong) IBOutlet UIButton *fwdButtonLandscape;
 @property (nonatomic, strong) IBOutlet UIView *subtitleContainer;
 @property (nonatomic, strong) IBOutlet UIView *subtitleContainer;
-@property (nonatomic, strong) IBOutlet UIView *audioSwitcherContainer;
-@property (nonatomic, strong) IBOutlet UIView *videoeffectsContainer;
+@property (nonatomic, strong) IBOutlet UIView *subtitleContainerLandscape;
 @property (nonatomic, strong) IBOutlet UIButton *subtitleSwitcherButton;
 @property (nonatomic, strong) IBOutlet UIButton *subtitleSwitcherButton;
+@property (nonatomic, strong) IBOutlet UIButton *subtitleSwitcherButtonLandscape;
 @property (nonatomic, strong) IBOutlet UIButton *audioSwitcherButton;
 @property (nonatomic, strong) IBOutlet UIButton *audioSwitcherButton;
+@property (nonatomic, strong) IBOutlet UIButton *audioSwitcherButtonLandscape;
 @property (nonatomic, strong) IBOutlet UIButton *repeatButton;
 @property (nonatomic, strong) IBOutlet UIButton *repeatButton;
+@property (nonatomic, strong) IBOutlet UIButton *repeatButtonLandscape;
 @property (nonatomic, strong) IBOutlet UINavigationBar *toolbar;
 @property (nonatomic, strong) IBOutlet UINavigationBar *toolbar;
 @property (nonatomic, strong) IBOutlet VLCFrostedGlasView *controllerPanel;
 @property (nonatomic, strong) IBOutlet VLCFrostedGlasView *controllerPanel;
+@property (nonatomic, strong) IBOutlet VLCFrostedGlasView *controllerPanelLandscape;
 @property (nonatomic, strong) IBOutlet VLCStatusLabel *statusLabel;
 @property (nonatomic, strong) IBOutlet VLCStatusLabel *statusLabel;
 @property (nonatomic, strong) IBOutlet MPVolumeView *volumeView;
 @property (nonatomic, strong) IBOutlet MPVolumeView *volumeView;
+@property (nonatomic, strong) IBOutlet MPVolumeView *volumeViewLandscape;
 
 
 @property (nonatomic, strong) IBOutlet UIView *playingExternallyView;
 @property (nonatomic, strong) IBOutlet UIView *playingExternallyView;
 @property (nonatomic, strong) IBOutlet UILabel *playingExternallyTitle;
 @property (nonatomic, strong) IBOutlet UILabel *playingExternallyTitle;
@@ -45,6 +52,7 @@
 
 
 @property (nonatomic, strong) IBOutlet VLCFrostedGlasView *videoFilterView;
 @property (nonatomic, strong) IBOutlet VLCFrostedGlasView *videoFilterView;
 @property (nonatomic, strong) IBOutlet UIButton *videoFilterButton;
 @property (nonatomic, strong) IBOutlet UIButton *videoFilterButton;
+@property (nonatomic, strong) IBOutlet UIButton *videoFilterButtonLandscape;
 @property (nonatomic, strong) IBOutlet UILabel *hueLabel;
 @property (nonatomic, strong) IBOutlet UILabel *hueLabel;
 @property (nonatomic, strong) IBOutlet UISlider *hueSlider;
 @property (nonatomic, strong) IBOutlet UISlider *hueSlider;
 @property (nonatomic, strong) IBOutlet UILabel *contrastLabel;
 @property (nonatomic, strong) IBOutlet UILabel *contrastLabel;
@@ -59,6 +67,7 @@
 
 
 @property (nonatomic, strong) IBOutlet VLCFrostedGlasView *playbackSpeedView;
 @property (nonatomic, strong) IBOutlet VLCFrostedGlasView *playbackSpeedView;
 @property (nonatomic, strong) IBOutlet UIButton *playbackSpeedButton;
 @property (nonatomic, strong) IBOutlet UIButton *playbackSpeedButton;
+@property (nonatomic, strong) IBOutlet UIButton *playbackSpeedButtonLandscape;
 @property (nonatomic, strong) IBOutlet UISlider *playbackSpeedSlider;
 @property (nonatomic, strong) IBOutlet UISlider *playbackSpeedSlider;
 @property (nonatomic, strong) IBOutlet UILabel *playbackSpeedLabel;
 @property (nonatomic, strong) IBOutlet UILabel *playbackSpeedLabel;
 @property (nonatomic, strong) IBOutlet UILabel *playbackSpeedIndicator;
 @property (nonatomic, strong) IBOutlet UILabel *playbackSpeedIndicator;

+ 66 - 38
Sources/VLCMovieViewController.m

@@ -155,22 +155,36 @@
 
 
     _audioSwitcherButton.accessibilityLabel = NSLocalizedString(@"CHOOSE_AUDIO_TRACK", @"");
     _audioSwitcherButton.accessibilityLabel = NSLocalizedString(@"CHOOSE_AUDIO_TRACK", @"");
     _audioSwitcherButton.isAccessibilityElement = YES;
     _audioSwitcherButton.isAccessibilityElement = YES;
+    _audioSwitcherButtonLandscape.accessibilityLabel = NSLocalizedString(@"CHOOSE_AUDIO_TRACK", @"");
+    _audioSwitcherButtonLandscape.isAccessibilityElement = YES;
     _subtitleSwitcherButton.accessibilityLabel = NSLocalizedString(@"CHOOSE_SUBTITLE_TRACK", @"");
     _subtitleSwitcherButton.accessibilityLabel = NSLocalizedString(@"CHOOSE_SUBTITLE_TRACK", @"");
     _subtitleSwitcherButton.isAccessibilityElement = YES;
     _subtitleSwitcherButton.isAccessibilityElement = YES;
+    _subtitleSwitcherButtonLandscape.accessibilityLabel = NSLocalizedString(@"CHOOSE_SUBTITLE_TRACK", @"");
+    _subtitleSwitcherButtonLandscape.isAccessibilityElement = YES;
     _playbackSpeedButton.accessibilityLabel = _playbackSpeedLabel.text;
     _playbackSpeedButton.accessibilityLabel = _playbackSpeedLabel.text;
     _playbackSpeedButton.isAccessibilityElement = YES;
     _playbackSpeedButton.isAccessibilityElement = YES;
+    _playbackSpeedButtonLandscape.accessibilityLabel = _playbackSpeedLabel.text;
+    _playbackSpeedButtonLandscape.isAccessibilityElement = YES;
     _videoFilterButton.accessibilityLabel = NSLocalizedString(@"VIDEO_FILTER", @"");
     _videoFilterButton.accessibilityLabel = NSLocalizedString(@"VIDEO_FILTER", @"");
     _videoFilterButton.isAccessibilityElement = YES;
     _videoFilterButton.isAccessibilityElement = YES;
+    _videoFilterButtonLandscape.accessibilityLabel = NSLocalizedString(@"VIDEO_FILTER", @"");
+    _videoFilterButtonLandscape.isAccessibilityElement = YES;
     _resetVideoFilterButton.accessibilityLabel = NSLocalizedString(@"VIDEO_FILTER_RESET_BUTTON", @"");
     _resetVideoFilterButton.accessibilityLabel = NSLocalizedString(@"VIDEO_FILTER_RESET_BUTTON", @"");
     _resetVideoFilterButton.isAccessibilityElement = YES;
     _resetVideoFilterButton.isAccessibilityElement = YES;
     _aspectRatioButton.accessibilityLabel = NSLocalizedString(@"VIDEO_ASPECT_RATIO_BUTTON", @"");
     _aspectRatioButton.accessibilityLabel = NSLocalizedString(@"VIDEO_ASPECT_RATIO_BUTTON", @"");
     _aspectRatioButton.isAccessibilityElement = YES;
     _aspectRatioButton.isAccessibilityElement = YES;
     _playPauseButton.accessibilityLabel = NSLocalizedString(@"PLAY_PAUSE_BUTTON", @"");
     _playPauseButton.accessibilityLabel = NSLocalizedString(@"PLAY_PAUSE_BUTTON", @"");
     _playPauseButton.isAccessibilityElement = YES;
     _playPauseButton.isAccessibilityElement = YES;
+    _playPauseButtonLandscape.accessibilityLabel = NSLocalizedString(@"PLAY_PAUSE_BUTTON", @"");
+    _playPauseButtonLandscape.isAccessibilityElement = YES;
     _bwdButton.accessibilityLabel = NSLocalizedString(@"BWD_BUTTON", @"");
     _bwdButton.accessibilityLabel = NSLocalizedString(@"BWD_BUTTON", @"");
     _bwdButton.isAccessibilityElement = YES;
     _bwdButton.isAccessibilityElement = YES;
+    _bwdButtonLandscape.accessibilityLabel = NSLocalizedString(@"BWD_BUTTON", @"");
+    _bwdButtonLandscape.isAccessibilityElement = YES;
     _fwdButton.accessibilityLabel = NSLocalizedString(@"FWD_BUTTON", @"");
     _fwdButton.accessibilityLabel = NSLocalizedString(@"FWD_BUTTON", @"");
     _fwdButton.isAccessibilityElement = YES;
     _fwdButton.isAccessibilityElement = YES;
+    _fwdButtonLandscape.accessibilityLabel = NSLocalizedString(@"FWD_BUTTON", @"");
+    _fwdButtonLandscape.isAccessibilityElement = YES;
 
 
     _scrubHelpLabel.text = NSLocalizedString(@"PLAYBACK_SCRUB_HELP", @"");
     _scrubHelpLabel.text = NSLocalizedString(@"PLAYBACK_SCRUB_HELP", @"");
 
 
@@ -271,22 +285,27 @@
 
 
     /* FIXME: there is a saner iOS 6+ API for this! */
     /* FIXME: there is a saner iOS 6+ API for this! */
     /* this looks a bit weird, but we need to support iOS 5 and should show the same appearance */
     /* this looks a bit weird, but we need to support iOS 5 and should show the same appearance */
-    UISlider *volumeSlider = nil;
-    for (id aView in self.volumeView.subviews){
-        if ([[[aView class] description] isEqualToString:@"MPVolumeSlider"]){
-            volumeSlider = (UISlider *)aView;
-            break;
+    void (^initVolumeSlider)(MPVolumeView *) = ^(MPVolumeView *volumeView){
+        UISlider *volumeSlider = nil;
+        for (id aView in volumeView.subviews){
+            if ([[[aView class] description] isEqualToString:@"MPVolumeSlider"]){
+                volumeSlider = (UISlider *)aView;
+                break;
+            }
         }
         }
-    }
-    if (!SYSTEM_RUNS_IOS7_OR_LATER) {
-        [volumeSlider setMinimumTrackImage:[[UIImage imageNamed:@"sliderminiValue"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 0)] forState:UIControlStateNormal];
-        [volumeSlider setMaximumTrackImage:[[UIImage imageNamed:@"slidermaxValue"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 4)] forState:UIControlStateNormal];
-        [volumeSlider setThumbImage:[UIImage imageNamed:@"volumeballslider"] forState:UIControlStateNormal];
-    } else
-        [self.volumeView setVolumeThumbImage:[UIImage imageNamed:@"modernSliderKnob"] forState:UIControlStateNormal];
-    [volumeSlider addTarget:self
-                     action:@selector(volumeSliderAction:)
-           forControlEvents:UIControlEventValueChanged];
+        if (!SYSTEM_RUNS_IOS7_OR_LATER) {
+            [volumeSlider setMinimumTrackImage:[[UIImage imageNamed:@"sliderminiValue"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 0)] forState:UIControlStateNormal];
+            [volumeSlider setMaximumTrackImage:[[UIImage imageNamed:@"slidermaxValue"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 4)] forState:UIControlStateNormal];
+            [volumeSlider setThumbImage:[UIImage imageNamed:@"volumeballslider"] forState:UIControlStateNormal];
+        } else
+            [volumeView setVolumeThumbImage:[UIImage imageNamed:@"modernSliderKnob"] forState:UIControlStateNormal];
+        [volumeSlider addTarget:self
+                         action:@selector(volumeSliderAction:)
+               forControlEvents:UIControlEventValueChanged];
+    };
+
+    initVolumeSlider(self.volumeView);
+    initVolumeSlider(self.volumeViewLandscape);
 
 
     [[AVAudioSession sharedInstance] setDelegate:self];
     [[AVAudioSession sharedInstance] setDelegate:self];
 
 
@@ -344,17 +363,13 @@
     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
         CGSize viewSize = self.view.frame.size;
         CGSize viewSize = self.view.frame.size;
         if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
         if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
-            CGFloat rightSpace = _videoeffectsContainer.frame.origin.x - CGRectGetMaxX(_fwdButton.frame);
-            CGFloat gapSize = (rightSpace - _repeatButton.frame.size.width - _audioSwitcherContainer.frame.size.width) / 3.0;
-            [_controllerPanel setFrame:CGRectMake(0, viewSize.height - 55, viewSize.width, 55)];
-            [_volumeView setFrame:CGRectMake(gapSize, 22, _bwdButton.frame.origin.x - 2 * gapSize, 22)];
-            [_audioSwitcherContainer setFrame:CGRectMake(CGRectGetMaxX(_fwdButton.frame) + gapSize, 14, 40, 40)];
-            [_repeatButton setFrame:CGRectMake(CGRectGetMaxX(_audioSwitcherContainer.frame) + gapSize, 16, 32, 35)];
+            [_controllerPanel removeFromSuperview];
+            _controllerPanelLandscape.frame = (CGRect){CGPointMake(0, viewSize.height - _controllerPanelLandscape.frame.size.height), CGSizeMake(viewSize.width, _controllerPanelLandscape.frame.size.height)};
+            [self.view addSubview:_controllerPanelLandscape];
         } else {
         } else {
-            [_controllerPanel setFrame:CGRectMake(0, viewSize.height - 90, viewSize.width, 90)];
-            [_volumeView setFrame:CGRectMake(60, 61, 244, 22)];
-            [_repeatButton setFrame:CGRectMake(18, 54, 32, 35)];
-            [_audioSwitcherContainer setFrame:CGRectMake(20, 14, 40, 40)];
+            [_controllerPanelLandscape removeFromSuperview];
+            _controllerPanel.frame = (CGRect){CGPointMake(0, viewSize.height - _controllerPanel.frame.size.height), CGSizeMake(viewSize.width, _controllerPanel.frame.size.height)};
+            [self.view addSubview:_controllerPanel];
         }
         }
     }
     }
 }
 }
@@ -443,6 +458,7 @@
     [self.timeDisplay setTitle:@"" forState:UIControlStateNormal];
     [self.timeDisplay setTitle:@"" forState:UIControlStateNormal];
     self.timeDisplay.accessibilityLabel = @"";
     self.timeDisplay.accessibilityLabel = @"";
     [self.repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
     [self.repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
+    [self.repeatButtonLandscape setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
 
 
     if (![self _isMediaSuitableForDevice]) {
     if (![self _isMediaSuitableForDevice]) {
         UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"DEVICE_TOOSLOW_TITLE", @"") message:[NSString stringWithFormat:NSLocalizedString(@"DEVICE_TOOSLOW", @""), [[UIDevice currentDevice] model], self.mediaItem.title] delegate:self cancelButtonTitle:NSLocalizedString(@"BUTTON_CANCEL", @"") otherButtonTitles:NSLocalizedString(@"BUTTON_OPEN", @""), nil];
         UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"DEVICE_TOOSLOW_TITLE", @"") message:[NSString stringWithFormat:NSLocalizedString(@"DEVICE_TOOSLOW", @""), [[UIDevice currentDevice] model], self.mediaItem.title] delegate:self cancelButtonTitle:NSLocalizedString(@"BUTTON_CANCEL", @"") otherButtonTitles:NSLocalizedString(@"BUTTON_OPEN", @""), nil];
@@ -683,6 +699,8 @@
     if (!_controlsHidden) {
     if (!_controlsHidden) {
         _controllerPanel.alpha = 0.0f;
         _controllerPanel.alpha = 0.0f;
         _controllerPanel.hidden = !_videoFiltersHidden;
         _controllerPanel.hidden = !_videoFiltersHidden;
+        _controllerPanelLandscape.alpha = 0.0f;
+        _controllerPanelLandscape.hidden = !_videoFiltersHidden;
         _toolbar.alpha = 0.0f;
         _toolbar.alpha = 0.0f;
         _toolbar.hidden = NO;
         _toolbar.hidden = NO;
         _videoFilterView.alpha = 0.0f;
         _videoFilterView.alpha = 0.0f;
@@ -693,16 +711,15 @@
 
 
     void (^animationBlock)() = ^() {
     void (^animationBlock)() = ^() {
         _controllerPanel.alpha = alpha;
         _controllerPanel.alpha = alpha;
+        _controllerPanelLandscape.alpha = alpha;
         _toolbar.alpha = alpha;
         _toolbar.alpha = alpha;
         _videoFilterView.alpha = alpha;
         _videoFilterView.alpha = alpha;
         _playbackSpeedView.alpha = alpha;
         _playbackSpeedView.alpha = alpha;
     };
     };
 
 
     void (^completionBlock)(BOOL finished) = ^(BOOL finished) {
     void (^completionBlock)(BOOL finished) = ^(BOOL finished) {
-        if (_videoFiltersHidden)
-            _controllerPanel.hidden = _controlsHidden;
-        else
-            _controllerPanel.hidden = NO;
+        _controllerPanel.hidden = _videoFiltersHidden ? _controlsHidden : NO;
+        _controllerPanelLandscape.hidden = _videoFiltersHidden ? _controlsHidden : NO;
         _toolbar.hidden = _controlsHidden;
         _toolbar.hidden = _controlsHidden;
         _videoFilterView.hidden = _videoFiltersHidden;
         _videoFilterView.hidden = _videoFiltersHidden;
         _playbackSpeedView.hidden = _playbackSpeedViewHidden;
         _playbackSpeedView.hidden = _playbackSpeedViewHidden;
@@ -714,7 +731,7 @@
     [[UIApplication sharedApplication] setStatusBarHidden:_viewAppeared ? _controlsHidden : NO withAnimation:animationType];
     [[UIApplication sharedApplication] setStatusBarHidden:_viewAppeared ? _controlsHidden : NO withAnimation:animationType];
     [UIView animateWithDuration:animationDuration animations:animationBlock completion:completionBlock];
     [UIView animateWithDuration:animationDuration animations:animationBlock completion:completionBlock];
 
 
-    _volumeView.hidden = _controllerPanel.hidden;
+    _volumeView.hidden = _volumeViewLandscape.hidden = _controllerPanel.hidden;
 }
 }
 
 
 - (void)toggleControlsVisible
 - (void)toggleControlsVisible
@@ -861,16 +878,23 @@
 
 
     UIImage *playPauseImage = [_mediaPlayer isPlaying]? [UIImage imageNamed:@"pauseIcon"] : [UIImage imageNamed:@"playIcon"];
     UIImage *playPauseImage = [_mediaPlayer isPlaying]? [UIImage imageNamed:@"pauseIcon"] : [UIImage imageNamed:@"playIcon"];
     [_playPauseButton setImage:playPauseImage forState:UIControlStateNormal];
     [_playPauseButton setImage:playPauseImage forState:UIControlStateNormal];
+    [_playPauseButtonLandscape setImage:playPauseImage forState:UIControlStateNormal];
 
 
-    if ([[_mediaPlayer audioTrackIndexes] count] > 2)
+    if ([[_mediaPlayer audioTrackIndexes] count] > 2) {
         self.audioSwitcherButton.hidden = NO;
         self.audioSwitcherButton.hidden = NO;
-    else
+        self.audioSwitcherButtonLandscape.hidden = NO;
+    } else {
         self.audioSwitcherButton.hidden = YES;
         self.audioSwitcherButton.hidden = YES;
+        self.audioSwitcherButtonLandscape.hidden = YES;
+    }
 
 
-    if ([[_mediaPlayer videoSubTitlesIndexes] count] > 1)
+    if ([[_mediaPlayer videoSubTitlesIndexes] count] > 1) {
         self.subtitleContainer.hidden = NO;
         self.subtitleContainer.hidden = NO;
-    else
+        self.subtitleContainerLandscape.hidden = NO;
+    } else {
         self.subtitleContainer.hidden = YES;
         self.subtitleContainer.hidden = YES;
+        self.subtitleContainerLandscape.hidden = YES;
+    }
 }
 }
 
 
 - (IBAction)playPause
 - (IBAction)playPause
@@ -902,9 +926,11 @@
     if (_listPlayer.repeatMode == VLCDoNotRepeat) {
     if (_listPlayer.repeatMode == VLCDoNotRepeat) {
         _listPlayer.repeatMode = VLCRepeatCurrentItem;
         _listPlayer.repeatMode = VLCRepeatCurrentItem;
         [self.repeatButton setImage:[UIImage imageNamed:@"repeatOne"] forState:UIControlStateNormal];
         [self.repeatButton setImage:[UIImage imageNamed:@"repeatOne"] forState:UIControlStateNormal];
+        [self.repeatButtonLandscape setImage:[UIImage imageNamed:@"repeatOne"] forState:UIControlStateNormal];
     } else {
     } else {
         _listPlayer.repeatMode = VLCDoNotRepeat;
         _listPlayer.repeatMode = VLCDoNotRepeat;
         [self.repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
         [self.repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
+        [self.repeatButtonLandscape setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
     }
     }
 }
 }
 
 
@@ -923,7 +949,7 @@
 
 
     [_audiotrackActionSheet addButtonWithTitle:NSLocalizedString(@"BUTTON_CANCEL", @"cancel button")];
     [_audiotrackActionSheet addButtonWithTitle:NSLocalizedString(@"BUTTON_CANCEL", @"cancel button")];
     [_audiotrackActionSheet setCancelButtonIndex:[_audiotrackActionSheet numberOfButtons] - 1];
     [_audiotrackActionSheet setCancelButtonIndex:[_audiotrackActionSheet numberOfButtons] - 1];
-    [_audiotrackActionSheet showInView:self.audioSwitcherButton];
+    [_audiotrackActionSheet showInView:(UIButton *)sender];
 }
 }
 
 
 - (IBAction)switchSubtitleTrack:(id)sender
 - (IBAction)switchSubtitleTrack:(id)sender
@@ -944,7 +970,7 @@
 
 
     [_subtitleActionSheet addButtonWithTitle:NSLocalizedString(@"BUTTON_CANCEL", @"cancel button")];
     [_subtitleActionSheet addButtonWithTitle:NSLocalizedString(@"BUTTON_CANCEL", @"cancel button")];
     [_subtitleActionSheet setCancelButtonIndex:[_subtitleActionSheet numberOfButtons] - 1];
     [_subtitleActionSheet setCancelButtonIndex:[_subtitleActionSheet numberOfButtons] - 1];
-    [_subtitleActionSheet showInView: self.subtitleSwitcherButton];
+    [_subtitleActionSheet showInView:(UIButton *)sender];
 }
 }
 
 
 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
@@ -1092,8 +1118,10 @@
         self.playbackSpeedView.hidden = _playbackSpeedViewHidden = YES;
         self.playbackSpeedView.hidden = _playbackSpeedViewHidden = YES;
 
 
     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
-        if (!_controlsHidden)
+        if (!_controlsHidden) {
             self.controllerPanel.hidden = _controlsHidden = YES;
             self.controllerPanel.hidden = _controlsHidden = YES;
+            self.controllerPanelLandscape.hidden = YES;
+        }
     }
     }
 
 
     self.videoFilterView.hidden = !_videoFiltersHidden;
     self.videoFilterView.hidden = !_videoFiltersHidden;
@@ -1167,7 +1195,7 @@
 
 
 - (IBAction)videoDimensionAction:(id)sender
 - (IBAction)videoDimensionAction:(id)sender
 {
 {
-    if (sender == self.playbackSpeedButton) {
+    if (sender == self.playbackSpeedButton || sender == self.playbackSpeedButtonLandscape) {
         if (!_videoFiltersHidden)
         if (!_videoFiltersHidden)
             self.videoFilterView.hidden = _videoFiltersHidden = YES;
             self.videoFilterView.hidden = _videoFiltersHidden = YES;