[vlc-commits] macosx: Improvement in Go-To Time Panel, added hh:mm:ss format

Daksh Shah git at videolan.org
Tue Sep 4 17:26:58 CEST 2018


vlc | branch: master | Daksh Shah <daksh17336 at iiitd.ac.in> | Fri Jun 22 22:40:36 2018 +0530| [5b86f6d2008ffca4590163f0ba294f36fac3ef9c] | committer: Felix Paul Kühne

macosx: Improvement in Go-To Time Panel, added hh:mm:ss format

GitLab Issue #9

Signed-off-by: Felix Paul Kühne <felix at feepk.net>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5b86f6d2008ffca4590163f0ba294f36fac3ef9c
---

 modules/gui/macosx/UI/TimeSelectionPanel.xib       | 194 ++++++++++++++++-----
 modules/gui/macosx/VLCMainMenu.m                   |   4 +-
 .../gui/macosx/VLCTimeSelectionPanelController.h   |  21 ++-
 .../gui/macosx/VLCTimeSelectionPanelController.m   |  74 +++++---
 4 files changed, 213 insertions(+), 80 deletions(-)

diff --git a/modules/gui/macosx/UI/TimeSelectionPanel.xib b/modules/gui/macosx/UI/TimeSelectionPanel.xib
index 33397ec5e6..b80e70e18f 100644
--- a/modules/gui/macosx/UI/TimeSelectionPanel.xib
+++ b/modules/gui/macosx/UI/TimeSelectionPanel.xib
@@ -1,18 +1,22 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15D21" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14109" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
     <dependencies>
-        <development version="7000" identifier="xcode"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14109"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="VLCTimeSelectionPanelController">
             <connections>
                 <outlet property="cancelButton" destination="C7h-06-Udn" id="vms-H9-Fs6"/>
                 <outlet property="goToLabel" destination="bB6-Le-Ilg" id="Psy-fF-eTf"/>
+                <outlet property="hoursLabel" destination="nrO-yt-AnE" id="twB-pr-AtL"/>
+                <outlet property="hoursTextField" destination="KFt-K5-ogc" id="kqo-Bi-bkG"/>
+                <outlet property="minsLabel" destination="jTf-bH-u7w" id="e6b-gc-MHz"/>
+                <outlet property="minsTextField" destination="Smg-Kh-Pjv" id="W3E-YA-Glh"/>
                 <outlet property="okButton" destination="zrN-B3-Ede" id="TzS-HN-YE3"/>
                 <outlet property="secsLabel" destination="oMI-0n-rej" id="Heh-nH-7Dv"/>
-                <outlet property="stepper" destination="zsp-zD-QHr" id="yab-Mp-27O"/>
-                <outlet property="textField" destination="ovY-qj-fWV" id="NtQ-WV-2da"/>
+                <outlet property="secsTextField" destination="ovY-qj-fWV" id="hop-7A-B3h"/>
                 <outlet property="window" destination="Fqe-af-Tt9" id="u4H-rX-p0W"/>
             </connections>
         </customObject>
@@ -21,33 +25,124 @@
         <window title="GoTo Specific Time" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="Fqe-af-Tt9" userLabel="GoToTime">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
-            <rect key="contentRect" x="429" y="553" width="249" height="103"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
+            <rect key="contentRect" x="429" y="553" width="265" height="110"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
             <view key="contentView" id="NrR-3A-NOR">
-                <rect key="frame" x="0.0" y="0.0" width="249" height="103"/>
-                <autoresizingMask key="autoresizingMask"/>
+                <rect key="frame" x="0.0" y="0.0" width="265" height="110"/>
+                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                 <subviews>
-                    <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="bB6-Le-Ilg">
-                        <rect key="frame" x="48" y="79" width="153" height="17"/>
+                    <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="bB6-Le-Ilg" userLabel="Testlabel">
+                        <rect key="frame" x="56" y="87" width="153" height="17"/>
                         <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="Go to specific position" id="vXn-nw-Nrc">
                             <font key="font" metaFont="systemBold"/>
                             <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
                             <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
                         </textFieldCell>
                     </textField>
-                    <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ovY-qj-fWV">
-                        <rect key="frame" x="20" y="52" width="161" height="19"/>
+                    <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ovY-qj-fWV" userLabel="Secs Text Field">
+                        <rect key="frame" x="176" y="50" width="33" height="19"/>
                         <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="right" title="0" drawsBackground="YES" id="qZx-Li-5O2">
                             <font key="font" metaFont="smallSystem"/>
                             <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
                             <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                         </textFieldCell>
                         <connections>
-                            <binding destination="-2" name="value" keyPath="self.jumpTimeValue" id="xWJ-vG-f9H"/>
+                            <binding destination="-2" name="value" keyPath="self.jumpSecsValue" id="Vrp-5K-RQW">
+                                <dictionary key="options">
+                                    <bool key="NSContinuouslyUpdatesValue" value="YES"/>
+                                </dictionary>
+                            </binding>
+                            <outlet property="delegate" destination="-2" id="154-Yg-Swi"/>
+                            <outlet property="nextKeyView" destination="KFt-K5-ogc" id="Wnf-MK-lCP"/>
                         </connections>
                     </textField>
+                    <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Smg-Kh-Pjv" userLabel="Mins Text Field">
+                        <rect key="frame" x="94" y="50" width="33" height="19"/>
+                        <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="right" title="0" drawsBackground="YES" id="2wj-p0-8uH">
+                            <font key="font" metaFont="smallSystem"/>
+                            <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                        <connections>
+                            <binding destination="-2" name="value" keyPath="self.jumpMinsValue" id="ibz-B3-Qzq">
+                                <dictionary key="options">
+                                    <bool key="NSContinuouslyUpdatesValue" value="YES"/>
+                                </dictionary>
+                            </binding>
+                            <outlet property="delegate" destination="-2" id="8ni-yW-Hx8"/>
+                            <outlet property="nextKeyView" destination="ovY-qj-fWV" id="CkK-ug-uuR"/>
+                        </connections>
+                    </textField>
+                    <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KFt-K5-ogc" userLabel="Hours Text Field">
+                        <rect key="frame" x="20" y="50" width="33" height="19"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="33" id="xwZ-sK-Qq8"/>
+                        </constraints>
+                        <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="right" title="0" drawsBackground="YES" id="UWz-WZ-unY">
+                            <font key="font" metaFont="smallSystem"/>
+                            <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                        <connections>
+                            <binding destination="-2" name="value" keyPath="self.jumpHoursValue" id="hr4-TC-t7a">
+                                <dictionary key="options">
+                                    <bool key="NSContinuouslyUpdatesValue" value="YES"/>
+                                </dictionary>
+                            </binding>
+                            <outlet property="delegate" destination="-2" id="QgZ-hm-D9C"/>
+                            <outlet property="nextKeyView" destination="Smg-Kh-Pjv" id="aPL-uL-qxZ"/>
+                        </connections>
+                    </textField>
+                    <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zsp-zD-QHr" userLabel="Secs Stepper">
+                        <rect key="frame" x="209" y="48" width="15" height="22"/>
+                        <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" maxValue="30000" id="8Ok-J5-Vfx"/>
+                        <connections>
+                            <binding destination="-2" name="value" keyPath="self.jumpSecsValue" previousBinding="G0w-1a-j9i" id="Dbd-qx-86s"/>
+                            <binding destination="-2" name="maxValue" keyPath="self.secsMax" id="G0w-1a-j9i"/>
+                        </connections>
+                    </stepper>
+                    <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xMh-Kx-bRX">
+                        <rect key="frame" x="127" y="48" width="15" height="22"/>
+                        <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" maxValue="30000" id="WNB-18-kN2"/>
+                        <connections>
+                            <binding destination="-2" name="value" keyPath="self.jumpMinsValue" previousBinding="s1m-Vn-LGE" id="S3p-kD-BS5"/>
+                            <binding destination="-2" name="maxValue" keyPath="self.minsMax" id="s1m-Vn-LGE"/>
+                        </connections>
+                    </stepper>
+                    <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Un1-2R-ijf">
+                        <rect key="frame" x="53" y="48" width="15" height="22"/>
+                        <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" maxValue="30000" id="c5h-G9-LlU"/>
+                        <connections>
+                            <binding destination="-2" name="maxValue" keyPath="self.hoursMax" id="ubF-Xt-qiY"/>
+                            <binding destination="-2" name="value" keyPath="self.jumpHoursValue" previousBinding="ubF-Xt-qiY" id="fTw-EH-qRY"/>
+                        </connections>
+                    </stepper>
+                    <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="oMI-0n-rej">
+                        <rect key="frame" x="222" y="53" width="25" height="16"/>
+                        <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="ss" id="74c-xI-3AS">
+                            <font key="font" metaFont="cellTitle"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jTf-bH-u7w">
+                        <rect key="frame" x="141" y="53" width="25" height="16"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="mm" id="8HU-gm-EEa">
+                            <font key="font" metaFont="cellTitle"/>
+                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nrO-yt-AnE">
+                        <rect key="frame" x="66" y="53" width="19" height="16"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="hh" id="24d-8K-jxZ">
+                            <font key="font" metaFont="cellTitle"/>
+                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
                     <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zrN-B3-Ede">
-                        <rect key="frame" x="192" y="13" width="42" height="28"/>
+                        <rect key="frame" x="208" y="15" width="42" height="28"/>
                         <buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" inset="2" id="icy-jS-WFH">
                             <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                             <font key="font" metaFont="smallSystem"/>
@@ -59,16 +154,9 @@ DQ
                             <action selector="buttonPressed:" target="-2" id="0qF-5H-5Fz"/>
                         </connections>
                     </button>
-                    <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zsp-zD-QHr">
-                        <rect key="frame" x="187" y="50" width="15" height="22"/>
-                        <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="10" maxValue="30000" valueWraps="YES" id="8Ok-J5-Vfx"/>
-                        <connections>
-                            <binding destination="-2" name="value" keyPath="self.jumpTimeValue" id="ade-2M-vOh"/>
-                        </connections>
-                    </stepper>
                     <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="C7h-06-Udn">
-                        <rect key="frame" x="132" y="13" width="62" height="28"/>
-                        <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" inset="2" id="fXt-nh-exA">
+                        <rect key="frame" x="148" y="15" width="62" height="28"/>
+                        <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" controlSize="small" lineBreakMode="truncatingTail" borderStyle="border" inset="2" id="fXt-nh-exA">
                             <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                             <font key="font" metaFont="smallSystem"/>
                             <string key="keyEquivalent" base64-UTF8="YES">
@@ -79,31 +167,45 @@ Gw
                             <action selector="buttonPressed:" target="-2" id="Ad9-7v-03L"/>
                         </connections>
                     </button>
-                    <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="oMI-0n-rej">
-                        <rect key="frame" x="205" y="54" width="26" height="14"/>
-                        <textFieldCell key="cell" sendsActionOnEndEditing="YES" title="sec." id="74c-xI-3AS">
-                            <font key="font" metaFont="smallSystem"/>
-                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
-                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                        </textFieldCell>
-                    </textField>
                 </subviews>
                 <constraints>
