Pārlūkot izejas kodu

playback: implement pseudo-menu for secondary actions (closes #14028, #14030)

Felix Paul Kühne 10 gadi atpakaļ
vecāks
revīzija
8a75aae2ba

+ 16 - 46
Resources/VLCMovieViewController~ipad.xib

@@ -19,18 +19,16 @@
                 <outlet property="brightnessLabel" destination="148" id="165"/>
                 <outlet property="brightnessSlider" destination="147" id="163"/>
                 <outlet property="bwdButton" destination="276" id="284"/>
-                <outlet property="chapterButton" destination="D3O-Bo-TYi" id="o5p-gI-ydF"/>
                 <outlet property="contrastLabel" destination="146" id="160"/>
                 <outlet property="contrastSlider" destination="145" id="161"/>
                 <outlet property="controllerPanel" destination="272" id="298"/>
                 <outlet property="currentScrubSpeedLabel" destination="244" id="246"/>
-                <outlet property="equalizerButton" destination="iAS-0C-clq" id="hu9-uh-EsK"/>
                 <outlet property="fwdButton" destination="274" id="286"/>
                 <outlet property="gammaLabel" destination="152" id="171"/>
                 <outlet property="gammaSlider" destination="151" id="169"/>
                 <outlet property="hueLabel" destination="143" id="158"/>
                 <outlet property="hueSlider" destination="144" id="157"/>
-                <outlet property="lockButton" destination="o2q-eo-cnU" id="08s-Qv-duE"/>
+                <outlet property="moreActionsButton" destination="o2v-AM-dqM" id="IzQ-ac-6DG"/>
                 <outlet property="movieView" destination="121" id="122"/>
                 <outlet property="playPauseButton" destination="275" id="282"/>
                 <outlet property="playbackSpeedButton" destination="278" id="295"/>
@@ -42,7 +40,6 @@
                 <outlet property="playingExternallyTitle" destination="125" id="133"/>
                 <outlet property="playingExternallyView" destination="123" id="131"/>
                 <outlet property="positionSlider" destination="249" id="261"/>
-                <outlet property="repeatButton" destination="96c-QK-bZI" id="SPv-gB-C2a"/>
                 <outlet property="resetVideoFilterButton" destination="142" id="175"/>
                 <outlet property="saturationLabel" destination="150" id="166"/>
                 <outlet property="saturationSlider" destination="149" id="168"/>
@@ -314,7 +311,7 @@
                     <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
                     <subviews>
                         <view contentMode="scaleToFill" id="k3r-6B-CmK" userLabel="audioSwitcherContainer">
-                            <rect key="frame" x="258" y="5" width="50" height="40"/>
+                            <rect key="frame" x="241" y="5" width="50" height="40"/>
                             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
                             <subviews>
                                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="278">
@@ -337,7 +334,7 @@
                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
                         </view>
                         <view contentMode="scaleToFill" id="OCK-fG-mgo" userLabel="videoEffectsContainer">
-                            <rect key="frame" x="599" y="5" width="50" height="40"/>
+                            <rect key="frame" x="617" y="5" width="50" height="40"/>
                             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
                             <subviews>
                                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="279">
@@ -360,7 +357,7 @@
                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
                         </view>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="277">
-                            <rect key="frame" x="493" y="5" width="32" height="40"/>
+                            <rect key="frame" x="535" 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"/>
@@ -431,48 +428,21 @@
                                 <action selector="playPause" destination="-1" eventType="touchUpInside" id="283"/>
                             </connections>
                         </button>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="96c-QK-bZI">
-                            <rect key="frame" x="217" y="5" width="32" height="40"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="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="UWl-MQ-MX7"/>
-                            </connections>
-                        </button>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="o2q-eo-cnU">
-                            <rect key="frame" x="541" y="5" width="32" height="40"/>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="o2v-AM-dqM">
+                            <rect key="frame" x="727" 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="22"/>
-                            <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
-                            <state key="normal" title="L"/>
-                            <connections>
-                                <action selector="lock:" destination="-1" eventType="touchUpInside" id="QFm-Re-ySf"/>
-                            </connections>
-                        </button>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="D3O-Bo-TYi">
-                            <rect key="frame" x="577" y="6" 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="22"/>
-                            <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
-                            <state key="normal" title="C"/>
-                            <connections>
-                                <action selector="switchChapter:" destination="-1" eventType="touchUpInside" id="NHE-kB-Qpz"/>
-                            </connections>
-                        </button>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="iAS-0C-clq">
-                            <rect key="frame" x="657" y="6" 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="22"/>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                             <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
-                            <state key="normal" title="E"/>
+                            <state key="normal" image="More.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="equalizer:" destination="-2" eventType="touchUpInside" id="fpe-ay-cLY"/>
+                                <action selector="moreActions:" destination="-1" eventType="touchUpInside" id="ZhG-d9-vzl"/>
                             </connections>
                         </button>
                     </subviews>
@@ -575,13 +545,13 @@
         </view>
     </objects>
     <resources>
+        <image name="More.png" width="20" height="6"/>
         <image name="PlayingExternally.png" width="261" height="195"/>
         <image name="audioTrackIcon.png" width="19" height="19"/>
         <image name="backIcon.png" width="32" height="16"/>
         <image name="forwardIcon.png" width="32" height="16"/>
         <image name="playIcon.png" width="19" height="17"/>
         <image name="ratioIcon.png" width="15" height="15"/>
-        <image name="repeat.png" width="23" height="18"/>
         <image name="resetIcon.png" width="24" height="30"/>
         <image name="speedIcon.png" width="19" height="19"/>
         <image name="videoEffectsIcon.png" width="21" height="21"/>

+ 199 - 236
Resources/VLCMovieViewController~iphone.xib

@@ -19,21 +19,18 @@
                 <outlet property="brightnessSlider" destination="128" id="232"/>
                 <outlet property="bwdButton" destination="77" id="100"/>
                 <outlet property="bwdButtonLandscape" destination="pQj-0t-OnU" id="U8k-IC-a6H"/>
-                <outlet property="chapterButtonLandscape" destination="aJZ-AB-35L" id="d8c-zI-Ipo"/>
                 <outlet property="contrastLabel" destination="132" id="141"/>
                 <outlet property="contrastSlider" destination="131" id="142"/>
                 <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="equalizerButton" destination="qRr-cf-Zcx" id="wnd-pw-c4Z"/>
                 <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="gammaSlider" destination="137" id="144"/>
                 <outlet property="hueLabel" destination="134" id="234"/>
                 <outlet property="hueSlider" destination="133" id="235"/>
-                <outlet property="lockButton" destination="HmC-O6-R9e" id="e99-JZ-gn6"/>
-                <outlet property="lockButtonLandscape" destination="5Ty-RA-fET" id="UGg-xw-ppA"/>
+                <outlet property="moreActionsButton" destination="w65-Hw-2aP" id="ax2-vA-Ngv"/>
                 <outlet property="movieView" destination="91" id="93"/>
                 <outlet property="playPauseButton" destination="76" id="101"/>
                 <outlet property="playPauseButtonLandscape" destination="nxS-aA-O6g" id="x1z-P6-yif"/>
@@ -47,8 +44,6 @@
                 <outlet property="playingExternallyTitle" destination="110" id="114"/>
                 <outlet property="playingExternallyView" destination="108" id="112"/>
                 <outlet property="positionSlider" destination="262" id="269"/>
-                <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="saturationLabel" destination="136" id="155"/>
                 <outlet property="saturationSlider" destination="135" id="152"/>
@@ -136,34 +131,6 @@
             <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
             <subviews>
-                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" text="Artist Name" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" id="279">
-                    <rect key="frame" x="31" y="267" width="257" height="28"/>
-                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
-                    <fontDescription key="fontDescription" type="system" pointSize="23"/>
-                    <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
-                    <nil key="highlightedColor"/>
-                    <color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
-                </label>
-                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" text="Track Name" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" id="282">
-                    <rect key="frame" x="31" y="435" width="257" height="28"/>
-                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
-                    <fontDescription key="fontDescription" type="system" pointSize="23"/>
-                    <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
-                    <nil key="highlightedColor"/>
-                    <color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
-                </label>
-                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Album Name" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" adjustsLetterSpacingToFitWidth="YES" id="280">
-                    <rect key="frame" x="31" y="336" width="258" height="28"/>
-                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
-                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
-                    <color key="textColor" white="0.71999999999999997" alpha="1" colorSpace="calibratedWhite"/>
-                    <nil key="highlightedColor"/>
-                    <color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
-                </label>
-                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="yK6-Ph-SVE">
-                    <rect key="frame" x="40" y="164" width="240" height="240"/>
-                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
-                </imageView>
                 <view contentMode="scaleToFill" id="91" userLabel="Movie view">
                     <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -171,87 +138,74 @@
                         <bool key="isElement" value="YES"/>
                     </accessibility>
                 </view>
-                <view hidden="YES" contentMode="scaleToFill" id="165" userLabel="Controls panel" customClass="VLCFrostedGlasView">
-                    <rect key="frame" x="0.0" y="314" width="320" height="163"/>
-                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
+                <label hidden="YES" opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Status Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="210" customClass="VLCStatusLabel">
+                    <rect key="frame" x="61" y="273" width="199" height="22"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                    <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                    <color key="shadowColor" cocoaTouchSystemColor="lightTextColor"/>
+                </label>
+                <view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" id="108" userLabel="Playing Externally View">
+                    <rect key="frame" x="0.0" y="135" width="320" height="257"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
                     <subviews>
-                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Audio delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8cb-fw-YeF">
-                            <rect key="frame" x="20" y="7" width="280" height="21"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="SDv-JW-DMi">
-                            <rect key="frame" x="20" y="7" width="280" height="21"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-30" maxValue="30" id="oQe-Uu-1HY" customClass="VLCSlider">
-                            <rect key="frame" x="18" y="20" width="284" height="29"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <connections>
-                                <action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="MaZ-VI-xre"/>
-                            </connections>
-                        </slider>
-                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Subtitles delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="KeW-Xp-9I6">
-                            <rect key="frame" x="20" y="44" width="280" height="21"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="PlayingExternally.png" id="111">
+                            <rect key="frame" x="80" y="20" width="160" height="130"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        </imageView>
+                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="TV Connected" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="110">
+                            <rect key="frame" x="20" y="170" width="280" height="21"/>
+                            <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="19"/>
+                            <color key="textColor" red="0.3803921569" green="0.3803921569" blue="0.3803921569" alpha="1" colorSpace="calibratedRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="IzS-81-KII">
-                            <rect key="frame" x="20" y="44" width="280" height="21"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
-                            <nil key="highlightedColor"/>
+                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="This video is playing on the TV" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="109">
+                            <rect key="frame" x="20" y="199" width="289" height="53"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <color key="textColor" red="0.3803921569" green="0.3803921569" blue="0.3803921569" alpha="1" colorSpace="calibratedRGB"/>
+                            <color key="highlightedColor" red="0.3803921569" green="0.3803921569" blue="0.3803921569" alpha="0.81000000000000005" colorSpace="calibratedRGB"/>
                         </label>
-                        <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-30" maxValue="30" id="JRI-0m-C0M" customClass="VLCSlider">
-                            <rect key="frame" x="18" y="58" width="284" height="29"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <connections>
-                                <action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="NUV-tI-BV8"/>
-                            </connections>
-                        </slider>
-                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Playback speed" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="167">
-                            <rect key="frame" x="20" y="83" width="280" height="21"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+                </view>
+                <view hidden="YES" contentMode="scaleToFill" id="241" userLabel="Controls panel" customClass="VLCFrostedGlasView">
+                    <rect key="frame" x="0.0" y="63" width="320" height="46"/>
+                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                    <subviews>
+                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="High-Speed Scrubbing" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="244">
+                            <rect key="frame" x="20" y="3" width="280" height="21"/>
+                            <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                             <fontDescription key="fontDescription" type="system" pointSize="13"/>
                             <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="185">
-                            <rect key="frame" x="20" y="83" width="280" height="21"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Slide your finger down to adjust the scrubbing rate." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsLetterSpacingToFitWidth="YES" adjustsFontSizeToFit="NO" id="246">
+                            <rect key="frame" x="0.0" y="21" width="320" height="21"/>
+                            <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                             <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                            <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
                             <nil key="highlightedColor"/>
                         </label>
-                        <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-34" maxValue="34" id="168" customClass="VLCSlider">
-                            <rect key="frame" x="18" y="97" width="284" height="29"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <connections>
-                                <action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="6n6-9i-WXd"/>
-                            </connections>
-                        </slider>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="ime-8n-VJ9">
-                            <rect key="frame" x="20" y="133" width="280" height="30"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
-                            <state key="normal" title="Sleep Timer">
-                                <color key="titleColor" cocoaTouchSystemColor="lightTextColor"/>
-                                <color key="titleShadowColor" cocoaTouchSystemColor="scrollViewTexturedBackgroundColor"/>
-                            </state>
-                            <connections>
-                                <action selector="sleepTimer:" destination="-1" eventType="touchUpInside" id="3DL-TN-OVO"/>
-                            </connections>
-                        </button>
                     </subviews>
+                    <color key="backgroundColor" white="0.0" alpha="0.60999999999999999" colorSpace="custom" customColorSpace="calibratedWhite"/>
                 </view>
+                <navigationBar contentMode="scaleToFill" barStyle="blackTranslucent" id="250">
+                    <rect key="frame" x="0.0" y="18" width="320" height="44"/>
+                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                    <items>
+                        <navigationItem title="Title" id="261">
+                            <connections>
+                                <outlet property="leftBarButtonItem" destination="85" id="270"/>
+                                <outlet property="titleView" destination="260" id="271"/>
+                            </connections>
+                        </navigationItem>
+                    </items>
+                </navigationBar>
                 <view hidden="YES" contentMode="scaleToFill" id="117" userLabel="Controls panel" customClass="VLCFrostedGlasView">
                     <rect key="frame" x="0.0" y="342" width="320" height="198"/>
                     <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
@@ -343,6 +297,115 @@
                         </button>
                     </subviews>
                 </view>
+                <view hidden="YES" contentMode="scaleToFill" id="165" userLabel="Controls panel" customClass="VLCFrostedGlasView">
+                    <rect key="frame" x="0.0" y="314" width="320" height="163"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
+                    <subviews>
+                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Audio delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8cb-fw-YeF">
+                            <rect key="frame" x="20" y="7" width="280" height="21"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="SDv-JW-DMi">
+                            <rect key="frame" x="20" y="7" width="280" height="21"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-30" maxValue="30" id="oQe-Uu-1HY" customClass="VLCSlider">
+                            <rect key="frame" x="18" y="20" width="284" height="29"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <connections>
+                                <action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="MaZ-VI-xre"/>
+                            </connections>
+                        </slider>
+                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Subtitles delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="KeW-Xp-9I6">
+                            <rect key="frame" x="20" y="44" width="280" height="21"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="IzS-81-KII">
+                            <rect key="frame" x="20" y="44" width="280" height="21"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-30" maxValue="30" id="JRI-0m-C0M" customClass="VLCSlider">
+                            <rect key="frame" x="18" y="58" width="284" height="29"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <connections>
+                                <action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="NUV-tI-BV8"/>
+                            </connections>
+                        </slider>
+                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Playback speed" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="167">
+                            <rect key="frame" x="20" y="83" width="280" height="21"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="185">
+                            <rect key="frame" x="20" y="83" width="280" height="21"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
+                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-34" maxValue="34" id="168" customClass="VLCSlider">
+                            <rect key="frame" x="18" y="97" width="284" height="29"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <connections>
+                                <action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="6n6-9i-WXd"/>
+                            </connections>
+                        </slider>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="ime-8n-VJ9">
+                            <rect key="frame" x="20" y="133" width="280" height="30"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                            <state key="normal" title="Sleep Timer">
+                                <color key="titleColor" cocoaTouchSystemColor="lightTextColor"/>
+                                <color key="titleShadowColor" cocoaTouchSystemColor="scrollViewTexturedBackgroundColor"/>
+                            </state>
+                            <connections>
+                                <action selector="sleepTimer:" destination="-1" eventType="touchUpInside" id="3DL-TN-OVO"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                </view>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="yK6-Ph-SVE">
+                    <rect key="frame" x="40" y="164" width="240" height="240"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                </imageView>
+                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Album Name" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" adjustsLetterSpacingToFitWidth="YES" id="280">
+                    <rect key="frame" x="31" y="336" width="258" height="28"/>
+                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                    <color key="textColor" white="0.71999999999999997" alpha="1" colorSpace="calibratedWhite"/>
+                    <nil key="highlightedColor"/>
+                    <color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
+                </label>
+                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" text="Track Name" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" id="282">
+                    <rect key="frame" x="31" y="435" width="257" height="28"/>
+                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="23"/>
+                    <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                    <nil key="highlightedColor"/>
+                    <color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
+                </label>
+                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" text="Artist Name" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" id="279">
+                    <rect key="frame" x="31" y="267" width="257" height="28"/>
+                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="23"/>
+                    <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                    <nil key="highlightedColor"/>
+                    <color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
+                </label>
                 <view hidden="YES" contentMode="scaleToFill" id="92" userLabel="Controls panel" customClass="VLCFrostedGlasView">
                     <rect key="frame" x="0.0" y="478" width="320" height="90"/>
                     <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
@@ -371,7 +434,7 @@
                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
                         </view>
                         <view contentMode="scaleToFill" id="iBJ-hE-7St">
-                            <rect key="frame" x="272" y="14" width="40" height="40"/>
+                            <rect key="frame" x="232" y="14" width="40" height="40"/>
                             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
                             <subviews>
                                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="159">
@@ -445,7 +508,7 @@
                             </connections>
                         </button>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="78">
-                            <rect key="frame" x="57" y="14" width="32" height="40"/>
+                            <rect key="frame" x="52" y="15" 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"/>
@@ -462,101 +525,28 @@
                             </connections>
                         </button>
                         <view contentMode="scaleToFill" id="230" customClass="MPVolumeView">
-                            <rect key="frame" x="78" y="61" width="226" height="22"/>
+                            <rect key="frame" x="22" y="61" width="282" height="22"/>
                             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         </view>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="3Pu-h2-L0m">
-                            <rect key="frame" x="15" y="54" width="32" height="35"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="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="Xza-fk-7Go"/>
-                            </connections>
-                        </button>
-                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="HmC-O6-R9e">
-                            <rect key="frame" x="237" y="14" width="32" height="40"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="w65-Hw-2aP">
+                            <rect key="frame" x="280" y="15" width="32" height="40"/>
+                            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
-                            <fontDescription key="fontDescription" type="boldSystem" pointSize="22"/>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                             <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
-                            <state key="normal" title="L"/>
+                            <state key="normal" image="More.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="lock:" destination="-1" eventType="touchUpInside" id="yaI-PP-7Md"/>
+                                <action selector="moreActions:" destination="-1" eventType="touchUpInside" id="XV5-2d-iWF"/>
                             </connections>
                         </button>
                     </subviews>
                 </view>
-                <navigationBar contentMode="scaleToFill" barStyle="blackTranslucent" id="250">
-                    <rect key="frame" x="0.0" y="18" width="320" height="44"/>
-                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
-                    <items>
-                        <navigationItem title="Title" id="261">
-                            <connections>
-                                <outlet property="leftBarButtonItem" destination="85" id="270"/>
-                                <outlet property="titleView" destination="260" id="271"/>
-                            </connections>
-                        </navigationItem>
-                    </items>
-                </navigationBar>
-                <view contentMode="scaleToFill" id="241" userLabel="Controls panel" customClass="VLCFrostedGlasView">
-                    <rect key="frame" x="0.0" y="63" width="320" height="46"/>
-                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
-                    <subviews>
-                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="High-Speed Scrubbing" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="244">
-                            <rect key="frame" x="20" y="3" width="280" height="21"/>
-                            <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                            <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Slide your finger down to adjust the scrubbing rate." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsLetterSpacingToFitWidth="YES" adjustsFontSizeToFit="NO" id="246">
-                            <rect key="frame" x="0.0" y="21" width="320" height="21"/>
-                            <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                            <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                    </subviews>
-                    <color key="backgroundColor" white="0.0" alpha="0.60999999999999999" colorSpace="custom" customColorSpace="calibratedWhite"/>
-                </view>
-                <view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" id="108" userLabel="Playing Externally View">
-                    <rect key="frame" x="0.0" y="135" width="320" height="257"/>
-                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
-                    <subviews>
-                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="PlayingExternally.png" id="111">
-                            <rect key="frame" x="80" y="20" width="160" height="130"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                        </imageView>
-                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="TV Connected" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="110">
-                            <rect key="frame" x="20" y="170" width="280" height="21"/>
-                            <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="19"/>
-                            <color key="textColor" red="0.3803921569" green="0.3803921569" blue="0.3803921569" alpha="1" colorSpace="calibratedRGB"/>
-                            <nil key="highlightedColor"/>
-                        </label>
-                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="This video is playing on the TV" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="109">
-                            <rect key="frame" x="20" y="199" width="289" height="53"/>
-                            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
-                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
-                            <color key="textColor" red="0.3803921569" green="0.3803921569" blue="0.3803921569" alpha="1" colorSpace="calibratedRGB"/>
-                            <color key="highlightedColor" red="0.3803921569" green="0.3803921569" blue="0.3803921569" alpha="0.81000000000000005" colorSpace="calibratedRGB"/>
-                        </label>
-                    </subviews>
-                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
-                </view>
-                <label hidden="YES" opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Status Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="210" customClass="VLCStatusLabel">
-                    <rect key="frame" x="61" y="273" width="199" height="22"/>
-                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
-                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                    <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
-                    <nil key="highlightedColor"/>
-                    <color key="shadowColor" cocoaTouchSystemColor="lightTextColor"/>
-                </label>
             </subviews>
             <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
             <nil key="simulatedStatusBarMetrics"/>
@@ -566,7 +556,7 @@
             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <view contentMode="scaleToFill" id="hwg-8s-Ztc">
-                    <rect key="frame" x="433" y="5" width="40" height="40"/>
+                    <rect key="frame" x="379" y="5" width="40" height="40"/>
                     <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
                     <subviews>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="v7P-Wn-QnX">
@@ -606,7 +596,7 @@
                     </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"/>
+                    <rect key="frame" x="176" 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"/>
@@ -640,26 +630,15 @@
                     </connections>
                 </button>
                 <view contentMode="scaleToFill" id="SX3-Kb-W8g" customClass="MPVolumeView">
-                    <rect key="frame" x="20" y="16" width="117" height="22"/>
+                    <rect key="frame" x="20" y="16" width="105" 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="311" y="5" width="32" height="40"/>
-                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="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>
                 <view contentMode="scaleToFill" id="beR-yq-gJK">
-                    <rect key="frame" x="137" y="5" width="40" height="40"/>
+                    <rect key="frame" x="131" y="5" width="32" height="40"/>
                     <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
                     <subviews>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="WXm-go-jev">
-                            <rect key="frame" x="4" y="0.0" width="32" height="40"/>
+                            <rect key="frame" x="0.0" 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"/>
@@ -678,7 +657,7 @@
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
                 </view>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="awR-Dt-S0B">
-                    <rect key="frame" x="345" y="6" width="32" height="40"/>
+                    <rect key="frame" x="329" y="6" width="32" height="40"/>
                     <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
                     <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
@@ -694,37 +673,21 @@
                         <action selector="switchTrack:" destination="-1" eventType="touchUpInside" id="M3v-tx-1MI"/>
                     </connections>
                 </button>
-                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="5Ty-RA-fET">
-                    <rect key="frame" x="378" y="6" width="19" 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="22"/>
-                    <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
-                    <state key="normal" title="L"/>
-                    <connections>
-                        <action selector="lock:" destination="-1" eventType="touchUpInside" id="58H-Ih-9tk"/>
-                    </connections>
-                </button>
-                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="aJZ-AB-35L">
-                    <rect key="frame" x="427" y="6" width="14" 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="22"/>
-                    <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
-                    <state key="normal" title="C"/>
-                    <connections>
-                        <action selector="switchChapter:" destination="-1" eventType="touchUpInside" id="t1w-mV-9wH"/>
-                    </connections>
-                </button>
-                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" id="qRr-cf-Zcx">
-                    <rect key="frame" x="400" y="6" width="19" height="40"/>
-                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="CTX-C4-0tv">
+                    <rect key="frame" x="441" y="6" width="32" height="40"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
                     <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
-                    <fontDescription key="fontDescription" type="boldSystem" pointSize="22"/>
+                    <fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
                     <inset key="contentEdgeInsets" minX="0.0" minY="4" maxX="0.0" maxY="4"/>
-                    <state key="normal" title="E"/>
+                    <state key="normal" image="More.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="equalizer:" destination="-2" eventType="touchUpInside" id="oG9-a0-Gxz"/>
+                        <action selector="moreActions:" destination="-1" eventType="touchUpInside" id="BJF-fx-pS9"/>
                     </connections>
                 </button>
             </subviews>
@@ -734,13 +697,13 @@
         </view>
     </objects>
     <resources>
+        <image name="More.png" width="20" height="6"/>
         <image name="PlayingExternally.png" width="122" height="91"/>
         <image name="audioTrackIcon.png" width="19" height="19"/>
         <image name="backIcon.png" width="32" height="16"/>
         <image name="forwardIcon.png" width="32" height="16"/>
         <image name="playIcon.png" width="19" height="17"/>
         <image name="ratioIcon.png" width="15" height="15"/>
-        <image name="repeat.png" width="23" height="18"/>
         <image name="resetIcon.png" width="24" height="30"/>
         <image name="speedIcon.png" width="19" height="19"/>
         <image name="videoEffectsIcon.png" width="21" height="21"/>

+ 8 - 11
Sources/VLCMovieViewController.h

@@ -33,13 +33,6 @@
 @property (nonatomic, strong) IBOutlet UIButton *fwdButtonLandscape;
 @property (nonatomic, strong) IBOutlet UIButton *trackSwitcherButton;
 @property (nonatomic, strong) IBOutlet UIButton *trackSwitcherButtonLandscape;
-@property (nonatomic, strong) IBOutlet UIButton *repeatButton;
-@property (nonatomic, strong) IBOutlet UIButton *repeatButtonLandscape;
-@property (nonatomic, strong) IBOutlet UIButton *lockButton;
-@property (nonatomic, strong) IBOutlet UIButton *lockButtonLandscape;
-@property (nonatomic, strong) IBOutlet UIButton *chapterButton;
-@property (nonatomic, strong) IBOutlet UIButton *chapterButtonLandscape;
-@property (nonatomic, strong) IBOutlet UIButton *equalizerButton;
 @property (nonatomic, strong) IBOutlet UIButton *sleepTimerButton;
 @property (nonatomic, strong) IBOutlet UINavigationBar *toolbar;
 @property (nonatomic, strong) IBOutlet VLCFrostedGlasView *controllerPanel;
@@ -80,6 +73,7 @@
 @property (nonatomic, strong) IBOutlet UILabel *spuDelayLabel;
 @property (nonatomic, strong) IBOutlet UILabel *spuDelayIndicator;
 @property (nonatomic, strong) IBOutlet UIButton *aspectRatioButton;
+@property (nonatomic, strong) IBOutlet UIButton *moreActionsButton;
 
 @property (nonatomic, strong) IBOutlet VLCFrostedGlasView *scrubIndicatorView;
 @property (nonatomic, strong) IBOutlet UILabel *currentScrubSpeedLabel;
@@ -108,12 +102,9 @@
 - (IBAction)playPause;
 - (IBAction)backward:(id)sender;
 - (IBAction)forward:(id)sender;
-- (IBAction)toggleRepeatMode:(id)sender;
 - (IBAction)switchTrack:(id)sender;
-- (IBAction)lock:(id)sender;
-- (IBAction)switchChapter:(id)sender;
-- (IBAction)equalizer:(id)sender;
 - (IBAction)sleepTimer:(id)sender;
+- (IBAction)moreActions:(id)sender;
 
 - (IBAction)videoFilterToggle:(id)sender;
 - (IBAction)videoFilterSliderAction:(id)sender;
@@ -121,6 +112,12 @@
 - (IBAction)playbackSliderAction:(id)sender;
 - (IBAction)videoDimensionAction:(id)sender;
 
+- (void)toggleRepeatMode;
+- (void)toggleEqualizer;
+- (void)toggleUILock;
+- (void)toggleChapterAndTitleSelector;
+- (void)hideMenu;
+
 - (BOOL)rotationIsDisabled;
 
 @end

+ 170 - 96
Sources/VLCMovieViewController.m

@@ -25,6 +25,7 @@
 #import "VLCTrackSelectorTableViewCell.h"
 #import "VLCTrackSelectorHeaderView.h"
 #import "VLCEqualizerView.h"
+#import "VLCMultiSelectionMenuView.h"
 
 #import "OBSlider.h"
 #import "VLCStatusLabel.h"
@@ -47,7 +48,7 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
   VLCPanTypeVolume,
 };
 
-@interface VLCMovieViewController () <UIGestureRecognizerDelegate, AVAudioSessionDelegate, VLCMediaDelegate, UITableViewDataSource, UITableViewDelegate, VLCEqualizerViewDelegate>
+@interface VLCMovieViewController () <UIGestureRecognizerDelegate, AVAudioSessionDelegate, VLCMediaDelegate, UITableViewDataSource, UITableViewDelegate, VLCEqualizerViewDelegate, VLCMultiSelectionViewDelegate>
 {
     VLCMediaListPlayer *_listPlayer;
     VLCMediaPlayer *_mediaPlayer;
@@ -88,6 +89,7 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
     UITableView *_trackSelectorTableView;
 
     VLCEqualizerView *_equalizerView;
+    VLCMultiSelectionMenuView *_multiSelectionView;
 
     UIView *_sleepTimerContainer;
     UIDatePicker *_sleepTimeDatePicker;
@@ -209,10 +211,6 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
     _trackSwitcherButton.isAccessibilityElement = YES;
     _trackSwitcherButtonLandscape.accessibilityLabel = NSLocalizedString(@"OPEN_TRACK_PANEL", nil);
     _trackSwitcherButtonLandscape.isAccessibilityElement = YES;
-    _chapterButton.accessibilityLabel = NSLocalizedString(@"JUMP_TO_TITLE_OR_CHAPTER", nil);
-    _chapterButton.isAccessibilityElement = YES;
-    _chapterButtonLandscape.accessibilityLabel = NSLocalizedString(@"JUMP_TO_TITLE_OR_CHAPTER", nil);
-    _chapterButtonLandscape.isAccessibilityElement = YES;
     _playbackSpeedButton.accessibilityLabel = _playbackSpeedLabel.text;
     _playbackSpeedButton.isAccessibilityElement = YES;
     _playbackSpeedButtonLandscape.accessibilityLabel = _playbackSpeedLabel.text;
@@ -237,14 +235,16 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
     _fwdButton.isAccessibilityElement = YES;
     _fwdButtonLandscape.accessibilityLabel = NSLocalizedString(@"FWD_BUTTON", nil);
     _fwdButtonLandscape.isAccessibilityElement = YES;
-    _repeatButton.accessibilityLabel = NSLocalizedString(@"BUTTON_REPEAT", nil);
-    _repeatButton.isAccessibilityElement = YES;
-    _equalizerButton.accessibilityLabel = NSLocalizedString(@"BUTTON_EQUALIZER", nil);
-    _equalizerButton.isAccessibilityElement = YES;
     _sleepTimerButton.accessibilityLabel = NSLocalizedString(@"BUTTON_SLEEP_TIMER", nil);
     _sleepTimerButton.isAccessibilityElement = YES;
     [_sleepTimerButton setTitle:NSLocalizedString(@"BUTTON_SLEEP_TIMER", nil) forState:UIControlStateNormal];
 
+    _multiSelectionView = [[VLCMultiSelectionMenuView alloc] init];
+    _multiSelectionView.delegate = self;
+    _multiSelectionView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;
+    _multiSelectionView.hidden = YES;
+    [self.view addSubview:_multiSelectionView];
+
     _scrubHelpLabel.text = NSLocalizedString(@"PLAYBACK_SCRUB_HELP", nil);
 
     self.playbackSpeedView.hidden = YES;
@@ -473,18 +473,42 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
 
 - (void)viewWillLayoutSubviews
 {
-    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
-        CGSize viewSize = self.view.frame.size;
-        if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
-            [_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 {
-            [_controllerPanelLandscape removeFromSuperview];
-            _controllerPanel.frame = (CGRect){CGPointMake(0, viewSize.height - _controllerPanel.frame.size.height), CGSizeMake(viewSize.width, _controllerPanel.frame.size.height)};
-            [self.view addSubview:_controllerPanel];
-        }
+    CGRect multiSelectionFrame;
+    CGRect controllerPanelFrame;
+
+    if (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPhone) {
+        controllerPanelFrame = _controllerPanel.frame;
+        multiSelectionFrame = (CGRect){CGPointMake(0., 0.), [_multiSelectionView proposedDisplaySize]};
+        multiSelectionFrame.origin.x = controllerPanelFrame.size.width - multiSelectionFrame.size.width;
+        multiSelectionFrame.origin.y = controllerPanelFrame.origin.y - multiSelectionFrame.size.height;
+        _multiSelectionView.frame = multiSelectionFrame;
+        _multiSelectionView.showsEqualizer = YES;
+        return;
     }
+
+    CGSize viewSize = self.view.frame.size;
+
+    if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) {
+        [_controllerPanel removeFromSuperview];
+        controllerPanelFrame = (CGRect){CGPointMake(0, viewSize.height - _controllerPanelLandscape.frame.size.height), CGSizeMake(viewSize.width, _controllerPanelLandscape.frame.size.height)};
+        _controllerPanelLandscape.frame = controllerPanelFrame;
+        [self.view addSubview:_controllerPanelLandscape];
+        _multiSelectionView.showsEqualizer = YES;
+        multiSelectionFrame = (CGRect){CGPointMake(0., 0.), [_multiSelectionView proposedDisplaySize]};
+        multiSelectionFrame.origin.x = controllerPanelFrame.size.width - multiSelectionFrame.size.width;
+        multiSelectionFrame.origin.y = controllerPanelFrame.origin.y - multiSelectionFrame.size.height;
+    } else {
+        [_controllerPanelLandscape removeFromSuperview];
+        controllerPanelFrame = (CGRect){CGPointMake(0, viewSize.height - _controllerPanel.frame.size.height), CGSizeMake(viewSize.width, _controllerPanel.frame.size.height)};
+        _controllerPanel.frame = controllerPanelFrame;
+        [self.view addSubview:_controllerPanel];
+        _multiSelectionView.showsEqualizer = NO;
+        multiSelectionFrame = (CGRect){CGPointMake(0., 0.), [_multiSelectionView proposedDisplaySize]};
+        multiSelectionFrame.origin.x = controllerPanelFrame.size.width - multiSelectionFrame.size.width;
+        multiSelectionFrame.origin.y = controllerPanelFrame.origin.y - multiSelectionFrame.size.height;
+    }
+
+    _multiSelectionView.frame = multiSelectionFrame;
 }
 
 - (void)_startPlayback
@@ -584,8 +608,6 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
     self.positionSlider.value = 0.;
     [self.timeDisplay setTitle:@"" forState:UIControlStateNormal];
     self.timeDisplay.accessibilityLabel = @"";
-    [self.repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
-    [self.repeatButtonLandscape setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
 
     if (![self _isMediaSuitableForDevice]) {
         UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"DEVICE_TOOSLOW_TITLE", nil) message:[NSString stringWithFormat:NSLocalizedString(@"DEVICE_TOOSLOW", nil), [[UIDevice currentDevice] model], self.fileFromMediaLibrary.title] delegate:self cancelButtonTitle:NSLocalizedString(@"BUTTON_CANCEL", nil) otherButtonTitles:NSLocalizedString(@"BUTTON_OPEN", nil), nil];
@@ -952,6 +974,8 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
             _sleepTimerContainer.alpha = 0.0f;
             _sleepTimerContainer.hidden = YES;
         }
+        _multiSelectionView.alpha = 0.0f;
+        _multiSelectionView.hidden = YES;
     }
 
     void (^animationBlock)() = ^() {
@@ -962,6 +986,7 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
         _playbackSpeedView.alpha = alpha;
         _trackSelectorContainer.alpha = alpha;
         _equalizerView.alpha = alpha;
+        _multiSelectionView.alpha = alpha;
         if (_sleepTimerContainer)
             _sleepTimerContainer.alpha = alpha;
     };
@@ -976,6 +1001,7 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
         _equalizerView.hidden = YES;
         if (_sleepTimerContainer)
             _sleepTimerContainer.hidden = YES;
+        _multiSelectionView.hidden = YES;
     };
 
     UIStatusBarAnimation animationType = animated? UIStatusBarAnimationFade: UIStatusBarAnimationNone;
@@ -1168,13 +1194,10 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
         self.trackSwitcherButtonLandscape.hidden = YES;
     }
 
-    if (_mediaPlayer.titles.count > 1 || [_mediaPlayer chaptersForTitleIndex:_mediaPlayer.currentTitleIndex].count > 1) {
-        self.chapterButton.hidden = NO;
-        self.chapterButtonLandscape.hidden = NO;
-    } else {
-        self.chapterButton.hidden = YES;
-        self.chapterButtonLandscape.hidden = YES;
-    }
+    if (_mediaPlayer.titles.count > 1 || [_mediaPlayer chaptersForTitleIndex:_mediaPlayer.currentTitleIndex].count > 1)
+        _multiSelectionView.mediaHasChapters = YES;
+    else
+        _multiSelectionView.mediaHasChapters = NO;
 }
 
 - (IBAction)playPause
@@ -1207,19 +1230,6 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
         [_mediaPlayer mediumJumpBackward];
 }
 
