Implemented fading up from pause, same key (shift-command-p) as fade down from play. Will clean code and move all audio components into the audioPlayer tomorrow, to fix the event* function names and consolidate all audio related methods.

This commit is contained in:
areff 2008-02-16 16:30:18 +00:00
parent abf2da423d
commit 6a915b458b
2 changed files with 44 additions and 7 deletions

View file

@ -66,7 +66,8 @@
- (IBAction)fadeOut:(id)sender withTime:(double)time; - (IBAction)fadeOut:(id)sender withTime:(double)time;
- (void)initDefaults; - (void)initDefaults;
- (void)audioFader:(NSTimer *)audioTimer; - (void)audioFadeDown:(NSTimer *)audioTimer;
- (void)audioFadeUp:(NSTimer *)audioTimer;
- (void)updateTimeField:(double)pos; - (void)updateTimeField:(double)pos;

View file

@ -98,6 +98,7 @@ double linearToLogarithmic(double linear)
- (IBAction)pause:(id)sender - (IBAction)pause:(id)sender
{ {
[audioPlayer pause]; [audioPlayer pause];
playbackStatus = kCogStatusPaused;
if([[NSUserDefaults standardUserDefaults] boolForKey:@"enableAudioScrobbler"]) { if([[NSUserDefaults standardUserDefaults] boolForKey:@"enableAudioScrobbler"]) {
[scrobbler pause]; [scrobbler pause];
@ -290,7 +291,7 @@ double linearToLogarithmic(double linear)
/* selector for NSTimer - gets passed the Timer object itself /* selector for NSTimer - gets passed the Timer object itself
and the appropriate userInfo, which in this case is an NSNumber and the appropriate userInfo, which in this case is an NSNumber
containing the current volume before we start fading. */ containing the current volume before we start fading. */
- (void)audioFader:(NSTimer *)audioTimer - (void)audioFadeDown:(NSTimer *)audioTimer
{ {
double volume = [audioPlayer volume]; double volume = [audioPlayer volume];
double originalVolume = [[audioTimer userInfo] doubleValue]; double originalVolume = [[audioTimer userInfo] doubleValue];
@ -311,21 +312,56 @@ double linearToLogarithmic(double linear)
} }
- (void)audioFadeUp:(NSTimer *)audioTimer
{
double volume = [audioPlayer volume];
double originalVolume = [[audioTimer userInfo] doubleValue];
NSLog(@"VOLUME IS %lf", volume);
if (volume < originalVolume)
{
if ((volume + 5) > originalVolume)
[self volumeUp:(originalVolume - volume)];
else
[self volumeUp:5];
}
else // volume is at 0 or below, we are ready to release the timer and move on
{
[volumeSlider setDoubleValue: logarithmicToLinear(originalVolume)];
[audioTimer invalidate];
}
}
- (IBAction)fadeOut:(id)sender withTime:(double)time - (IBAction)fadeOut:(id)sender withTime:(double)time
{ {
// we can not allow multiple fade timers to be registered // we can not allow multiple fade timers to be registered
if (playbackStatus != kCogStatusPlaying) if (playbackStatus == kCogStatusFading)
return; return;
NSNumber *originalVolume = [NSNumber numberWithDouble: [audioPlayer volume]]; NSNumber *originalVolume = [NSNumber numberWithDouble: [audioPlayer volume]];
NSTimer *fadeTimer; NSTimer *fadeTimer;
playbackStatus = kCogStatusFading;
if (playbackStatus == kCogStatusPlaying)
fadeTimer = [NSTimer scheduledTimerWithTimeInterval:time fadeTimer = [NSTimer scheduledTimerWithTimeInterval:time
target:self target:self
selector:@selector(audioFader:) selector:@selector(audioFadeDown:)
userInfo:originalVolume userInfo:originalVolume
repeats:YES]; repeats:YES];
else
{
[audioPlayer setVolume:0];
fadeTimer = [NSTimer scheduledTimerWithTimeInterval:time
target:self
selector:@selector(audioFadeUp:)
userInfo:originalVolume
repeats:YES];
[self pauseResume:self];
}
playbackStatus = kCogStatusFading;
} }
- (IBAction)skipToNextAlbum:(id)sender - (IBAction)skipToNextAlbum:(id)sender