Merge lp:~urbanape/ubuntuone-ios-client/fix-auto-next into lp:ubuntuone-ios-client

Proposed by Zachery Bir
Status: Merged
Approved by: Zachery Bir
Approved revision: 240
Merged at revision: 193
Proposed branch: lp:~urbanape/ubuntuone-ios-client/fix-auto-next
Merge into: lp:ubuntuone-ios-client
Diff against target: 368 lines (+56/-132)
10 files modified
musicstreaming/utilities/StreamingPlayer.m (+2/-2)
musicstreaming/view_controllers/AlbumListViewController.m (+4/-28)
musicstreaming/view_controllers/AlbumViewController.m (+0/-2)
musicstreaming/view_controllers/ArtistListViewController.m (+4/-27)
musicstreaming/view_controllers/ArtistViewController.m (+0/-2)
musicstreaming/view_controllers/PlaylistListViewController.m (+15/-38)
musicstreaming/view_controllers/PlaylistViewController.m (+0/-2)
musicstreaming/view_controllers/SongListViewController.m (+4/-27)
musicstreaming/view_controllers/SubsonicTableViewController.h (+4/-0)
musicstreaming/view_controllers/SubsonicTableViewController.m (+23/-4)
To merge this branch: bzr merge lp:~urbanape/ubuntuone-ios-client/fix-auto-next
Reviewer Review Type Date Requested Status
Jason Foreman (community) Approve
Review via email: mp+64888@code.launchpad.net

Description of the change

This fixes a bug in the behavior where we advance tracks at the end of a loop.

To post a comment you must log in.
Revision history for this message
Jason Foreman (threeve) wrote :

Looks good!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'musicstreaming/utilities/StreamingPlayer.m'
--- musicstreaming/utilities/StreamingPlayer.m 2011-05-13 08:07:05 +0000
+++ musicstreaming/utilities/StreamingPlayer.m 2011-06-16 19:18:32 +0000
@@ -253,7 +253,7 @@
253 } 253 }
254 else254 else
255 {255 {
256 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setPlayButtonImage) name:@"setPlayButtonImage" object:nil];256 self.isPlaying = NO;
257 [self destroyStreamer];257 [self destroyStreamer];
258 }258 }
259 } 259 }
@@ -294,7 +294,7 @@
294 294
295 playlist = self.isShuffle ? [NSArray arrayWithArray:shufflePlaylist] : [NSArray arrayWithArray:currentPlaylist];295 playlist = self.isShuffle ? [NSArray arrayWithArray:shufflePlaylist] : [NSArray arrayWithArray:currentPlaylist];
296 296
297 currentSong = [playlist objectAtIndex:0];297 self.currentSong = [playlist objectAtIndex:0];
298 298
299 self.songUrl = [[Subsonic sharedSubsonic] getStreamingURLForSongId:self.currentSong.songId];299 self.songUrl = [[Subsonic sharedSubsonic] getStreamingURLForSongId:self.currentSong.songId];
300 300
301301
=== modified file 'musicstreaming/view_controllers/AlbumListViewController.m'
--- musicstreaming/view_controllers/AlbumListViewController.m 2011-06-15 00:46:43 +0000
+++ musicstreaming/view_controllers/AlbumListViewController.m 2011-06-16 19:18:32 +0000
@@ -33,6 +33,10 @@
33+ (UINavigationController *)navigableViewController33+ (UINavigationController *)navigableViewController
34{34{
35 AlbumListViewController *albumListViewController = [[[AlbumListViewController alloc] initWithTitle:NSLocalizedString(@"Albums", @"")] autorelease];35 AlbumListViewController *albumListViewController = [[[AlbumListViewController alloc] initWithTitle:NSLocalizedString(@"Albums", @"")] autorelease];
36 AlbumListParser *parser = [[AlbumListParser alloc] init];
37 albumListViewController.parserDelegate = parser;
38 albumListViewController.viewName = @"getAlbums.view";
39
36 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:albumListViewController] autorelease];40 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:albumListViewController] autorelease];
37 nav.navigationBar.barStyle = UIBarStyleBlack;41 nav.navigationBar.barStyle = UIBarStyleBlack;
38 nav.tabBarItem.image = [UIImage imageNamed:@"albums"];42 nav.tabBarItem.image = [UIImage imageNamed:@"albums"];
@@ -95,34 +99,6 @@
95}99}
96100
97101
98- (void)beginLoadingRemoteData:(NSString*)force
99{
100 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
101
102 NSURL *url = [[Subsonic sharedSubsonic] getBaseURL:@"getAlbums.view"];
103 NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
104
105 AlbumListParser *parser = [[AlbumListParser alloc] init];
106 [xmlParser setDelegate:parser];
107
108 if (![xmlParser parse])
109 {
110 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
111 [xmlParser release];
112 [parser release];
113 [pool release];
114 return;
115 }
116
117 [xmlParser release];
118 [parser release];
119
120 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
121 [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
122 [pool release];
123}
124
125
126- (void)updateReachability:(Reachability*)reachability;102- (void)updateReachability:(Reachability*)reachability;
127{103{
128 [super updateReachability:reachability];104 [super updateReachability:reachability];
129105
=== modified file 'musicstreaming/view_controllers/AlbumViewController.m'
--- musicstreaming/view_controllers/AlbumViewController.m 2011-06-15 00:46:43 +0000
+++ musicstreaming/view_controllers/AlbumViewController.m 2011-06-16 19:18:32 +0000
@@ -96,8 +96,6 @@
96 if (error)96 if (error)
97 {97 {
98 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:error waitUntilDone:NO];98 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:error waitUntilDone:NO];
99 [pool release];
100 return;
101 }99 }
102 100
103 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];101 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
104102
=== modified file 'musicstreaming/view_controllers/ArtistListViewController.m'
--- musicstreaming/view_controllers/ArtistListViewController.m 2011-06-15 00:46:43 +0000
+++ musicstreaming/view_controllers/ArtistListViewController.m 2011-06-16 19:18:32 +0000
@@ -44,6 +44,10 @@
44+ (UINavigationController *)navigableViewController44+ (UINavigationController *)navigableViewController
45{45{
46 ArtistListViewController *artistListViewController = [[[ArtistListViewController alloc] initWithTitle:NSLocalizedString(@"Artists", @"")] autorelease];46 ArtistListViewController *artistListViewController = [[[ArtistListViewController alloc] initWithTitle:NSLocalizedString(@"Artists", @"")] autorelease];
47 ArtistListParser *parser = [[ArtistListParser alloc] init];
48 artistListViewController.parserDelegate = parser;
49 artistListViewController.viewName = @"getIndexes.view";
50
47 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:artistListViewController] autorelease];51 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:artistListViewController] autorelease];
48 nav.navigationBar.barStyle = UIBarStyleBlack;52 nav.navigationBar.barStyle = UIBarStyleBlack;
49 nav.tabBarItem.image = [UIImage imageNamed:@"artists"];53 nav.tabBarItem.image = [UIImage imageNamed:@"artists"];
@@ -86,33 +90,6 @@
86 [self.tableView reloadData];90 [self.tableView reloadData];
87}91}
8892
89- (void)beginLoadingRemoteData:(NSString*)force
90{
91 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
92
93 NSURL *url = [[Subsonic sharedSubsonic] getBaseURL:@"getIndexes.view"];
94 NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
95
96 ArtistListParser *parser = [[ArtistListParser alloc] init];
97 [xmlParser setDelegate:parser];
98
99 if (![xmlParser parse])
100 {
101 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
102 [xmlParser release];
103 [parser release];
104 [pool release];
105 return;
106 }
107
108 [xmlParser release];
109 [parser release];
110
111 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
112 [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
113 [pool release];
114}
115
116- (void)updateReachability:(Reachability*)reachability;93- (void)updateReachability:(Reachability*)reachability;
117{94{
118 [super updateReachability:reachability];95 [super updateReachability:reachability];
11996
=== modified file 'musicstreaming/view_controllers/ArtistViewController.m'
--- musicstreaming/view_controllers/ArtistViewController.m 2011-06-16 16:52:07 +0000
+++ musicstreaming/view_controllers/ArtistViewController.m 2011-06-16 19:18:32 +0000
@@ -109,8 +109,6 @@
109 if (error)109 if (error)
110 {110 {
111 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:error waitUntilDone:NO];111 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:error waitUntilDone:NO];
112 [pool release];
113 return;
114 }112 }
115 113
116 [pool release];114 [pool release];
117115
=== modified file 'musicstreaming/view_controllers/PlaylistListViewController.m'
--- musicstreaming/view_controllers/PlaylistListViewController.m 2011-06-15 16:49:27 +0000
+++ musicstreaming/view_controllers/PlaylistListViewController.m 2011-06-16 19:18:32 +0000
@@ -30,6 +30,10 @@
30+ (UINavigationController *)navigableViewController30+ (UINavigationController *)navigableViewController
31{31{
32 PlaylistListViewController *playlistListViewController = [[[PlaylistListViewController alloc] initWithTitle:NSLocalizedString(@"Playlists", @"")] autorelease];32 PlaylistListViewController *playlistListViewController = [[[PlaylistListViewController alloc] initWithTitle:NSLocalizedString(@"Playlists", @"")] autorelease];
33 PlaylistListParser *parser = [[PlaylistListParser alloc] init];
34 playlistListViewController.parserDelegate = parser;
35 playlistListViewController.viewName = @"getPlaylists.view";
36
33 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:playlistListViewController] autorelease];37 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:playlistListViewController] autorelease];
34 nav.navigationBar.barStyle = UIBarStyleBlack;38 nav.navigationBar.barStyle = UIBarStyleBlack;
35 nav.tabBarItem.image = [UIImage imageNamed:@"playlists"];39 nav.tabBarItem.image = [UIImage imageNamed:@"playlists"];
@@ -42,17 +46,17 @@
42{46{
43 if ((self = [super initWithTitle:title]))47 if ((self = [super initWithTitle:title]))
44 {48 {
45 UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];49// UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
46 header.autoresizingMask = UIViewAutoresizingFlexibleWidth;50// header.autoresizingMask = UIViewAutoresizingFlexibleWidth;
47 51//
48 UIButton *createButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];52// UIButton *createButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
49 createButton.frame = CGRectMake(5, 5, 310, 30);53// createButton.frame = CGRectMake(5, 5, 310, 30);
50 [createButton setTitle:NSLocalizedString(@"Create new playlist", @"") forState:UIControlStateNormal];54// [createButton setTitle:NSLocalizedString(@"Create new playlist", @"") forState:UIControlStateNormal];
51 [createButton addTarget:self action:@selector(createNewPlaylist) forControlEvents:UIControlEventTouchUpInside];55// [createButton addTarget:self action:@selector(createNewPlaylist) forControlEvents:UIControlEventTouchUpInside];
52 [header addSubview:createButton];56// [header addSubview:createButton];
53 57//
54 self.tableView.tableHeaderView = header;58// self.tableView.tableHeaderView = header;
55 [header release];59// [header release];
56 }60 }
57 return self;61 return self;
58}62}
@@ -71,33 +75,6 @@
71 [self.tableView reloadData];75 [self.tableView reloadData];
72}76}
7377
74- (void)beginLoadingRemoteData:(NSString*)force
75{
76 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
77
78 NSURL *url = [[Subsonic sharedSubsonic] getBaseURL:@"getPlaylists.view"];
79 NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
80
81 PlaylistListParser *parser = [[PlaylistListParser alloc] init];
82 [xmlParser setDelegate:parser];
83
84 if (![xmlParser parse])
85 {
86 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
87 [xmlParser release];
88 [parser release];
89 [pool release];
90 return;
91 }
92
93 [xmlParser release];
94 [parser release];
95
96 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
97 [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
98 [pool release];
99}
100
101#pragma mark - UITableView78#pragma mark - UITableView
10279
103- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section80- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
10481
=== modified file 'musicstreaming/view_controllers/PlaylistViewController.m'
--- musicstreaming/view_controllers/PlaylistViewController.m 2011-06-15 16:49:27 +0000
+++ musicstreaming/view_controllers/PlaylistViewController.m 2011-06-16 19:18:32 +0000
@@ -98,8 +98,6 @@
98 if (error)98 if (error)
99 {99 {
100 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:error waitUntilDone:NO];100 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:error waitUntilDone:NO];
101 [pool release];
102 return;
103 }101 }
104 102
105 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];103 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
106104
=== modified file 'musicstreaming/view_controllers/SongListViewController.m'
--- musicstreaming/view_controllers/SongListViewController.m 2011-06-15 00:46:43 +0000
+++ musicstreaming/view_controllers/SongListViewController.m 2011-06-16 19:18:32 +0000
@@ -31,6 +31,10 @@
31+ (UINavigationController *)navigableViewController31+ (UINavigationController *)navigableViewController
32{32{
33 SongListViewController *songListViewController = [[[SongListViewController alloc] initWithTitle:NSLocalizedString(@"Songs", @"")] autorelease];33 SongListViewController *songListViewController = [[[SongListViewController alloc] initWithTitle:NSLocalizedString(@"Songs", @"")] autorelease];
34 SongListParser *parser = [[SongListParser alloc] init];
35 songListViewController.parserDelegate = parser;
36 songListViewController.viewName = @"getSongs.view";
37
34 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:songListViewController] autorelease];38 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:songListViewController] autorelease];
35 nav.navigationBar.barStyle = UIBarStyleBlack;39 nav.navigationBar.barStyle = UIBarStyleBlack;
36 nav.tabBarItem.image = [UIImage imageNamed:@"songs"];40 nav.tabBarItem.image = [UIImage imageNamed:@"songs"];
@@ -76,33 +80,6 @@
76 [self.tableView reloadData];80 [self.tableView reloadData];
77}81}
7882
79- (void)beginLoadingRemoteData:(NSString*)force
80{
81 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
82
83 NSURL *url = [[Subsonic sharedSubsonic] getBaseURL:@"getSongs.view"];
84 NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
85
86 SongListParser *parser = [[SongListParser alloc] init];
87 [xmlParser setDelegate:parser];
88
89 if (![xmlParser parse])
90 {
91 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
92 [xmlParser release];
93 [parser release];
94 [pool release];
95 return;
96 }
97
98 [xmlParser release];
99 [parser release];
100
101 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
102 [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
103 [pool release];
104}
105
106- (void)updateReachability:(Reachability *)reachability83- (void)updateReachability:(Reachability *)reachability
107{84{
108 [super updateReachability:reachability];85 [super updateReachability:reachability];
10986
=== modified file 'musicstreaming/view_controllers/SubsonicTableViewController.h'
--- musicstreaming/view_controllers/SubsonicTableViewController.h 2011-06-15 00:46:43 +0000
+++ musicstreaming/view_controllers/SubsonicTableViewController.h 2011-06-16 19:18:32 +0000
@@ -32,6 +32,8 @@
32 NSTimer *respondToRemoteTimer;32 NSTimer *respondToRemoteTimer;
33 NSMutableArray *tableData;33 NSMutableArray *tableData;
34 NSMutableArray *searchResults;34 NSMutableArray *searchResults;
35 id <NSXMLParserDelegate> parserDelegate;
36 NSString *viewName;
35 37
36@protected38@protected
37 BOOL canStream;39 BOOL canStream;
@@ -64,6 +66,8 @@
6466
65@property(nonatomic,retain) NSMutableArray *tableData;67@property(nonatomic,retain) NSMutableArray *tableData;
66@property(nonatomic,retain) NSMutableArray *searchResults;68@property(nonatomic,retain) NSMutableArray *searchResults;
69@property(nonatomic,assign) id<NSXMLParserDelegate> parserDelegate;
70@property(nonatomic,retain) NSString *viewName;
6771
68extern NSString * const NOTIF_reloadAccountCredentials;72extern NSString * const NOTIF_reloadAccountCredentials;
69extern NSString * const NOTIF_removeCachedContent;73extern NSString * const NOTIF_removeCachedContent;
7074
=== modified file 'musicstreaming/view_controllers/SubsonicTableViewController.m'
--- musicstreaming/view_controllers/SubsonicTableViewController.m 2011-06-16 17:56:08 +0000
+++ musicstreaming/view_controllers/SubsonicTableViewController.m 2011-06-16 19:18:32 +0000
@@ -35,6 +35,7 @@
3535
36@implementation SubsonicTableViewController36@implementation SubsonicTableViewController
37@synthesize tableData, searchResults;37@synthesize tableData, searchResults;
38@synthesize parserDelegate, viewName;
38@synthesize hasLoadedRemoteData;39@synthesize hasLoadedRemoteData;
3940
40#pragma mark - Initialization41#pragma mark - Initialization
@@ -50,7 +51,10 @@
50 self.title = title;51 self.title = title;
51 self.tableData = [NSMutableArray array];52 self.tableData = [NSMutableArray array];
52 self.searchResults = [NSMutableArray array];53 self.searchResults = [NSMutableArray array];
54 self.parserDelegate = nil;
55 self.viewName = nil;
53 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetTableData:) name:NOTIF_removeCachedContent object:nil];56 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetTableData:) name:NOTIF_removeCachedContent object:nil];
57
54 }58 }
55 return self;59 return self;
56}60}
@@ -270,10 +274,23 @@
270274
271- (void)beginLoadingRemoteData:(NSString*)force275- (void)beginLoadingRemoteData:(NSString*)force
272{276{
273 //Starts with an NSAutoreleasePool277 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
274 //Loads data either from CoreData or from an XML feed. If force == @"YES"278
275 //Release the pool279 NSURL *url = [[Subsonic sharedSubsonic] getBaseURL:self.viewName];
276 //Call finishLoadingData on the main thread.280 NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
281
282 [xmlParser setDelegate:self.parserDelegate];
283
284 if (![xmlParser parse])
285 {
286 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
287 }
288
289 [xmlParser release];
290
291 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
292 [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
293 [pool release];
277}294}
278295
279- (void)finishLoadingData296- (void)finishLoadingData
@@ -418,6 +435,8 @@
418{435{
419 [[NSNotificationCenter defaultCenter] removeObserver:self];436 [[NSNotificationCenter defaultCenter] removeObserver:self];
420 [hudView hide:NO];437 [hudView hide:NO];
438 RELEASE_SAFELY(parserDelegate);
439 RELEASE_SAFELY(viewName);
421 RELEASE_SAFELY(hudView);440 RELEASE_SAFELY(hudView);
422 RELEASE_SAFELY(tableData);441 RELEASE_SAFELY(tableData);
423 RELEASE_SAFELY(searchResults);442 RELEASE_SAFELY(searchResults);

Subscribers

People subscribed via source and target branches

to all changes: