Skip to content

Commit

Permalink
Player/Playlist converted to use notifications
Browse files Browse the repository at this point in the history
  • Loading branch information
tonywok committed Apr 9, 2012
1 parent 3bbc649 commit e5abf62
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 15 deletions.
22 changes: 12 additions & 10 deletions cocoa_spotify/SpotboxPlayer.m
Expand Up @@ -28,9 +28,10 @@ - (id) initWithDispatcher:(ZmqDispatch *)aDispatcher {


// Register for notifications // Register for notifications


[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reportTrackProgress:) name:@"reportTrackProgress" object:NULL]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reportTrackProgress:) name:@"didReceieveData" object:NULL];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playTrack:) name:@"play" object:NULL]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playTrack:) name:@"play" object:NULL];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pauseTrack:) name:@"pause" object:NULL]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pauseTrack:) name:@"pause" object:NULL];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(unpauseTrack:) name:@"unpause" object:NULL];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopTrack:) name:@"stop" object:NULL]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopTrack:) name:@"stop" object:NULL];
} }
return self; return self;
Expand All @@ -46,8 +47,7 @@ - (void) sendMessage:(NSString *)msg {
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([keyPath isEqualToString:@"playbackManager.currentTrack"]) { if ([keyPath isEqualToString:@"playbackManager.currentTrack"]) {
if ([change valueForKey:@"new"] == [NSNull null]) { if ([change valueForKey:@"new"] == [NSNull null]) {
NSLog(@"track ended"); [self sendMessage:@"spotbox:server::trackEnded"];
[self sendMessage:@"spotbox:server::track_ended"];
} }
} }
} }
Expand Down Expand Up @@ -77,19 +77,21 @@ - (void) pauseTrack:(NSNotification *) notification {
if ([playbackManager isPlaying]) { if ([playbackManager isPlaying]) {
[playbackManager setIsPlaying:NO]; [playbackManager setIsPlaying:NO];
[self sendMessage:@"spotbox:server::paused"]; [self sendMessage:@"spotbox:server::paused"];
} else { }
NSTimeInterval trackPosition = [playbackManager trackPosition]; }
[playbackManager seekToTrackPosition:trackPosition];
[playbackManager setIsPlaying:YES]; - (void) unpauseTrack:(NSNotification *) notification {
[self sendMessage:@"spotbox:server::unpaused"]; NSTimeInterval trackPosition = [playbackManager trackPosition];
} [playbackManager seekToTrackPosition:trackPosition];
[playbackManager setIsPlaying:YES];
[self sendMessage:@"spotbox:server::unpaused"];
} }


- (void) reportTrackProgress:(NSNotification *) notification { - (void) reportTrackProgress:(NSNotification *) notification {
if ([playbackManager isPlaying]) { if ([playbackManager isPlaying]) {
NSTimeInterval pos = [playbackManager trackPosition]; NSTimeInterval pos = [playbackManager trackPosition];
NSString *trackPosition = [[NSString alloc] initWithFormat:@"%d", (long)pos]; NSString *trackPosition = [[NSString alloc] initWithFormat:@"%d", (long)pos];
[self sendMessage:[NSString stringWithFormat:@"%@::%@", @"spotbox:server::track_progress", trackPosition]]; [self sendMessage:[NSString stringWithFormat:@"%@::%@", @"spotbox:server::trackProgress", trackPosition]];
} }
} }


Expand Down
8 changes: 4 additions & 4 deletions cocoa_spotify/SpotboxPlaylist.m
Expand Up @@ -17,7 +17,7 @@ - (id) initWithDispatcher:(ZmqDispatch *)aDispatcher {
if (self) { if (self) {
self.dispatcher = aDispatcher; self.dispatcher = aDispatcher;
[[NSNotificationCenter defaultCenter] addObserver:self [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(load_playlist:) selector:@selector(loadPlaylist:)
name:@"loadPlaylist" name:@"loadPlaylist"
object:nil]; object:nil];
} }
Expand All @@ -38,8 +38,8 @@ - (void) reportPlaylistTracks:(SPPlaylist *)playlist {
NSString *playlistUrlStr = [[playlist spotifyURL] absoluteString]; NSString *playlistUrlStr = [[playlist spotifyURL] absoluteString];
NSString *playlistName = [playlist name]; NSString *playlistName = [playlist name];
NSString *tracksStr = [trackUrls componentsJoinedByString:@","]; NSString *tracksStr = [trackUrls componentsJoinedByString:@","];
NSString *msg = [NSString stringWithFormat:@"spotbox:server::playlist_loaded::%@,%@,%@", playlistUrlStr, playlistName, tracksStr]; NSString *msg = [NSString stringWithFormat:@"spotbox:server::playlistLoaded::%@,%@,%@", playlistUrlStr, playlistName, tracksStr];

[[dispatcher pub] sendData:[msg dataUsingEncoding:NSUTF8StringEncoding] withFlags:ZMQ_NOBLOCK]; [[dispatcher pub] sendData:[msg dataUsingEncoding:NSUTF8StringEncoding] withFlags:ZMQ_NOBLOCK];
} }


Expand All @@ -58,7 +58,7 @@ - (void) loadTracksFromPlaylist:(NSURL *)playlistUrl {


//**************** ZmqDispatch Notifications *********************// //**************** ZmqDispatch Notifications *********************//


- (void) load_playlist:(NSNotification *)notification { - (void) loadPlaylist:(NSNotification *)notification {
NSString *playlistStr = [[[notification userInfo] valueForKey:@"args"] objectAtIndex:0]; NSString *playlistStr = [[[notification userInfo] valueForKey:@"args"] objectAtIndex:0];
NSURL *playlistUrl = [[NSURL alloc] initWithString:playlistStr]; NSURL *playlistUrl = [[NSURL alloc] initWithString:playlistStr];


Expand Down
2 changes: 1 addition & 1 deletion cocoa_spotify/ZmqDispatch.m
Expand Up @@ -54,7 +54,7 @@ - (NSDictionary *) parseMessage:(NSString *)zmqMessage {
- (void) receiveData:(NSTimer *)timer { - (void) receiveData:(NSTimer *)timer {
NSData *data = [sub receiveDataWithFlags:ZMQ_NOBLOCK]; NSData *data = [sub receiveDataWithFlags:ZMQ_NOBLOCK];


[[NSNotificationCenter defaultCenter] postNotificationName:@"didReceiveData" object:self]; [[NSNotificationCenter defaultCenter] postNotificationName:@"didReceieveData" object:self];


if (data) { if (data) {
NSString *msg = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding]; NSString *msg = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding];
Expand Down

0 comments on commit e5abf62

Please sign in to comment.