-                    <constraint firstItem="bB6-Le-Ilg" firstAttribute="centerX" secondItem="NrR-3A-NOR" secondAttribute="centerX" id="2ar-zr-OPH"/>
-                    <constraint firstItem="zsp-zD-QHr" firstAttribute="centerY" secondItem="oMI-0n-rej" secondAttribute="centerY" id="5Si-zM-Wbp"/>
-                    <constraint firstItem="oMI-0n-rej" firstAttribute="leading" secondItem="zsp-zD-QHr" secondAttribute="trailing" constant="7" id="Q0I-mS-G2Z"/>
-                    <constraint firstItem="zrN-B3-Ede" firstAttribute="centerY" secondItem="C7h-06-Udn" secondAttribute="centerY" id="RP9-dn-ebh"/>
-                    <constraint firstItem="ovY-qj-fWV" firstAttribute="centerY" secondItem="zsp-zD-QHr" secondAttribute="centerY" id="Tvb-su-gcK"/>
-                    <constraint firstItem="oMI-0n-rej" firstAttribute="trailing" secondItem="zrN-B3-Ede" secondAttribute="trailing" id="Utx-5l-wnC"/>
-                    <constraint firstItem="ovY-qj-fWV" firstAttribute="leading" secondItem="NrR-3A-NOR" secondAttribute="leading" constant="20" id="VRc-8A-Cl1"/>
-                    <constraint firstAttribute="bottom" secondItem="zrN-B3-Ede" secondAttribute="bottom" constant="19" id="ZK9-PI-9Nx"/>
-                    <constraint firstItem="ovY-qj-fWV" firstAttribute="top" secondItem="bB6-Le-Ilg" secondAttribute="bottom" constant="8" id="cyH-iI-1pU"/>
-                    <constraint firstItem="zrN-B3-Ede" firstAttribute="leading" secondItem="C7h-06-Udn" secondAttribute="trailing" constant="8" id="hZt-62-vqJ"/>
-                    <constraint firstItem="zsp-zD-QHr" firstAttribute="leading" secondItem="ovY-qj-fWV" secondAttribute="trailing" constant="8" id="hgu-JE-E5L"/>
-                    <constraint firstAttribute="trailing" secondItem="zrN-B3-Ede" secondAttribute="trailing" constant="20" id="pIs-W7-PnF"/>
-                    <constraint firstItem="bB6-Le-Ilg" firstAttribute="top" secondItem="NrR-3A-NOR" secondAttribute="top" constant="7" id="zoD-H1-ed3"/>
+                    <constraint firstItem="nrO-yt-AnE" firstAttribute="baseline" secondItem="KFt-K5-ogc" secondAttribute="baseline" id="08O-Hq-yaf"/>
+                    <constraint firstItem="ovY-qj-fWV" firstAttribute="leading" secondItem="jTf-bH-u7w" secondAttribute="trailing" constant="12" id="0WE-Bg-ZGS"/>
+                    <constraint firstItem="KFt-K5-ogc" firstAttribute="width" secondItem="Smg-Kh-Pjv" secondAttribute="width" id="24N-1L-5Qx"/>
+                    <constraint firstItem="C7h-06-Udn" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="NrR-3A-NOR" secondAttribute="leading" constant="20" symbolic="YES" id="8C2-n0-ddd"/>
+                    <constraint firstItem="bB6-Le-Ilg" firstAttribute="top" secondItem="NrR-3A-NOR" secondAttribute="top" constant="6" id="AmG-Sh-CJP"/>
+                    <constraint firstItem="xMh-Kx-bRX" firstAttribute="leading" secondItem="Smg-Kh-Pjv" secondAttribute="trailing" constant="2" id="CyX-lL-1I2"/>
+                    <constraint firstItem="ovY-qj-fWV" firstAttribute="baseline" secondItem="KFt-K5-ogc" secondAttribute="baseline" id="Hee-6R-Kdn"/>
+                    <constraint firstItem="jTf-bH-u7w" firstAttribute="leading" secondItem="xMh-Kx-bRX" secondAttribute="trailing" constant="3" id="Hm4-N4-hNM" userLabel="Mins Label.leading = Mins Stepper.trailing + 2"/>
+                    <constraint firstAttribute="trailing" secondItem="oMI-0n-rej" secondAttribute="trailing" constant="20" symbolic="YES" id="JlG-tA-T1w"/>
+                    <constraint firstItem="jTf-bH-u7w" firstAttribute="baseline" secondItem="KFt-K5-ogc" secondAttribute="baseline" id="JxE-ZG-eSY"/>
+                    <constraint firstItem="C7h-06-Udn" firstAttribute="baseline" secondItem="zrN-B3-Ede" secondAttribute="baseline" id="PVu-B9-CmM"/>
+                    <constraint firstItem="KFt-K5-ogc" firstAttribute="leading" secondItem="NrR-3A-NOR" secondAttribute="leading" constant="20" symbolic="YES" id="PfD-38-yip"/>
+                    <constraint firstItem="Un1-2R-ijf" firstAttribute="leading" secondItem="KFt-K5-ogc" secondAttribute="trailing" constant="2" id="Rhe-9Q-woZ"/>
+                    <constraint firstItem="zsp-zD-QHr" firstAttribute="leading" secondItem="ovY-qj-fWV" secondAttribute="trailing" constant="2" id="SZW-yH-BM4"/>
+                    <constraint firstItem="zrN-B3-Ede" firstAttribute="top" secondItem="oMI-0n-rej" secondAttribute="bottom" constant="14" id="SiP-hv-2S0"/>
+                    <constraint firstItem="KFt-K5-ogc" firstAttribute="centerY" secondItem="Un1-2R-ijf" secondAttribute="centerY" id="WUd-ZI-Bol"/>
+                    <constraint firstItem="Smg-Kh-Pjv" firstAttribute="centerY" secondItem="xMh-Kx-bRX" secondAttribute="centerY" id="X15-o0-6ZP"/>
+                    <constraint firstItem="zrN-B3-Ede" firstAttribute="leading" secondItem="C7h-06-Udn" secondAttribute="trailing" constant="8" id="XLd-j6-TX5"/>
+                    <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="bB6-Le-Ilg" secondAttribute="trailing" constant="20" symbolic="YES" id="epj-mp-Lnm"/>
+                    <constraint firstItem="oMI-0n-rej" firstAttribute="leading" secondItem="zsp-zD-QHr" secondAttribute="trailing" constant="2" id="g1Z-YD-UJw"/>
+                    <constraint firstAttribute="trailing" secondItem="zrN-B3-Ede" secondAttribute="trailing" constant="20" id="gCl-V6-Bjt"/>
+                    <constraint firstItem="ovY-qj-fWV" firstAttribute="centerY" secondItem="zsp-zD-QHr" secondAttribute="centerY" id="iXo-b7-Mh2"/>
+                    <constraint firstItem="bB6-Le-Ilg" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="NrR-3A-NOR" secondAttribute="leading" constant="20" symbolic="YES" id="j6a-V4-oje"/>
+                    <constraint firstItem="Smg-Kh-Pjv" firstAttribute="width" secondItem="ovY-qj-fWV" secondAttribute="width" id="jHZ-4g-K0X"/>
+                    <constraint firstItem="nrO-yt-AnE" firstAttribute="leading" secondItem="Un1-2R-ijf" secondAttribute="trailing" constant="2" id="kjd-h3-aEZ"/>
+                    <constraint firstItem="oMI-0n-rej" firstAttribute="baseline" secondItem="KFt-K5-ogc" secondAttribute="baseline" id="lyY-Ad-caz"/>
+                    <constraint firstItem="Smg-Kh-Pjv" firstAttribute="baseline" secondItem="KFt-K5-ogc" secondAttribute="baseline" id="mOE-Qf-1wF"/>
+                    <constraint firstAttribute="bottom" secondItem="zrN-B3-Ede" secondAttribute="bottom" constant="21" id="nIx-yc-atT"/>
+                    <constraint firstItem="KFt-K5-ogc" firstAttribute="top" secondItem="bB6-Le-Ilg" secondAttribute="bottom" constant="18" id="oqx-8I-mgW"/>
+                    <constraint firstItem="Smg-Kh-Pjv" firstAttribute="leading" secondItem="nrO-yt-AnE" secondAttribute="trailing" constant="11" id="rnE-ZZ-e08"/>
+                    <constraint firstItem="bB6-Le-Ilg" firstAttribute="centerX" secondItem="NrR-3A-NOR" secondAttribute="centerX" id="uga-pS-4jS"/>
                 </constraints>
             </view>