-- (void)toggleRepeatMode:(id)sender
-{
-    if (_listPlayer.repeatMode == VLCDoNotRepeat) {
-        _listPlayer.repeatMode = VLCRepeatCurrentItem;
-        [self.repeatButton setImage:[UIImage imageNamed:@"repeatOne"] forState:UIControlStateNormal];
-        [self.repeatButtonLandscape setImage:[UIImage imageNamed:@"repeatOne"] forState:UIControlStateNormal];
-    } else {
-        _listPlayer.repeatMode = VLCDoNotRepeat;
-        [self.repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
-        [self.repeatButtonLandscape setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
-    }
-}
-
 - (IBAction)switchTrack:(id)sender
 {
     LOCKCHECK;
@@ -1248,33 +1258,6 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
     }
 }
 
-- (IBAction)switchChapter:(id)sender
-{
-    LOCKCHECK;
-
-    if (_trackSelectorContainer.hidden == YES || _switchingTracksNotChapters == YES) {
-        _switchingTracksNotChapters = NO;
-
-        [_trackSelectorTableView reloadData];
-        _trackSelectorContainer.hidden = NO;
-        _trackSelectorContainer.alpha = 1.;
-
-        if (!_playbackSpeedViewHidden)
-            self.playbackSpeedView.hidden = _playbackSpeedViewHidden = YES;
-
-        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
-            if (!_controlsHidden) {
-                self.controllerPanel.hidden = _controlsHidden = YES;
-                self.controllerPanelLandscape.hidden = YES;
-            }
-        }
-
-        self.videoFilterView.hidden = _videoFiltersHidden = YES;
-    } else {
-        _trackSelectorContainer.hidden = YES;
-    }
-}
-
 - (IBAction)toggleTimeDisplay:(id)sender
 {
     LOCKCHECK;
@@ -1284,33 +1267,6 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
     [self _resetIdleTimer];
 }
 
-- (IBAction)lock:(id)sender
-{
-    _interfaceIsLocked = !_interfaceIsLocked;
-}
-
-- (IBAction)equalizer:(id)sender
-{
-    LOCKCHECK;
-
-    if (_equalizerView.hidden) {
-        if (!_playbackSpeedViewHidden)
-            self.playbackSpeedView.hidden = _playbackSpeedViewHidden = YES;
-
-        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
-            if (!_controlsHidden) {
-                self.controllerPanel.hidden = _controlsHidden = YES;
-                self.controllerPanelLandscape.hidden = YES;
-            }
-        }
-
-        self.videoFilterView.hidden = _videoFiltersHidden = YES;
-        _equalizerView.alpha = 1.;
-        _equalizerView.hidden = NO;
-    } else
-        _equalizerView.hidden = YES;
-}
-
 - (IBAction)sleepTimer:(id)sender
 {
     if (!_sleepTimerContainer) {
@@ -1381,6 +1337,124 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
     _sleepTimer = [NSTimer scheduledTimerWithTimeInterval:_sleepTimeDatePicker.countDownDuration target:self selector:@selector(closePlayback:) userInfo:nil repeats:NO];
 }
 
+- (void)moreActions:(id)sender
+{
+    if (_multiSelectionView.hidden == NO) {
+        [UIView animateWithDuration:.3
+                         animations:^{
+                             _multiSelectionView.hidden = YES;
+                         }
+                         completion:^(BOOL finished){
+                         }];
+        return;
+    }
+
+    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
+        if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
+            _multiSelectionView.showsEqualizer = YES;
+        else
+            _multiSelectionView.showsEqualizer = NO;
+    }
+
+    CGRect workFrame = _multiSelectionView.frame;
+    workFrame.size = [_multiSelectionView proposedDisplaySize];
+    workFrame.origin.x = self.toolbar.frame.size.width - workFrame.size.width;
+
+    _multiSelectionView.alpha = 1.0f;
+
+    /* animate */
+    _multiSelectionView.frame = CGRectMake(workFrame.origin.x, workFrame.origin.y + workFrame.size.height, workFrame.size.width, 0.);
+    [UIView animateWithDuration:.3
+                     animations:^{
+                         _multiSelectionView.frame = workFrame;
+                         _multiSelectionView.hidden = NO;
+                     }
+                     completion:^(BOOL finished){
+                     }];
+    [self _resetIdleTimer];
+}
+
+#pragma mark - multi-select delegation
+
+- (void)toggleUILock
+{
+    _interfaceIsLocked = !_interfaceIsLocked;
+}
+
+- (void)toggleEqualizer
+{
+    LOCKCHECK;
+
+    if (_equalizerView.hidden) {
+        if (!_playbackSpeedViewHidden)
+            self.playbackSpeedView.hidden = _playbackSpeedViewHidden = YES;
+
+        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
+            if (!_controlsHidden) {
+                self.controllerPanel.hidden = _controlsHidden = YES;
+                self.controllerPanelLandscape.hidden = YES;
+                self.toolbar.hidden = YES;
+            }
+        }
+
+        self.videoFilterView.hidden = _videoFiltersHidden = YES;
+        _equalizerView.alpha = 1.;
+        _equalizerView.hidden = NO;
+    } else
+        _equalizerView.hidden = YES;
+}
+
+- (void)toggleChapterAndTitleSelector
+{
+    LOCKCHECK;
+
+    if (_trackSelectorContainer.hidden == YES || _switchingTracksNotChapters == YES) {
+        _switchingTracksNotChapters = NO;
+
+        [_trackSelectorTableView reloadData];
+        _trackSelectorContainer.hidden = NO;
+        _trackSelectorContainer.alpha = 1.;
+
+        if (!_playbackSpeedViewHidden)
+            self.playbackSpeedView.hidden = _playbackSpeedViewHidden = YES;
+
+        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
+            if (!_controlsHidden) {
+                self.controllerPanel.hidden = _controlsHidden = YES;
+                self.controllerPanelLandscape.hidden = YES;
+            }
+        }
+
+        self.videoFilterView.hidden = _videoFiltersHidden = YES;
+    } else {
+        _trackSelectorContainer.hidden = YES;
+    }
+}
+
+- (void)toggleRepeatMode
+{
+    LOCKCHECK;
+
+    if (_listPlayer.repeatMode == VLCDoNotRepeat) {
+        _listPlayer.repeatMode = VLCRepeatCurrentItem;
+        _multiSelectionView.displayRepeatOne = YES;
+    } else {
+        _listPlayer.repeatMode = VLCDoNotRepeat;
+        _multiSelectionView.displayRepeatOne = NO;
+    }
+}
+
+- (void)hideMenu
+{
+    [UIView animateWithDuration:.2
+                     animations:^{
+                         _multiSelectionView.hidden = YES;
+                     }
+                     completion:^(BOOL finished){
+                     }];
+    [self _resetIdleTimer];
+}
+
 #pragma mark - track selector table view
 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 {

+ 32 - 0
Sources/VLCMultiSelectionMenuView.h

@@ -0,0 +1,32 @@
+//
+//  VLCMultiSelectionMenuView.h
+//  VLC for iOS
+//
+//  Created by Felix Paul Kühne on 09/03/15.
+//  Copyright (c) 2015 VideoLAN. All rights reserved.
+//
+
+#import "VLCFrostedGlasView.h"
+
+@protocol VLCMultiSelectionViewDelegate <NSObject>
+
+@required
+- (void)toggleUILock;
+- (void)toggleEqualizer;
+- (void)toggleChapterAndTitleSelector;
+- (void)toggleRepeatMode;
+- (void)hideMenu;
+
+@end
+
+@interface VLCMultiSelectionMenuView : VLCFrostedGlasView
+
+@property (readwrite, weak) id<VLCMultiSelectionViewDelegate> delegate;
+
+@property (readwrite, assign) BOOL showsEqualizer;
+@property (readwrite, assign) BOOL mediaHasChapters;
+
+- (void)setDisplayRepeatOne:(BOOL)displayRepeatOne;
+- (CGSize)proposedDisplaySize;
+
+@end

+ 166 - 0
Sources/VLCMultiSelectionMenuView.m

@@ -0,0 +1,166 @@
+//
+//  VLCMultiSelectionMenuView.m
+//  VLC for iOS
+//
+//  Created by Felix Paul Kühne on 09/03/15.
+//  Copyright (c) 2015 VideoLAN. All rights reserved.
+//
+
+#import "VLCMultiSelectionMenuView.h"
+
+#define buttonWidth 32.
+#define buttonHeight 35.
+#define spacer 8.
+
+@interface VLCMultiSelectionMenuView ()
+{
+    UIButton *_equalizerButton;
+    UIButton *_chapterSelectorButton;
+    UIButton *_repeatButton;
+    UIButton *_lockButton;
+
+    BOOL _showsEQ;
+}
+
+@end
+
+@implementation VLCMultiSelectionMenuView
+
+- (instancetype)init
+{
+    self = [super initWithFrame:CGRectMake(0., 0., buttonWidth, buttonHeight)];
+
+    if (self) {
+        _equalizerButton = [UIButton buttonWithType:UIButtonTypeCustom];
+        [_equalizerButton setTitle:@"E" forState:UIControlStateNormal];
+        _equalizerButton.titleLabel.textColor = [UIColor whiteColor];
+        _equalizerButton.frame = CGRectMake(spacer, spacer, buttonWidth, buttonHeight);
+        [_equalizerButton addTarget:self action:@selector(equalizerAction:) forControlEvents:UIControlEventTouchUpInside];
+        _equalizerButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
+        [self addSubview:_equalizerButton];
+
+        _chapterSelectorButton = [UIButton buttonWithType:UIButtonTypeCustom];
+        [_chapterSelectorButton setTitle:@"C" forState:UIControlStateNormal];
+        _chapterSelectorButton.titleLabel.textColor = [UIColor whiteColor];
+        _chapterSelectorButton.frame = CGRectMake(spacer, spacer + buttonHeight + spacer, buttonWidth, buttonHeight);
+        [_chapterSelectorButton addTarget:self action:@selector(chapterSelectorAction:) forControlEvents:UIControlEventTouchUpInside];
+        _chapterSelectorButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
+        [self addSubview:_chapterSelectorButton];
+
+        _repeatButton = [UIButton buttonWithType:UIButtonTypeCustom];
+        [_repeatButton setImage:[UIImage imageNamed:@"repeat.png"] forState:UIControlStateNormal];
+        _repeatButton.frame = CGRectMake(spacer, spacer + buttonHeight + spacer + buttonHeight + spacer, buttonWidth, buttonHeight);
+        [_repeatButton addTarget:self action:@selector(repeatAction:) forControlEvents:UIControlEventTouchUpInside];
+        _repeatButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
+        [self addSubview:_repeatButton];
+
+        _lockButton = [UIButton buttonWithType:UIButtonTypeCustom];
+        [_lockButton setImage:[UIImage imageNamed:@"lock.png"] forState:UIControlStateNormal];
+        _lockButton.frame = CGRectMake(spacer, spacer + buttonHeight + spacer + buttonHeight + spacer + buttonHeight + spacer, buttonWidth, buttonHeight);
+        [_lockButton addTarget:self action:@selector(lockAction:) forControlEvents:UIControlEventTouchUpInside];
+        _lockButton.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
+        [self addSubview:_lockButton];
+    }
+    return self;
+}
+
+- (CGSize)proposedDisplaySize
+{
+    _equalizerButton.hidden = !_showsEqualizer;
+    _chapterSelectorButton.hidden = !_mediaHasChapters;
+
+    CGFloat height;
+    CGRect workFrame;
+
+    if (_showsEqualizer) {
+        if (_mediaHasChapters) {
+            height = 5. * spacer + 4. * buttonHeight;
+            workFrame = _equalizerButton.frame;
+            workFrame.origin.y = spacer;
+            _equalizerButton.frame = workFrame;
+            _equalizerButton.hidden = NO;
+            workFrame = _chapterSelectorButton.frame;
+            workFrame.origin.y = spacer * 2. + buttonHeight;
+            _chapterSelectorButton.frame = workFrame;
+            _chapterSelectorButton.hidden = NO;
+            workFrame = _repeatButton.frame;
+            workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
+            _repeatButton.frame = workFrame;
+            workFrame = _lockButton.frame;
+            workFrame.origin.y = spacer * 4. + buttonHeight * 3.;
+            _lockButton.frame = workFrame;
+        } else {
+            height = 4. * spacer + 3. * buttonHeight;
+            workFrame = _equalizerButton.frame;
+            workFrame.origin.y = spacer;
+            _equalizerButton.frame = workFrame;
+            _equalizerButton.hidden = NO;
+            _chapterSelectorButton.hidden = YES;
+            workFrame = _repeatButton.frame;
+            workFrame.origin.y = spacer * 2. + buttonHeight;
+            _repeatButton.frame = workFrame;
+            workFrame = _lockButton.frame;
+            workFrame.origin.y = spacer * 3. + buttonHeight * 2.;
+            _lockButton.frame = workFrame;
+        }
+    } else {
+        if (_mediaHasChapters) {
+            height = 4. * spacer + 3. * buttonHeight;
+            _equalizerButton.hidden = YES;
+            workFrame = _chapterSelectorButton.frame;
+            workFrame.origin.y = spacer;
+            _chapterSelectorButton.frame = workFrame;
+            _chapterSelectorButton.hidden = NO;
+            workFrame = _repeatButton.frame;
+            workFrame.origin.y = spacer * 2. + buttonHeight;
+            _repeatButton.frame = workFrame;
+            workFrame = _lockButton.frame;
+            workFrame.origin.y = spacer * 3. + buttonHeight * 2;
+            _lockButton.frame = workFrame;
+        } else {
+            height = 3. * spacer + 2. * buttonHeight;
+            _equalizerButton.hidden = YES;
+            _chapterSelectorButton.hidden = YES;
+            workFrame = _repeatButton.frame;
+            workFrame.origin.y = spacer;
+            _repeatButton.frame = workFrame;
+            workFrame = _lockButton.frame;
+            workFrame.origin.y = spacer * 2. + buttonHeight;
+            _lockButton.frame = workFrame;
+        }
+    }
+
+    return CGSizeMake(spacer + buttonWidth + spacer, height);
+}
+
+- (void)setDisplayRepeatOne:(BOOL)displayRepeatOne
+{
+    if (displayRepeatOne)
+        [_repeatButton setImage:[UIImage imageNamed:@"repeatOne"] forState:UIControlStateNormal];
+    else
+        [_repeatButton setImage:[UIImage imageNamed:@"repeat"] forState:UIControlStateNormal];
+}
+
+- (void)equalizerAction:(id)sender
+{
+    [self.delegate toggleEqualizer];
+    [self.delegate hideMenu];
+}
+
+- (void)chapterSelectorAction:(id)sender
+{
+    [self.delegate toggleChapterAndTitleSelector];
+    [self.delegate hideMenu];
+}
+
+- (void)repeatAction:(id)sender
+{
+    [self.delegate toggleRepeatMode];
+}
+
+- (void)lockAction:(id)sender
+{
+    [self.delegate toggleUILock];
+}
+
+@end

+ 30 - 0
VLC for iOS.xcodeproj/project.pbxproj

@@ -127,6 +127,13 @@
 		7D1052E61A4DC5FF00295F08 /* LiveSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D1052E51A4DC5FF00295F08 /* LiveSDK.framework */; };
 		7D1052E91A4DCC1100295F08 /* VLCOneDriveTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D1052E81A4DCC1100295F08 /* VLCOneDriveTableViewController.m */; };
 		7D1052EE1A4DCD1E00295F08 /* VLCOneDriveController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D1052ED1A4DCD1E00295F08 /* VLCOneDriveController.m */; };
