Browse Source

hide UI elements after a timeout of 2s (matching the Android UI) (close #8604)

Felix Paul Kühne 12 years ago
parent
commit
a4bc6fc10a
2 changed files with 33 additions and 0 deletions
  1. 2 0
      AspenProject/VLCMovieViewController.h
  2. 31 0
      AspenProject/VLCMovieViewController.m

+ 2 - 0
AspenProject/VLCMovieViewController.h

@@ -17,6 +17,8 @@
 
     UIActionSheet *_subtitleActionSheet;
     UIActionSheet *_audiotrackActionSheet;
+
+    NSTimer *_idleTimer;
 }
 
 @property (nonatomic, strong) IBOutlet UIView *movieView;

+ 31 - 0
AspenProject/VLCMovieViewController.m

@@ -60,6 +60,8 @@
     UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toogleControlsVisible)];
     recognizer.delegate = self;
     [self.view addGestureRecognizer:recognizer];
+
+    [self resetIdleTimer];
 }
 
 - (void)viewWillAppear:(BOOL)animated
@@ -147,6 +149,33 @@
     [[UIApplication sharedApplication] setStatusBarHidden:_controlsHidden withAnimation:UIStatusBarAnimationFade];
 }
 
+- (void)resetIdleTimer
+{
+    if (!_idleTimer)
+        _idleTimer = [NSTimer scheduledTimerWithTimeInterval:2.
+                                                      target:self
+                                                    selector:@selector(idleTimerExceeded)
+                                                    userInfo:nil
+                                                     repeats:NO];
+    else {
+        if (fabs([_idleTimer.fireDate timeIntervalSinceNow]) < 2.)
+            [_idleTimer setFireDate:[NSDate dateWithTimeIntervalSinceNow:2.]];
+    }
+}
+
+- (void)idleTimerExceeded
+{
+    _idleTimer = nil;
+    if (!_controlsHidden)
+        [self toogleControlsVisible];
+}
+
+- (UIResponder *)nextResponder
+{
+    [self resetIdleTimer];
+    return [super nextResponder];
+}
+
 #pragma mark - controls
 
 - (IBAction)closePlayback:(id)sender
@@ -157,6 +186,7 @@
 - (IBAction)positionSliderAction:(UISlider *)sender
 {
     _mediaPlayer.position = sender.value;
+    [self resetIdleTimer];
 }
 
 - (void)mediaPlayerTimeChanged:(NSNotification *)aNotification {
@@ -269,6 +299,7 @@
         _mediaPlayer.gamma = self.gammaSlider.value = 1.;
     } else
         APLog(@"unknown sender for videoFilterSliderAction");
+    [self resetIdleTimer];
 }
 
 #pragma mark - app multi tasking