+            <connections>
+                <outlet property="initialFirstResponder" destination="KFt-K5-ogc" id="RUn-tc-Qvg"/>
+            </connections>
+            <point key="canvasLocation" x="146.5" y="157"/>
         </window>
     </objects>
 </document>
diff --git a/modules/gui/macosx/VLCMainMenu.m b/modules/gui/macosx/VLCMainMenu.m
index d3bf3cb4ac..983492087d 100644
--- a/modules/gui/macosx/VLCMainMenu.m
+++ b/modules/gui/macosx/VLCMainMenu.m
@@ -836,9 +836,9 @@
     if (p_input) {
         /* we can obviously only do that if an input is available */
         vlc_tick_t length = var_GetInteger(p_input, "length");
-        [_timeSelectionPanel setMaxValue:(int)SEC_FROM_VLC_TICK(length)];
+        [_timeSelectionPanel setMaxTime:(int)SEC_FROM_VLC_TICK(length)];
         vlc_tick_t pos = var_GetInteger(p_input, "time");
-        [_timeSelectionPanel setJumpTimeValue: (int)SEC_FROM_VLC_TICK(pos)];
+        [_timeSelectionPanel setPosition: (int)SEC_FROM_VLC_TICK(pos)];
         [_timeSelectionPanel runModalForWindow:[NSApp mainWindow]
                              completionHandler:^(NSInteger returnCode, int64_t returnTime) {
 
diff --git a/modules/gui/macosx/VLCTimeSelectionPanelController.h b/modules/gui/macosx/VLCTimeSelectionPanelController.h
index 68288956e6..dd6e15392d 100644
--- a/modules/gui/macosx/VLCTimeSelectionPanelController.h
+++ b/modules/gui/macosx/VLCTimeSelectionPanelController.h
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * TimeSelectionPanelController.h: Controller for time selection panel
  *****************************************************************************
- * Copyright (C) 2015 VideoLAN and authors
+ * Copyright (C) 2015-2018 VideoLAN and authors
  * Author:       David Fuhrmann <david dot fuhrmann at googlemail dot com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -24,17 +24,25 @@
 @interface VLCTimeSelectionPanelController : NSWindowController
 
 @property (readwrite, weak) IBOutlet NSButton *cancelButton;
- at property (readwrite, weak) IBOutlet NSTextField *textField;
 @property (readwrite, weak) IBOutlet NSTextField *goToLabel;
 @property (readwrite, weak) IBOutlet NSButton *okButton;
 @property (readwrite, weak) IBOutlet NSTextField *secsLabel;
- at property (readwrite, weak) IBOutlet NSStepper *stepper;
+ at property (readwrite, weak) IBOutlet NSTextField *minsLabel;
+ at property (readwrite, weak) IBOutlet NSTextField *hoursLabel;
 
- at property (nonatomic) int jumpTimeValue;
- at property (nonatomic) int maxValue;
+ at property (nonatomic) int jumpSecsValue;
+ at property (nonatomic) int jumpMinsValue;
+ at property (nonatomic) int jumpHoursValue;
+ at property (nonatomic) int secsMax;
+ at property (nonatomic) int minsMax;
+ at property (nonatomic) int hoursMax;
 
 - (IBAction)buttonPressed:(id)sender;
 
+- (int)getTimeInSecs;
+- (void)setMaxTime:(int)secsMax;
+- (void)setPosition:(int)secsPos;
+
 /**
  * Completion handler for textfield panel
  * \param returnCode Result from panel. Can be NSModalResponseOK or NSModalResponseCancel.
@@ -49,5 +57,4 @@ typedef void(^TimeSelectionCompletionHandler)(NSInteger returnCode, int64_t retu
  */
 - (void)runModalForWindow:(NSWindow *)window completionHandler:(TimeSelectionCompletionHandler)handler;
 
-
- at end
\ No newline at end of file
+ at end
diff --git a/modules/gui/macosx/VLCTimeSelectionPanelController.m b/modules/gui/macosx/VLCTimeSelectionPanelController.m
index 9fd6eb3de7..1589325320 100644
--- a/modules/gui/macosx/VLCTimeSelectionPanelController.m
+++ b/modules/gui/macosx/VLCTimeSelectionPanelController.m
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * TimeSelectionPanelController.m: Controller for time selection panel
  *****************************************************************************
- * Copyright (C) 2015 VideoLAN and authors
+ * Copyright (C) 2015-2018 VideoLAN and authors
  * Author:       David Fuhrmann <david dot fuhrmann at googlemail dot com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -28,7 +28,6 @@
 {
     TimeSelectionCompletionHandler _completionHandler;
 }
-
 @end
 
 @implementation VLCTimeSelectionPanelController
@@ -49,35 +48,61 @@
 {
     [_cancelButton setTitle: _NS("Cancel")];
     [_okButton setTitle: _NS("OK")];
-    [_secsLabel setStringValue: _NS("sec.")];
+    [_secsLabel setStringValue: _NS("ss")];
+    [_minsLabel setStringValue: _NS("mm")];
+    [_hoursLabel setStringValue: _NS("hh")];
     [_goToLabel setStringValue: _NS("Jump to Time")];
-    [_textField setFormatter:[[PositionFormatter alloc] init]];
+}
+
+- (void)controlTextDidChange:(NSNotification *)notification
+{
+    [self setPosition:[self getTimeInSecs]];
+}
+
+- (void)setMaxTime:(int)secsMax
+{
+    [self setHoursMax:(int)secsMax / 3600];
+
+    if (secsMax >= 3600) {
+        [self setMinsMax:59];
+        [self setSecsMax:59];
+    }
+    else if (secsMax >= 60) {
+        [self setMinsMax:(int)secsMax / 60];
+        [self setSecsMax:59];
+    }
+    else {
+        [self setSecsMax:secsMax];
+        [self setMinsMax:0];
+    }
+}
+
+- (void)setPosition:(int)secsPos
+{
+    int minsPos = secsPos / 60;
+    secsPos = secsPos % 60;
+    int hoursPos = minsPos / 60;
+    minsPos = minsPos % 60;
+
+    [self setJumpSecsValue: secsPos];
+    [self setJumpMinsValue: minsPos];
+    [self setJumpHoursValue: hoursPos];
+}
+
+- (int)getTimeInSecs
+{
+    // calculate resulting time in secs:
+    int timeInSec = self.jumpSecsValue;
+    timeInSec += self.jumpMinsValue * 60;
+    timeInSec += self.jumpHoursValue * 3600;
+    return timeInSec;
 }
 
 - (IBAction)buttonPressed:(id)sender
 {
     [self.window orderOut:sender];
     [NSApp endSheet: self.window];
-
-    // calculate resulting time in secs:
-    int64_t timeInSec = 0;
-    NSString *string = [_textField stringValue];
-    if ([[string componentsSeparatedByString: @":"] count] > 1 &&
-        [[string componentsSeparatedByString: @":"] count] <= 3) {
-        NSArray *ourTempArray = \
-        [string componentsSeparatedByString: @":"];
-
-        if ([[string componentsSeparatedByString: @":"] count] == 3) {
-            timeInSec += ([[ourTempArray firstObject] intValue] *3600); //h
-            timeInSec += ([[ourTempArray objectAtIndex:1] intValue] *60); //m
-            timeInSec += [[ourTempArray objectAtIndex:2] intValue];        //s
-        } else {
-            timeInSec += ([[ourTempArray firstObject] intValue] *60); //m
-            timeInSec += [[ourTempArray objectAtIndex:1] intValue]; //s
-        }
-    }
-    else
-        timeInSec = [string intValue];
+    int64_t timeInSec = [self getTimeInSecs];
 
     if (_completionHandler)
         _completionHandler(sender == _okButton ? NSModalResponseOK : NSModalResponseCancel, timeInSec);
@@ -86,7 +111,6 @@
 - (void)runModalForWindow:(NSWindow *)window completionHandler:(TimeSelectionCompletionHandler)handler
 {
     [self window];
-    [_stepper setMaxValue:self.maxValue];
 
     _completionHandler = [handler copy];
 



More information about the vlc-commits mailing list