+		7D12765A1AAD9D9A00F0260C /* lock@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D1276541AAD9D9A00F0260C /* lock@3x.png */; };
+		7D12765B1AAD9D9A00F0260C /* lock.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D1276551AAD9D9A00F0260C /* lock.png */; };
+		7D12765C1AAD9D9A00F0260C /* lock@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D1276561AAD9D9A00F0260C /* lock@2x.png */; };
+		7D12765D1AAD9D9A00F0260C /* More.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D1276571AAD9D9A00F0260C /* More.png */; };
+		7D12765E1AAD9D9A00F0260C /* More@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D1276581AAD9D9A00F0260C /* More@2x.png */; };
+		7D12765F1AAD9D9A00F0260C /* More@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7D1276591AAD9D9A00F0260C /* More@3x.png */; };
+		7D1276621AADA0E600F0260C /* VLCMultiSelectionMenuView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D1276611AADA0E600F0260C /* VLCMultiSelectionMenuView.m */; };
 		7D1516421868D7E0004B18F3 /* VLCFirstStepsFifthPageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D15163B1868D7E0004B18F3 /* VLCFirstStepsFifthPageViewController.xib */; };
 		7D1516431868D7E0004B18F3 /* VLCFirstStepsFirstPageViewController~iphone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D15163C1868D7E0004B18F3 /* VLCFirstStepsFirstPageViewController~iphone.xib */; };
 		7D1516461868D7E0004B18F3 /* VLCFirstStepsSixthPageViewController~iphone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D15163F1868D7E0004B18F3 /* VLCFirstStepsSixthPageViewController~iphone.xib */; };
@@ -677,6 +684,14 @@
 		7D1052EB1A4DCC4B00295F08 /* VLCOneDriveConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VLCOneDriveConstants.h; path = Sources/VLCOneDriveConstants.h; sourceTree = SOURCE_ROOT; };
 		7D1052EC1A4DCD1E00295F08 /* VLCOneDriveController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCOneDriveController.h; path = Sources/VLCOneDriveController.h; sourceTree = SOURCE_ROOT; };
 		7D1052ED1A4DCD1E00295F08 /* VLCOneDriveController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCOneDriveController.m; path = Sources/VLCOneDriveController.m; sourceTree = SOURCE_ROOT; };
+		7D1276541AAD9D9A00F0260C /* lock@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "lock@3x.png"; sourceTree = "<group>"; };
+		7D1276551AAD9D9A00F0260C /* lock.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lock.png; sourceTree = "<group>"; };
+		7D1276561AAD9D9A00F0260C /* lock@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "lock@2x.png"; sourceTree = "<group>"; };
+		7D1276571AAD9D9A00F0260C /* More.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = More.png; sourceTree = "<group>"; };
+		7D1276581AAD9D9A00F0260C /* More@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "More@2x.png"; sourceTree = "<group>"; };
+		7D1276591AAD9D9A00F0260C /* More@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "More@3x.png"; sourceTree = "<group>"; };
+		7D1276601AADA0E600F0260C /* VLCMultiSelectionMenuView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCMultiSelectionMenuView.h; path = Sources/VLCMultiSelectionMenuView.h; sourceTree = SOURCE_ROOT; };
+		7D1276611AADA0E600F0260C /* VLCMultiSelectionMenuView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCMultiSelectionMenuView.m; path = Sources/VLCMultiSelectionMenuView.m; sourceTree = SOURCE_ROOT; };
 		7D15163B1868D7E0004B18F3 /* VLCFirstStepsFifthPageViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = VLCFirstStepsFifthPageViewController.xib; path = Resources/VLCFirstStepsFifthPageViewController.xib; sourceTree = SOURCE_ROOT; };
 		7D15163C1868D7E0004B18F3 /* VLCFirstStepsFirstPageViewController~iphone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = "VLCFirstStepsFirstPageViewController~iphone.xib"; path = "Resources/VLCFirstStepsFirstPageViewController~iphone.xib"; sourceTree = SOURCE_ROOT; };
 		7D15163F1868D7E0004B18F3 /* VLCFirstStepsSixthPageViewController~iphone.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = "VLCFirstStepsSixthPageViewController~iphone.xib"; path = "Resources/VLCFirstStepsSixthPageViewController~iphone.xib"; sourceTree = SOURCE_ROOT; };
@@ -1857,6 +1872,12 @@
 		7D47D6C81760CD2700E86BAD /* Movie VIew */ = {
 			isa = PBXGroup;
 			children = (
+				7D1276541AAD9D9A00F0260C /* lock@3x.png */,
+				7D1276551AAD9D9A00F0260C /* lock.png */,
+				7D1276561AAD9D9A00F0260C /* lock@2x.png */,
+				7D1276571AAD9D9A00F0260C /* More.png */,
+				7D1276581AAD9D9A00F0260C /* More@2x.png */,
+				7D1276591AAD9D9A00F0260C /* More@3x.png */,
 				7D588D63187DD9B700469FCF /* modernSliderKnob.png */,
 				7D588D62187DD9B700469FCF /* modernSliderKnob@2x.png */,
 				7D98701F1A3DEC99009CF27D /* modernSliderKnob@3x.png */,
@@ -1999,6 +2020,8 @@
 				7D5CAA881A4AD763003F2CBC /* VLCTrackSelectorTableViewCell.m */,
 				7D5CAA8A1A4AD8E5003F2CBC /* VLCTrackSelectorHeaderView.h */,
 				7D5CAA8B1A4AD8E5003F2CBC /* VLCTrackSelectorHeaderView.m */,
+				7D1276601AADA0E600F0260C /* VLCMultiSelectionMenuView.h */,
+				7D1276611AADA0E600F0260C /* VLCMultiSelectionMenuView.m */,
 			);
 			name = Playback;
 			sourceTree = "<group>";
@@ -2805,6 +2828,7 @@
 				7AC862A61765E9510011611A /* jquery-1.10.1.min.js in Resources */,
 				7AC862A71765E9510011611A /* jquery.fileupload.js in Resources */,
 				7DF3B78419DF01550041A02E /* fsarrow-speed@3x.png in Resources */,
+				7D12765E1AAD9D9A00F0260C /* More@2x.png in Resources */,
 				7DFC38CD1A45F0F8002476CB /* DriveWhite@3x.png in Resources */,
 				7AC862A81765E9510011611A /* jquery.iframe-transport.js in Resources */,
 				7AC862A91765E9510011611A /* jquery.ui.widget.js in Resources */,
@@ -2831,11 +2855,13 @@
 				7DF04F4E1961F2B8004A5429 /* web-download.png in Resources */,
 				7DBBF1A8183AB4300009A339 /* VLCOpenNetworkStreamViewController.xib in Resources */,
 				A7CB0DB31716F72600050CF3 /* PlayingExternally~ipad.png in Resources */,
+				7D12765F1AAD9D9A00F0260C /* More@3x.png in Resources */,
 				A7CB0DB41716F72600050CF3 /* PlayingExternally@2x~ipad.png in Resources */,
 				7DBBF1A9183AB4300009A339 /* VLCPlaylistCollectionViewCell.xib in Resources */,
 				7DA8B0FB173318E80029698C /* SourceCodePro-Regular.ttf in Resources */,
 				A7FF9F3E17428C1900999819 /* DeleteButton.png in Resources */,
 				A7FF9F4017428C3800999819 /* DeleteButton@2x.png in Resources */,
+				7D12765B1AAD9D9A00F0260C /* lock.png in Resources */,
 				7D9870581A3DEE68009CF27D /* Drive@3x.png in Resources */,
 				7D9870361A3DED40009CF27D /* playIcon@3x.png in Resources */,
 				7D27EC0919DF30CB00EF0370 /* cloud@2x.png in Resources */,
@@ -2862,6 +2888,7 @@
 				7D07F710175669D800CDE21C /* buttonHighlight.png in Resources */,
 				7DBBF1A4183AB4300009A339 /* VLCLocalNetworkListCell~iphone.xib in Resources */,
 				7DFC38E11A45F243002476CB /* sudHeaderBg@3x.png in Resources */,
+				7D12765D1AAD9D9A00F0260C /* More.png in Resources */,
 				7D07F711175669D800CDE21C /* buttonHighlight@2x.png in Resources */,
 				260B41DD1A75006300DA89C9 /* OneDrive@2x.png in Resources */,
 				7D27EC1E19DF30CB00EF0370 /* sidebar@2x.png in Resources */,
@@ -2888,6 +2915,7 @@
 				9BF07090185122AA009B23DD /* audio@2x~ipad.png in Resources */,
 				7D07F72F175691CC00CDE21C /* backButton@2x.png in Resources */,
 				7D98705A1A3DEE88009CF27D /* TVBroadcastIcon@3x.png in Resources */,
+				7D12765A1AAD9D9A00F0260C /* lock@3x.png in Resources */,
 				7D27EC2019DF30CB00EF0370 /* uploadarrow.png in Resources */,
 				7D32B384185E293D006CA474 /* Raleway.woff in Resources */,
 				7D9870521A3DEE30009CF27D /* AllFiles@3x.png in Resources */,
@@ -3055,6 +3083,7 @@
 				7DEB3B8B1764A4F40038FC70 /* movie.png in Resources */,
 				7D27EC2C19DF310300EF0370 /* VLCFirstStepsSecondPageViewController~iphone.xib in Resources */,
 				7DEB3B8C1764A4F40038FC70 /* blank.png in Resources */,
+				7D12765C1AAD9D9A00F0260C /* lock@2x.png in Resources */,
 				7DEB3B8D1764A4F40038FC70 /* blank@2x.png in Resources */,
 				7DF3B78719DF01550041A02E /* fsarrow-subtitles@3x.png in Resources */,
 				4115E5FF197977850071C4B9 /* tableViewIcon@2x.png in Resources */,
@@ -3279,6 +3308,7 @@
 				41CD695C1A29D72600E60BCE /* VLCBoxController.m in Sources */,
 				7D3784C2183A9938009EE944 /* VLCSlider.m in Sources */,
 				7D3784C3183A9938009EE944 /* VLCStatusLabel.m in Sources */,
+				7D1276621AADA0E600F0260C /* VLCMultiSelectionMenuView.m in Sources */,
 				7D3784C8183A9972009EE944 /* NSString+SupportedMedia.m in Sources */,
 				7D3784C9183A9972009EE944 /* UIDevice+VLC.m in Sources */,
 				262C71591A98FA9200F7ED34 /* VLCPlexMediaInformationViewController.m in Sources */,