From dff22f33ea7538c16c0ebc99136745ef042576b9 Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Sun, 1 Jan 2012 18:43:05 -0800 Subject: [PATCH] provide a shortcut for the currently playing podcast, if any --- 5by5Browser.xcodeproj/project.pbxproj | 4 + .../UserInterfaceState.xcuserstate | Bin 49248 -> 49803 bytes 5by5Browser/FiveByFive.h | 1 + 5by5Browser/FiveByFive.m | 8 ++ 5by5Browser/SSAppDelegate.m | 20 ++-- 5by5Browser/SSMasterViewController.h | 5 + 5by5Browser/SSMasterViewController.m | 87 +++++++++++++++--- 5by5Browser/Show.h | 8 +- 5by5Browser/Show.m | 19 ++-- 9 files changed, 126 insertions(+), 26 deletions(-) diff --git a/5by5Browser.xcodeproj/project.pbxproj b/5by5Browser.xcodeproj/project.pbxproj index d5fe9de..7f41974 100644 --- a/5by5Browser.xcodeproj/project.pbxproj +++ b/5by5Browser.xcodeproj/project.pbxproj @@ -47,6 +47,7 @@ 7B730305149D6714003547E5 /* MWFeedParser_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B7302FE149D6714003547E5 /* MWFeedParser_Private.h */; }; 7B730306149D6714003547E5 /* MWFeedParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B7302FF149D6714003547E5 /* MWFeedParser.h */; }; 7B730307149D6714003547E5 /* MWFeedParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B730300149D6714003547E5 /* MWFeedParser.m */; }; + 7B81722014B137D6003EC770 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B81721F14B137D6003EC770 /* MediaPlayer.framework */; }; 7B868946149D593C00F3A2C6 /* Episode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B868945149D593C00F3A2C6 /* Episode.m */; }; 7B86894B149D5C1000F3A2C6 /* ShowViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B868949149D5C0F00F3A2C6 /* ShowViewController.m */; }; 7B868951149D5C6F00F3A2C6 /* ShowViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7B86894D149D5C6F00F3A2C6 /* ShowViewController_iPad.xib */; }; @@ -108,6 +109,7 @@ 7B7302FE149D6714003547E5 /* MWFeedParser_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWFeedParser_Private.h; sourceTree = ""; }; 7B7302FF149D6714003547E5 /* MWFeedParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWFeedParser.h; sourceTree = ""; }; 7B730300149D6714003547E5 /* MWFeedParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWFeedParser.m; sourceTree = ""; }; + 7B81721F14B137D6003EC770 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; 7B868944149D593C00F3A2C6 /* Episode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Episode.h; sourceTree = ""; }; 7B868945149D593C00F3A2C6 /* Episode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Episode.m; sourceTree = ""; }; 7B868948149D5C0F00F3A2C6 /* ShowViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShowViewController.h; sourceTree = ""; }; @@ -128,6 +130,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 7B81722014B137D6003EC770 /* MediaPlayer.framework in Frameworks */, 7B4CADE9149FE797007E7941 /* Security.framework in Frameworks */, 7B1A6ECF149D140600FC5105 /* UIKit.framework in Frameworks */, 7B1A6ED1149D140600FC5105 /* Foundation.framework in Frameworks */, @@ -160,6 +163,7 @@ 7B1A6ECD149D140600FC5105 /* Frameworks */ = { isa = PBXGroup; children = ( + 7B81721F14B137D6003EC770 /* MediaPlayer.framework */, 7B4CADE8149FE797007E7941 /* Security.framework */, 7B1A6ECE149D140600FC5105 /* UIKit.framework */, 7B1A6ED0149D140600FC5105 /* Foundation.framework */, diff --git a/5by5Browser.xcodeproj/project.xcworkspace/xcuserdata/sjs.xcuserdatad/UserInterfaceState.xcuserstate b/5by5Browser.xcodeproj/project.xcworkspace/xcuserdata/sjs.xcuserdatad/UserInterfaceState.xcuserstate index 620947aa5750f7cc50f51da850d27af98eb4eccf..539852130a87318c5aa613082047b7ef5aeeec24 100644 GIT binary patch literal 49803 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 DBRf7h literal 49248 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 diff --git a/5by5Browser/FiveByFive.h b/5by5Browser/FiveByFive.h index 5ea8615..6dcf4d3 100644 --- a/5by5Browser/FiveByFive.h +++ b/5by5Browser/FiveByFive.h @@ -17,5 +17,6 @@ - (id) initWithBaseURL: (NSString *)baseURL; - (void) addShow: (Show *)show; +- (Show *) showWithName: (NSString *)name; @end diff --git a/5by5Browser/FiveByFive.m b/5by5Browser/FiveByFive.m index 54fdb98..82b9fd2 100644 --- a/5by5Browser/FiveByFive.m +++ b/5by5Browser/FiveByFive.m @@ -30,4 +30,12 @@ [self.shows addObject: show]; } +- (Show *) showWithName: (NSString *)name +{ + for (Show *show in self.shows) { + if ([show.name isEqualToString: name]) return show; + } + return nil; +} + @end diff --git a/5by5Browser/SSAppDelegate.m b/5by5Browser/SSAppDelegate.m index 60bbed7..14369ea 100644 --- a/5by5Browser/SSAppDelegate.m +++ b/5by5Browser/SSAppDelegate.m @@ -24,12 +24,12 @@ self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; FiveByFive *fiveByFive = [[FiveByFive alloc] initWithBaseURL: @"http:/feeds.feedburner.com/"]; - [fiveByFive addShow: [Show showWithName: @"Back to Work" path: @"back2work"]]; - [fiveByFive addShow: [Show showWithName: @"Build and Analyze" path: @"buildanalyze"]]; - [fiveByFive addShow: [Show showWithName: @"The Critical Path" path: @"criticalpath"]]; - [fiveByFive addShow: [Show showWithName: @"Geek Friday" path: @"GeekFriday"]]; - [fiveByFive addShow: [Show showWithName: @"Hypercritical" path: @"hypercritical"]]; - [fiveByFive addShow: [Show showWithName: @"The Talk Show" path: @"thetalkshow"]]; + [fiveByFive addShow: [Show showWithName: @"Back to Work" feedPath: @"back2work" webPath: @"b2w"]]; + [fiveByFive addShow: [Show showWithName: @"Build and Analyze" feedPath: @"buildanalyze" webPath: @"buildanalyze"]]; + [fiveByFive addShow: [Show showWithName: @"The Critical Path" feedPath: @"criticalpath" webPath: @"criticalpath"]]; + [fiveByFive addShow: [Show showWithName: @"Geek Friday" feedPath: @"GeekFriday" webPath: @"geekfriday"]]; + [fiveByFive addShow: [Show showWithName: @"Hypercritical" feedPath: @"hypercritical" webPath: @"hypercritical"]]; + [fiveByFive addShow: [Show showWithName: @"The Talk Show" feedPath: @"thetalkshow" webPath: @"talkshow"]]; // Override point for customization after application launch. if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { @@ -90,6 +90,14 @@ - (void)applicationDidBecomeActive:(UIApplication *)application { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + SSMasterViewController *masterViewController; + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { + masterViewController = [[self.navigationController viewControllers] objectAtIndex: 0]; + } + else { + masterViewController = [[[[self.splitViewController viewControllers] objectAtIndex: 0] viewControllers] objectAtIndex: 0]; + } + [masterViewController checkNowPlaying]; } - (void)applicationWillTerminate:(UIApplication *)application diff --git a/5by5Browser/SSMasterViewController.h b/5by5Browser/SSMasterViewController.h index e4d98be..fc81057 100644 --- a/5by5Browser/SSMasterViewController.h +++ b/5by5Browser/SSMasterViewController.h @@ -15,5 +15,10 @@ @property (nonatomic, retain) FiveByFive *fiveByFive; @property (nonatomic, retain) ShowViewController *showViewController; +@property (nonatomic, retain) Show *currentShow; +@property (nonatomic, retain) NSString *currentEpisodeNumber; +@property (nonatomic, retain) NSString *currentEpisodeName; + +- (void) checkNowPlaying; @end diff --git a/5by5Browser/SSMasterViewController.m b/5by5Browser/SSMasterViewController.m index 4ee6da3..6b52489 100644 --- a/5by5Browser/SSMasterViewController.m +++ b/5by5Browser/SSMasterViewController.m @@ -6,13 +6,18 @@ // Copyright (c) 2011 Guru Logic. All rights reserved. // +#import #import "SSMasterViewController.h" #import "Show.h" +#import "NSString+marshmallows.h" @implementation SSMasterViewController @synthesize showViewController = _showViewController; @synthesize fiveByFive = _fiveByFive; +@synthesize currentShow = _currentShow; +@synthesize currentEpisodeNumber = _currentEpisodeNumber; +@synthesize currentEpisodeName = _currentEpisodeName; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { @@ -25,7 +30,7 @@ } return self; } - + - (void) viewWillAppear: (BOOL)animated { [super viewWillAppear: animated]; @@ -35,6 +40,8 @@ cell.accessoryView = nil; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } + + [self checkNowPlaying]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation @@ -46,6 +53,30 @@ } } +- (void) checkNowPlaying +{ + // Determine of the current playing track is a known show + MPMediaItem *song = [[MPMusicPlayerController iPodMusicPlayer] nowPlayingItem]; + if (song) { + NSString *title = [song valueForProperty: MPMediaItemPropertyTitle]; + self.currentEpisodeNumber = [title firstMatch: @"\\d+"]; + self.currentEpisodeName = [title substringFromIndex: [title rangeOfString: @": "].location + 2]; + NSString *showName = [song valueForProperty: MPMediaItemPropertyAlbumTitle]; + self.currentShow = [self.fiveByFive showWithName: showName]; + if (self.currentShow) { + NSLog(@"show: %@, episode: %@, name: %@", showName, self.currentEpisodeNumber, self.currentEpisodeName); + NSLog(@"show url: %@", [self.currentShow webURLForEpisodeNumber: self.currentEpisodeNumber]); + } + else { + NSLog(@"no show named %@", showName); + } + } + else { + NSLog(@"no song is currently playing"); + } + [self.tableView reloadData]; +} + - (void) setFiveByFive: (FiveByFive *)fiveByFive { _fiveByFive = fiveByFive; @@ -56,12 +87,25 @@ - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; + return self.currentShow ? 2 : 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return self.fiveByFive.shows.count; + if (self.currentShow && section == 0) { + return 1; + } + else { + return self.fiveByFive.shows.count; + } +} + +- (NSString *) tableView: (UITableView *)tableView titleForHeaderInSection: (NSInteger)section +{ + if (self.currentShow && section == 0) { + return @"Now Playing"; + } + return @"Shows"; } // Customize the appearance of table view cells. @@ -71,23 +115,44 @@ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - Show *show = [self.fiveByFive.shows objectAtIndex: indexPath.row]; - show.delegate = self; - cell.textLabel.text = show.name; + if (self.currentShow && indexPath.section == 0) { + self.currentShow.delegate = self; + cell.textLabel.text = self.currentEpisodeName; + cell.detailTextLabel.text = [NSString stringWithFormat: @"%@ %@", self.currentShow.name, self.currentEpisodeNumber]; + } + else { + Show *show = [self.fiveByFive.shows objectAtIndex: indexPath.row]; + show.delegate = self; + cell.textLabel.text = show.name; + if (show.episodes.count > 0) { + cell.detailTextLabel.text = [NSString stringWithFormat: @"%d episodes", show.episodes.count]; + } + else { + cell.detailTextLabel.text = nil; + } + } return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [[self.fiveByFive.shows objectAtIndex: indexPath.row] getEpisodes]; - UIActivityIndicatorView *indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhite]; - [indicatorView startAnimating]; - [tableView cellForRowAtIndexPath: indexPath].accessoryView = indicatorView; + if (self.currentShow && indexPath.section == 0) { + NSURL *url = [NSURL URLWithString: [self.currentShow webURLForEpisodeNumber: self.currentEpisodeNumber]]; + Episode *episode = [Episode episodeWithShow: self.currentShow name: self.currentEpisodeName number: self.currentEpisodeNumber url: url]; + self.showViewController.detailViewController.episode = episode; + [self.navigationController pushViewController: self.showViewController.detailViewController animated: YES]; + } + else { + [[self.fiveByFive.shows objectAtIndex: indexPath.row] getEpisodes]; + UIActivityIndicatorView *indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhite]; + [indicatorView startAnimating]; + [tableView cellForRowAtIndexPath: indexPath].accessoryView = indicatorView; + } } - (void) gotEpisodesForShow: (Show *)show diff --git a/5by5Browser/Show.h b/5by5Browser/Show.h index bcb3381..6bd328f 100644 --- a/5by5Browser/Show.h +++ b/5by5Browser/Show.h @@ -22,12 +22,14 @@ @property (nonatomic, assign) id delegate; @property (nonatomic, retain) FiveByFive *fiveByFive; @property (nonatomic, retain) NSString *name; -@property (nonatomic, retain) NSString *path; +@property (nonatomic, retain) NSString *feedPath; +@property (nonatomic, retain) NSString *webPath; @property (nonatomic, retain) NSMutableArray *episodes; -+ (id) showWithName: (NSString *)name path: (NSString *)path; -- (id) initWithName: (NSString *)name path: (NSString *)path; ++ (id) showWithName: (NSString *)name feedPath: (NSString *)feedPath webPath: (NSString *)webPath; +- (id) initWithName: (NSString *)name feedPath: (NSString *)feedPath webPath: (NSString *)webPath; - (void) addEpisode: (Episode *)episode; - (void) getEpisodes; +- (NSString *) webURLForEpisodeNumber: (NSString *)episodeNumber; @end diff --git a/5by5Browser/Show.m b/5by5Browser/Show.m index 3dfb145..77e704d 100644 --- a/5by5Browser/Show.m +++ b/5by5Browser/Show.m @@ -20,20 +20,22 @@ @synthesize delegate = _delegate; @synthesize fiveByFive = _fiveByFive; @synthesize name = _name; -@synthesize path = _path; +@synthesize feedPath = _feedPath; +@synthesize webPath = _webPath; @synthesize episodes = _episodes; -+ (id) showWithName: (NSString *)name path: (NSString *)path ++ (id) showWithName: (NSString *)name feedPath: (NSString *)feedPath webPath: (NSString *)webPath { - return [[self alloc] initWithName: name path: path]; + return [[self alloc] initWithName: name feedPath: feedPath webPath: webPath]; } -- (id) initWithName: (NSString *)name path: (NSString *)path +- (id) initWithName: (NSString *)name feedPath: (NSString *)feedPath webPath: (NSString *)webPath { self = [super init]; if (self) { self.name = name; - self.path = path; + self.feedPath = feedPath; + self.webPath = webPath; self.episodes = [NSMutableArray array]; } return self; @@ -60,7 +62,12 @@ - (NSURL *) feedURL { - return [NSURL URLWithString: [[self.fiveByFive baseURL] stringByAppendingPathComponent: self.path]]; + return [NSURL URLWithString: [[self.fiveByFive baseURL] stringByAppendingPathComponent: self.feedPath]]; +} + +- (NSString *) webURLForEpisodeNumber: (NSString *)episodeNumber +{ + return [NSString stringWithFormat: @"http://5by5.tv/%@/%@", self.webPath, episodeNumber]; }