Commit ca26e9e6 authored by Felix Paul Kühne's avatar Felix Paul Kühne

Implement sleep timer (close #8640)

parent 668410d3
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
<outlet property="saturationSlider" destination="149" id="168"/> <outlet property="saturationSlider" destination="149" id="168"/>
<outlet property="scrubHelpLabel" destination="243" id="247"/> <outlet property="scrubHelpLabel" destination="243" id="247"/>
<outlet property="scrubIndicatorView" destination="242" id="245"/> <outlet property="scrubIndicatorView" destination="242" id="245"/>
<outlet property="sleepTimerButton" destination="aXd-S6-sb9" id="g5b-DC-APw"/>
<outlet property="spuDelayIndicator" destination="cTE-tb-Z89" id="Ll9-wY-xca"/> <outlet property="spuDelayIndicator" destination="cTE-tb-Z89" id="Ll9-wY-xca"/>
<outlet property="spuDelayLabel" destination="NX8-Zc-K6Y" id="WLd-cA-fUn"/> <outlet property="spuDelayLabel" destination="NX8-Zc-K6Y" id="WLd-cA-fUn"/>
<outlet property="spuDelaySlider" destination="juX-HR-PqD" id="x4D-ki-Lwk"/> <outlet property="spuDelaySlider" destination="juX-HR-PqD" id="x4D-ki-Lwk"/>
...@@ -194,72 +195,84 @@ ...@@ -194,72 +195,84 @@
<color key="backgroundColor" white="0.0" alpha="0.60999999999999999" colorSpace="custom" customColorSpace="calibratedWhite"/> <color key="backgroundColor" white="0.0" alpha="0.60999999999999999" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view> </view>
<view contentMode="scaleToFill" id="176" userLabel="Delays &amp; Speed" customClass="VLCFrostedGlasView"> <view contentMode="scaleToFill" id="176" userLabel="Delays &amp; Speed" customClass="VLCFrostedGlasView">
<rect key="frame" x="123" y="849" width="320" height="122"/> <rect key="frame" x="123" y="814" width="320" height="157"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Audio delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="bQc-dz-mB8"> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Audio delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="bQc-dz-mB8">
<rect key="frame" x="20" y="6" width="280" height="21"/> <rect key="frame" x="20" y="7" width="280" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/> <fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-30" maxValue="30" id="ahb-li-nqH" customClass="VLCSlider"> <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-30" maxValue="30" id="ahb-li-nqH" customClass="VLCSlider">
<rect key="frame" x="18" y="20" width="284" height="29"/> <rect key="frame" x="18" y="21" width="284" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<connections> <connections>
<action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="MB1-sB-W8m"/> <action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="MB1-sB-W8m"/>
</connections> </connections>
</slider> </slider>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="FYO-Rd-Vjg"> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="FYO-Rd-Vjg">
<rect key="frame" x="20" y="6" width="280" height="21"/> <rect key="frame" x="20" y="7" width="280" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/> <fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Subtitles delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="NX8-Zc-K6Y"> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Subtitles delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="NX8-Zc-K6Y">
<rect key="frame" x="20" y="43" width="280" height="21"/> <rect key="frame" x="20" y="44" width="280" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/> <fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-30" maxValue="30" id="juX-HR-PqD" customClass="VLCSlider"> <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-30" maxValue="30" id="juX-HR-PqD" customClass="VLCSlider">
<rect key="frame" x="18" y="57" width="284" height="29"/> <rect key="frame" x="18" y="58" width="284" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<connections> <connections>
<action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="acG-8w-Mgd"/> <action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="acG-8w-Mgd"/>
</connections> </connections>
</slider> </slider>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="cTE-tb-Z89"> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="cTE-tb-Z89">
<rect key="frame" x="20" y="43" width="280" height="21"/> <rect key="frame" x="20" y="44" width="280" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/> <fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Playback speed" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="181"> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Playback speed" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="181">
<rect key="frame" x="20" y="81" width="280" height="21"/> <rect key="frame" x="20" y="82" width="280" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/> <fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-34" maxValue="34" id="180" customClass="VLCSlider"> <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="-34" maxValue="34" id="180" customClass="VLCSlider">
<rect key="frame" x="18" y="95" width="284" height="29"/> <rect key="frame" x="18" y="96" width="284" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<connections> <connections>
<action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="4Xo-T4-hPJ"/> <action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="4Xo-T4-hPJ"/>
</connections> </connections>
</slider> </slider>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="179"> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="1.00x" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="179">
<rect key="frame" x="20" y="81" width="280" height="21"/> <rect key="frame" x="20" y="82" width="280" height="21"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/> <fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="aXd-S6-sb9">
<rect key="frame" x="20" y="119" 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="2s3-Kx-4uh"/>
</connections>
</button>
</subviews> </subviews>
</view> </view>
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" id="123" userLabel="Playing Externally View"> <view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" id="123" userLabel="Playing Externally View">
......
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
<outlet property="saturationSlider" destination="135" id="152"/> <outlet property="saturationSlider" destination="135" id="152"/>
<outlet property="scrubHelpLabel" destination="246" id="249"/> <outlet property="scrubHelpLabel" destination="246" id="249"/>
<outlet property="scrubIndicatorView" destination="241" id="247"/> <outlet property="scrubIndicatorView" destination="241" id="247"/>
<outlet property="sleepTimerButton" destination="ime-8n-VJ9" id="n2P-yu-8en"/>
<outlet property="spuDelayIndicator" destination="IzS-81-KII" id="IXf-sX-Ier"/> <outlet property="spuDelayIndicator" destination="IzS-81-KII" id="IXf-sX-Ier"/>
<outlet property="spuDelayLabel" destination="KeW-Xp-9I6" id="LMS-pz-Ajj"/> <outlet property="spuDelayLabel" destination="KeW-Xp-9I6" id="LMS-pz-Ajj"/>
<outlet property="spuDelaySlider" destination="JRI-0m-C0M" id="f8j-Iq-sH3"/> <outlet property="spuDelaySlider" destination="JRI-0m-C0M" id="f8j-Iq-sH3"/>
...@@ -170,8 +171,8 @@ ...@@ -170,8 +171,8 @@
<bool key="isElement" value="YES"/> <bool key="isElement" value="YES"/>
</accessibility> </accessibility>
</view> </view>
<view contentMode="scaleToFill" id="165" userLabel="Controls panel" customClass="VLCFrostedGlasView"> <view hidden="YES" contentMode="scaleToFill" id="165" userLabel="Controls panel" customClass="VLCFrostedGlasView">
<rect key="frame" x="0.0" y="340" width="320" height="131"/> <rect key="frame" x="0.0" y="314" width="320" height="163"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Audio delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8cb-fw-YeF"> <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Audio delay" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8cb-fw-YeF">
...@@ -237,9 +238,21 @@ ...@@ -237,9 +238,21 @@
<action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="6n6-9i-WXd"/> <action selector="playbackSliderAction:" destination="-1" eventType="valueChanged" id="6n6-9i-WXd"/>
</connections> </connections>
</slider> </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> </subviews>
</view> </view>
<view contentMode="scaleToFill" id="117" userLabel="Controls panel" customClass="VLCFrostedGlasView"> <view hidden="YES" contentMode="scaleToFill" id="117" userLabel="Controls panel" customClass="VLCFrostedGlasView">
<rect key="frame" x="0.0" y="342" width="320" height="198"/> <rect key="frame" x="0.0" y="342" width="320" height="198"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
...@@ -330,7 +343,7 @@ ...@@ -330,7 +343,7 @@
</button> </button>
</subviews> </subviews>
</view> </view>
<view contentMode="scaleToFill" id="92" userLabel="Controls panel" customClass="VLCFrostedGlasView"> <view hidden="YES" contentMode="scaleToFill" id="92" userLabel="Controls panel" customClass="VLCFrostedGlasView">
<rect key="frame" x="0.0" y="478" width="320" height="90"/> <rect key="frame" x="0.0" y="478" width="320" height="90"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews> <subviews>
...@@ -488,7 +501,7 @@ ...@@ -488,7 +501,7 @@
</navigationItem> </navigationItem>
</items> </items>
</navigationBar> </navigationBar>
<view hidden="YES" contentMode="scaleToFill" id="241" userLabel="Controls panel" customClass="VLCFrostedGlasView"> <view contentMode="scaleToFill" id="241" userLabel="Controls panel" customClass="VLCFrostedGlasView">
<rect key="frame" x="0.0" y="63" width="320" height="46"/> <rect key="frame" x="0.0" y="63" width="320" height="46"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
......
B"CHOOSE_AUDIO_TRACK"="Choose Audio Track"; B"CHOOSE_AUDIO_TRACK"="Choose Audio Track";
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
@property (nonatomic, strong) IBOutlet UIButton *chapterButton; @property (nonatomic, strong) IBOutlet UIButton *chapterButton;
@property (nonatomic, strong) IBOutlet UIButton *chapterButtonLandscape; @property (nonatomic, strong) IBOutlet UIButton *chapterButtonLandscape;
@property (nonatomic, strong) IBOutlet UIButton *equalizerButton; @property (nonatomic, strong) IBOutlet UIButton *equalizerButton;
@property (nonatomic, strong) IBOutlet UIButton *sleepTimerButton;
@property (nonatomic, strong) IBOutlet UINavigationBar *toolbar; @property (nonatomic, strong) IBOutlet UINavigationBar *toolbar;
@property (nonatomic, strong) IBOutlet VLCFrostedGlasView *controllerPanel; @property (nonatomic, strong) IBOutlet VLCFrostedGlasView *controllerPanel;
@property (nonatomic, strong) IBOutlet VLCFrostedGlasView *controllerPanelLandscape; @property (nonatomic, strong) IBOutlet VLCFrostedGlasView *controllerPanelLandscape;
...@@ -112,6 +113,7 @@ ...@@ -112,6 +113,7 @@
- (IBAction)lock:(id)sender; - (IBAction)lock:(id)sender;
- (IBAction)switchChapter:(id)sender; - (IBAction)switchChapter:(id)sender;
- (IBAction)equalizer:(id)sender; - (IBAction)equalizer:(id)sender;
- (IBAction)sleepTimer:(id)sender;
- (IBAction)videoFilterToggle:(id)sender; - (IBAction)videoFilterToggle:(id)sender;
- (IBAction)videoFilterSliderAction:(id)sender; - (IBAction)videoFilterSliderAction:(id)sender;
......
...@@ -64,6 +64,7 @@ typedef NS_ENUM(NSInteger, VLCPanType) { ...@@ -64,6 +64,7 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
NSUInteger _currentAspectRatioMask; NSUInteger _currentAspectRatioMask;
NSTimer *_idleTimer; NSTimer *_idleTimer;
NSTimer *_sleepTimer;
BOOL _shouldResumePlaying; BOOL _shouldResumePlaying;
BOOL _viewAppeared; BOOL _viewAppeared;
...@@ -87,6 +88,10 @@ typedef NS_ENUM(NSInteger, VLCPanType) { ...@@ -87,6 +88,10 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
UITableView *_trackSelectorTableView; UITableView *_trackSelectorTableView;
VLCEqualizerView *_equalizerView; VLCEqualizerView *_equalizerView;
UIView *_sleepTimerContainer;
UIDatePicker *_sleepTimeDatePicker;
NSInteger _mediaDuration; NSInteger _mediaDuration;
} }
...@@ -236,6 +241,9 @@ typedef NS_ENUM(NSInteger, VLCPanType) { ...@@ -236,6 +241,9 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
_repeatButton.isAccessibilityElement = YES; _repeatButton.isAccessibilityElement = YES;
_equalizerButton.accessibilityLabel = NSLocalizedString(@"BUTTON_EQUALIZER", nil); _equalizerButton.accessibilityLabel = NSLocalizedString(@"BUTTON_EQUALIZER", nil);
_equalizerButton.isAccessibilityElement = YES; _equalizerButton.isAccessibilityElement = YES;
_sleepTimerButton.accessibilityLabel = NSLocalizedString(@"BUTTON_SLEEP_TIMER", nil);
_sleepTimerButton.isAccessibilityElement = YES;
[_sleepTimerButton setTitle:NSLocalizedString(@"BUTTON_SLEEP_TIMER", nil) forState:UIControlStateNormal];
_scrubHelpLabel.text = NSLocalizedString(@"PLAYBACK_SCRUB_HELP", nil); _scrubHelpLabel.text = NSLocalizedString(@"PLAYBACK_SCRUB_HELP", nil);
...@@ -940,6 +948,10 @@ typedef NS_ENUM(NSInteger, VLCPanType) { ...@@ -940,6 +948,10 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
_trackSelectorContainer.hidden = YES; _trackSelectorContainer.hidden = YES;
_equalizerView.alpha = 0.0f; _equalizerView.alpha = 0.0f;
_equalizerView.hidden = YES; _equalizerView.hidden = YES;
if (_sleepTimerContainer) {
_sleepTimerContainer.alpha = 0.0f;
_sleepTimerContainer.hidden = YES;
}
} }
void (^animationBlock)() = ^() { void (^animationBlock)() = ^() {
...@@ -950,6 +962,8 @@ typedef NS_ENUM(NSInteger, VLCPanType) { ...@@ -950,6 +962,8 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
_playbackSpeedView.alpha = alpha; _playbackSpeedView.alpha = alpha;
_trackSelectorContainer.alpha = alpha; _trackSelectorContainer.alpha = alpha;
_equalizerView.alpha = alpha; _equalizerView.alpha = alpha;
if (_sleepTimerContainer)
_sleepTimerContainer.alpha = alpha;
}; };
void (^completionBlock)(BOOL finished) = ^(BOOL finished) { void (^completionBlock)(BOOL finished) = ^(BOOL finished) {
...@@ -960,6 +974,8 @@ typedef NS_ENUM(NSInteger, VLCPanType) { ...@@ -960,6 +974,8 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
_playbackSpeedView.hidden = _playbackSpeedViewHidden; _playbackSpeedView.hidden = _playbackSpeedViewHidden;
_trackSelectorContainer.hidden = YES; _trackSelectorContainer.hidden = YES;
_equalizerView.hidden = YES; _equalizerView.hidden = YES;
if (_sleepTimerContainer)
_sleepTimerContainer.hidden = YES;
}; };
UIStatusBarAnimation animationType = animated? UIStatusBarAnimationFade: UIStatusBarAnimationNone; UIStatusBarAnimation animationType = animated? UIStatusBarAnimationFade: UIStatusBarAnimationNone;
...@@ -1295,6 +1311,76 @@ typedef NS_ENUM(NSInteger, VLCPanType) { ...@@ -1295,6 +1311,76 @@ typedef NS_ENUM(NSInteger, VLCPanType) {
_equalizerView.hidden = YES; _equalizerView.hidden = YES;
} }
- (IBAction)sleepTimer:(id)sender
{
if (!_sleepTimerContainer) {
self.playbackSpeedView.hidden = YES;
_sleepTimerContainer = [[VLCFrostedGlasView alloc] initWithFrame:CGRectMake(0., 0., 300., 162.)];
_sleepTimerContainer.center = self.view.center;
_sleepTimerContainer.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleTopMargin;
_sleepTimeDatePicker = [[UIDatePicker alloc] init];
if ([[UIDevice currentDevice] speedCategory] >= 3) {
_sleepTimeDatePicker.opaque = NO;
_sleepTimeDatePicker.backgroundColor = [UIColor clearColor];
} else
_sleepTimeDatePicker.backgroundColor = [UIColor blackColor];
_sleepTimeDatePicker.tintColor = [UIColor VLCLightTextColor];
[_sleepTimerContainer addSubview:_sleepTimeDatePicker];
/* adapt the date picker style to suit our needs */
[_sleepTimeDatePicker setValue:[UIColor whiteColor] forKeyPath:@"textColor"];
SEL selector = NSSelectorFromString(@"setHighlightsToday:");
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDatePicker instanceMethodSignatureForSelector:selector]];
BOOL no = NO;
[invocation setSelector:selector];
[invocation setArgument:&no atIndex:2];
[invocation invokeWithTarget:_sleepTimeDatePicker];
if (_sleepTimerContainer.subviews.count > 0) {
NSArray *subviewsOfSubview = [_sleepTimeDatePicker.subviews[0] subviews];
NSUInteger subviewCount = subviewsOfSubview.count;
for (NSUInteger x = 0; x < subviewCount; x++) {
if ([subviewsOfSubview[x] isKindOfClass:[UILabel class]])
[subviewsOfSubview[x] setTextColor:[UIColor VLCLightTextColor]];
}
}
_sleepTimeDatePicker.datePickerMode = UIDatePickerModeCountDownTimer;
_sleepTimeDatePicker.minuteInterval = 5;
_sleepTimeDatePicker.minimumDate = [NSDate date];
_sleepTimeDatePicker.countDownDuration = 1200.;
[_sleepTimeDatePicker addTarget:self action:@selector(sleepTimerAction:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:_sleepTimerContainer];
}
if (!_playbackSpeedViewHidden)
self.playbackSpeedView.hidden = _playbackSpeedViewHidden = YES;
if (_equalizerView.hidden == NO)
_equalizerView.hidden = YES;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
if (!_controlsHidden) {
self.controllerPanel.hidden = _controlsHidden = YES;
self.controllerPanelLandscape.hidden = YES;
}
}
self.videoFilterView.hidden = _videoFiltersHidden = YES;
_sleepTimerContainer.alpha = 1.;
_sleepTimerContainer.hidden = NO;
}
- (IBAction)sleepTimerAction:(id)sender
{
if (_sleepTimer) {
[_sleepTimer invalidate];
_sleepTimer = nil;
}
_sleepTimer = [NSTimer scheduledTimerWithTimeInterval:_sleepTimeDatePicker.countDownDuration target:self selector:@selector(closePlayback:) userInfo:nil repeats:NO];
}
#pragma mark - track selector table view #pragma mark - track selector table view
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment