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
1=== modified file 'musicstreaming/utilities/StreamingPlayer.m'
2--- musicstreaming/utilities/StreamingPlayer.m 2011-05-13 08:07:05 +0000
3+++ musicstreaming/utilities/StreamingPlayer.m 2011-06-16 19:18:32 +0000
4@@ -253,7 +253,7 @@
5 }
6 else
7 {
8- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setPlayButtonImage) name:@"setPlayButtonImage" object:nil];
9+ self.isPlaying = NO;
10 [self destroyStreamer];
11 }
12 }
13@@ -294,7 +294,7 @@
14
15 playlist = self.isShuffle ? [NSArray arrayWithArray:shufflePlaylist] : [NSArray arrayWithArray:currentPlaylist];
16
17- currentSong = [playlist objectAtIndex:0];
18+ self.currentSong = [playlist objectAtIndex:0];
19
20 self.songUrl = [[Subsonic sharedSubsonic] getStreamingURLForSongId:self.currentSong.songId];
21
22
23=== modified file 'musicstreaming/view_controllers/AlbumListViewController.m'
24--- musicstreaming/view_controllers/AlbumListViewController.m 2011-06-15 00:46:43 +0000
25+++ musicstreaming/view_controllers/AlbumListViewController.m 2011-06-16 19:18:32 +0000
26@@ -33,6 +33,10 @@
27 + (UINavigationController *)navigableViewController
28 {
29 AlbumListViewController *albumListViewController = [[[AlbumListViewController alloc] initWithTitle:NSLocalizedString(@"Albums", @"")] autorelease];
30+ AlbumListParser *parser = [[AlbumListParser alloc] init];
31+ albumListViewController.parserDelegate = parser;
32+ albumListViewController.viewName = @"getAlbums.view";
33+
34 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:albumListViewController] autorelease];
35 nav.navigationBar.barStyle = UIBarStyleBlack;
36 nav.tabBarItem.image = [UIImage imageNamed:@"albums"];
37@@ -95,34 +99,6 @@
38 }
39
40
41-- (void)beginLoadingRemoteData:(NSString*)force
42-{
43- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
44-
45- NSURL *url = [[Subsonic sharedSubsonic] getBaseURL:@"getAlbums.view"];
46- NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
47-
48- AlbumListParser *parser = [[AlbumListParser alloc] init];
49- [xmlParser setDelegate:parser];
50-
51- if (![xmlParser parse])
52- {
53- [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
54- [xmlParser release];
55- [parser release];
56- [pool release];
57- return;
58- }
59-
60- [xmlParser release];
61- [parser release];
62-
63- [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
64- [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
65- [pool release];
66-}
67-
68-
69 - (void)updateReachability:(Reachability*)reachability;
70 {
71 [super updateReachability:reachability];
72
73=== modified file 'musicstreaming/view_controllers/AlbumViewController.m'
74--- musicstreaming/view_controllers/AlbumViewController.m 2011-06-15 00:46:43 +0000
75+++ musicstreaming/view_controllers/AlbumViewController.m 2011-06-16 19:18:32 +0000
76@@ -96,8 +96,6 @@
77 if (error)
78 {
79 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:error waitUntilDone:NO];
80- [pool release];
81- return;
82 }
83
84 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
85
86=== modified file 'musicstreaming/view_controllers/ArtistListViewController.m'
87--- musicstreaming/view_controllers/ArtistListViewController.m 2011-06-15 00:46:43 +0000
88+++ musicstreaming/view_controllers/ArtistListViewController.m 2011-06-16 19:18:32 +0000
89@@ -44,6 +44,10 @@
90 + (UINavigationController *)navigableViewController
91 {
92 ArtistListViewController *artistListViewController = [[[ArtistListViewController alloc] initWithTitle:NSLocalizedString(@"Artists", @"")] autorelease];
93+ ArtistListParser *parser = [[ArtistListParser alloc] init];
94+ artistListViewController.parserDelegate = parser;
95+ artistListViewController.viewName = @"getIndexes.view";
96+
97 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:artistListViewController] autorelease];
98 nav.navigationBar.barStyle = UIBarStyleBlack;
99 nav.tabBarItem.image = [UIImage imageNamed:@"artists"];
100@@ -86,33 +90,6 @@
101 [self.tableView reloadData];
102 }
103
104-- (void)beginLoadingRemoteData:(NSString*)force
105-{
106- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
107-
108- NSURL *url = [[Subsonic sharedSubsonic] getBaseURL:@"getIndexes.view"];
109- NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
110-
111- ArtistListParser *parser = [[ArtistListParser alloc] init];
112- [xmlParser setDelegate:parser];
113-
114- if (![xmlParser parse])
115- {
116- [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
117- [xmlParser release];
118- [parser release];
119- [pool release];
120- return;
121- }
122-
123- [xmlParser release];
124- [parser release];
125-
126- [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
127- [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
128- [pool release];
129-}
130-
131 - (void)updateReachability:(Reachability*)reachability;
132 {
133 [super updateReachability:reachability];
134
135=== modified file 'musicstreaming/view_controllers/ArtistViewController.m'
136--- musicstreaming/view_controllers/ArtistViewController.m 2011-06-16 16:52:07 +0000
137+++ musicstreaming/view_controllers/ArtistViewController.m 2011-06-16 19:18:32 +0000
138@@ -109,8 +109,6 @@
139 if (error)
140 {
141 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:error waitUntilDone:NO];
142- [pool release];
143- return;
144 }
145
146 [pool release];
147
148=== modified file 'musicstreaming/view_controllers/PlaylistListViewController.m'
149--- musicstreaming/view_controllers/PlaylistListViewController.m 2011-06-15 16:49:27 +0000
150+++ musicstreaming/view_controllers/PlaylistListViewController.m 2011-06-16 19:18:32 +0000
151@@ -30,6 +30,10 @@
152 + (UINavigationController *)navigableViewController
153 {
154 PlaylistListViewController *playlistListViewController = [[[PlaylistListViewController alloc] initWithTitle:NSLocalizedString(@"Playlists", @"")] autorelease];
155+ PlaylistListParser *parser = [[PlaylistListParser alloc] init];
156+ playlistListViewController.parserDelegate = parser;
157+ playlistListViewController.viewName = @"getPlaylists.view";
158+
159 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:playlistListViewController] autorelease];
160 nav.navigationBar.barStyle = UIBarStyleBlack;
161 nav.tabBarItem.image = [UIImage imageNamed:@"playlists"];
162@@ -42,17 +46,17 @@
163 {
164 if ((self = [super initWithTitle:title]))
165 {
166- UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
167- header.autoresizingMask = UIViewAutoresizingFlexibleWidth;
168-
169- UIButton *createButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
170- createButton.frame = CGRectMake(5, 5, 310, 30);
171- [createButton setTitle:NSLocalizedString(@"Create new playlist", @"") forState:UIControlStateNormal];
172- [createButton addTarget:self action:@selector(createNewPlaylist) forControlEvents:UIControlEventTouchUpInside];
173- [header addSubview:createButton];
174-
175- self.tableView.tableHeaderView = header;
176- [header release];
177+// UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
178+// header.autoresizingMask = UIViewAutoresizingFlexibleWidth;
179+//
180+// UIButton *createButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
181+// createButton.frame = CGRectMake(5, 5, 310, 30);
182+// [createButton setTitle:NSLocalizedString(@"Create new playlist", @"") forState:UIControlStateNormal];
183+// [createButton addTarget:self action:@selector(createNewPlaylist) forControlEvents:UIControlEventTouchUpInside];
184+// [header addSubview:createButton];
185+//
186+// self.tableView.tableHeaderView = header;
187+// [header release];
188 }
189 return self;
190 }
191@@ -71,33 +75,6 @@
192 [self.tableView reloadData];
193 }
194
195-- (void)beginLoadingRemoteData:(NSString*)force
196-{
197- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
198-
199- NSURL *url = [[Subsonic sharedSubsonic] getBaseURL:@"getPlaylists.view"];
200- NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
201-
202- PlaylistListParser *parser = [[PlaylistListParser alloc] init];
203- [xmlParser setDelegate:parser];
204-
205- if (![xmlParser parse])
206- {
207- [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
208- [xmlParser release];
209- [parser release];
210- [pool release];
211- return;
212- }
213-
214- [xmlParser release];
215- [parser release];
216-
217- [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
218- [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
219- [pool release];
220-}
221-
222 #pragma mark - UITableView
223
224 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
225
226=== modified file 'musicstreaming/view_controllers/PlaylistViewController.m'
227--- musicstreaming/view_controllers/PlaylistViewController.m 2011-06-15 16:49:27 +0000
228+++ musicstreaming/view_controllers/PlaylistViewController.m 2011-06-16 19:18:32 +0000
229@@ -98,8 +98,6 @@
230 if (error)
231 {
232 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:error waitUntilDone:NO];
233- [pool release];
234- return;
235 }
236
237 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
238
239=== modified file 'musicstreaming/view_controllers/SongListViewController.m'
240--- musicstreaming/view_controllers/SongListViewController.m 2011-06-15 00:46:43 +0000
241+++ musicstreaming/view_controllers/SongListViewController.m 2011-06-16 19:18:32 +0000
242@@ -31,6 +31,10 @@
243 + (UINavigationController *)navigableViewController
244 {
245 SongListViewController *songListViewController = [[[SongListViewController alloc] initWithTitle:NSLocalizedString(@"Songs", @"")] autorelease];
246+ SongListParser *parser = [[SongListParser alloc] init];
247+ songListViewController.parserDelegate = parser;
248+ songListViewController.viewName = @"getSongs.view";
249+
250 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:songListViewController] autorelease];
251 nav.navigationBar.barStyle = UIBarStyleBlack;
252 nav.tabBarItem.image = [UIImage imageNamed:@"songs"];
253@@ -76,33 +80,6 @@
254 [self.tableView reloadData];
255 }
256
257-- (void)beginLoadingRemoteData:(NSString*)force
258-{
259- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
260-
261- NSURL *url = [[Subsonic sharedSubsonic] getBaseURL:@"getSongs.view"];
262- NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
263-
264- SongListParser *parser = [[SongListParser alloc] init];
265- [xmlParser setDelegate:parser];
266-
267- if (![xmlParser parse])
268- {
269- [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
270- [xmlParser release];
271- [parser release];
272- [pool release];
273- return;
274- }
275-
276- [xmlParser release];
277- [parser release];
278-
279- [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
280- [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
281- [pool release];
282-}
283-
284 - (void)updateReachability:(Reachability *)reachability
285 {
286 [super updateReachability:reachability];
287
288=== modified file 'musicstreaming/view_controllers/SubsonicTableViewController.h'
289--- musicstreaming/view_controllers/SubsonicTableViewController.h 2011-06-15 00:46:43 +0000
290+++ musicstreaming/view_controllers/SubsonicTableViewController.h 2011-06-16 19:18:32 +0000
291@@ -32,6 +32,8 @@
292 NSTimer *respondToRemoteTimer;
293 NSMutableArray *tableData;
294 NSMutableArray *searchResults;
295+ id <NSXMLParserDelegate> parserDelegate;
296+ NSString *viewName;
297
298 @protected
299 BOOL canStream;
300@@ -64,6 +66,8 @@
301
302 @property(nonatomic,retain) NSMutableArray *tableData;
303 @property(nonatomic,retain) NSMutableArray *searchResults;
304+@property(nonatomic,assign) id<NSXMLParserDelegate> parserDelegate;
305+@property(nonatomic,retain) NSString *viewName;
306
307 extern NSString * const NOTIF_reloadAccountCredentials;
308 extern NSString * const NOTIF_removeCachedContent;
309
310=== modified file 'musicstreaming/view_controllers/SubsonicTableViewController.m'
311--- musicstreaming/view_controllers/SubsonicTableViewController.m 2011-06-16 17:56:08 +0000
312+++ musicstreaming/view_controllers/SubsonicTableViewController.m 2011-06-16 19:18:32 +0000
313@@ -35,6 +35,7 @@
314
315 @implementation SubsonicTableViewController
316 @synthesize tableData, searchResults;
317+@synthesize parserDelegate, viewName;
318 @synthesize hasLoadedRemoteData;
319
320 #pragma mark - Initialization
321@@ -50,7 +51,10 @@
322 self.title = title;
323 self.tableData = [NSMutableArray array];
324 self.searchResults = [NSMutableArray array];
325+ self.parserDelegate = nil;
326+ self.viewName = nil;
327 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetTableData:) name:NOTIF_removeCachedContent object:nil];
328+
329 }
330 return self;
331 }
332@@ -270,10 +274,23 @@
333
334 - (void)beginLoadingRemoteData:(NSString*)force
335 {
336- //Starts with an NSAutoreleasePool
337- //Loads data either from CoreData or from an XML feed. If force == @"YES"
338- //Release the pool
339- //Call finishLoadingData on the main thread.
340+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
341+
342+ NSURL *url = [[Subsonic sharedSubsonic] getBaseURL:self.viewName];
343+ NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
344+
345+ [xmlParser setDelegate:self.parserDelegate];
346+
347+ if (![xmlParser parse])
348+ {
349+ [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
350+ }
351+
352+ [xmlParser release];
353+
354+ [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
355+ [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
356+ [pool release];
357 }
358
359 - (void)finishLoadingData
360@@ -418,6 +435,8 @@
361 {
362 [[NSNotificationCenter defaultCenter] removeObserver:self];
363 [hudView hide:NO];
364+ RELEASE_SAFELY(parserDelegate);
365+ RELEASE_SAFELY(viewName);
366 RELEASE_SAFELY(hudView);
367 RELEASE_SAFELY(tableData);
368 RELEASE_SAFELY(searchResults);

Subscribers

People subscribed via source and target branches

to all changes: