Merge lp:~rockstar/ubuntuone-ios-music/error-handling into lp:ubuntuone-ios-music

Proposed by Paul Hummer
Status: Superseded
Proposed branch: lp:~rockstar/ubuntuone-ios-music/error-handling
Merge into: lp:ubuntuone-ios-music
Diff against target: 2427 lines (+585/-898)
30 files modified
Other Sources/U1MusicAppDelegate.h (+0/-4)
Other Sources/U1MusicAppDelegate.m (+3/-20)
Other Sources/main.m (+5/-5)
U1Music.xcodeproj/project.pbxproj (+451/-369)
categories/UIDevice+Hardware.m (+2/-1)
categories/UIImage+Alpha.h (+1/-0)
categories/UIImage+Alpha.m (+0/-5)
categories/UIImage+Resize.h (+5/-1)
categories/UIImage+Resize.m (+40/-58)
utilities/AudioStreamer.m (+2/-0)
utilities/Models/Generated/_U1CachedFile.h (+3/-3)
utilities/U1LocalMusicServer.m (+1/-8)
utilities/UOSSOMusicCredsFetchOperation.h (+0/-24)
utilities/UOSSOMusicCredsFetchOperation.m (+0/-57)
utilities/operations/AlbumArtLoader.h (+0/-2)
utilities/operations/AlbumArtLoader.m (+0/-10)
utilities/operations/UOJSONFetchOperation.h (+0/-25)
utilities/operations/UOJSONFetchOperation.m (+0/-80)
view_controllers/PullRefreshTableViewController.h (+0/-7)
view_controllers/PullRefreshTableViewController.m (+0/-11)
view_controllers/SettingsViewController.m (+2/-1)
view_controllers/SubsonicIndexedTableViewController.m (+0/-2)
view_controllers/SubsonicTableViewController.h (+1/-1)
view_controllers/SubsonicTableViewController.m (+5/-20)
view_controllers/SubsonicViewController.m (+0/-6)
view_controllers/U1MigrationViewController.m (+0/-9)
view_controllers/U1MigrationViewController.xib (+23/-16)
view_controllers/UOMusicLoginController.m (+40/-131)
view_controllers/UOSSOCredentialsViewController.h (+0/-7)
view_controllers/UOSSOCredentialsViewController.m (+1/-15)
To merge this branch: bzr merge lp:~rockstar/ubuntuone-ios-music/error-handling
Reviewer Review Type Date Requested Status
Ubuntu One iOS Client Team Pending
Review via email: mp+125089@code.launchpad.net

This proposal has been superseded by a proposal from 2012-09-19.

Description of the change

Use the error handling in the new branch for UbuntuOneAuthKit

To post a comment you must log in.

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Other Sources/U1MusicAppDelegate.h'
2--- Other Sources/U1MusicAppDelegate.h 2011-11-01 15:14:34 +0000
3+++ Other Sources/U1MusicAppDelegate.h 2012-09-19 03:34:23 +0000
4@@ -28,14 +28,10 @@
5 // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
6 // DAMAGE.
7
8-@class Reachability;
9-
10 @interface U1MusicAppDelegate : NSObject <UIApplicationDelegate> {
11 UIWindow *window;
12 UITabBarController *tabBarController;
13 }
14-@property (nonatomic, retain) IBOutlet UIWindow *window;
15-@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
16
17 extern NSString * const NOTIF_reloadAccountCredentials;
18 @end
19
20=== modified file 'Other Sources/U1MusicAppDelegate.m'
21--- Other Sources/U1MusicAppDelegate.m 2012-09-13 17:35:26 +0000
22+++ Other Sources/U1MusicAppDelegate.m 2012-09-19 03:34:23 +0000
23@@ -55,8 +55,6 @@
24
25 @implementation U1MusicAppDelegate
26
27-@synthesize window;
28-@synthesize tabBarController;
29 @synthesize loginController, musicServer;
30
31 #pragma mark -
32@@ -84,7 +82,6 @@
33 }];
34
35 [window.rootViewController presentModalViewController:migrationView animated:YES];
36- [migrationView release];
37 });
38 }
39 else if ([standardUserDefaults integerForKey:@"last_build_version"] < 54) // Version where we fixed the Songs view crasher. TODO: Find a better long-term migration strategy
40@@ -101,7 +98,6 @@
41 {
42 [self startup];
43 }
44- [fileManager release];
45
46 return YES;
47 }
48@@ -159,8 +155,6 @@
49 {
50 [[Subsonic sharedSubsonic] storeUsername:user password:pass];
51 }
52-
53- [queryStringParser release];
54 }
55
56 - (BOOL)configureUsernamePassword
57@@ -182,15 +176,15 @@
58
59 - (void)presentLoginView;
60 {
61- self.loginController = [[[UOMusicLoginController alloc] init] autorelease];
62+ self.loginController = [[UOMusicLoginController alloc] init];
63 self.loginController.delegate = self;
64- [self.tabBarController presentModalViewController:self.loginController.loginViewController animated:YES];
65+ [tabBarController presentModalViewController:self.loginController.loginViewController animated:YES];
66 }
67
68 - (void)loginControllerDidLoginWithUsername:(NSString *)username;
69 {
70 [self configureUsernamePassword];
71- [self.tabBarController dismissModalViewControllerAnimated:YES];
72+ [tabBarController dismissModalViewControllerAnimated:YES];
73 self.loginController = nil;
74 [[NSNotificationCenter defaultCenter] postNotificationName:NOTIF_reloadAccountCredentials object:nil];
75 }
76@@ -215,15 +209,4 @@
77 }
78 }
79
80-#pragma mark -
81-#pragma mark Memory management
82-
83-- (void)dealloc
84-{
85- [tabBarController release];
86- [window release];
87- [musicServer release];
88- [super dealloc];
89-}
90-
91 @end
92\ No newline at end of file
93
94=== modified file 'Other Sources/main.m'
95--- Other Sources/main.m 2010-09-22 08:15:31 +0000
96+++ Other Sources/main.m 2012-09-19 03:34:23 +0000
97@@ -30,10 +30,10 @@
98
99 #import <UIKit/UIKit.h>
100
101+#import "U1MusicAppDelegate.h"
102+
103 int main(int argc, char *argv[]) {
104-
105- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
106- int retVal = UIApplicationMain(argc, argv, nil, nil);
107- [pool release];
108- return retVal;
109+ @autoreleasepool {
110+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([U1MusicAppDelegate class]));
111+ }
112 }
113
114=== modified file 'U1Music.xcodeproj/project.pbxproj'
115--- U1Music.xcodeproj/project.pbxproj 2012-08-30 20:58:16 +0000
116+++ U1Music.xcodeproj/project.pbxproj 2012-09-19 03:34:23 +0000
117@@ -18,7 +18,7 @@
118 52169CA215D95E2C00ED366D /* cancel@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52169C9E15D95E2C00ED366D /* cancel@2x.png */; };
119 52169CA315D95E2C00ED366D /* trash-grey.png in Resources */ = {isa = PBXBuildFile; fileRef = 52169C9F15D95E2C00ED366D /* trash-grey.png */; };
120 52169CA415D95E2C00ED366D /* trash-grey@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52169CA015D95E2C00ED366D /* trash-grey@2x.png */; };
121- 523B3CDE15B4C42F004394F4 /* SongUITableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 523B3CDD15B4C42F004394F4 /* SongUITableView.m */; };
122+ 523B3CDE15B4C42F004394F4 /* SongUITableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 523B3CDD15B4C42F004394F4 /* SongUITableView.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
123 523B3CE215B5D64F004394F4 /* grabber.png in Resources */ = {isa = PBXBuildFile; fileRef = 523B3CE015B5D64F004394F4 /* grabber.png */; };
124 523B3CE315B5D64F004394F4 /* grabber@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 523B3CE115B5D64F004394F4 /* grabber@2x.png */; };
125 523B3CE615B5D814004394F4 /* UOPullGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 523B3CE515B5D814004394F4 /* UOPullGestureRecognizer.m */; };
126@@ -27,10 +27,58 @@
127 523B3CFB15B73BA0004394F4 /* download.png in Resources */ = {isa = PBXBuildFile; fileRef = 523B3CF715B73BA0004394F4 /* download.png */; };
128 523B3CFC15B73BA0004394F4 /* download@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 523B3CF815B73BA0004394F4 /* download@2x.png */; };
129 5279764915F00B2600F8435F /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5279764815F00B2600F8435F /* libz.dylib */; };
130- 5305C2061157F4F800BC78F0 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 5305C2051157F4F800BC78F0 /* Default.png */; };
131+ 528515991604F410004A1F7C /* UbuntuOneAuthKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 528515941604F16D004A1F7C /* UbuntuOneAuthKit.a */; };
132+ 52A042FF1606D6C40000B4BC /* NSMutableURLRequest+Parameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042D71606D6C40000B4BC /* NSMutableURLRequest+Parameters.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
133+ 52A043001606D6C40000B4BC /* NSString+URLEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042D91606D6C40000B4BC /* NSString+URLEncoding.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
134+ 52A043011606D6C40000B4BC /* NSURL+Base.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042DB1606D6C40000B4BC /* NSURL+Base.m */; };
135+ 52A043021606D6C40000B4BC /* Base64Transcoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 52A042DD1606D6C40000B4BC /* Base64Transcoder.c */; };
136+ 52A043031606D6C40000B4BC /* hmac.c in Sources */ = {isa = PBXBuildFile; fileRef = 52A042DF1606D6C40000B4BC /* hmac.c */; };
137+ 52A043041606D6C40000B4BC /* sha1.c in Sources */ = {isa = PBXBuildFile; fileRef = 52A042E11606D6C40000B4BC /* sha1.c */; };
138+ 52A043051606D6C40000B4BC /* OAAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042E41606D6C40000B4BC /* OAAttachment.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
139+ 52A043061606D6C40000B4BC /* OACall.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042E61606D6C40000B4BC /* OACall.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
140+ 52A043071606D6C40000B4BC /* OAConsumer.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042E81606D6C40000B4BC /* OAConsumer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
141+ 52A043081606D6C40000B4BC /* OADataFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042EA1606D6C40000B4BC /* OADataFetcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
142+ 52A043091606D6C40000B4BC /* OAHMAC_SHA1SignatureProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042EC1606D6C40000B4BC /* OAHMAC_SHA1SignatureProvider.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
143+ 52A0430A1606D6C40000B4BC /* OAMutableURLRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042EE1606D6C40000B4BC /* OAMutableURLRequest.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
144+ 52A0430B1606D6C40000B4BC /* OAPlaintextSignatureProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042F01606D6C40000B4BC /* OAPlaintextSignatureProvider.m */; };
145+ 52A0430C1606D6C40000B4BC /* OAProblem.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042F21606D6C40000B4BC /* OAProblem.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
146+ 52A0430D1606D6C40000B4BC /* OARequestParameter.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042F41606D6C40000B4BC /* OARequestParameter.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
147+ 52A0430E1606D6C40000B4BC /* OAServiceTicket.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042F61606D6C40000B4BC /* OAServiceTicket.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
148+ 52A0430F1606D6C40000B4BC /* OATestServer.rb in Resources */ = {isa = PBXBuildFile; fileRef = 52A042F81606D6C40000B4BC /* OATestServer.rb */; };
149+ 52A043101606D6C40000B4BC /* OAToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042FA1606D6C40000B4BC /* OAToken.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
150+ 52A043111606D6C40000B4BC /* OATokenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 52A042FC1606D6C40000B4BC /* OATokenManager.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
151+ 52A043121606D6C40000B4BC /* README in Resources */ = {isa = PBXBuildFile; fileRef = 52A042FE1606D6C40000B4BC /* README */; };
152+ 52AC3D671604513E00B4785D /* about_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D4B1604513E00B4785D /* about_logo.png */; };
153+ 52AC3D681604513E00B4785D /* albums.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D4C1604513E00B4785D /* albums.png */; };
154+ 52AC3D691604513E00B4785D /* albums@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D4D1604513E00B4785D /* albums@2x.png */; };
155+ 52AC3D6A1604513E00B4785D /* artists.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D4E1604513E00B4785D /* artists.png */; };
156+ 52AC3D6B1604513E00B4785D /* artists@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D4F1604513E00B4785D /* artists@2x.png */; };
157+ 52AC3D6C1604513E00B4785D /* cached.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D501604513E00B4785D /* cached.png */; };
158+ 52AC3D6D1604513E00B4785D /* cached@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D511604513E00B4785D /* cached@2x.png */; };
159+ 52AC3D6E1604513E00B4785D /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D521604513E00B4785D /* Default.png */; };
160+ 52AC3D6F1604513E00B4785D /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D531604513E00B4785D /* Default@2x.png */; };
161+ 52AC3D701604513E00B4785D /* header_bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D541604513E00B4785D /* header_bg.png */; };
162+ 52AC3D711604513E00B4785D /* header_logo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D551604513E00B4785D /* header_logo@2x.png */; };
163+ 52AC3D721604513E00B4785D /* music_29.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D561604513E00B4785D /* music_29.png */; };
164+ 52AC3D731604513E00B4785D /* music_57.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D571604513E00B4785D /* music_57.png */; };
165+ 52AC3D741604513E00B4785D /* music_57@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D581604513E00B4785D /* music_57@2x.png */; };
166+ 52AC3D751604513E00B4785D /* music_512.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D591604513E00B4785D /* music_512.png */; };
167+ 52AC3D761604513E00B4785D /* partiallycached.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D5A1604513E00B4785D /* partiallycached.png */; };
168+ 52AC3D771604513E00B4785D /* partiallycached@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D5B1604513E00B4785D /* partiallycached@2x.png */; };
169+ 52AC3D781604513E00B4785D /* playlists.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D5C1604513E00B4785D /* playlists.png */; };
170+ 52AC3D791604513E00B4785D /* playlists@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D5D1604513E00B4785D /* playlists@2x.png */; };
171+ 52AC3D7A1604513E00B4785D /* progress-label-background.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D5E1604513E00B4785D /* progress-label-background.png */; };
172+ 52AC3D7B1604513E00B4785D /* settings.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D5F1604513E00B4785D /* settings.png */; };
173+ 52AC3D7C1604513E00B4785D /* settings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D601604513E00B4785D /* settings@2x.png */; };
174+ 52AC3D7D1604513E00B4785D /* songs.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D611604513E00B4785D /* songs.png */; };
175+ 52AC3D7E1604513E00B4785D /* songs@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D621604513E00B4785D /* songs@2x.png */; };
176+ 52AC3D7F1604513E00B4785D /* uncached-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D631604513E00B4785D /* uncached-disabled.png */; };
177+ 52AC3D801604513E00B4785D /* uncached-disabled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D641604513E00B4785D /* uncached-disabled@2x.png */; };
178+ 52AC3D811604513E00B4785D /* uncached.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D651604513E00B4785D /* uncached.png */; };
179+ 52AC3D821604513E00B4785D /* uncached@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D661604513E00B4785D /* uncached@2x.png */; };
180+ 52AC3D841604539000B4785D /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 52AC3D831604539000B4785D /* Default-568h@2x.png */; };
181 536D620B1144495400DFCE56 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 536D620A1144495400DFCE56 /* SystemConfiguration.framework */; };
182 537DE2D9113F008C00875852 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 537DE2D8113F008C00875852 /* CoreFoundation.framework */; };
183- 53F0CD8211589F0A00A665CD /* progress-label-background.png in Resources */ = {isa = PBXBuildFile; fileRef = 53F0CD8111589F0A00A665CD /* progress-label-background.png */; };
184 53F675D8113B092C00822059 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53F675D7113B092C00822059 /* MediaPlayer.framework */; };
185 53F675DC113B093900822059 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53F675DB113B093900822059 /* CFNetwork.framework */; };
186 53F675E2113B095900822059 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53F675E1113B095900822059 /* QuartzCore.framework */; };
187@@ -38,93 +86,73 @@
188 91018B0B13573BBB0051EFDC /* UIImage+Resize.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B0A13573BBB0051EFDC /* UIImage+Resize.m */; };
189 91018B0E13573D150051EFDC /* UIImage+Alpha.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B0D13573D150051EFDC /* UIImage+Alpha.m */; };
190 91018B1113573D350051EFDC /* UIImage+RoundedCorner.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B1013573D350051EFDC /* UIImage+RoundedCorner.m */; };
191- 91018B4B135A724B0051EFDC /* PlaylistEditAlbumListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B42135A724B0051EFDC /* PlaylistEditAlbumListViewController.m */; };
192- 91018B4C135A724B0051EFDC /* PlaylistEditAlbumViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B44135A724B0051EFDC /* PlaylistEditAlbumViewController.m */; };
193- 91018B4D135A724B0051EFDC /* PlaylistEditArtistListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B46135A724B0051EFDC /* PlaylistEditArtistListViewController.m */; };
194- 91018B4E135A724B0051EFDC /* PlaylistEditArtistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B48135A724B0051EFDC /* PlaylistEditArtistViewController.m */; };
195- 91018B4F135A724B0051EFDC /* PlaylistEditSongListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B4A135A724B0051EFDC /* PlaylistEditSongListViewController.m */; };
196- 9110DC38134C045A0046B8E4 /* AlbumParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9110DC37134C04590046B8E4 /* AlbumParser.m */; };
197- 9110DC44134EAC740046B8E4 /* AlbumListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9110DC43134EAC730046B8E4 /* AlbumListParser.m */; };
198- 9110DC571354A7490046B8E4 /* AlbumArtistUITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9110DC561354A7470046B8E4 /* AlbumArtistUITableViewCell.m */; };
199- 9112B0241383FF27003C1D93 /* albums.png in Resources */ = {isa = PBXBuildFile; fileRef = 9112B01E1383FF27003C1D93 /* albums.png */; };
200- 9112B0251383FF27003C1D93 /* artists.png in Resources */ = {isa = PBXBuildFile; fileRef = 9112B01F1383FF27003C1D93 /* artists.png */; };
201- 9112B0261383FF27003C1D93 /* playlists.png in Resources */ = {isa = PBXBuildFile; fileRef = 9112B0201383FF27003C1D93 /* playlists.png */; };
202- 9112B0281383FF27003C1D93 /* settings.png in Resources */ = {isa = PBXBuildFile; fileRef = 9112B0221383FF27003C1D93 /* settings.png */; };
203- 9112B0291383FF27003C1D93 /* songs.png in Resources */ = {isa = PBXBuildFile; fileRef = 9112B0231383FF27003C1D93 /* songs.png */; };
204- 9112B02F1383FF37003C1D93 /* albums@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9112B02A1383FF37003C1D93 /* albums@2x.png */; };
205- 9112B0301383FF37003C1D93 /* artists@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9112B02B1383FF37003C1D93 /* artists@2x.png */; };
206- 9112B0311383FF37003C1D93 /* playlists@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9112B02C1383FF37003C1D93 /* playlists@2x.png */; };
207- 9112B0321383FF37003C1D93 /* settings@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9112B02D1383FF37003C1D93 /* settings@2x.png */; };
208- 9112B0331383FF37003C1D93 /* songs@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9112B02E1383FF37003C1D93 /* songs@2x.png */; };
209- 9123D1A113257ADF00B40210 /* PlaylistListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9123D1A013257ADF00B40210 /* PlaylistListViewController.m */; };
210- 9123D1BB13280B3400B40210 /* PlaylistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9123D1BA13280B3400B40210 /* PlaylistViewController.m */; };
211- 9123D1C3132816D200B40210 /* PlaylistListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9123D1C2132816D200B40210 /* PlaylistListParser.m */; };
212- 912D1259134617F600721EE4 /* SongListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 912D1258134617F600721EE4 /* SongListParser.m */; };
213- 912D1264134A162000721EE4 /* AlertPrompt.m in Sources */ = {isa = PBXBuildFile; fileRef = 912D1263134A162000721EE4 /* AlertPrompt.m */; };
214- 912D1267134B609700721EE4 /* PlaylistEditViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 912D1266134B609600721EE4 /* PlaylistEditViewController.m */; };
215- 912D392213311F2700A443B2 /* AlbumListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 912D392113311F2500A443B2 /* AlbumListViewController.m */; };
216- 912D392613311FC600A443B2 /* SongListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 912D392513311FC400A443B2 /* SongListViewController.m */; };
217+ 91018B4B135A724B0051EFDC /* PlaylistEditAlbumListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B42135A724B0051EFDC /* PlaylistEditAlbumListViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
218+ 91018B4C135A724B0051EFDC /* PlaylistEditAlbumViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B44135A724B0051EFDC /* PlaylistEditAlbumViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
219+ 91018B4D135A724B0051EFDC /* PlaylistEditArtistListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B46135A724B0051EFDC /* PlaylistEditArtistListViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
220+ 91018B4E135A724B0051EFDC /* PlaylistEditArtistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B48135A724B0051EFDC /* PlaylistEditArtistViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
221+ 91018B4F135A724B0051EFDC /* PlaylistEditSongListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91018B4A135A724B0051EFDC /* PlaylistEditSongListViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
222+ 9110DC38134C045A0046B8E4 /* AlbumParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9110DC37134C04590046B8E4 /* AlbumParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
223+ 9110DC44134EAC740046B8E4 /* AlbumListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9110DC43134EAC730046B8E4 /* AlbumListParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
224+ 9110DC571354A7490046B8E4 /* AlbumArtistUITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9110DC561354A7470046B8E4 /* AlbumArtistUITableViewCell.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
225+ 9123D1A113257ADF00B40210 /* PlaylistListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9123D1A013257ADF00B40210 /* PlaylistListViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
226+ 9123D1BB13280B3400B40210 /* PlaylistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9123D1BA13280B3400B40210 /* PlaylistViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
227+ 9123D1C3132816D200B40210 /* PlaylistListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9123D1C2132816D200B40210 /* PlaylistListParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
228+ 912D1259134617F600721EE4 /* SongListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 912D1258134617F600721EE4 /* SongListParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
229+ 912D1264134A162000721EE4 /* AlertPrompt.m in Sources */ = {isa = PBXBuildFile; fileRef = 912D1263134A162000721EE4 /* AlertPrompt.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
230+ 912D1267134B609700721EE4 /* PlaylistEditViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 912D1266134B609600721EE4 /* PlaylistEditViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
231+ 912D392213311F2700A443B2 /* AlbumListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 912D392113311F2500A443B2 /* AlbumListViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
232+ 912D392613311FC600A443B2 /* SongListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 912D392513311FC400A443B2 /* SongListViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
233 9132827D144E07EA00395F40 /* libTestFlight.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 91328279144E07EA00395F40 /* libTestFlight.a */; };
234 9132827E144E07EA00395F40 /* README.txt in Resources */ = {isa = PBXBuildFile; fileRef = 9132827A144E07EA00395F40 /* README.txt */; };
235 9132827F144E07EA00395F40 /* release_notes.txt in Resources */ = {isa = PBXBuildFile; fileRef = 9132827B144E07EA00395F40 /* release_notes.txt */; };
236- 91406E9413849F2400A7DA67 /* cached.png in Resources */ = {isa = PBXBuildFile; fileRef = 91406E8E13849F2400A7DA67 /* cached.png */; };
237- 91406E9513849F2400A7DA67 /* cached@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 91406E8F13849F2400A7DA67 /* cached@2x.png */; };
238- 91406E9613849F2400A7DA67 /* partiallycached.png in Resources */ = {isa = PBXBuildFile; fileRef = 91406E9013849F2400A7DA67 /* partiallycached.png */; };
239- 91406E9713849F2400A7DA67 /* partiallycached@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 91406E9113849F2400A7DA67 /* partiallycached@2x.png */; };
240- 91406E9813849F2400A7DA67 /* uncached.png in Resources */ = {isa = PBXBuildFile; fileRef = 91406E9213849F2400A7DA67 /* uncached.png */; };
241- 91406E9913849F2400A7DA67 /* uncached@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 91406E9313849F2400A7DA67 /* uncached@2x.png */; };
242- 91406EEA138AEEE000A7DA67 /* NSString+Extras.m in Sources */ = {isa = PBXBuildFile; fileRef = 91406EE9138AEEE000A7DA67 /* NSString+Extras.m */; };
243+ 91406EEA138AEEE000A7DA67 /* NSString+Extras.m in Sources */ = {isa = PBXBuildFile; fileRef = 91406EE9138AEEE000A7DA67 /* NSString+Extras.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
244 9149D9CF159BEC3D009AE771 /* default-album-art-120.png in Resources */ = {isa = PBXBuildFile; fileRef = 9149D9C9159BEC3D009AE771 /* default-album-art-120.png */; };
245 9149D9D0159BEC3D009AE771 /* default-album-art-200.png in Resources */ = {isa = PBXBuildFile; fileRef = 9149D9CA159BEC3D009AE771 /* default-album-art-200.png */; };
246 9149D9D1159BEC3D009AE771 /* default-album-art-120@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9149D9CB159BEC3D009AE771 /* default-album-art-120@2x.png */; };
247 9149D9D2159BEC3D009AE771 /* default-album-art-200@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9149D9CC159BEC3D009AE771 /* default-album-art-200@2x.png */; };
248 9149D9D3159BEC3D009AE771 /* default-album-art-640.png in Resources */ = {isa = PBXBuildFile; fileRef = 9149D9CD159BEC3D009AE771 /* default-album-art-640.png */; };
249 9149D9D4159BEC3D009AE771 /* default-album-art-640@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9149D9CE159BEC3D009AE771 /* default-album-art-640@2x.png */; };
250- 914AC3FF14B61D8A00C7D5A3 /* CachedSongsPlaylist.m in Sources */ = {isa = PBXBuildFile; fileRef = 914AC3F114B61D8A00C7D5A3 /* CachedSongsPlaylist.m */; };
251+ 914AC3FF14B61D8A00C7D5A3 /* CachedSongsPlaylist.m in Sources */ = {isa = PBXBuildFile; fileRef = 914AC3F114B61D8A00C7D5A3 /* CachedSongsPlaylist.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
252 914AC40014B61D8A00C7D5A3 /* _Album.m in Sources */ = {isa = PBXBuildFile; fileRef = 914AC3F414B61D8A00C7D5A3 /* _Album.m */; };
253 914AC40114B61D8A00C7D5A3 /* _Artist.m in Sources */ = {isa = PBXBuildFile; fileRef = 914AC3F614B61D8A00C7D5A3 /* _Artist.m */; };
254 914AC40214B61D8A00C7D5A3 /* _Playlist.m in Sources */ = {isa = PBXBuildFile; fileRef = 914AC3F814B61D8A00C7D5A3 /* _Playlist.m */; };
255 914AC40314B61D8A00C7D5A3 /* _PlaylistSongIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 914AC3FA14B61D8A00C7D5A3 /* _PlaylistSongIndex.m */; };
256 914AC40414B61D8A00C7D5A3 /* _Song.m in Sources */ = {isa = PBXBuildFile; fileRef = 914AC3FC14B61D8A00C7D5A3 /* _Song.m */; };
257 914AC40514B61D8A00C7D5A3 /* PlaylistSongIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 914AC3FE14B61D8A00C7D5A3 /* PlaylistSongIndex.m */; };
258- 917B47EF14E306C800062874 /* U1AutoDownloadsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 917B47EE14E306C800062874 /* U1AutoDownloadsManager.m */; };
259- 917B47FB14E42C7900062874 /* U1CacheFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 917B47FA14E42C7900062874 /* U1CacheFileManager.m */; };
260+ 917B47EF14E306C800062874 /* U1AutoDownloadsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 917B47EE14E306C800062874 /* U1AutoDownloadsManager.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
261+ 917B47FB14E42C7900062874 /* U1CacheFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 917B47FA14E42C7900062874 /* U1CacheFileManager.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
262 919376F3135CC1CF0030B7BD /* PlaylistEditSongUITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 919376F2135CC1CF0030B7BD /* PlaylistEditSongUITableViewCell.m */; };
263 91B3A4441344CF92006C8193 /* SubsonicIndexedTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91B3A4431344CF91006C8193 /* SubsonicIndexedTableViewController.m */; };
264- 91BE4018138E8D2300D44D68 /* UIActionSheet+Blocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 91BE4015138E8D2300D44D68 /* UIActionSheet+Blocks.m */; };
265- 91BE4019138E8D2300D44D68 /* UIAlertView+Blocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 91BE4017138E8D2300D44D68 /* UIAlertView+Blocks.m */; };
266- 91BE401C138E8D3A00D44D68 /* RIButtonItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 91BE401B138E8D3A00D44D68 /* RIButtonItem.m */; };
267+ 91BE4018138E8D2300D44D68 /* UIActionSheet+Blocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 91BE4015138E8D2300D44D68 /* UIActionSheet+Blocks.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
268+ 91BE4019138E8D2300D44D68 /* UIAlertView+Blocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 91BE4017138E8D2300D44D68 /* UIAlertView+Blocks.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
269+ 91BE401C138E8D3A00D44D68 /* RIButtonItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 91BE401B138E8D3A00D44D68 /* RIButtonItem.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
270 91C493D014E4593C00BC1815 /* U1ByteSizeValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 91C493CF14E4593C00BC1815 /* U1ByteSizeValueTransformer.m */; };
271 91C8CCAF14B7883600A0E311 /* ArtistUITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 91C8CCAE14B7883600A0E311 /* ArtistUITableViewCell.m */; };
272- 91D18DAB13B228D3001BEB42 /* uncached-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 91D18DA913B228D3001BEB42 /* uncached-disabled.png */; };
273- 91D18DAC13B228D3001BEB42 /* uncached-disabled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 91D18DAA13B228D3001BEB42 /* uncached-disabled@2x.png */; };
274- 91D3A16F14B93B2A003D4FC0 /* MOC.m in Sources */ = {isa = PBXBuildFile; fileRef = 91D3A16E14B93B2A003D4FC0 /* MOC.m */; };
275+ 91D3A16F14B93B2A003D4FC0 /* MOC.m in Sources */ = {isa = PBXBuildFile; fileRef = 91D3A16E14B93B2A003D4FC0 /* MOC.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
276 91D3A17214BE12FE003D4FC0 /* PlaylistUITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 91D3A17114BE12FE003D4FC0 /* PlaylistUITableViewCell.m */; };
277- 91DB6B9F13E9C7190029BC77 /* about_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 91DB6B9E13E9C7190029BC77 /* about_logo.png */; };
278- 91E3E46414D33A2D006ED32F /* U1SerializedDownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E3E46314D33A2D006ED32F /* U1SerializedDownloadOperation.m */; };
279- 91E3E46814D33A6F006ED32F /* U1ChunkDownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E3E46714D33A6F006ED32F /* U1ChunkDownloadOperation.m */; };
280- 91E88609132DA82000618994 /* PlaylistParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E88608132DA82000618994 /* PlaylistParser.m */; };
281+ 91E3E46414D33A2D006ED32F /* U1SerializedDownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E3E46314D33A2D006ED32F /* U1SerializedDownloadOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
282+ 91E3E46814D33A6F006ED32F /* U1ChunkDownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E3E46714D33A6F006ED32F /* U1ChunkDownloadOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
283+ 91E88609132DA82000618994 /* PlaylistParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 91E88608132DA82000618994 /* PlaylistParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
284 91F2653014EACFCC0027232B /* U1MigrationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 91F2652E14EACFCC0027232B /* U1MigrationViewController.m */; };
285 91F2653114EACFCC0027232B /* U1MigrationViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 91F2652F14EACFCC0027232B /* U1MigrationViewController.xib */; };
286 9316628812264A74003B0EB7 /* NSDate+Extras.m in Sources */ = {isa = PBXBuildFile; fileRef = 9316628712264A74003B0EB7 /* NSDate+Extras.m */; };
287- 932E7A6E1254747E00E7C8FF /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 932E7A6D1254747E00E7C8FF /* Default@2x.png */; };
288 932E7AA01255265A00E7C8FF /* about.css in Resources */ = {isa = PBXBuildFile; fileRef = 932E7A9E1255265A00E7C8FF /* about.css */; };
289 932E7AA11255265A00E7C8FF /* about.html in Resources */ = {isa = PBXBuildFile; fileRef = 932E7A9F1255265A00E7C8FF /* about.html */; };
290 932E7B0912552CB400E7C8FF /* PullRefreshTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 932E7B0812552CB400E7C8FF /* PullRefreshTableViewController.m */; };
291 932E7B0B12552CD500E7C8FF /* arrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 932E7B0A12552CD500E7C8FF /* arrow.png */; };
292 9354D0AB1248267B00733067 /* NSDictionary+Extras.m in Sources */ = {isa = PBXBuildFile; fileRef = 9354D0AA1248267B00733067 /* NSDictionary+Extras.m */; };
293- 936F20681227364200070F43 /* Playlist.m in Sources */ = {isa = PBXBuildFile; fileRef = 936F20671227364200070F43 /* Playlist.m */; };
294- 936F209012273D9000070F43 /* Song.m in Sources */ = {isa = PBXBuildFile; fileRef = 936F208F12273D9000070F43 /* Song.m */; };
295- 936F230A12284D1900070F43 /* NamedTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 936F230912284D1900070F43 /* NamedTextFieldCell.m */; };
296+ 936F20681227364200070F43 /* Playlist.m in Sources */ = {isa = PBXBuildFile; fileRef = 936F20671227364200070F43 /* Playlist.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
297+ 936F209012273D9000070F43 /* Song.m in Sources */ = {isa = PBXBuildFile; fileRef = 936F208F12273D9000070F43 /* Song.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
298+ 936F230A12284D1900070F43 /* NamedTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 936F230912284D1900070F43 /* NamedTextFieldCell.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
299 937FAA11137CFC1B00507E51 /* AlbumArtLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 937FAA0E137CFC1B00507E51 /* AlbumArtLoader.m */; };
300- 937FAA12137CFC1B00507E51 /* AlbumArtDownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 937FAA10137CFC1B00507E51 /* AlbumArtDownloadOperation.m */; };
301- 937FAA15137CFC5000507E51 /* Downloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 937FAA14137CFC5000507E51 /* Downloader.m */; };
302- 937FAA18137CFC7200507E51 /* DownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 937FAA17137CFC7200507E51 /* DownloadOperation.m */; };
303- 937FAA1B137CFCA600507E51 /* AbstractNetworkOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 937FAA1A137CFCA600507E51 /* AbstractNetworkOperation.m */; };
304+ 937FAA12137CFC1B00507E51 /* AlbumArtDownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 937FAA10137CFC1B00507E51 /* AlbumArtDownloadOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
305+ 937FAA15137CFC5000507E51 /* Downloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 937FAA14137CFC5000507E51 /* Downloader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
306+ 937FAA18137CFC7200507E51 /* DownloadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 937FAA17137CFC7200507E51 /* DownloadOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
307+ 937FAA1B137CFCA600507E51 /* AbstractNetworkOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 937FAA1A137CFCA600507E51 /* AbstractNetworkOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
308 937FAAEF137D15E800507E51 /* Globals.m in Sources */ = {isa = PBXBuildFile; fileRef = 937FAAEE137D15E800507E51 /* Globals.m */; };
309 93A54024123188880048BC3D /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93A54023123188880048BC3D /* Security.framework */; };
310- 93BC5209124C181600B7587C /* Subsonic.m in Sources */ = {isa = PBXBuildFile; fileRef = 93BC5208124C181600B7587C /* Subsonic.m */; };
311- 93BC52A7124C1E6900B7587C /* StreamingPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 93BC52A6124C1E6900B7587C /* StreamingPlayer.m */; };
312+ 93BC5209124C181600B7587C /* Subsonic.m in Sources */ = {isa = PBXBuildFile; fileRef = 93BC5208124C181600B7587C /* Subsonic.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
313+ 93BC52A7124C1E6900B7587C /* StreamingPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 93BC52A6124C1E6900B7587C /* StreamingPlayer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
314 93CCBD4F1254039900AFFC22 /* speaker.png in Resources */ = {isa = PBXBuildFile; fileRef = 93CCBD4D1254039900AFFC22 /* speaker.png */; };
315 93CCBD501254039900AFFC22 /* speaker@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93CCBD4E1254039900AFFC22 /* speaker@2x.png */; };
316 93CCBD7D12540CB700AFFC22 /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93CCBD7B12540CB700AFFC22 /* AboutViewController.m */; };
317@@ -139,33 +167,29 @@
318 93D6B2BD124FD72D007880B0 /* loopback-one-highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = 93D6B2BB124FD72D007880B0 /* loopback-one-highlight.png */; };
319 93D6B2BE124FD72D007880B0 /* loopback-one-highlight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93D6B2BC124FD72D007880B0 /* loopback-one-highlight@2x.png */; };
320 93D6B2D3124FDA56007880B0 /* NSMutableArray+Extras.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D6B2D2124FDA56007880B0 /* NSMutableArray+Extras.m */; };
321- 93D6B50E1252CA71007880B0 /* music_29.png in Resources */ = {isa = PBXBuildFile; fileRef = 93D6B50A1252CA71007880B0 /* music_29.png */; };
322- 93D6B50F1252CA71007880B0 /* music_57.png in Resources */ = {isa = PBXBuildFile; fileRef = 93D6B50B1252CA71007880B0 /* music_57.png */; };
323- 93D6B5111252CA71007880B0 /* music_512.png in Resources */ = {isa = PBXBuildFile; fileRef = 93D6B50D1252CA71007880B0 /* music_512.png */; };
324- 93D6B5151252CB34007880B0 /* music_57@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93D6B5141252CB34007880B0 /* music_57@2x.png */; };
325- 93D6B54B1252CE57007880B0 /* URLQueryStringParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D6B54A1252CE57007880B0 /* URLQueryStringParser.m */; };
326+ 93D6B54B1252CE57007880B0 /* URLQueryStringParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D6B54A1252CE57007880B0 /* URLQueryStringParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
327 93DFFE3F135D70B60061F29F /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93DFFE3E135D70B60061F29F /* CoreData.framework */; };
328 93DFFE4D135D71760061F29F /* music.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 93DFFE4C135D71760061F29F /* music.xcdatamodeld */; };
329- 93DFFE54135D72420061F29F /* NSManagedObjectContext+Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = 93DFFE53135D72420061F29F /* NSManagedObjectContext+Additions.m */; };
330- 93EE2AF0124993F100E7E060 /* ArtistListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 93EE2AEF124993F100E7E060 /* ArtistListParser.m */; };
331- 93EE2BA31249F33D00E7E060 /* ArtistParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 93EE2BA21249F33D00E7E060 /* ArtistParser.m */; };
332- 93F334471247F9DE006C6707 /* SFHFKeychainUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334461247F9DE006C6707 /* SFHFKeychainUtils.m */; };
333- 93F3344D1247FA0B006C6707 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3344C1247FA0B006C6707 /* Reachability.m */; };
334- 93F334521247FA2C006C6707 /* Album.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3344F1247FA2C006C6707 /* Album.m */; };
335- 93F334531247FA2C006C6707 /* Artist.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334511247FA2C006C6707 /* Artist.m */; };
336- 93F3345C1247FA85006C6707 /* AlbumUITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3345B1247FA85006C6707 /* AlbumUITableViewCell.m */; };
337- 93F3345F1247FA97006C6707 /* SongUITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3345E1247FA97006C6707 /* SongUITableViewCell.m */; };
338+ 93DFFE54135D72420061F29F /* NSManagedObjectContext+Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = 93DFFE53135D72420061F29F /* NSManagedObjectContext+Additions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
339+ 93EE2AF0124993F100E7E060 /* ArtistListParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 93EE2AEF124993F100E7E060 /* ArtistListParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
340+ 93EE2BA31249F33D00E7E060 /* ArtistParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 93EE2BA21249F33D00E7E060 /* ArtistParser.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
341+ 93F334471247F9DE006C6707 /* SFHFKeychainUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334461247F9DE006C6707 /* SFHFKeychainUtils.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
342+ 93F3344D1247FA0B006C6707 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3344C1247FA0B006C6707 /* Reachability.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
343+ 93F334521247FA2C006C6707 /* Album.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3344F1247FA2C006C6707 /* Album.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
344+ 93F334531247FA2C006C6707 /* Artist.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334511247FA2C006C6707 /* Artist.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
345+ 93F3345C1247FA85006C6707 /* AlbumUITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3345B1247FA85006C6707 /* AlbumUITableViewCell.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
346+ 93F3345F1247FA97006C6707 /* SongUITableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3345E1247FA97006C6707 /* SongUITableViewCell.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
347 93F334681247FB02006C6707 /* SongViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93F334641247FB02006C6707 /* SongViewController.xib */; };
348 93F334691247FB02006C6707 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93F334651247FB02006C6707 /* MainWindow.xib */; };
349 93F3346A1247FB02006C6707 /* SearchableTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 93F334661247FB02006C6707 /* SearchableTableViewController.xib */; };
350 93F334711247FB78006C6707 /* U1MusicAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3346F1247FB78006C6707 /* U1MusicAppDelegate.m */; };
351 93F334721247FB78006C6707 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334701247FB78006C6707 /* main.m */; };
352- 93F334751247FB9F006C6707 /* AudioStreamer.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334741247FB9F006C6707 /* AudioStreamer.m */; };
353- 93F3349F1247FCDC006C6707 /* ArtistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3348E1247FCDC006C6707 /* ArtistViewController.m */; };
354- 93F334A01247FCDC006C6707 /* SongViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334901247FCDC006C6707 /* SongViewController.m */; };
355- 93F334A31247FCDC006C6707 /* ArtistListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334961247FCDC006C6707 /* ArtistListViewController.m */; };
356- 93F334A41247FCDC006C6707 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334981247FCDC006C6707 /* SettingsViewController.m */; };
357- 93F334A61247FCDC006C6707 /* AlbumViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3349C1247FCDC006C6707 /* AlbumViewController.m */; };
358+ 93F334751247FB9F006C6707 /* AudioStreamer.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334741247FB9F006C6707 /* AudioStreamer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
359+ 93F3349F1247FCDC006C6707 /* ArtistViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3348E1247FCDC006C6707 /* ArtistViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
360+ 93F334A01247FCDC006C6707 /* SongViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334901247FCDC006C6707 /* SongViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
361+ 93F334A31247FCDC006C6707 /* ArtistListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334961247FCDC006C6707 /* ArtistListViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
362+ 93F334A41247FCDC006C6707 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F334981247FCDC006C6707 /* SettingsViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
363+ 93F334A61247FCDC006C6707 /* AlbumViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3349C1247FCDC006C6707 /* AlbumViewController.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
364 93F334A71247FCDC006C6707 /* SubsonicTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F3349E1247FCDC006C6707 /* SubsonicTableViewController.m */; };
365 93FA42AE124DC1350080DF62 /* 03-loopback.png in Resources */ = {isa = PBXBuildFile; fileRef = 93FA42A7124DC1350080DF62 /* 03-loopback.png */; };
366 93FA42AF124DC1350080DF62 /* 03-loopback@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93FA42A8124DC1350080DF62 /* 03-loopback@2x.png */; };
367@@ -181,47 +205,49 @@
368 93FA43B6124DF07C0080DF62 /* player_overlay_bg@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 93FA43B4124DF07C0080DF62 /* player_overlay_bg@2x.png */; };
369 960E4B2E14E586AE002AAB79 /* CacheFileAccess.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 960E4B2C14E586AE002AAB79 /* CacheFileAccess.xcdatamodeld */; };
370 960E4B3514E58844002AAB79 /* U1CachedFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 960E4B3414E58844002AAB79 /* U1CachedFile.m */; };
371- 960E4B3814E5884B002AAB79 /* _U1CachedFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 960E4B3714E5884B002AAB79 /* _U1CachedFile.m */; };
372- 9619626614E088F50038DACA /* U1SocketListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 9619626514E088F50038DACA /* U1SocketListener.m */; };
373- 9619626A14E08F4B0038DACA /* U1HTTPMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9619626914E08F4B0038DACA /* U1HTTPMessage.m */; };
374- 9619626F14E08F630038DACA /* U1HTTPRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 9619626C14E08F630038DACA /* U1HTTPRequest.m */; };
375- 9619627014E08F630038DACA /* U1HTTPResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 9619626E14E08F630038DACA /* U1HTTPResponse.m */; };
376- 9619627314E0A4930038DACA /* U1HTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9619627214E0A4930038DACA /* U1HTTPServer.m */; };
377- 96377AEE14E0726800517845 /* U1Descriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 96377AED14E0726800517845 /* U1Descriptor.m */; };
378- 96377AF314E0730B00517845 /* U1StreamReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 96377AF014E0730B00517845 /* U1StreamReader.m */; };
379- 96377AF414E0730B00517845 /* U1StreamWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 96377AF214E0730B00517845 /* U1StreamWriter.m */; };
380+ 960E4B3814E5884B002AAB79 /* _U1CachedFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 960E4B3714E5884B002AAB79 /* _U1CachedFile.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
381+ 9619626614E088F50038DACA /* U1SocketListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 9619626514E088F50038DACA /* U1SocketListener.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
382+ 9619626A14E08F4B0038DACA /* U1HTTPMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 9619626914E08F4B0038DACA /* U1HTTPMessage.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
383+ 9619626F14E08F630038DACA /* U1HTTPRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 9619626C14E08F630038DACA /* U1HTTPRequest.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
384+ 9619627014E08F630038DACA /* U1HTTPResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 9619626E14E08F630038DACA /* U1HTTPResponse.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
385+ 9619627314E0A4930038DACA /* U1HTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9619627214E0A4930038DACA /* U1HTTPServer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
386+ 96377AEE14E0726800517845 /* U1Descriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 96377AED14E0726800517845 /* U1Descriptor.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
387+ 96377AF314E0730B00517845 /* U1StreamReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 96377AF014E0730B00517845 /* U1StreamReader.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
388+ 96377AF414E0730B00517845 /* U1StreamWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 96377AF214E0730B00517845 /* U1StreamWriter.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
389 963C884E14E1AB0C00EB13A2 /* U1LocalMusicServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 963C884D14E1AB0C00EB13A2 /* U1LocalMusicServer.m */; };
390- 964FA3C313CA5C4F0018A65B /* NSMutableURLRequest+Parameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA39A13CA5C040018A65B /* NSMutableURLRequest+Parameters.m */; };
391- 964FA3C413CA5C4F0018A65B /* NSString+URLEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA39C13CA5C040018A65B /* NSString+URLEncoding.m */; };
392- 964FA3C513CA5C4F0018A65B /* NSURL+Base.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA39E13CA5C040018A65B /* NSURL+Base.m */; };
393- 964FA3C613CA5C4F0018A65B /* Base64Transcoder.c in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3A013CA5C040018A65B /* Base64Transcoder.c */; };
394- 964FA3C713CA5C4F0018A65B /* hmac.c in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3A213CA5C040018A65B /* hmac.c */; };
395- 964FA3C813CA5C4F0018A65B /* sha1.c in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3A413CA5C040018A65B /* sha1.c */; };
396- 964FA3C913CA5C4F0018A65B /* OAAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3A713CA5C040018A65B /* OAAttachment.m */; };
397- 964FA3CA13CA5C4F0018A65B /* OACall.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3A913CA5C040018A65B /* OACall.m */; };
398- 964FA3CB13CA5C4F0018A65B /* OAConsumer.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3AB13CA5C040018A65B /* OAConsumer.m */; };
399- 964FA3CC13CA5C4F0018A65B /* OADataFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3AD13CA5C040018A65B /* OADataFetcher.m */; };
400- 964FA3CD13CA5C500018A65B /* OAHMAC_SHA1SignatureProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3AF13CA5C040018A65B /* OAHMAC_SHA1SignatureProvider.m */; };
401- 964FA3CE13CA5C500018A65B /* OAMutableURLRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3B113CA5C040018A65B /* OAMutableURLRequest.m */; };
402- 964FA3CF13CA5C500018A65B /* OAPlaintextSignatureProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3B313CA5C040018A65B /* OAPlaintextSignatureProvider.m */; };
403- 964FA3D013CA5C500018A65B /* OAProblem.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3B513CA5C040018A65B /* OAProblem.m */; };
404- 964FA3D113CA5C500018A65B /* OARequestParameter.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3B713CA5C040018A65B /* OARequestParameter.m */; };
405- 964FA3D213CA5C500018A65B /* OAServiceTicket.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3B913CA5C040018A65B /* OAServiceTicket.m */; };
406- 964FA3D313CA5C500018A65B /* OAToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3BD13CA5C040018A65B /* OAToken.m */; };
407- 964FA3D413CA5C500018A65B /* OATokenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3BF13CA5C040018A65B /* OATokenManager.m */; };
408- 964FA3DF13CA5D1D0018A65B /* UOJSONFetchOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3DE13CA5D1D0018A65B /* UOJSONFetchOperation.m */; };
409- 964FA3EA13CA848D0018A65B /* UOHTTPFetchOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3E913CA848D0018A65B /* UOHTTPFetchOperation.m */; };
410- 964FA3ED13CA8C490018A65B /* UOSSOMusicCredsFetchOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3EC13CA8C490018A65B /* UOSSOMusicCredsFetchOperation.m */; };
411- 964FB0C213CB8B0C00D13DC3 /* header_bg.png in Resources */ = {isa = PBXBuildFile; fileRef = 964FB0C013CB8B0C00D13DC3 /* header_bg.png */; };
412- 964FB0C613CB8B6A00D13DC3 /* header_logo@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 964FB0C513CB8B6A00D13DC3 /* header_logo@2x.png */; };
413+ 964FA3EA13CA848D0018A65B /* UOHTTPFetchOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 964FA3E913CA848D0018A65B /* UOHTTPFetchOperation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
414 9654C9BC13C7826900D0EEA0 /* UOSSOCredentialsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9654C9BA13C7826900D0EEA0 /* UOSSOCredentialsViewController.m */; };
415 9654C9BD13C7826900D0EEA0 /* UOSSOCredentialsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9654C9BB13C7826900D0EEA0 /* UOSSOCredentialsViewController.xib */; };
416 9654C9C713C7AF9200D0EEA0 /* UOMusicLoginController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9654C9C613C7AF9200D0EEA0 /* UOMusicLoginController.m */; };
417- 9674C2C513A7DC01004509E4 /* UORadialProgressControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 9674C2C413A7DC01004509E4 /* UORadialProgressControl.m */; };
418- 96E01B3714E1BDAF00A9F36C /* U1StreamPipe.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E01B3614E1BDAF00A9F36C /* U1StreamPipe.m */; };
419+ 9674C2C513A7DC01004509E4 /* UORadialProgressControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 9674C2C413A7DC01004509E4 /* UORadialProgressControl.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
420+ 96E01B3714E1BDAF00A9F36C /* U1StreamPipe.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E01B3614E1BDAF00A9F36C /* U1StreamPipe.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
421 96FB790A13AA628700D8D4A4 /* UONetworkStatusCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 96FB790913AA628700D8D4A4 /* UONetworkStatusCoordinator.m */; };
422 /* End PBXBuildFile section */
423
424+/* Begin PBXContainerItemProxy section */
425+ 528515931604F16D004A1F7C /* PBXContainerItemProxy */ = {
426+ isa = PBXContainerItemProxy;
427+ containerPortal = 5285158E1604F16B004A1F7C /* UbuntuOneAuthKit.xcodeproj */;
428+ proxyType = 2;
429+ remoteGlobalIDString = 528515631604F16B004A1F7C;
430+ remoteInfo = UbuntuOneAuthKit;
431+ };
432+ 528515951604F16D004A1F7C /* PBXContainerItemProxy */ = {
433+ isa = PBXContainerItemProxy;
434+ containerPortal = 5285158E1604F16B004A1F7C /* UbuntuOneAuthKit.xcodeproj */;
435+ proxyType = 2;
436+ remoteGlobalIDString = 528515741604F16B004A1F7C;
437+ remoteInfo = UbuntuOneAuthKitTests;
438+ };
439+ 528515971604F409004A1F7C /* PBXContainerItemProxy */ = {
440+ isa = PBXContainerItemProxy;
441+ containerPortal = 5285158E1604F16B004A1F7C /* UbuntuOneAuthKit.xcodeproj */;
442+ proxyType = 1;
443+ remoteGlobalIDString = 528515621604F16B004A1F7C;
444+ remoteInfo = UbuntuOneAuthKit;
445+ };
446+/* End PBXContainerItemProxy section */
447+
448 /* Begin PBXFileReference section */
449 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
450 1D6058910D05DD3D006BFB54 /* U1 Music.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "U1 Music.app"; sourceTree = BUILT_PRODUCTS_DIR; };
451@@ -246,15 +272,83 @@
452 523B3CF715B73BA0004394F4 /* download.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = download.png; sourceTree = "<group>"; };
453 523B3CF815B73BA0004394F4 /* download@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "download@2x.png"; sourceTree = "<group>"; };
454 5279764815F00B2600F8435F /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
455- 5305C2051157F4F800BC78F0 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; };
456+ 5285158E1604F16B004A1F7C /* UbuntuOneAuthKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = UbuntuOneAuthKit.xcodeproj; path = ../UbuntuOneAuthKit/UbuntuOneAuthKit.xcodeproj; sourceTree = "<group>"; };
457+ 52A042D61606D6C40000B4BC /* NSMutableURLRequest+Parameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableURLRequest+Parameters.h"; sourceTree = "<group>"; };
458+ 52A042D71606D6C40000B4BC /* NSMutableURLRequest+Parameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableURLRequest+Parameters.m"; sourceTree = "<group>"; };
459+ 52A042D81606D6C40000B4BC /* NSString+URLEncoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+URLEncoding.h"; sourceTree = "<group>"; };
460+ 52A042D91606D6C40000B4BC /* NSString+URLEncoding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+URLEncoding.m"; sourceTree = "<group>"; };
461+ 52A042DA1606D6C40000B4BC /* NSURL+Base.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSURL+Base.h"; sourceTree = "<group>"; };
462+ 52A042DB1606D6C40000B4BC /* NSURL+Base.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURL+Base.m"; sourceTree = "<group>"; };
463+ 52A042DD1606D6C40000B4BC /* Base64Transcoder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Base64Transcoder.c; sourceTree = "<group>"; };
464+ 52A042DE1606D6C40000B4BC /* Base64Transcoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64Transcoder.h; sourceTree = "<group>"; };
465+ 52A042DF1606D6C40000B4BC /* hmac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hmac.c; sourceTree = "<group>"; };
466+ 52A042E01606D6C40000B4BC /* hmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hmac.h; sourceTree = "<group>"; };
467+ 52A042E11606D6C40000B4BC /* sha1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sha1.c; sourceTree = "<group>"; };
468+ 52A042E21606D6C40000B4BC /* sha1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sha1.h; sourceTree = "<group>"; };
469+ 52A042E31606D6C40000B4BC /* OAAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OAAttachment.h; sourceTree = "<group>"; };
470+ 52A042E41606D6C40000B4BC /* OAAttachment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OAAttachment.m; sourceTree = "<group>"; };
471+ 52A042E51606D6C40000B4BC /* OACall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OACall.h; sourceTree = "<group>"; };
472+ 52A042E61606D6C40000B4BC /* OACall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OACall.m; sourceTree = "<group>"; };
473+ 52A042E71606D6C40000B4BC /* OAConsumer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OAConsumer.h; sourceTree = "<group>"; };
474+ 52A042E81606D6C40000B4BC /* OAConsumer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OAConsumer.m; sourceTree = "<group>"; };
475+ 52A042E91606D6C40000B4BC /* OADataFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OADataFetcher.h; sourceTree = "<group>"; };
476+ 52A042EA1606D6C40000B4BC /* OADataFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OADataFetcher.m; sourceTree = "<group>"; };
477+ 52A042EB1606D6C40000B4BC /* OAHMAC_SHA1SignatureProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OAHMAC_SHA1SignatureProvider.h; sourceTree = "<group>"; };
478+ 52A042EC1606D6C40000B4BC /* OAHMAC_SHA1SignatureProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OAHMAC_SHA1SignatureProvider.m; sourceTree = "<group>"; };
479+ 52A042ED1606D6C40000B4BC /* OAMutableURLRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OAMutableURLRequest.h; sourceTree = "<group>"; };
480+ 52A042EE1606D6C40000B4BC /* OAMutableURLRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OAMutableURLRequest.m; sourceTree = "<group>"; };
481+ 52A042EF1606D6C40000B4BC /* OAPlaintextSignatureProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OAPlaintextSignatureProvider.h; sourceTree = "<group>"; };
482+ 52A042F01606D6C40000B4BC /* OAPlaintextSignatureProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OAPlaintextSignatureProvider.m; sourceTree = "<group>"; };
483+ 52A042F11606D6C40000B4BC /* OAProblem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OAProblem.h; sourceTree = "<group>"; };
484+ 52A042F21606D6C40000B4BC /* OAProblem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OAProblem.m; sourceTree = "<group>"; };
485+ 52A042F31606D6C40000B4BC /* OARequestParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OARequestParameter.h; sourceTree = "<group>"; };
486+ 52A042F41606D6C40000B4BC /* OARequestParameter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OARequestParameter.m; sourceTree = "<group>"; };
487+ 52A042F51606D6C40000B4BC /* OAServiceTicket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OAServiceTicket.h; sourceTree = "<group>"; };
488+ 52A042F61606D6C40000B4BC /* OAServiceTicket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OAServiceTicket.m; sourceTree = "<group>"; };
489+ 52A042F71606D6C40000B4BC /* OASignatureProviding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OASignatureProviding.h; sourceTree = "<group>"; };
490+ 52A042F81606D6C40000B4BC /* OATestServer.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; path = OATestServer.rb; sourceTree = "<group>"; };
491+ 52A042F91606D6C40000B4BC /* OAToken.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OAToken.h; sourceTree = "<group>"; };
492+ 52A042FA1606D6C40000B4BC /* OAToken.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OAToken.m; sourceTree = "<group>"; };
493+ 52A042FB1606D6C40000B4BC /* OATokenManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OATokenManager.h; sourceTree = "<group>"; };
494+ 52A042FC1606D6C40000B4BC /* OATokenManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OATokenManager.m; sourceTree = "<group>"; };
495+ 52A042FD1606D6C40000B4BC /* OAuthConsumer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OAuthConsumer.h; sourceTree = "<group>"; };
496+ 52A042FE1606D6C40000B4BC /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
497+ 52AC3D4B1604513E00B4785D /* about_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = about_logo.png; sourceTree = "<group>"; };
498+ 52AC3D4C1604513E00B4785D /* albums.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = albums.png; sourceTree = "<group>"; };
499+ 52AC3D4D1604513E00B4785D /* albums@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "albums@2x.png"; sourceTree = "<group>"; };
500+ 52AC3D4E1604513E00B4785D /* artists.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = artists.png; sourceTree = "<group>"; };
501+ 52AC3D4F1604513E00B4785D /* artists@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "artists@2x.png"; sourceTree = "<group>"; };
502+ 52AC3D501604513E00B4785D /* cached.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cached.png; sourceTree = "<group>"; };
503+ 52AC3D511604513E00B4785D /* cached@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cached@2x.png"; sourceTree = "<group>"; };
504+ 52AC3D521604513E00B4785D /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; };
505+ 52AC3D531604513E00B4785D /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = "<group>"; };
506+ 52AC3D541604513E00B4785D /* header_bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = header_bg.png; sourceTree = "<group>"; };
507+ 52AC3D551604513E00B4785D /* header_logo@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "header_logo@2x.png"; sourceTree = "<group>"; };
508+ 52AC3D561604513E00B4785D /* music_29.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_29.png; sourceTree = "<group>"; };
509+ 52AC3D571604513E00B4785D /* music_57.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_57.png; sourceTree = "<group>"; };
510+ 52AC3D581604513E00B4785D /* music_57@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "music_57@2x.png"; sourceTree = "<group>"; };
511+ 52AC3D591604513E00B4785D /* music_512.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_512.png; sourceTree = "<group>"; };
512+ 52AC3D5A1604513E00B4785D /* partiallycached.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = partiallycached.png; sourceTree = "<group>"; };
513+ 52AC3D5B1604513E00B4785D /* partiallycached@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "partiallycached@2x.png"; sourceTree = "<group>"; };
514+ 52AC3D5C1604513E00B4785D /* playlists.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = playlists.png; sourceTree = "<group>"; };
515+ 52AC3D5D1604513E00B4785D /* playlists@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "playlists@2x.png"; sourceTree = "<group>"; };
516+ 52AC3D5E1604513E00B4785D /* progress-label-background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "progress-label-background.png"; sourceTree = "<group>"; };
517+ 52AC3D5F1604513E00B4785D /* settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = settings.png; sourceTree = "<group>"; };
518+ 52AC3D601604513E00B4785D /* settings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "settings@2x.png"; sourceTree = "<group>"; };
519+ 52AC3D611604513E00B4785D /* songs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = songs.png; sourceTree = "<group>"; };
520+ 52AC3D621604513E00B4785D /* songs@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "songs@2x.png"; sourceTree = "<group>"; };
521+ 52AC3D631604513E00B4785D /* uncached-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "uncached-disabled.png"; sourceTree = "<group>"; };
522+ 52AC3D641604513E00B4785D /* uncached-disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "uncached-disabled@2x.png"; sourceTree = "<group>"; };
523+ 52AC3D651604513E00B4785D /* uncached.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uncached.png; sourceTree = "<group>"; };
524+ 52AC3D661604513E00B4785D /* uncached@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "uncached@2x.png"; sourceTree = "<group>"; };
525+ 52AC3D831604539000B4785D /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
526 536D620A1144495400DFCE56 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
527 537DE2D8113F008C00875852 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
528- 53F0CD8111589F0A00A665CD /* progress-label-background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "progress-label-background.png"; sourceTree = "<group>"; };
529 53F675D7113B092C00822059 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; };
530 53F675DB113B093900822059 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
531 53F675E1113B095900822059 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
532 53F675E7113B096400822059 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
533- 8D1107310486CEB800E47090 /* U1Music-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "U1Music-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
534+ 8D1107310486CEB800E47090 /* U1Music-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "U1Music-Info.plist"; path = "../U1Music-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
535 91018B0913573BBB0051EFDC /* UIImage+Resize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+Resize.h"; sourceTree = "<group>"; };
536 91018B0A13573BBB0051EFDC /* UIImage+Resize.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+Resize.m"; sourceTree = "<group>"; };
537 91018B0C13573D150051EFDC /* UIImage+Alpha.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+Alpha.h"; sourceTree = "<group>"; };
538@@ -277,16 +371,6 @@
539 9110DC43134EAC730046B8E4 /* AlbumListParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AlbumListParser.m; sourceTree = "<group>"; };
540 9110DC551354A7460046B8E4 /* AlbumArtistUITableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AlbumArtistUITableViewCell.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
541 9110DC561354A7470046B8E4 /* AlbumArtistUITableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AlbumArtistUITableViewCell.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
542- 9112B01E1383FF27003C1D93 /* albums.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = albums.png; sourceTree = "<group>"; };
543- 9112B01F1383FF27003C1D93 /* artists.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = artists.png; sourceTree = "<group>"; };
544- 9112B0201383FF27003C1D93 /* playlists.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = playlists.png; sourceTree = "<group>"; };
545- 9112B0221383FF27003C1D93 /* settings.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = settings.png; sourceTree = "<group>"; };
546- 9112B0231383FF27003C1D93 /* songs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = songs.png; sourceTree = "<group>"; };
547- 9112B02A1383FF37003C1D93 /* albums@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "albums@2x.png"; sourceTree = "<group>"; };
548- 9112B02B1383FF37003C1D93 /* artists@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "artists@2x.png"; sourceTree = "<group>"; };
549- 9112B02C1383FF37003C1D93 /* playlists@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "playlists@2x.png"; sourceTree = "<group>"; };
550- 9112B02D1383FF37003C1D93 /* settings@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "settings@2x.png"; sourceTree = "<group>"; };
551- 9112B02E1383FF37003C1D93 /* songs@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "songs@2x.png"; sourceTree = "<group>"; };
552 9123D19F13257ADF00B40210 /* PlaylistListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaylistListViewController.h; sourceTree = "<group>"; };
553 9123D1A013257ADF00B40210 /* PlaylistListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = PlaylistListViewController.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
554 9123D1B913280B3400B40210 /* PlaylistViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlaylistViewController.h; path = view_controllers/PlaylistViewController.h; sourceTree = "<group>"; };
555@@ -307,12 +391,6 @@
556 9132827A144E07EA00395F40 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = "<group>"; };
557 9132827B144E07EA00395F40 /* release_notes.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = release_notes.txt; sourceTree = "<group>"; };
558 9132827C144E07EA00395F40 /* TestFlight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFlight.h; sourceTree = "<group>"; };
559- 91406E8E13849F2400A7DA67 /* cached.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cached.png; sourceTree = "<group>"; };
560- 91406E8F13849F2400A7DA67 /* cached@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cached@2x.png"; sourceTree = "<group>"; };
561- 91406E9013849F2400A7DA67 /* partiallycached.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = partiallycached.png; sourceTree = "<group>"; };
562- 91406E9113849F2400A7DA67 /* partiallycached@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "partiallycached@2x.png"; sourceTree = "<group>"; };
563- 91406E9213849F2400A7DA67 /* uncached.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uncached.png; sourceTree = "<group>"; };
564- 91406E9313849F2400A7DA67 /* uncached@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "uncached@2x.png"; sourceTree = "<group>"; };
565 91406EE8138AEEE000A7DA67 /* NSString+Extras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Extras.h"; sourceTree = "<group>"; };
566 91406EE9138AEEE000A7DA67 /* NSString+Extras.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Extras.m"; sourceTree = "<group>"; };
567 9149D9C9159BEC3D009AE771 /* default-album-art-120.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "default-album-art-120.png"; sourceTree = "<group>"; };
568@@ -354,13 +432,10 @@
569 91C493CF14E4593C00BC1815 /* U1ByteSizeValueTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = U1ByteSizeValueTransformer.m; sourceTree = "<group>"; };
570 91C8CCAD14B7883600A0E311 /* ArtistUITableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArtistUITableViewCell.h; sourceTree = "<group>"; };
571 91C8CCAE14B7883600A0E311 /* ArtistUITableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ArtistUITableViewCell.m; sourceTree = "<group>"; };
572- 91D18DA913B228D3001BEB42 /* uncached-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "uncached-disabled.png"; sourceTree = "<group>"; };
573- 91D18DAA13B228D3001BEB42 /* uncached-disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "uncached-disabled@2x.png"; sourceTree = "<group>"; };
574 91D3A16D14B93B2A003D4FC0 /* MOC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MOC.h; path = Models/MOC.h; sourceTree = SOURCE_ROOT; };
575 91D3A16E14B93B2A003D4FC0 /* MOC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MOC.m; path = Models/MOC.m; sourceTree = SOURCE_ROOT; };
576 91D3A17014BE12FE003D4FC0 /* PlaylistUITableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlaylistUITableViewCell.h; sourceTree = "<group>"; };
577 91D3A17114BE12FE003D4FC0 /* PlaylistUITableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PlaylistUITableViewCell.m; sourceTree = "<group>"; };
578- 91DB6B9E13E9C7190029BC77 /* about_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = about_logo.png; sourceTree = "<group>"; };
579 91E3E46214D33A2D006ED32F /* U1SerializedDownloadOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = U1SerializedDownloadOperation.h; sourceTree = "<group>"; };
580 91E3E46314D33A2D006ED32F /* U1SerializedDownloadOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = U1SerializedDownloadOperation.m; sourceTree = "<group>"; };
581 91E3E46614D33A6F006ED32F /* U1ChunkDownloadOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = U1ChunkDownloadOperation.h; sourceTree = "<group>"; };
582@@ -372,7 +447,6 @@
583 91F2652F14EACFCC0027232B /* U1MigrationViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = U1MigrationViewController.xib; sourceTree = "<group>"; };
584 9316628612264A74003B0EB7 /* NSDate+Extras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+Extras.h"; sourceTree = "<group>"; };
585 9316628712264A74003B0EB7 /* NSDate+Extras.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+Extras.m"; sourceTree = "<group>"; };
586- 932E7A6D1254747E00E7C8FF /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = "<group>"; };
587 932E7A9E1255265A00E7C8FF /* about.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = about.css; sourceTree = "<group>"; };
588 932E7A9F1255265A00E7C8FF /* about.html */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = text.html; path = about.html; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; };
589 932E7B0712552CB400E7C8FF /* PullRefreshTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PullRefreshTableViewController.h; sourceTree = "<group>"; };
590@@ -380,7 +454,7 @@
591 932E7B0A12552CD500E7C8FF /* arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow.png; sourceTree = "<group>"; };
592 9354D0A91248267B00733067 /* NSDictionary+Extras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Extras.h"; sourceTree = "<group>"; };
593 9354D0AA1248267B00733067 /* NSDictionary+Extras.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Extras.m"; sourceTree = "<group>"; };
594- 935FCC42123766E600B5DF9B /* Entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Entitlements.plist; sourceTree = "<group>"; };
595+ 935FCC42123766E600B5DF9B /* Entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Entitlements.plist; path = ../Entitlements.plist; sourceTree = "<group>"; };
596 936F20661227364200070F43 /* Playlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Playlist.h; sourceTree = "<group>"; };
597 936F20671227364200070F43 /* Playlist.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Playlist.m; sourceTree = "<group>"; };
598 936F208E12273D9000070F43 /* Song.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Song.h; sourceTree = "<group>"; };
599@@ -424,10 +498,6 @@
600 93D6B2BC124FD72D007880B0 /* loopback-one-highlight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "loopback-one-highlight@2x.png"; sourceTree = "<group>"; };
601 93D6B2D1124FDA56007880B0 /* NSMutableArray+Extras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray+Extras.h"; sourceTree = "<group>"; };
602 93D6B2D2124FDA56007880B0 /* NSMutableArray+Extras.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray+Extras.m"; sourceTree = "<group>"; };
603- 93D6B50A1252CA71007880B0 /* music_29.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_29.png; sourceTree = "<group>"; };
604- 93D6B50B1252CA71007880B0 /* music_57.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_57.png; sourceTree = "<group>"; };
605- 93D6B50D1252CA71007880B0 /* music_512.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_512.png; sourceTree = "<group>"; };
606- 93D6B5141252CB34007880B0 /* music_57@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "music_57@2x.png"; sourceTree = "<group>"; };
607 93D6B5491252CE57007880B0 /* URLQueryStringParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URLQueryStringParser.h; sourceTree = "<group>"; };
608 93D6B54A1252CE57007880B0 /* URLQueryStringParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = URLQueryStringParser.m; sourceTree = "<group>"; };
609 93DFFE3E135D70B60061F29F /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
610@@ -506,54 +576,8 @@
611 96377AF214E0730B00517845 /* U1StreamWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = U1StreamWriter.m; sourceTree = "<group>"; };
612 963C884C14E1AB0C00EB13A2 /* U1LocalMusicServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = U1LocalMusicServer.h; sourceTree = "<group>"; };
613 963C884D14E1AB0C00EB13A2 /* U1LocalMusicServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = U1LocalMusicServer.m; sourceTree = "<group>"; };
614- 964FA39913CA5C040018A65B /* NSMutableURLRequest+Parameters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSMutableURLRequest+Parameters.h"; sourceTree = "<group>"; };
615- 964FA39A13CA5C040018A65B /* NSMutableURLRequest+Parameters.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSMutableURLRequest+Parameters.m"; sourceTree = "<group>"; };
616- 964FA39B13CA5C040018A65B /* NSString+URLEncoding.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+URLEncoding.h"; sourceTree = "<group>"; };
617- 964FA39C13CA5C040018A65B /* NSString+URLEncoding.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+URLEncoding.m"; sourceTree = "<group>"; };
618- 964FA39D13CA5C040018A65B /* NSURL+Base.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSURL+Base.h"; sourceTree = "<group>"; };
619- 964FA39E13CA5C040018A65B /* NSURL+Base.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSURL+Base.m"; sourceTree = "<group>"; };
620- 964FA3A013CA5C040018A65B /* Base64Transcoder.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = Base64Transcoder.c; sourceTree = "<group>"; };
621- 964FA3A113CA5C040018A65B /* Base64Transcoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Base64Transcoder.h; sourceTree = "<group>"; };
622- 964FA3A213CA5C040018A65B /* hmac.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hmac.c; sourceTree = "<group>"; };
623- 964FA3A313CA5C040018A65B /* hmac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hmac.h; sourceTree = "<group>"; };
624- 964FA3A413CA5C040018A65B /* sha1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = sha1.c; sourceTree = "<group>"; };
625- 964FA3A513CA5C040018A65B /* sha1.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sha1.h; sourceTree = "<group>"; };
626- 964FA3A613CA5C040018A65B /* OAAttachment.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OAAttachment.h; sourceTree = "<group>"; };
627- 964FA3A713CA5C040018A65B /* OAAttachment.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OAAttachment.m; sourceTree = "<group>"; };
628- 964FA3A813CA5C040018A65B /* OACall.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OACall.h; sourceTree = "<group>"; };
629- 964FA3A913CA5C040018A65B /* OACall.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OACall.m; sourceTree = "<group>"; };
630- 964FA3AA13CA5C040018A65B /* OAConsumer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OAConsumer.h; sourceTree = "<group>"; };
631- 964FA3AB13CA5C040018A65B /* OAConsumer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OAConsumer.m; sourceTree = "<group>"; };
632- 964FA3AC13CA5C040018A65B /* OADataFetcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OADataFetcher.h; sourceTree = "<group>"; };
633- 964FA3AD13CA5C040018A65B /* OADataFetcher.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OADataFetcher.m; sourceTree = "<group>"; };
634- 964FA3AE13CA5C040018A65B /* OAHMAC_SHA1SignatureProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OAHMAC_SHA1SignatureProvider.h; sourceTree = "<group>"; };
635- 964FA3AF13CA5C040018A65B /* OAHMAC_SHA1SignatureProvider.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OAHMAC_SHA1SignatureProvider.m; sourceTree = "<group>"; };
636- 964FA3B013CA5C040018A65B /* OAMutableURLRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OAMutableURLRequest.h; sourceTree = "<group>"; };
637- 964FA3B113CA5C040018A65B /* OAMutableURLRequest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OAMutableURLRequest.m; sourceTree = "<group>"; };
638- 964FA3B213CA5C040018A65B /* OAPlaintextSignatureProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OAPlaintextSignatureProvider.h; sourceTree = "<group>"; };
639- 964FA3B313CA5C040018A65B /* OAPlaintextSignatureProvider.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OAPlaintextSignatureProvider.m; sourceTree = "<group>"; };
640- 964FA3B413CA5C040018A65B /* OAProblem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OAProblem.h; sourceTree = "<group>"; };
641- 964FA3B513CA5C040018A65B /* OAProblem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OAProblem.m; sourceTree = "<group>"; };
642- 964FA3B613CA5C040018A65B /* OARequestParameter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OARequestParameter.h; sourceTree = "<group>"; };
643- 964FA3B713CA5C040018A65B /* OARequestParameter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OARequestParameter.m; sourceTree = "<group>"; };
644- 964FA3B813CA5C040018A65B /* OAServiceTicket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OAServiceTicket.h; sourceTree = "<group>"; };
645- 964FA3B913CA5C040018A65B /* OAServiceTicket.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OAServiceTicket.m; sourceTree = "<group>"; };
646- 964FA3BA13CA5C040018A65B /* OASignatureProviding.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OASignatureProviding.h; sourceTree = "<group>"; };
647- 964FA3BB13CA5C040018A65B /* OATestServer.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; path = OATestServer.rb; sourceTree = "<group>"; };
648- 964FA3BC13CA5C040018A65B /* OAToken.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OAToken.h; sourceTree = "<group>"; };
649- 964FA3BD13CA5C040018A65B /* OAToken.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OAToken.m; sourceTree = "<group>"; };
650- 964FA3BE13CA5C040018A65B /* OATokenManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OATokenManager.h; sourceTree = "<group>"; };
651- 964FA3BF13CA5C040018A65B /* OATokenManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OATokenManager.m; sourceTree = "<group>"; };
652- 964FA3C013CA5C040018A65B /* OAuthConsumer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OAuthConsumer.h; sourceTree = "<group>"; };
653- 964FA3C113CA5C040018A65B /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
654- 964FA3DD13CA5D1D0018A65B /* UOJSONFetchOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UOJSONFetchOperation.h; sourceTree = "<group>"; };
655- 964FA3DE13CA5D1D0018A65B /* UOJSONFetchOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UOJSONFetchOperation.m; sourceTree = "<group>"; };
656 964FA3E813CA848D0018A65B /* UOHTTPFetchOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UOHTTPFetchOperation.h; sourceTree = "<group>"; };
657 964FA3E913CA848D0018A65B /* UOHTTPFetchOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UOHTTPFetchOperation.m; sourceTree = "<group>"; };
658- 964FA3EB13CA8C490018A65B /* UOSSOMusicCredsFetchOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UOSSOMusicCredsFetchOperation.h; path = utilities/UOSSOMusicCredsFetchOperation.h; sourceTree = SOURCE_ROOT; };
659- 964FA3EC13CA8C490018A65B /* UOSSOMusicCredsFetchOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UOSSOMusicCredsFetchOperation.m; path = utilities/UOSSOMusicCredsFetchOperation.m; sourceTree = SOURCE_ROOT; };
660- 964FB0C013CB8B0C00D13DC3 /* header_bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = header_bg.png; sourceTree = "<group>"; };
661- 964FB0C513CB8B6A00D13DC3 /* header_logo@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "header_logo@2x.png"; sourceTree = "<group>"; };
662 9654C9B913C7826900D0EEA0 /* UOSSOCredentialsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UOSSOCredentialsViewController.h; sourceTree = "<group>"; };
663 9654C9BA13C7826900D0EEA0 /* UOSSOCredentialsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UOSSOCredentialsViewController.m; sourceTree = "<group>"; };
664 9654C9BB13C7826900D0EEA0 /* UOSSOCredentialsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UOSSOCredentialsViewController.xib; sourceTree = "<group>"; };
665@@ -572,6 +596,7 @@
666 isa = PBXFrameworksBuildPhase;
667 buildActionMask = 2147483647;
668 files = (
669+ 528515991604F410004A1F7C /* UbuntuOneAuthKit.a in Frameworks */,
670 5279764915F00B2600F8435F /* libz.dylib in Frameworks */,
671 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
672 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
673@@ -602,8 +627,8 @@
674 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
675 isa = PBXGroup;
676 children = (
677- 5279764815F00B2600F8435F /* libz.dylib */,
678- 93F3346C1247FB78006C6707 /* Main */,
679+ 5285158E1604F16B004A1F7C /* UbuntuOneAuthKit.xcodeproj */,
680+ 93F3346C1247FB78006C6707 /* Music */,
681 91018B261359233E0051EFDC /* Base View Controllers */,
682 93F3348C1247FCDC006C6707 /* Root View Controllers */,
683 91018B27135923960051EFDC /* Sub View Controllers */,
684@@ -614,8 +639,6 @@
685 936F1F2E12271B6500070F43 /* Controls */,
686 9316628512264A74003B0EB7 /* Categories */,
687 29B97317FDCFA39411CA2CEA /* Resources */,
688- 932E7A9D1255265A00E7C8FF /* About Content */,
689- 93FA42A6124DC1350080DF62 /* Images */,
690 964FA39013CA5BE60018A65B /* Dependencies */,
691 29B97323FDCFA39411CA2CEA /* Frameworks */,
692 19C28FACFE9D520D11CA2CBB /* Products */,
693@@ -626,37 +649,8 @@
694 29B97317FDCFA39411CA2CEA /* Resources */ = {
695 isa = PBXGroup;
696 children = (
697- 91DB6B9E13E9C7190029BC77 /* about_logo.png */,
698- 964FB0C513CB8B6A00D13DC3 /* header_logo@2x.png */,
699- 964FB0C013CB8B0C00D13DC3 /* header_bg.png */,
700- 9112B01F1383FF27003C1D93 /* artists.png */,
701- 9112B02B1383FF37003C1D93 /* artists@2x.png */,
702- 9112B01E1383FF27003C1D93 /* albums.png */,
703- 9112B02A1383FF37003C1D93 /* albums@2x.png */,
704- 9112B0231383FF27003C1D93 /* songs.png */,
705- 9112B02E1383FF37003C1D93 /* songs@2x.png */,
706- 9112B0201383FF27003C1D93 /* playlists.png */,
707- 9112B02C1383FF37003C1D93 /* playlists@2x.png */,
708- 9112B0221383FF27003C1D93 /* settings.png */,
709- 9112B02D1383FF37003C1D93 /* settings@2x.png */,
710- 91406E8E13849F2400A7DA67 /* cached.png */,
711- 91406E8F13849F2400A7DA67 /* cached@2x.png */,
712- 91406E9013849F2400A7DA67 /* partiallycached.png */,
713- 91406E9113849F2400A7DA67 /* partiallycached@2x.png */,
714- 91406E9213849F2400A7DA67 /* uncached.png */,
715- 91406E9313849F2400A7DA67 /* uncached@2x.png */,
716- 91D18DA913B228D3001BEB42 /* uncached-disabled.png */,
717- 91D18DAA13B228D3001BEB42 /* uncached-disabled@2x.png */,
718- 5305C2051157F4F800BC78F0 /* Default.png */,
719- 932E7A6D1254747E00E7C8FF /* Default@2x.png */,
720- 93D6B50B1252CA71007880B0 /* music_57.png */,
721- 93D6B5141252CB34007880B0 /* music_57@2x.png */,
722- 93D6B50A1252CA71007880B0 /* music_29.png */,
723- 93D6B50D1252CA71007880B0 /* music_512.png */,
724- 53F0CD8111589F0A00A665CD /* progress-label-background.png */,
725- 8D1107310486CEB800E47090 /* U1Music-Info.plist */,
726- 935FCC42123766E600B5DF9B /* Entitlements.plist */,
727- 93DFFE4C135D71760061F29F /* music.xcdatamodeld */,
728+ 932E7A9D1255265A00E7C8FF /* About Content */,
729+ 93FA42A6124DC1350080DF62 /* Images */,
730 );
731 name = Resources;
732 sourceTree = "<group>";
733@@ -679,6 +673,89 @@
734 name = Frameworks;
735 sourceTree = "<group>";
736 };
737+ 528515571604EED8004A1F7C /* Supporting Files */ = {
738+ isa = PBXGroup;
739+ children = (
740+ 8D1107310486CEB800E47090 /* U1Music-Info.plist */,
741+ 935FCC42123766E600B5DF9B /* Entitlements.plist */,
742+ 93F334701247FB78006C6707 /* main.m */,
743+ );
744+ name = "Supporting Files";
745+ sourceTree = "<group>";
746+ };
747+ 5285158F1604F16B004A1F7C /* Products */ = {
748+ isa = PBXGroup;
749+ children = (
750+ 528515941604F16D004A1F7C /* UbuntuOneAuthKit.a */,
751+ 528515961604F16D004A1F7C /* UbuntuOneAuthKitTests.octest */,
752+ );
753+ name = Products;
754+ sourceTree = "<group>";
755+ };
756+ 52A042D41606D6C40000B4BC /* oauthconsumer */ = {
757+ isa = PBXGroup;
758+ children = (
759+ 52A042D51606D6C40000B4BC /* Categories */,
760+ 52A042DC1606D6C40000B4BC /* Crypto */,
761+ 52A042E31606D6C40000B4BC /* OAAttachment.h */,
762+ 52A042E41606D6C40000B4BC /* OAAttachment.m */,
763+ 52A042E51606D6C40000B4BC /* OACall.h */,
764+ 52A042E61606D6C40000B4BC /* OACall.m */,
765+ 52A042E71606D6C40000B4BC /* OAConsumer.h */,
766+ 52A042E81606D6C40000B4BC /* OAConsumer.m */,
767+ 52A042E91606D6C40000B4BC /* OADataFetcher.h */,
768+ 52A042EA1606D6C40000B4BC /* OADataFetcher.m */,
769+ 52A042EB1606D6C40000B4BC /* OAHMAC_SHA1SignatureProvider.h */,
770+ 52A042EC1606D6C40000B4BC /* OAHMAC_SHA1SignatureProvider.m */,
771+ 52A042ED1606D6C40000B4BC /* OAMutableURLRequest.h */,
772+ 52A042EE1606D6C40000B4BC /* OAMutableURLRequest.m */,
773+ 52A042EF1606D6C40000B4BC /* OAPlaintextSignatureProvider.h */,
774+ 52A042F01606D6C40000B4BC /* OAPlaintextSignatureProvider.m */,
775+ 52A042F11606D6C40000B4BC /* OAProblem.h */,
776+ 52A042F21606D6C40000B4BC /* OAProblem.m */,
777+ 52A042F31606D6C40000B4BC /* OARequestParameter.h */,
778+ 52A042F41606D6C40000B4BC /* OARequestParameter.m */,
779+ 52A042F51606D6C40000B4BC /* OAServiceTicket.h */,
780+ 52A042F61606D6C40000B4BC /* OAServiceTicket.m */,
781+ 52A042F71606D6C40000B4BC /* OASignatureProviding.h */,
782+ 52A042F81606D6C40000B4BC /* OATestServer.rb */,
783+ 52A042F91606D6C40000B4BC /* OAToken.h */,
784+ 52A042FA1606D6C40000B4BC /* OAToken.m */,
785+ 52A042FB1606D6C40000B4BC /* OATokenManager.h */,
786+ 52A042FC1606D6C40000B4BC /* OATokenManager.m */,
787+ 52A042FD1606D6C40000B4BC /* OAuthConsumer.h */,
788+ 52A042FE1606D6C40000B4BC /* README */,
789+ );
790+ name = oauthconsumer;
791+ path = Dependencies/oauthconsumer;
792+ sourceTree = "<group>";
793+ };
794+ 52A042D51606D6C40000B4BC /* Categories */ = {
795+ isa = PBXGroup;
796+ children = (
797+ 52A042D61606D6C40000B4BC /* NSMutableURLRequest+Parameters.h */,
798+ 52A042D71606D6C40000B4BC /* NSMutableURLRequest+Parameters.m */,
799+ 52A042D81606D6C40000B4BC /* NSString+URLEncoding.h */,
800+ 52A042D91606D6C40000B4BC /* NSString+URLEncoding.m */,
801+ 52A042DA1606D6C40000B4BC /* NSURL+Base.h */,
802+ 52A042DB1606D6C40000B4BC /* NSURL+Base.m */,
803+ );
804+ path = Categories;
805+ sourceTree = "<group>";
806+ };
807+ 52A042DC1606D6C40000B4BC /* Crypto */ = {
808+ isa = PBXGroup;
809+ children = (
810+ 52A042DD1606D6C40000B4BC /* Base64Transcoder.c */,
811+ 52A042DE1606D6C40000B4BC /* Base64Transcoder.h */,
812+ 52A042DF1606D6C40000B4BC /* hmac.c */,
813+ 52A042E01606D6C40000B4BC /* hmac.h */,
814+ 52A042E11606D6C40000B4BC /* sha1.c */,
815+ 52A042E21606D6C40000B4BC /* sha1.h */,
816+ );
817+ path = Crypto;
818+ sourceTree = "<group>";
819+ };
820 91018B261359233E0051EFDC /* Base View Controllers */ = {
821 isa = PBXGroup;
822 children = (
823@@ -896,8 +973,6 @@
824 937FAA10137CFC1B00507E51 /* AlbumArtDownloadOperation.m */,
825 937FAA19137CFCA600507E51 /* AbstractNetworkOperation.h */,
826 937FAA1A137CFCA600507E51 /* AbstractNetworkOperation.m */,
827- 964FA3DD13CA5D1D0018A65B /* UOJSONFetchOperation.h */,
828- 964FA3DE13CA5D1D0018A65B /* UOJSONFetchOperation.m */,
829 964FA3E813CA848D0018A65B /* UOHTTPFetchOperation.h */,
830 964FA3E913CA848D0018A65B /* UOHTTPFetchOperation.m */,
831 );
832@@ -951,16 +1026,16 @@
833 path = xibs;
834 sourceTree = "<group>";
835 };
836- 93F3346C1247FB78006C6707 /* Main */ = {
837+ 93F3346C1247FB78006C6707 /* Music */ = {
838 isa = PBXGroup;
839 children = (
840- 93BC520A124C187700B7587C /* SynthesizeSingleton.h */,
841 93F334841247FC15006C6707 /* U1Music_Prefix.pch */,
842 93F3346E1247FB78006C6707 /* U1MusicAppDelegate.h */,
843 93F3346F1247FB78006C6707 /* U1MusicAppDelegate.m */,
844- 93F334701247FB78006C6707 /* main.m */,
845+ 93DFFE4C135D71760061F29F /* music.xcdatamodeld */,
846+ 528515571604EED8004A1F7C /* Supporting Files */,
847 );
848- name = Main;
849+ name = Music;
850 path = "Other Sources";
851 sourceTree = "<group>";
852 };
853@@ -988,47 +1063,76 @@
854 93FA42A6124DC1350080DF62 /* Images */ = {
855 isa = PBXGroup;
856 children = (
857+ 93FA42A7124DC1350080DF62 /* 03-loopback.png */,
858+ 93FA42A8124DC1350080DF62 /* 03-loopback@2x.png */,
859+ 93FA42A9124DC1350080DF62 /* 05-shuffle.png */,
860+ 93FA42AA124DC1350080DF62 /* 05-shuffle@2x.png */,
861+ 52AC3D4B1604513E00B4785D /* about_logo.png */,
862+ 52AC3D4C1604513E00B4785D /* albums.png */,
863+ 52AC3D4D1604513E00B4785D /* albums@2x.png */,
864+ 932E7B0A12552CD500E7C8FF /* arrow.png */,
865+ 52AC3D4E1604513E00B4785D /* artists.png */,
866+ 52AC3D4F1604513E00B4785D /* artists@2x.png */,
867+ 93FA42AB124DC1350080DF62 /* background.png */,
868+ 93FA43A2124DEE0E0080DF62 /* bluetrack.png */,
869+ 52AC3D501604513E00B4785D /* cached.png */,
870+ 52AC3D511604513E00B4785D /* cached@2x.png */,
871 52169C9D15D95E2C00ED366D /* cancel.png */,
872 52169C9E15D95E2C00ED366D /* cancel@2x.png */,
873- 52169C9F15D95E2C00ED366D /* trash-grey.png */,
874- 52169CA015D95E2C00ED366D /* trash-grey@2x.png */,
875 52169C9415D95DD100ED366D /* cancel-grey.png */,
876 52169C9515D95DD100ED366D /* cancel-grey@2x.png */,
877- 52169C9615D95DD100ED366D /* trash.png */,
878- 52169C9715D95DD100ED366D /* trash@2x.png */,
879- 523B3CF515B73BA0004394F4 /* download-grey.png */,
880- 523B3CF615B73BA0004394F4 /* download-grey@2x.png */,
881- 523B3CF715B73BA0004394F4 /* download.png */,
882- 523B3CF815B73BA0004394F4 /* download@2x.png */,
883- 523B3CE015B5D64F004394F4 /* grabber.png */,
884- 523B3CE115B5D64F004394F4 /* grabber@2x.png */,
885+ 52AC3D521604513E00B4785D /* Default.png */,
886+ 52AC3D531604513E00B4785D /* Default@2x.png */,
887+ 52AC3D831604539000B4785D /* Default-568h@2x.png */,
888 9149D9C9159BEC3D009AE771 /* default-album-art-120.png */,
889 9149D9CB159BEC3D009AE771 /* default-album-art-120@2x.png */,
890 9149D9CA159BEC3D009AE771 /* default-album-art-200.png */,
891 9149D9CC159BEC3D009AE771 /* default-album-art-200@2x.png */,
892 9149D9CD159BEC3D009AE771 /* default-album-art-640.png */,
893 9149D9CE159BEC3D009AE771 /* default-album-art-640@2x.png */,
894- 932E7B0A12552CD500E7C8FF /* arrow.png */,
895+ 523B3CF715B73BA0004394F4 /* download.png */,
896+ 523B3CF815B73BA0004394F4 /* download@2x.png */,
897+ 523B3CF515B73BA0004394F4 /* download-grey.png */,
898+ 523B3CF615B73BA0004394F4 /* download-grey@2x.png */,
899+ 523B3CE015B5D64F004394F4 /* grabber.png */,
900+ 523B3CE115B5D64F004394F4 /* grabber@2x.png */,
901+ 52AC3D541604513E00B4785D /* header_bg.png */,
902+ 52AC3D551604513E00B4785D /* header_logo@2x.png */,
903+ 93D6B285124FD279007880B0 /* loopback-highlight.png */,
904+ 93D6B286124FD279007880B0 /* loopback-highlight@2x.png */,
905+ 93D6B2BB124FD72D007880B0 /* loopback-one-highlight.png */,
906+ 93D6B2BC124FD72D007880B0 /* loopback-one-highlight@2x.png */,
907+ 52AC3D561604513E00B4785D /* music_29.png */,
908+ 52AC3D571604513E00B4785D /* music_57.png */,
909+ 52AC3D581604513E00B4785D /* music_57@2x.png */,
910+ 52AC3D591604513E00B4785D /* music_512.png */,
911+ 52AC3D5A1604513E00B4785D /* partiallycached.png */,
912+ 52AC3D5B1604513E00B4785D /* partiallycached@2x.png */,
913+ 93FA4334124DE0D80080DF62 /* player_back.png */,
914+ 93FA4335124DE0D80080DF62 /* player_back@2x.png */,
915+ 93FA43B3124DF07C0080DF62 /* player_overlay_bg.png */,
916+ 93FA43B4124DF07C0080DF62 /* player_overlay_bg@2x.png */,
917+ 52AC3D5C1604513E00B4785D /* playlists.png */,
918+ 52AC3D5D1604513E00B4785D /* playlists@2x.png */,
919+ 52AC3D5E1604513E00B4785D /* progress-label-background.png */,
920+ 52AC3D5F1604513E00B4785D /* settings.png */,
921+ 52AC3D601604513E00B4785D /* settings@2x.png */,
922+ 52AC3D611604513E00B4785D /* songs.png */,
923+ 52AC3D621604513E00B4785D /* songs@2x.png */,
924 93CCBD4D1254039900AFFC22 /* speaker.png */,
925 93CCBD4E1254039900AFFC22 /* speaker@2x.png */,
926- 93D6B2BB124FD72D007880B0 /* loopback-one-highlight.png */,
927- 93D6B2BC124FD72D007880B0 /* loopback-one-highlight@2x.png */,
928 93D6B289124FD280007880B0 /* shuffle-highlight.png */,
929 93D6B28A124FD280007880B0 /* shuffle-highlight@2x.png */,
930- 93D6B285124FD279007880B0 /* loopback-highlight.png */,
931- 93D6B286124FD279007880B0 /* loopback-highlight@2x.png */,
932- 93FA43B3124DF07C0080DF62 /* player_overlay_bg.png */,
933- 93FA43B4124DF07C0080DF62 /* player_overlay_bg@2x.png */,
934- 93FA43A2124DEE0E0080DF62 /* bluetrack.png */,
935+ 52169C9615D95DD100ED366D /* trash.png */,
936+ 52169C9715D95DD100ED366D /* trash@2x.png */,
937+ 52169C9F15D95E2C00ED366D /* trash-grey.png */,
938+ 52169CA015D95E2C00ED366D /* trash-grey@2x.png */,
939+ 52AC3D631604513E00B4785D /* uncached-disabled.png */,
940+ 52AC3D641604513E00B4785D /* uncached-disabled@2x.png */,
941+ 52AC3D651604513E00B4785D /* uncached.png */,
942+ 52AC3D661604513E00B4785D /* uncached@2x.png */,
943 93FA43A3124DEE0E0080DF62 /* whiteslide.png */,
944 93FA43A4124DEE0E0080DF62 /* whitetrack.png */,
945- 93FA4334124DE0D80080DF62 /* player_back.png */,
946- 93FA4335124DE0D80080DF62 /* player_back@2x.png */,
947- 93FA42A7124DC1350080DF62 /* 03-loopback.png */,
948- 93FA42A8124DC1350080DF62 /* 03-loopback@2x.png */,
949- 93FA42A9124DC1350080DF62 /* 05-shuffle.png */,
950- 93FA42AA124DC1350080DF62 /* 05-shuffle@2x.png */,
951- 93FA42AB124DC1350080DF62 /* background.png */,
952 );
953 name = Images;
954 path = images;
955@@ -1080,76 +1184,14 @@
956 964FA39013CA5BE60018A65B /* Dependencies */ = {
957 isa = PBXGroup;
958 children = (
959+ 52A042D41606D6C40000B4BC /* oauthconsumer */,
960+ 93BC520A124C187700B7587C /* SynthesizeSingleton.h */,
961+ 5279764815F00B2600F8435F /* libz.dylib */,
962 91328278144E07EA00395F40 /* TestFlight SDK */,
963- 964FA39713CA5C040018A65B /* oauthconsumer */,
964 );
965 name = Dependencies;
966 sourceTree = "<group>";
967 };
968- 964FA39713CA5C040018A65B /* oauthconsumer */ = {
969- isa = PBXGroup;
970- children = (
971- 964FA39813CA5C040018A65B /* Categories */,
972- 964FA39F13CA5C040018A65B /* Crypto */,
973- 964FA3A613CA5C040018A65B /* OAAttachment.h */,
974- 964FA3A713CA5C040018A65B /* OAAttachment.m */,
975- 964FA3A813CA5C040018A65B /* OACall.h */,
976- 964FA3A913CA5C040018A65B /* OACall.m */,
977- 964FA3AA13CA5C040018A65B /* OAConsumer.h */,
978- 964FA3AB13CA5C040018A65B /* OAConsumer.m */,
979- 964FA3AC13CA5C040018A65B /* OADataFetcher.h */,
980- 964FA3AD13CA5C040018A65B /* OADataFetcher.m */,
981- 964FA3AE13CA5C040018A65B /* OAHMAC_SHA1SignatureProvider.h */,
982- 964FA3AF13CA5C040018A65B /* OAHMAC_SHA1SignatureProvider.m */,
983- 964FA3B013CA5C040018A65B /* OAMutableURLRequest.h */,
984- 964FA3B113CA5C040018A65B /* OAMutableURLRequest.m */,
985- 964FA3B213CA5C040018A65B /* OAPlaintextSignatureProvider.h */,
986- 964FA3B313CA5C040018A65B /* OAPlaintextSignatureProvider.m */,
987- 964FA3B413CA5C040018A65B /* OAProblem.h */,
988- 964FA3B513CA5C040018A65B /* OAProblem.m */,
989- 964FA3B613CA5C040018A65B /* OARequestParameter.h */,
990- 964FA3B713CA5C040018A65B /* OARequestParameter.m */,
991- 964FA3B813CA5C040018A65B /* OAServiceTicket.h */,
992- 964FA3B913CA5C040018A65B /* OAServiceTicket.m */,
993- 964FA3BA13CA5C040018A65B /* OASignatureProviding.h */,
994- 964FA3BB13CA5C040018A65B /* OATestServer.rb */,
995- 964FA3BC13CA5C040018A65B /* OAToken.h */,
996- 964FA3BD13CA5C040018A65B /* OAToken.m */,
997- 964FA3BE13CA5C040018A65B /* OATokenManager.h */,
998- 964FA3BF13CA5C040018A65B /* OATokenManager.m */,
999- 964FA3C013CA5C040018A65B /* OAuthConsumer.h */,
1000- 964FA3C113CA5C040018A65B /* README */,
1001- );
1002- name = oauthconsumer;
1003- path = Dependencies/oauthconsumer;
1004- sourceTree = "<group>";
1005- };
1006- 964FA39813CA5C040018A65B /* Categories */ = {
1007- isa = PBXGroup;
1008- children = (
1009- 964FA39913CA5C040018A65B /* NSMutableURLRequest+Parameters.h */,
1010- 964FA39A13CA5C040018A65B /* NSMutableURLRequest+Parameters.m */,
1011- 964FA39B13CA5C040018A65B /* NSString+URLEncoding.h */,
1012- 964FA39C13CA5C040018A65B /* NSString+URLEncoding.m */,
1013- 964FA39D13CA5C040018A65B /* NSURL+Base.h */,
1014- 964FA39E13CA5C040018A65B /* NSURL+Base.m */,
1015- );
1016- path = Categories;
1017- sourceTree = "<group>";
1018- };
1019- 964FA39F13CA5C040018A65B /* Crypto */ = {
1020- isa = PBXGroup;
1021- children = (
1022- 964FA3A013CA5C040018A65B /* Base64Transcoder.c */,
1023- 964FA3A113CA5C040018A65B /* Base64Transcoder.h */,
1024- 964FA3A213CA5C040018A65B /* hmac.c */,
1025- 964FA3A313CA5C040018A65B /* hmac.h */,
1026- 964FA3A413CA5C040018A65B /* sha1.c */,
1027- 964FA3A513CA5C040018A65B /* sha1.h */,
1028- );
1029- path = Crypto;
1030- sourceTree = "<group>";
1031- };
1032 9654C9B713C7824500D0EEA0 /* SSO */ = {
1033 isa = PBXGroup;
1034 children = (
1035@@ -1158,8 +1200,6 @@
1036 9654C9BB13C7826900D0EEA0 /* UOSSOCredentialsViewController.xib */,
1037 9654C9C513C7AF9200D0EEA0 /* UOMusicLoginController.h */,
1038 9654C9C613C7AF9200D0EEA0 /* UOMusicLoginController.m */,
1039- 964FA3EB13CA8C490018A65B /* UOSSOMusicCredsFetchOperation.h */,
1040- 964FA3EC13CA8C490018A65B /* UOSSOMusicCredsFetchOperation.m */,
1041 );
1042 name = SSO;
1043 sourceTree = "<group>";
1044@@ -1190,6 +1230,7 @@
1045 buildRules = (
1046 );
1047 dependencies = (
1048+ 528515981604F409004A1F7C /* PBXTargetDependency */,
1049 );
1050 name = U1Music;
1051 productName = iSubTESTING;
1052@@ -1218,6 +1259,12 @@
1053 );
1054 mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
1055 projectDirPath = "";
1056+ projectReferences = (
1057+ {
1058+ ProductGroup = 5285158F1604F16B004A1F7C /* Products */;
1059+ ProjectRef = 5285158E1604F16B004A1F7C /* UbuntuOneAuthKit.xcodeproj */;
1060+ },
1061+ );
1062 projectRoot = "";
1063 targets = (
1064 1D6058900D05DD3D006BFB54 /* U1Music */,
1065@@ -1225,13 +1272,28 @@
1066 };
1067 /* End PBXProject section */
1068
1069+/* Begin PBXReferenceProxy section */
1070+ 528515941604F16D004A1F7C /* UbuntuOneAuthKit.a */ = {
1071+ isa = PBXReferenceProxy;
1072+ fileType = archive.ar;
1073+ path = UbuntuOneAuthKit.a;
1074+ remoteRef = 528515931604F16D004A1F7C /* PBXContainerItemProxy */;
1075+ sourceTree = BUILT_PRODUCTS_DIR;
1076+ };
1077+ 528515961604F16D004A1F7C /* UbuntuOneAuthKitTests.octest */ = {
1078+ isa = PBXReferenceProxy;
1079+ fileType = wrapper.cfbundle;
1080+ path = UbuntuOneAuthKitTests.octest;
1081+ remoteRef = 528515951604F16D004A1F7C /* PBXContainerItemProxy */;
1082+ sourceTree = BUILT_PRODUCTS_DIR;
1083+ };
1084+/* End PBXReferenceProxy section */
1085+
1086 /* Begin PBXResourcesBuildPhase section */
1087 1D60588D0D05DD3D006BFB54 /* Resources */ = {
1088 isa = PBXResourcesBuildPhase;
1089 buildActionMask = 2147483647;
1090 files = (
1091- 5305C2061157F4F800BC78F0 /* Default.png in Resources */,
1092- 53F0CD8211589F0A00A665CD /* progress-label-background.png in Resources */,
1093 93F334681247FB02006C6707 /* SongViewController.xib in Resources */,
1094 93F334691247FB02006C6707 /* MainWindow.xib in Resources */,
1095 93F3346A1247FB02006C6707 /* SearchableTableViewController.xib in Resources */,
1096@@ -1253,39 +1315,13 @@
1097 93D6B28C124FD280007880B0 /* shuffle-highlight@2x.png in Resources */,
1098 93D6B2BD124FD72D007880B0 /* loopback-one-highlight.png in Resources */,
1099 93D6B2BE124FD72D007880B0 /* loopback-one-highlight@2x.png in Resources */,
1100- 93D6B50E1252CA71007880B0 /* music_29.png in Resources */,
1101- 93D6B50F1252CA71007880B0 /* music_57.png in Resources */,
1102- 93D6B5111252CA71007880B0 /* music_512.png in Resources */,
1103- 93D6B5151252CB34007880B0 /* music_57@2x.png in Resources */,
1104 93CCBD4F1254039900AFFC22 /* speaker.png in Resources */,
1105 93CCBD501254039900AFFC22 /* speaker@2x.png in Resources */,
1106 93CCBD8012540CD200AFFC22 /* AboutViewController.xib in Resources */,
1107- 932E7A6E1254747E00E7C8FF /* Default@2x.png in Resources */,
1108 932E7AA01255265A00E7C8FF /* about.css in Resources */,
1109 932E7AA11255265A00E7C8FF /* about.html in Resources */,
1110 932E7B0B12552CD500E7C8FF /* arrow.png in Resources */,
1111- 9112B0241383FF27003C1D93 /* albums.png in Resources */,
1112- 9112B0251383FF27003C1D93 /* artists.png in Resources */,
1113- 9112B0261383FF27003C1D93 /* playlists.png in Resources */,
1114- 9112B0281383FF27003C1D93 /* settings.png in Resources */,
1115- 9112B0291383FF27003C1D93 /* songs.png in Resources */,
1116- 9112B02F1383FF37003C1D93 /* albums@2x.png in Resources */,
1117- 9112B0301383FF37003C1D93 /* artists@2x.png in Resources */,
1118- 9112B0311383FF37003C1D93 /* playlists@2x.png in Resources */,
1119- 9112B0321383FF37003C1D93 /* settings@2x.png in Resources */,
1120- 9112B0331383FF37003C1D93 /* songs@2x.png in Resources */,
1121- 91406E9413849F2400A7DA67 /* cached.png in Resources */,
1122- 91406E9513849F2400A7DA67 /* cached@2x.png in Resources */,
1123- 91406E9613849F2400A7DA67 /* partiallycached.png in Resources */,
1124- 91406E9713849F2400A7DA67 /* partiallycached@2x.png in Resources */,
1125- 91406E9813849F2400A7DA67 /* uncached.png in Resources */,
1126- 91406E9913849F2400A7DA67 /* uncached@2x.png in Resources */,
1127- 91D18DAB13B228D3001BEB42 /* uncached-disabled.png in Resources */,
1128- 91D18DAC13B228D3001BEB42 /* uncached-disabled@2x.png in Resources */,
1129 9654C9BD13C7826900D0EEA0 /* UOSSOCredentialsViewController.xib in Resources */,
1130- 964FB0C213CB8B0C00D13DC3 /* header_bg.png in Resources */,
1131- 964FB0C613CB8B6A00D13DC3 /* header_logo@2x.png in Resources */,
1132- 91DB6B9F13E9C7190029BC77 /* about_logo.png in Resources */,
1133 9132827E144E07EA00395F40 /* README.txt in Resources */,
1134 9132827F144E07EA00395F40 /* release_notes.txt in Resources */,
1135 91F2653114EACFCC0027232B /* U1MigrationViewController.xib in Resources */,
1136@@ -1309,6 +1345,37 @@
1137 52169CA215D95E2C00ED366D /* cancel@2x.png in Resources */,
1138 52169CA315D95E2C00ED366D /* trash-grey.png in Resources */,
1139 52169CA415D95E2C00ED366D /* trash-grey@2x.png in Resources */,
1140+ 52AC3D671604513E00B4785D /* about_logo.png in Resources */,
1141+ 52AC3D681604513E00B4785D /* albums.png in Resources */,
1142+ 52AC3D691604513E00B4785D /* albums@2x.png in Resources */,
1143+ 52AC3D6A1604513E00B4785D /* artists.png in Resources */,
1144+ 52AC3D6B1604513E00B4785D /* artists@2x.png in Resources */,
1145+ 52AC3D6C1604513E00B4785D /* cached.png in Resources */,
1146+ 52AC3D6D1604513E00B4785D /* cached@2x.png in Resources */,
1147+ 52AC3D6E1604513E00B4785D /* Default.png in Resources */,
1148+ 52AC3D6F1604513E00B4785D /* Default@2x.png in Resources */,
1149+ 52AC3D701604513E00B4785D /* header_bg.png in Resources */,
1150+ 52AC3D711604513E00B4785D /* header_logo@2x.png in Resources */,
1151+ 52AC3D721604513E00B4785D /* music_29.png in Resources */,
1152+ 52AC3D731604513E00B4785D /* music_57.png in Resources */,
1153+ 52AC3D741604513E00B4785D /* music_57@2x.png in Resources */,
1154+ 52AC3D751604513E00B4785D /* music_512.png in Resources */,
1155+ 52AC3D761604513E00B4785D /* partiallycached.png in Resources */,
1156+ 52AC3D771604513E00B4785D /* partiallycached@2x.png in Resources */,
1157+ 52AC3D781604513E00B4785D /* playlists.png in Resources */,
1158+ 52AC3D791604513E00B4785D /* playlists@2x.png in Resources */,
1159+ 52AC3D7A1604513E00B4785D /* progress-label-background.png in Resources */,
1160+ 52AC3D7B1604513E00B4785D /* settings.png in Resources */,
1161+ 52AC3D7C1604513E00B4785D /* settings@2x.png in Resources */,
1162+ 52AC3D7D1604513E00B4785D /* songs.png in Resources */,
1163+ 52AC3D7E1604513E00B4785D /* songs@2x.png in Resources */,
1164+ 52AC3D7F1604513E00B4785D /* uncached-disabled.png in Resources */,
1165+ 52AC3D801604513E00B4785D /* uncached-disabled@2x.png in Resources */,
1166+ 52AC3D811604513E00B4785D /* uncached.png in Resources */,
1167+ 52AC3D821604513E00B4785D /* uncached@2x.png in Resources */,
1168+ 52AC3D841604539000B4785D /* Default-568h@2x.png in Resources */,
1169+ 52A0430F1606D6C40000B4BC /* OATestServer.rb in Resources */,
1170+ 52A043121606D6C40000B4BC /* README in Resources */,
1171 );
1172 runOnlyForDeploymentPostprocessing = 0;
1173 };
1174@@ -1337,24 +1404,6 @@
1175 isa = PBXSourcesBuildPhase;
1176 buildActionMask = 2147483647;
1177 files = (
1178- 964FA3C313CA5C4F0018A65B /* NSMutableURLRequest+Parameters.m in Sources */,
1179- 964FA3C413CA5C4F0018A65B /* NSString+URLEncoding.m in Sources */,
1180- 964FA3C513CA5C4F0018A65B /* NSURL+Base.m in Sources */,
1181- 964FA3C613CA5C4F0018A65B /* Base64Transcoder.c in Sources */,
1182- 964FA3C713CA5C4F0018A65B /* hmac.c in Sources */,
1183- 964FA3C813CA5C4F0018A65B /* sha1.c in Sources */,
1184- 964FA3C913CA5C4F0018A65B /* OAAttachment.m in Sources */,
1185- 964FA3CA13CA5C4F0018A65B /* OACall.m in Sources */,
1186- 964FA3CB13CA5C4F0018A65B /* OAConsumer.m in Sources */,
1187- 964FA3CC13CA5C4F0018A65B /* OADataFetcher.m in Sources */,
1188- 964FA3CD13CA5C500018A65B /* OAHMAC_SHA1SignatureProvider.m in Sources */,
1189- 964FA3CE13CA5C500018A65B /* OAMutableURLRequest.m in Sources */,
1190- 964FA3CF13CA5C500018A65B /* OAPlaintextSignatureProvider.m in Sources */,
1191- 964FA3D013CA5C500018A65B /* OAProblem.m in Sources */,
1192- 964FA3D113CA5C500018A65B /* OARequestParameter.m in Sources */,
1193- 964FA3D213CA5C500018A65B /* OAServiceTicket.m in Sources */,
1194- 964FA3D313CA5C500018A65B /* OAToken.m in Sources */,
1195- 964FA3D413CA5C500018A65B /* OATokenManager.m in Sources */,
1196 9316628812264A74003B0EB7 /* NSDate+Extras.m in Sources */,
1197 936F20681227364200070F43 /* Playlist.m in Sources */,
1198 936F209012273D9000070F43 /* Song.m in Sources */,
1199@@ -1424,9 +1473,7 @@
1200 96FB790A13AA628700D8D4A4 /* UONetworkStatusCoordinator.m in Sources */,
1201 9654C9BC13C7826900D0EEA0 /* UOSSOCredentialsViewController.m in Sources */,
1202 9654C9C713C7AF9200D0EEA0 /* UOMusicLoginController.m in Sources */,
1203- 964FA3DF13CA5D1D0018A65B /* UOJSONFetchOperation.m in Sources */,
1204 964FA3EA13CA848D0018A65B /* UOHTTPFetchOperation.m in Sources */,
1205- 964FA3ED13CA8C490018A65B /* UOSSOMusicCredsFetchOperation.m in Sources */,
1206 96377AEE14E0726800517845 /* U1Descriptor.m in Sources */,
1207 96377AF314E0730B00517845 /* U1StreamReader.m in Sources */,
1208 96377AF414E0730B00517845 /* U1StreamWriter.m in Sources */,
1209@@ -1458,11 +1505,37 @@
1210 91F2653014EACFCC0027232B /* U1MigrationViewController.m in Sources */,
1211 523B3CDE15B4C42F004394F4 /* SongUITableView.m in Sources */,
1212 523B3CE615B5D814004394F4 /* UOPullGestureRecognizer.m in Sources */,
1213+ 52A042FF1606D6C40000B4BC /* NSMutableURLRequest+Parameters.m in Sources */,
1214+ 52A043001606D6C40000B4BC /* NSString+URLEncoding.m in Sources */,
1215+ 52A043011606D6C40000B4BC /* NSURL+Base.m in Sources */,
1216+ 52A043021606D6C40000B4BC /* Base64Transcoder.c in Sources */,
1217+ 52A043031606D6C40000B4BC /* hmac.c in Sources */,
1218+ 52A043041606D6C40000B4BC /* sha1.c in Sources */,
1219+ 52A043051606D6C40000B4BC /* OAAttachment.m in Sources */,
1220+ 52A043061606D6C40000B4BC /* OACall.m in Sources */,
1221+ 52A043071606D6C40000B4BC /* OAConsumer.m in Sources */,
1222+ 52A043081606D6C40000B4BC /* OADataFetcher.m in Sources */,
1223+ 52A043091606D6C40000B4BC /* OAHMAC_SHA1SignatureProvider.m in Sources */,
1224+ 52A0430A1606D6C40000B4BC /* OAMutableURLRequest.m in Sources */,
1225+ 52A0430B1606D6C40000B4BC /* OAPlaintextSignatureProvider.m in Sources */,
1226+ 52A0430C1606D6C40000B4BC /* OAProblem.m in Sources */,
1227+ 52A0430D1606D6C40000B4BC /* OARequestParameter.m in Sources */,
1228+ 52A0430E1606D6C40000B4BC /* OAServiceTicket.m in Sources */,
1229+ 52A043101606D6C40000B4BC /* OAToken.m in Sources */,
1230+ 52A043111606D6C40000B4BC /* OATokenManager.m in Sources */,
1231 );
1232 runOnlyForDeploymentPostprocessing = 0;
1233 };
1234 /* End PBXSourcesBuildPhase section */
1235
1236+/* Begin PBXTargetDependency section */
1237+ 528515981604F409004A1F7C /* PBXTargetDependency */ = {
1238+ isa = PBXTargetDependency;
1239+ name = UbuntuOneAuthKit;
1240+ targetProxy = 528515971604F409004A1F7C /* PBXContainerItemProxy */;
1241+ };
1242+/* End PBXTargetDependency section */
1243+
1244 /* Begin XCBuildConfiguration section */
1245 1D6058940D05DD3E006BFB54 /* Debug */ = {
1246 isa = XCBuildConfiguration;
1247@@ -1472,6 +1545,8 @@
1248 armv6,
1249 armv7,
1250 );
1251+ CLANG_ENABLE_OBJC_ARC = YES;
1252+ CLANG_WARN_OBJCPP_ARC_ABI = YES;
1253 CODE_SIGN_ENTITLEMENTS = "";
1254 CODE_SIGN_IDENTITY = "iPhone Developer";
1255 "CODE_SIGN_IDENTITY[sdk=*]" = "iPhone Developer";
1256@@ -1484,11 +1559,13 @@
1257 GCC_PREFIX_HEADER = U1Music_Prefix.pch;
1258 GCC_THUMB_SUPPORT = NO;
1259 GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
1260+ HEADER_SEARCH_PATHS = "$(BUILT_PRODUCTS_DIR)/usr/local/include";
1261 INFOPLIST_FILE = "U1Music-Info.plist";
1262 IPHONEOS_DEPLOYMENT_TARGET = 5.0;
1263 LIBRARY_SEARCH_PATHS = (
1264 "$(inherited)",
1265 "\"$(SRCROOT)/TestFlight SDK\"",
1266+ "$(BUILT_PRODUCTS_DIR)/**",
1267 );
1268 PRODUCT_NAME = "U1 Music";
1269 PROVISIONING_PROFILE = "";
1270@@ -1507,6 +1584,8 @@
1271 armv6,
1272 armv7,
1273 );
1274+ CLANG_ENABLE_OBJC_ARC = YES;
1275+ CLANG_WARN_OBJCPP_ARC_ABI = YES;
1276 CODE_SIGN_ENTITLEMENTS = Entitlements.plist;
1277 CODE_SIGN_IDENTITY = "iPhone Distribution";
1278 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
1279@@ -1516,11 +1595,13 @@
1280 GCC_PREFIX_HEADER = U1Music_Prefix.pch;
1281 GCC_THUMB_SUPPORT = NO;
1282 GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
1283+ HEADER_SEARCH_PATHS = "$(BUILT_PRODUCTS_DIR)/usr/local/include";
1284 INFOPLIST_FILE = "U1Music-Info.plist";
1285 IPHONEOS_DEPLOYMENT_TARGET = 5.0;
1286 LIBRARY_SEARCH_PATHS = (
1287 "$(inherited)",
1288 "\"$(SRCROOT)/TestFlight SDK\"",
1289+ "$(BUILT_PRODUCTS_DIR)/**",
1290 );
1291 PRODUCT_NAME = "U1 Music";
1292 PROVISIONING_PROFILE = "";
1293@@ -1598,7 +1679,8 @@
1294 93DFFE48135D71550061F29F /* music.xcdatamodel */,
1295 );
1296 currentVersion = 914AC3EE14B60ECC00C7D5A3 /* U1Music 2.2-31.xcdatamodel */;
1297- path = music.xcdatamodeld;
1298+ name = music.xcdatamodeld;
1299+ path = ../music.xcdatamodeld;
1300 sourceTree = "<group>";
1301 versionGroupType = wrapper.xcdatamodel;
1302 };
1303
1304=== modified file 'categories/UIDevice+Hardware.m'
1305--- categories/UIDevice+Hardware.m 2010-09-26 00:48:58 +0000
1306+++ categories/UIDevice+Hardware.m 2012-09-19 03:34:23 +0000
1307@@ -578,9 +578,10 @@
1308 printf("Could not allocate memory. error!\n");
1309 return NULL;
1310 }
1311-
1312+
1313 if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) {
1314 printf("Error: sysctl, take 2");
1315+ free(buf);
1316 return NULL;
1317 }
1318
1319
1320=== modified file 'categories/UIImage+Alpha.h'
1321--- categories/UIImage+Alpha.h 2011-04-14 18:53:36 +0000
1322+++ categories/UIImage+Alpha.h 2012-09-19 03:34:23 +0000
1323@@ -8,4 +8,5 @@
1324 - (BOOL)hasAlpha;
1325 - (UIImage *)imageWithAlpha;
1326 - (UIImage *)transparentBorderImage:(NSUInteger)borderSize;
1327+- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size;
1328 @end
1329\ No newline at end of file
1330
1331=== modified file 'categories/UIImage+Alpha.m'
1332--- categories/UIImage+Alpha.m 2011-04-14 18:53:36 +0000
1333+++ categories/UIImage+Alpha.m 2012-09-19 03:34:23 +0000
1334@@ -5,11 +5,6 @@
1335
1336 #import "UIImage+Alpha.h"
1337
1338-// Private helper methods
1339-@interface UIImage ()
1340-- (CGImageRef)newBorderMask:(NSUInteger)borderSize size:(CGSize)size;
1341-@end
1342-
1343 @implementation UIImage (Alpha)
1344
1345 // Returns true if the image has an alpha layer
1346
1347=== modified file 'categories/UIImage+Resize.h'
1348--- categories/UIImage+Resize.h 2011-05-02 07:33:18 +0000
1349+++ categories/UIImage+Resize.h 2012-09-19 03:34:23 +0000
1350@@ -15,5 +15,9 @@
1351 - (UIImage *)resizedImageWithContentMode:(UIViewContentMode)contentMode
1352 bounds:(CGSize)bounds
1353 interpolationQuality:(CGInterpolationQuality)quality;
1354-- (UIImage *) normalize;
1355+- (UIImage *)resizedImage:(CGSize)newSize
1356+ transform:(CGAffineTransform)transform
1357+ drawTransposed:(BOOL)transpose
1358+ interpolationQuality:(CGInterpolationQuality)quality;
1359+- (CGAffineTransform)transformForOrientation:(CGSize)newSize;
1360 @end
1361\ No newline at end of file
1362
1363=== modified file 'categories/UIImage+Resize.m'
1364--- categories/UIImage+Resize.m 2012-08-16 16:48:51 +0000
1365+++ categories/UIImage+Resize.m 2012-09-19 03:34:23 +0000
1366@@ -7,15 +7,6 @@
1367 #import "UIImage+RoundedCorner.h"
1368 #import "UIImage+Alpha.h"
1369
1370-// Private helper methods
1371-@interface UIImage ()
1372-- (UIImage *)resizedImage:(CGSize)newSize
1373- transform:(CGAffineTransform)transform
1374- drawTransposed:(BOOL)transpose
1375- interpolationQuality:(CGInterpolationQuality)quality;
1376-- (CGAffineTransform)transformForOrientation:(CGSize)newSize;
1377-@end
1378-
1379 @implementation UIImage (Resize)
1380
1381 // Returns a copy of this image that is cropped to the given bounds.
1382@@ -48,7 +39,7 @@
1383 UIImage *croppedImage = [resizedImage croppedImage:cropRect];
1384
1385 UIImage *transparentBorderImage = borderSize ? [croppedImage transparentBorderImage:borderSize] : croppedImage;
1386-
1387+
1388 return [transparentBorderImage roundedCornerImage:cornerRadius borderSize:borderSize];
1389 }
1390
1391@@ -56,46 +47,33 @@
1392 // The image will be scaled disproportionately if necessary to fit the bounds specified by the parameter
1393 - (UIImage *)resizedImage:(CGSize)newSize interpolationQuality:(CGInterpolationQuality)quality {
1394 BOOL drawTransposed;
1395-
1396- switch (self.imageOrientation) {
1397- case UIImageOrientationLeft:
1398- case UIImageOrientationLeftMirrored:
1399- case UIImageOrientationRight:
1400- case UIImageOrientationRightMirrored:
1401- drawTransposed = YES;
1402- break;
1403-
1404- default:
1405- drawTransposed = NO;
1406- }
1407-
1408- return [[self normalize] resizedImage:newSize
1409- transform:[self transformForOrientation:newSize]
1410- drawTransposed:drawTransposed
1411- interpolationQuality:quality];
1412-}
1413-
1414-//http://stackoverflow.com/questions/2457116/iphone-changing-cgimagealphainfo-of-cgimage
1415-
1416-- (UIImage *) normalize {
1417-
1418- CGColorSpaceRef genericColorSpace = CGColorSpaceCreateDeviceRGB();
1419- CGContextRef thumbBitmapCtxt = CGBitmapContextCreate(NULL,
1420- self.size.width,
1421- self.size.height,
1422- 8, (4 * self.size.width),
1423- genericColorSpace,
1424- kCGImageAlphaPremultipliedFirst);
1425- CGColorSpaceRelease(genericColorSpace);
1426- CGContextSetInterpolationQuality(thumbBitmapCtxt, kCGInterpolationDefault);
1427- CGRect destRect = CGRectMake(0, 0, self.size.width, self.size.height);
1428- CGContextDrawImage(thumbBitmapCtxt, destRect, self.CGImage);
1429- CGImageRef tmpThumbImage = CGBitmapContextCreateImage(thumbBitmapCtxt);
1430- CGContextRelease(thumbBitmapCtxt);
1431- UIImage *result = [UIImage imageWithCGImage:tmpThumbImage];
1432- CGImageRelease(tmpThumbImage);
1433-
1434- return result;
1435+ CGAffineTransform transform = CGAffineTransformIdentity;
1436+
1437+ // In iOS 5 the image is already correctly rotated. See Eran Sandler's
1438+ // addition here: http://eran.sandler.co.il/2011/11/07/uiimage-in-ios-5-orientation-and-resize/
1439+
1440+ if ( [[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0 )
1441+ {
1442+ drawTransposed = NO;
1443+ }
1444+ else
1445+ {
1446+ switch ( self.imageOrientation )
1447+ {
1448+ case UIImageOrientationLeft:
1449+ case UIImageOrientationLeftMirrored:
1450+ case UIImageOrientationRight:
1451+ case UIImageOrientationRightMirrored:
1452+ drawTransposed = YES;
1453+ break;
1454+ default:
1455+ drawTransposed = NO;
1456+ }
1457+
1458+ transform = [self transformForOrientation:newSize];
1459+ }
1460+
1461+ return [self resizedImage:newSize transform:transform drawTransposed:drawTransposed interpolationQuality:quality];
1462 }
1463
1464 // Resizes the image according to the given content mode, taking into account the image's orientation
1465@@ -138,15 +116,19 @@
1466 CGRect transposedRect = CGRectMake(0, 0, newRect.size.height, newRect.size.width);
1467 CGImageRef imageRef = self.CGImage;
1468
1469- // Build a context that's the same dimensions as the new size
1470- CGContextRef bitmap = CGBitmapContextCreate(NULL,
1471- newRect.size.width,
1472- newRect.size.height,
1473- CGImageGetBitsPerComponent(imageRef),
1474- 0,
1475- CGImageGetColorSpace(imageRef),
1476- CGImageGetBitmapInfo(imageRef));
1477+ // Fix for a colorspace / transparency issue that affects some types of
1478+ // images. See here: http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/comment-page-2/#comment-39951
1479
1480+ CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
1481+ CGContextRef bitmap =CGBitmapContextCreate( NULL,
1482+ newRect.size.width,
1483+ newRect.size.height,
1484+ 8,
1485+ 0,
1486+ colorSpace,
1487+ kCGImageAlphaPremultipliedLast );
1488+ CGColorSpaceRelease(colorSpace);
1489+
1490 // Rotate and/or flip the image if required by its orientation
1491 CGContextConcatCTM(bitmap, transform);
1492
1493
1494=== renamed file 'Default-568h@2x.png' => 'images/Default-568h@2x.png'
1495=== renamed file 'Default.png' => 'images/Default.png'
1496=== renamed file 'Default@2x.png' => 'images/Default@2x.png'
1497=== renamed file 'about_logo.png' => 'images/about_logo.png'
1498=== renamed file 'albums.png' => 'images/albums.png'
1499=== renamed file 'albums@2x.png' => 'images/albums@2x.png'
1500=== renamed file 'artists.png' => 'images/artists.png'
1501=== renamed file 'artists@2x.png' => 'images/artists@2x.png'
1502=== renamed file 'cached.png' => 'images/cached.png'
1503=== renamed file 'cached@2x.png' => 'images/cached@2x.png'
1504=== renamed file 'header_bg.png' => 'images/header_bg.png'
1505=== renamed file 'header_logo@2x.png' => 'images/header_logo@2x.png'
1506=== renamed file 'music_29.png' => 'images/music_29.png'
1507=== renamed file 'music_512.png' => 'images/music_512.png'
1508=== renamed file 'music_57.png' => 'images/music_57.png'
1509=== renamed file 'music_57@2x.png' => 'images/music_57@2x.png'
1510=== renamed file 'partiallycached.png' => 'images/partiallycached.png'
1511=== renamed file 'partiallycached@2x.png' => 'images/partiallycached@2x.png'
1512=== renamed file 'playlists.png' => 'images/playlists.png'
1513=== renamed file 'playlists@2x.png' => 'images/playlists@2x.png'
1514=== renamed file 'progress-label-background.png' => 'images/progress-label-background.png'
1515=== renamed file 'settings.png' => 'images/settings.png'
1516=== renamed file 'settings@2x.png' => 'images/settings@2x.png'
1517=== renamed file 'songs.png' => 'images/songs.png'
1518=== renamed file 'songs@2x.png' => 'images/songs@2x.png'
1519=== renamed file 'uncached-disabled.png' => 'images/uncached-disabled.png'
1520=== renamed file 'uncached-disabled@2x.png' => 'images/uncached-disabled@2x.png'
1521=== renamed file 'uncached.png' => 'images/uncached.png'
1522=== renamed file 'uncached@2x.png' => 'images/uncached@2x.png'
1523=== modified file 'utilities/AudioStreamer.m'
1524--- utilities/AudioStreamer.m 2012-08-16 17:14:27 +0000
1525+++ utilities/AudioStreamer.m 2012-09-19 03:34:23 +0000
1526@@ -1632,8 +1632,10 @@
1527
1528 AudioFormatListItem *formatList = malloc(formatListSize);
1529 err = AudioFileStreamGetProperty(inAudioFileStream, kAudioFileStreamProperty_FormatList, &formatListSize, formatList);
1530+ [(id)formatList release];
1531 if (err)
1532 {
1533+ free(formatList);
1534 [self failWithErrorCode:AS_FILE_STREAM_GET_PROPERTY_FAILED];
1535 return;
1536 }
1537
1538=== modified file 'utilities/Models/Generated/_U1CachedFile.h'
1539--- utilities/Models/Generated/_U1CachedFile.h 2012-02-10 17:38:18 +0000
1540+++ utilities/Models/Generated/_U1CachedFile.h 2012-09-19 03:34:23 +0000
1541@@ -5,9 +5,9 @@
1542
1543
1544 extern const struct U1CachedFileAttributes {
1545- NSString *accessCount;
1546- NSString *lastAccess;
1547- NSString *path;
1548+ __unsafe_unretained NSString *accessCount;
1549+ __unsafe_unretained NSString *lastAccess;
1550+ __unsafe_unretained NSString *path;
1551 } U1CachedFileAttributes;
1552
1553 extern const struct U1CachedFileRelationships {
1554
1555=== modified file 'utilities/U1LocalMusicServer.m'
1556--- utilities/U1LocalMusicServer.m 2012-08-28 20:27:24 +0000
1557+++ utilities/U1LocalMusicServer.m 2012-09-19 03:34:23 +0000
1558@@ -44,7 +44,7 @@
1559 if (self == nil)
1560 return nil;
1561
1562- httpServer = [[U1HTTPServer localHTTPServer] retain];
1563+ httpServer = [U1HTTPServer localHTTPServer];
1564 __block id weakSelf = self;
1565 [httpServer setRequestHandler:^(U1HTTPRequest *request, U1HTTPServerResponseCallback callback) {
1566 [weakSelf handleRequest:request withCallback:callback];
1567@@ -52,12 +52,6 @@
1568 return self;
1569 }
1570
1571-- (void)dealloc;
1572-{
1573- [httpServer release];
1574- [super dealloc];
1575-}
1576-
1577 - (void)handleRequest:(U1HTTPRequest*)request withCallback:(U1HTTPServerResponseCallback)callback;
1578 {
1579 NSString *songId = [[request URL] path];
1580@@ -78,7 +72,6 @@
1581 [response setHTTPBodyStream:reader];
1582
1583 callback(response);
1584- [response release];
1585 }
1586
1587 - (NSRange)parsedRangeFromHeaderValue:(NSString*)rangeValue;
1588
1589=== removed file 'utilities/UOSSOMusicCredsFetchOperation.h'
1590--- utilities/UOSSOMusicCredsFetchOperation.h 2011-07-11 17:20:23 +0000
1591+++ utilities/UOSSOMusicCredsFetchOperation.h 1970-01-01 00:00:00 +0000
1592@@ -1,24 +0,0 @@
1593-//
1594-// Copyright 2011 Canonical Ltd.
1595-//
1596-// This program is free software: you can redistribute it and/or modify it
1597-// under the terms of the GNU Affero General Public License version 3,
1598-// as published by the Free Software Foundation.
1599-//
1600-// This program is distributed in the hope that it will be useful, but
1601-// WITHOUT ANY WARRANTY; without even the implied warranties of
1602-// MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
1603-// PURPOSE. See the GNU Affero General Public License for more details.
1604-//
1605-// You should have received a copy of the GNU Affero General Public License
1606-// along with this program. If not, see <http://www.gnu.org/licenses/>.
1607-
1608-#import <Foundation/Foundation.h>
1609-
1610-#import "UOHTTPFetchOperation.h"
1611-
1612-
1613-@interface UOSSOMusicCredsFetchOperation : UOHTTPFetchOperation
1614-@property (readonly, copy) NSString *username;
1615-@property (readonly, copy) NSString *password;
1616-@end
1617
1618=== removed file 'utilities/UOSSOMusicCredsFetchOperation.m'
1619--- utilities/UOSSOMusicCredsFetchOperation.m 2011-07-13 17:59:26 +0000
1620+++ utilities/UOSSOMusicCredsFetchOperation.m 1970-01-01 00:00:00 +0000
1621@@ -1,57 +0,0 @@
1622-//
1623-// Copyright 2011 Canonical Ltd.
1624-//
1625-// This program is free software: you can redistribute it and/or modify it
1626-// under the terms of the GNU Affero General Public License version 3,
1627-// as published by the Free Software Foundation.
1628-//
1629-// This program is distributed in the hope that it will be useful, but
1630-// WITHOUT ANY WARRANTY; without even the implied warranties of
1631-// MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
1632-// PURPOSE. See the GNU Affero General Public License for more details.
1633-//
1634-// You should have received a copy of the GNU Affero General Public License
1635-// along with this program. If not, see <http://www.gnu.org/licenses/>.
1636-
1637-#import "UOSSOMusicCredsFetchOperation.h"
1638-
1639-#import "URLQueryStringParser.h"
1640-
1641-
1642-@interface UOSSOMusicCredsFetchOperation ()
1643-@property (copy) NSString *username;
1644-@property (copy) NSString *password;
1645-@end
1646-
1647-
1648-@implementation UOSSOMusicCredsFetchOperation
1649-
1650-@synthesize username, password;
1651-
1652-- (void)dealloc;
1653-{
1654- [username release];
1655- [password release];
1656- [super dealloc];
1657-}
1658-
1659-- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response;
1660-{
1661- // haven't sent a request yet
1662- if (response == nil)
1663- return request;
1664-
1665- if ([[[request URL] scheme] isEqualToString:@"x-ubuntuone-music"])
1666- {
1667- URLQueryStringParser *queryParser = [[[URLQueryStringParser alloc] initWithURL:[request URL]] autorelease];
1668- self.username = [queryParser queryStringValueForKey:@"u"];
1669- self.password = [queryParser queryStringValueForKey:@"p"];
1670-
1671-// [connection cancel];
1672-// [self finish];
1673-// return nil;
1674- }
1675- return nil;
1676-}
1677-
1678-@end
1679
1680=== modified file 'utilities/operations/AlbumArtLoader.h'
1681--- utilities/operations/AlbumArtLoader.h 2012-07-05 17:19:56 +0000
1682+++ utilities/operations/AlbumArtLoader.h 2012-09-19 03:34:23 +0000
1683@@ -29,8 +29,6 @@
1684
1685 @interface AlbumArtLoader : NSObject <AlbumArtDownloadOperationDelegate>
1686 {
1687- id<AlbumArtLoaderDelegate> delegate;
1688- int imageSize;
1689 NSMutableSet *downloadedURLs;
1690 NSMutableDictionary *downloadCache;
1691 NSOperationQueue *downloadQueue;
1692
1693=== modified file 'utilities/operations/AlbumArtLoader.m'
1694--- utilities/operations/AlbumArtLoader.m 2012-07-05 17:19:56 +0000
1695+++ utilities/operations/AlbumArtLoader.m 2012-09-19 03:34:23 +0000
1696@@ -53,15 +53,6 @@
1697 return self;
1698 }
1699
1700-- (void)dealloc
1701-{
1702- [downloadCache release];
1703- [downloadedURLs release];
1704- [downloadQueue release];
1705-
1706- [super dealloc];
1707-}
1708-
1709 #pragma mark -
1710 #pragma mark Public Methods
1711
1712@@ -127,7 +118,6 @@
1713 AlbumArtDownloadOperation *operation = [[AlbumArtDownloadOperation alloc] initWithArtId:artId URL:url];
1714 operation.delegate = self;
1715 [downloadQueue addOperation:operation];
1716- [operation release];
1717 }
1718 }
1719 }
1720
1721=== removed file 'utilities/operations/UOJSONFetchOperation.h'
1722--- utilities/operations/UOJSONFetchOperation.h 2011-07-11 01:34:54 +0000
1723+++ utilities/operations/UOJSONFetchOperation.h 1970-01-01 00:00:00 +0000
1724@@ -1,25 +0,0 @@
1725-//
1726-// Copyright 2011 Canonical Ltd.
1727-//
1728-// This program is free software: you can redistribute it and/or modify it
1729-// under the terms of the GNU Affero General Public License version 3,
1730-// as published by the Free Software Foundation.
1731-//
1732-// This program is distributed in the hope that it will be useful, but
1733-// WITHOUT ANY WARRANTY; without even the implied warranties of
1734-// MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
1735-// PURPOSE. See the GNU Affero General Public License for more details.
1736-//
1737-// You should have received a copy of the GNU Affero General Public License
1738-// along with this program. If not, see <http://www.gnu.org/licenses/>.
1739-
1740-#import <Foundation/Foundation.h>
1741-
1742-#import "AbstractNetworkOperation.h"
1743-
1744-
1745-@interface UOJSONFetchOperation : AbstractNetworkOperation
1746-
1747-+ (UOJSONFetchOperation*)jsonOperationWithRequest:(NSURLRequest*)request action:(void(^)(NSObject *jsonResult, NSError *error))action;
1748-
1749-@end
1750
1751=== removed file 'utilities/operations/UOJSONFetchOperation.m'
1752--- utilities/operations/UOJSONFetchOperation.m 2012-08-27 22:35:20 +0000
1753+++ utilities/operations/UOJSONFetchOperation.m 1970-01-01 00:00:00 +0000
1754@@ -1,80 +0,0 @@
1755-//
1756-// Copyright 2011 Canonical Ltd.
1757-//
1758-// This program is free software: you can redistribute it and/or modify it
1759-// under the terms of the GNU Affero General Public License version 3,
1760-// as published by the Free Software Foundation.
1761-//
1762-// This program is distributed in the hope that it will be useful, but
1763-// WITHOUT ANY WARRANTY; without even the implied warranties of
1764-// MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
1765-// PURPOSE. See the GNU Affero General Public License for more details.
1766-//
1767-// You should have received a copy of the GNU Affero General Public License
1768-// along with this program. If not, see <http://www.gnu.org/licenses/>.
1769-
1770-#import "UOJSONFetchOperation.h"
1771-
1772-@interface UOJSONFetchOperation ()
1773-@property (copy) void (^action)(NSObject *, NSError *);
1774-@property (retain) NSMutableData *jsonData;
1775-@end
1776-
1777-
1778-@implementation UOJSONFetchOperation
1779-
1780-@synthesize action, jsonData;
1781-
1782-+ (UOJSONFetchOperation*)jsonOperationWithRequest:(NSURLRequest*)request action:(void(^)(NSObject *jsonResult, NSError *error))action;
1783-{
1784- NSParameterAssert(action != nil);
1785-
1786- UOJSONFetchOperation *operation = [[[UOJSONFetchOperation alloc] initWithRequest:request] autorelease];
1787- operation.action = action;
1788-
1789- return operation;
1790-}
1791-
1792-- (void)dealloc;
1793-{
1794- [action release];
1795- [jsonData release];
1796- [super dealloc];
1797-}
1798-
1799-- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
1800-{
1801- [super connection:connection didReceiveResponse:response];
1802- self.jsonData = [NSMutableData data];
1803-}
1804-
1805-- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
1806-{
1807- [super connection:connection didReceiveData:data];
1808- [self.jsonData appendData:data];
1809-}
1810-
1811-- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
1812-{
1813- [super connection:connection didFailWithError:error];
1814- self.jsonData = nil;
1815- self.action(nil, error);
1816-}
1817-
1818-- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
1819-{
1820- [super connectionDidFinishLoading:connection];
1821- NSError *error = nil;
1822- NSObject *jsonObject = nil;
1823- if (self.statusCode == 200)
1824- {
1825- jsonObject = [NSJSONSerialization JSONObjectWithData:self.jsonData options:0 error:&error];
1826- }
1827- else
1828- {
1829- error = [NSError errorWithDomain:@"UOJSONFetchOperationErrorDomain" code:self.statusCode userInfo:nil];
1830- }
1831- self.action(jsonObject, error);
1832-}
1833-
1834-@end
1835
1836=== modified file 'view_controllers/PullRefreshTableViewController.h'
1837--- view_controllers/PullRefreshTableViewController.h 2010-09-30 21:09:34 +0000
1838+++ view_controllers/PullRefreshTableViewController.h 2012-09-19 03:34:23 +0000
1839@@ -31,15 +31,8 @@
1840
1841
1842 @interface PullRefreshTableViewController : UITableViewController {
1843- UIView *refreshHeaderView;
1844- UILabel *refreshLabel;
1845- UIImageView *refreshArrow;
1846- UIActivityIndicatorView *refreshSpinner;
1847 BOOL isDragging;
1848 BOOL isLoading;
1849- NSString *textPull;
1850- NSString *textRelease;
1851- NSString *textLoading;
1852 }
1853
1854 @property (nonatomic, retain) UIView *refreshHeaderView;
1855
1856=== modified file 'view_controllers/PullRefreshTableViewController.m'
1857--- view_controllers/PullRefreshTableViewController.m 2010-09-30 21:09:34 +0000
1858+++ view_controllers/PullRefreshTableViewController.m 2012-09-19 03:34:23 +0000
1859@@ -149,15 +149,4 @@
1860 [self performSelector:@selector(stopLoading) withObject:nil afterDelay:2.0];
1861 }
1862
1863-- (void)dealloc {
1864- [refreshHeaderView release];
1865- [refreshLabel release];
1866- [refreshArrow release];
1867- [refreshSpinner release];
1868- [textPull release];
1869- [textRelease release];
1870- [textLoading release];
1871- [super dealloc];
1872-}
1873-
1874 @end
1875
1876=== modified file 'view_controllers/SettingsViewController.m'
1877--- view_controllers/SettingsViewController.m 2012-02-16 17:58:53 +0000
1878+++ view_controllers/SettingsViewController.m 2012-09-19 03:34:23 +0000
1879@@ -36,6 +36,7 @@
1880 #import "U1CacheFileManager.h"
1881 #import "UIAlertView+Blocks.h"
1882 #import "RIButtonItem.h"
1883+#import "UOAuthManager.h"
1884
1885 @interface SettingsViewController (Private)
1886 - (void)_clearDatabaseFile:(id)sender;
1887@@ -254,7 +255,7 @@
1888 {
1889 if ([Subsonic sharedSubsonic].hasCredentials)
1890 {
1891- [[Subsonic sharedSubsonic] removeCredentials];
1892+ [[UOAuthManager sharedAuthManager] clearSubsonicCredentials];
1893 [self clearAllCaches:nil];
1894 [[NSNotificationCenter defaultCenter] postNotificationName:NOTIF_removeCachedContent object:nil];
1895 [[NSNotificationCenter defaultCenter] postNotificationName:NOTIF_reloadAccountCredentials object:nil];
1896
1897=== modified file 'view_controllers/SubsonicIndexedTableViewController.m'
1898--- view_controllers/SubsonicIndexedTableViewController.m 2011-06-22 16:06:39 +0000
1899+++ view_controllers/SubsonicIndexedTableViewController.m 2012-09-19 03:34:23 +0000
1900@@ -39,8 +39,6 @@
1901 self.indexes = NULL;
1902 self.groupedTableData = NULL;
1903 [[NSNotificationCenter defaultCenter] removeObserver:self];
1904-
1905- [super dealloc];
1906 }
1907
1908 - (void)viewDidUnload
1909
1910=== modified file 'view_controllers/SubsonicTableViewController.h'
1911--- view_controllers/SubsonicTableViewController.h 2011-06-21 18:23:09 +0000
1912+++ view_controllers/SubsonicTableViewController.h 2012-09-19 03:34:23 +0000
1913@@ -30,7 +30,7 @@
1914 NSTimer *respondToRemoteTimer;
1915 NSMutableArray *tableData;
1916 NSMutableArray *searchResults;
1917- id <NSXMLParserDelegate> parserDelegate;
1918+ __unsafe_unretained id <NSXMLParserDelegate> parserDelegate;
1919 NSString *viewName;
1920
1921 @protected
1922
1923=== modified file 'view_controllers/SubsonicTableViewController.m'
1924--- view_controllers/SubsonicTableViewController.m 2011-11-05 00:42:21 +0000
1925+++ view_controllers/SubsonicTableViewController.m 2012-09-19 03:34:23 +0000
1926@@ -83,10 +83,10 @@
1927
1928 if ([StreamingPlayer sharedStreamingPlayer].streamer)
1929 {
1930- self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Now Playing",@"")
1931+ self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Now Playing",@"")
1932 style:UIBarButtonItemStyleBordered
1933 target:self
1934- action:@selector(nowPlayingAction:)] autorelease];
1935+ action:@selector(nowPlayingAction:)];
1936 }
1937 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
1938 [self updateReachability:[[Subsonic sharedSubsonic] reachability]];
1939@@ -184,7 +184,7 @@
1940
1941 - (void)respondToRemoteControl:(NSTimer*)timer
1942 {
1943- UIEvent *event = [[timer userInfo] retain];
1944+ UIEvent *event = [timer userInfo];
1945
1946 switch (event.subtype)
1947 {
1948@@ -213,7 +213,6 @@
1949
1950 [respondToRemoteTimer invalidate];
1951 respondToRemoteTimer = nil;
1952- [event release];
1953 }
1954
1955 #pragma mark - Alert handling
1956@@ -268,8 +267,6 @@
1957
1958 - (void)beginLoadingRemoteData:(NSString*)force
1959 {
1960- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
1961-
1962 NSURL *url = [[Subsonic sharedSubsonic] getMetadataURL:self.viewName];
1963 NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
1964
1965@@ -279,12 +276,9 @@
1966 {
1967 [self performSelectorOnMainThread:@selector(failedLoadingData:) withObject:[xmlParser parserError] waitUntilDone:NO];
1968 }
1969-
1970- [xmlParser release];
1971
1972 [self performSelectorOnMainThread:@selector(loadLocalData) withObject:nil waitUntilDone:NO];
1973 [self performSelectorOnMainThread:@selector(finishLoadingData) withObject:nil waitUntilDone:NO];
1974- [pool release];
1975 }
1976
1977 - (void)finishLoadingData
1978@@ -312,7 +306,6 @@
1979 [StreamingPlayer sharedStreamingPlayer].isNewSong = NO;
1980 SongViewController *streamingPlayerViewController = [[SongViewController alloc] initWithNibName:@"SongViewController" bundle:nil];
1981 [self.navigationController pushViewController:streamingPlayerViewController animated:YES];
1982- [streamingPlayerViewController release];
1983 }
1984 }
1985
1986@@ -347,8 +340,7 @@
1987 [StreamingPlayer sharedStreamingPlayer].isNewSong = YES;
1988 [StreamingPlayer sharedStreamingPlayer].isShuffle = NO;
1989
1990- SongViewController *streamingPlayerViewController = [[[SongViewController alloc]
1991- initWithNibName:@"SongViewController" bundle:nil] autorelease];
1992+ SongViewController *streamingPlayerViewController = [[SongViewController alloc] initWithNibName:@"SongViewController" bundle:nil];
1993
1994 [self.navigationController pushViewController:streamingPlayerViewController animated:YES];
1995
1996@@ -364,7 +356,7 @@
1997
1998 - (void)showMessage:(NSString*)message withTitle:(NSString*)title
1999 {
2000- UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
2001+ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
2002 [alert show];
2003 }
2004
2005@@ -406,7 +398,6 @@
2006
2007 - (void)viewDidUnload
2008 {
2009- RELEASE_SAFELY(searchResults);
2010 [super viewDidUnload];
2011 }
2012
2013@@ -414,12 +405,6 @@
2014 - (void)dealloc
2015 {
2016 [[NSNotificationCenter defaultCenter] removeObserver:self];
2017- RELEASE_SAFELY(parserDelegate);
2018- RELEASE_SAFELY(viewName);
2019- RELEASE_SAFELY(tableData);
2020- RELEASE_SAFELY(searchResults);
2021-
2022- [super dealloc];
2023 }
2024
2025 #pragma mark - UISearchDisplayController Delegate Methods
2026
2027=== modified file 'view_controllers/SubsonicViewController.m'
2028--- view_controllers/SubsonicViewController.m 2011-06-18 02:04:11 +0000
2029+++ view_controllers/SubsonicViewController.m 2012-09-19 03:34:23 +0000
2030@@ -97,10 +97,4 @@
2031 }
2032 }
2033
2034-- (void)dealloc
2035-{
2036- RELEASE_SAFELY(remoteLock);
2037- [super dealloc];
2038-}
2039-
2040 @end
2041
2042=== modified file 'view_controllers/U1MigrationViewController.m'
2043--- view_controllers/U1MigrationViewController.m 2012-08-28 20:52:02 +0000
2044+++ view_controllers/U1MigrationViewController.m 2012-09-19 03:34:23 +0000
2045@@ -13,9 +13,6 @@
2046
2047 @interface U1MigrationViewController ()
2048 @property (copy) void (^completionBlock)();
2049-
2050-- (void)migrateOldCache;
2051-- (void)complete;
2052 @end
2053
2054 @implementation U1MigrationViewController
2055@@ -57,16 +54,10 @@
2056 {
2057 [fileManager moveItemAtPath:oldAlbumArtCachePath toPath:[CachedAlbumArtDirectory() path] error:NULL];
2058 }
2059- [fileManager release];
2060 }
2061
2062 #pragma mark - View lifecycle
2063
2064-- (void)viewDidLoad
2065-{
2066- [super viewDidLoad];
2067-}
2068-
2069 - (void)viewDidAppear:(BOOL)animated;
2070 {
2071 [self.spinner startAnimating];
2072
2073=== modified file 'view_controllers/U1MigrationViewController.xib'
2074--- view_controllers/U1MigrationViewController.xib 2012-02-16 17:09:14 +0000
2075+++ view_controllers/U1MigrationViewController.xib 2012-09-19 03:34:23 +0000
2076@@ -1,20 +1,20 @@
2077 <?xml version="1.0" encoding="UTF-8"?>
2078 <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00">
2079 <data>
2080- <int key="IBDocument.SystemTarget">1280</int>
2081- <string key="IBDocument.SystemVersion">10K549</string>
2082- <string key="IBDocument.InterfaceBuilderVersion">1938</string>
2083- <string key="IBDocument.AppKitVersion">1038.36</string>
2084- <string key="IBDocument.HIToolboxVersion">461.00</string>
2085+ <int key="IBDocument.SystemTarget">1296</int>
2086+ <string key="IBDocument.SystemVersion">12B19</string>
2087+ <string key="IBDocument.InterfaceBuilderVersion">2549</string>
2088+ <string key="IBDocument.AppKitVersion">1187</string>
2089+ <string key="IBDocument.HIToolboxVersion">624.00</string>
2090 <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
2091 <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
2092- <string key="NS.object.0">933</string>
2093+ <string key="NS.object.0">1498</string>
2094 </object>
2095 <array key="IBDocument.IntegratedClassDependencies">
2096+ <string>IBProxyObject</string>
2097 <string>IBUIActivityIndicatorView</string>
2098+ <string>IBUILabel</string>
2099 <string>IBUIView</string>
2100- <string>IBUILabel</string>
2101- <string>IBProxyObject</string>
2102 </array>
2103 <array key="IBDocument.PluginDependencies">
2104 <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
2105@@ -42,6 +42,7 @@
2106 <string key="NSFrame">{{150, 234}, {20, 20}}</string>
2107 <reference key="NSSuperview" ref="191373211"/>
2108 <reference key="NSWindow"/>
2109+ <reference key="NSNextKeyView"/>
2110 <bool key="IBUIOpaque">NO</bool>
2111 <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
2112 <bool key="IBUIHidesWhenStopped">NO</bool>
2113@@ -53,6 +54,7 @@
2114 <string key="NSFrame">{{124, 191}, {89, 21}}</string>
2115 <reference key="NSSuperview" ref="191373211"/>
2116 <reference key="NSWindow"/>
2117+ <reference key="NSNextKeyView" ref="62664637"/>
2118 <bool key="IBUIOpaque">NO</bool>
2119 <bool key="IBUIClipsSubviews">YES</bool>
2120 <int key="IBUIContentMode">7</int>
2121@@ -60,8 +62,11 @@
2122 <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
2123 <string key="IBUIText">Migrating…</string>
2124 <object class="NSColor" key="IBUITextColor">
2125- <int key="NSColorSpace">1</int>
2126- <bytes key="NSRGB">MCAwIDAAA</bytes>
2127+ <int key="NSColorSpace">3</int>
2128+ <bytes key="NSWhite">MQA</bytes>
2129+ <object class="NSColorSpace" key="NSCustomColorSpace">
2130+ <int key="NSID">2</int>
2131+ </object>
2132 </object>
2133 <nil key="IBUIHighlightedColor"/>
2134 <int key="IBUIBaselineAdjustment">1</int>
2135@@ -80,12 +85,10 @@
2136 <string key="NSFrame">{{0, 20}, {320, 460}}</string>
2137 <reference key="NSSuperview"/>
2138 <reference key="NSWindow"/>
2139+ <reference key="NSNextKeyView" ref="672147677"/>
2140 <object class="NSColor" key="IBUIBackgroundColor">
2141- <int key="NSColorSpace">3</int>
2142- <bytes key="NSWhite">MQA</bytes>
2143- <object class="NSColorSpace" key="NSCustomColorSpace">
2144- <int key="NSID">2</int>
2145- </object>
2146+ <int key="NSColorSpace">1</int>
2147+ <bytes key="NSRGB">MSAwLjUgMAA</bytes>
2148 </object>
2149 <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
2150 <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
2151@@ -190,8 +193,12 @@
2152 </object>
2153 <int key="IBDocument.localizationMode">0</int>
2154 <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
2155+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
2156+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
2157+ <real value="1296" key="NS.object.0"/>
2158+ </object>
2159 <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
2160 <int key="IBDocument.defaultPropertyAccessControl">3</int>
2161- <string key="IBCocoaTouchPluginVersion">933</string>
2162+ <string key="IBCocoaTouchPluginVersion">1498</string>
2163 </data>
2164 </archive>
2165
2166=== modified file 'view_controllers/UOMusicLoginController.m'
2167--- view_controllers/UOMusicLoginController.m 2012-08-27 22:59:41 +0000
2168+++ view_controllers/UOMusicLoginController.m 2012-09-19 03:34:23 +0000
2169@@ -14,40 +14,20 @@
2170 // along with this program. If not, see <http://www.gnu.org/licenses/>.
2171
2172 #import "UOMusicLoginController.h"
2173-
2174-#import "OAuthConsumer.h"
2175-#import "NSString+Extras.h"
2176-
2177-#import "Subsonic.h"
2178-#import "UOHTTPFetchOperation.h"
2179-#import "UOJSONFetchOperation.h"
2180 #import "UOSSOCredentialsViewController.h"
2181-#import "UOSSOMusicCredsFetchOperation.h"
2182-
2183-
2184-static NSString *const UOSingleSignOnBaseURL = @"https://login.ubuntu.com/api/1.0/";
2185-
2186-static NSString *UOSSOEncodedStringFromParametersDictionary(NSDictionary *arguments);
2187-
2188-
2189-@interface UOMusicLoginController ()
2190-@property (retain) UIViewController *loginViewController;
2191-@property (retain) NSOperationQueue *operationQueue;
2192-- (void)loginWithUsername:(NSString*)username password:(NSString*)password;
2193-- (void)handleError:(NSError*)error;
2194-@end
2195-
2196+
2197+#import "UOAuthManager.h"
2198
2199 @implementation UOMusicLoginController
2200
2201-@synthesize delegate, loginViewController, operationQueue;
2202+@synthesize delegate, loginViewController;
2203
2204 - (id)init;
2205 {
2206 if (!(self = [super init]))
2207 return nil;
2208
2209- UOSSOCredentialsViewController *rootController = [[[UOSSOCredentialsViewController alloc] initWithNibName:@"UOSSOCredentialsViewController" bundle:nil] autorelease];
2210+ UOSSOCredentialsViewController *rootController = [[UOSSOCredentialsViewController alloc] initWithNibName:@"UOSSOCredentialsViewController" bundle:nil];
2211
2212 __block id this = self;
2213 rootController.loginAction = ^ (NSString *username, NSString *password)
2214@@ -60,123 +40,52 @@
2215 navController.navigationBarHidden = YES;
2216 loginViewController = navController;
2217
2218- operationQueue = [[NSOperationQueue alloc] init];
2219-
2220 return self;
2221 }
2222
2223 - (void)dealloc
2224 {
2225 delegate = nil;
2226- [loginViewController release];
2227- [operationQueue release];
2228- [super dealloc];
2229 }
2230
2231 - (void)loginWithUsername:(NSString*)username password:(NSString*)password;
2232 {
2233- // - show login spinner
2234- [self.loginViewController.view setUserInteractionEnabled:NO];
2235-
2236- // 1. get/create U1 oauth token
2237- NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
2238- @"authenticate", @"ws.op",
2239- @"Ubuntu One @ iOS", @"token_name",
2240- nil];
2241- NSString * paramsString = UOSSOEncodedStringFromParametersDictionary(params);
2242-
2243- NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@authentications?%@", UOSingleSignOnBaseURL, paramsString]];
2244- NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
2245- [request setHTTPMethod:@"GET"];
2246-
2247- NSURLCredential *credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceNone];
2248- UOJSONFetchOperation *jsonOperation = [UOJSONFetchOperation jsonOperationWithRequest:request action:^(NSObject *jsonResult, NSError *error) {
2249-
2250- // 2. import the new token into Ubuntu One
2251- NSDictionary *oauthResponse = (id)jsonResult;
2252-
2253- if (error)
2254- {
2255- [self handleError:error];
2256- return;
2257- }
2258-
2259- NSString *encodedUsername = [username urlParameterEncodedString];
2260- NSURL *u1TokenURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://one.ubuntu.com/oauth/sso-finished-so-get-tokens/%@", encodedUsername]];
2261-
2262- OAConsumer *consumer = [[[OAConsumer alloc] initWithKey:[oauthResponse objectForKey:@"consumer_key"] secret:[oauthResponse objectForKey:@"consumer_secret"]] autorelease];
2263- OAToken *token = [[[OAToken alloc] initWithKey:[oauthResponse objectForKey:@"token"] secret:[oauthResponse objectForKey:@"token_secret"]] autorelease];
2264- OAPlaintextSignatureProvider *signatureProvider = [[[OAPlaintextSignatureProvider alloc] init] autorelease];
2265- OAMutableURLRequest *oauthRequest = [[[OAMutableURLRequest alloc] initWithURL:u1TokenURL consumer:consumer token:token realm:nil signatureProvider:signatureProvider] autorelease];
2266- [oauthRequest prepare];
2267- UOHTTPFetchOperation *tokenOperation = [UOHTTPFetchOperation httpOperationWithRequest:oauthRequest action:^(NSString *responseBody, NSError *error) {
2268-
2269- // 3. Get the phone creds using the new token
2270-
2271- if (error)
2272- {
2273- [self handleError:error];
2274- return;
2275- }
2276-
2277- NSURL *credsURL = [NSURL URLWithString:@"https://one.ubuntu.com/phones/creds/ios?scheme=x-ubuntuone-music"];
2278- OAMutableURLRequest *credsRequest = [[[OAMutableURLRequest alloc] initWithURL:credsURL consumer:consumer token:token realm:nil signatureProvider:signatureProvider] autorelease];
2279- [credsRequest setHTTPMethod:@"GET"];
2280- [credsRequest prepare];
2281- __block UOSSOMusicCredsFetchOperation *credsOperation = nil;
2282- credsOperation = (id)[UOSSOMusicCredsFetchOperation httpOperationWithRequest:credsRequest action:^(NSString *responseBody, NSError *error) {
2283-
2284- if (error)
2285- {
2286- [self handleError:error];
2287- return;
2288- }
2289-
2290- NSString *musicUsername = credsOperation.username;
2291- NSString *musicPassword = credsOperation.password;
2292-
2293- if (musicUsername && musicPassword)
2294- {
2295- [[Subsonic sharedSubsonic] storeUsername:musicUsername password:musicPassword];
2296- [self.delegate loginControllerDidLoginWithUsername:musicUsername];
2297- }
2298- else
2299- {
2300- NSString *subscriptionRequiredMessage = NSLocalizedString(@"You need an Ubuntu One Music Streaming account to use this app.", nil);
2301- NSError *error = [NSError errorWithDomain:@"UOMusicLoginControllerErrorDomain"
2302- code:-1
2303- userInfo:[NSDictionary dictionaryWithObjectsAndKeys:
2304- subscriptionRequiredMessage, NSLocalizedDescriptionKey,
2305- nil]];
2306- [self handleError:error];
2307- }
2308-
2309- [self.loginViewController.view setUserInteractionEnabled:YES];
2310- }];
2311- [self.operationQueue addOperation:credsOperation];
2312-
2313- }];
2314- [self.operationQueue addOperation:tokenOperation];
2315-
2316- }];
2317- jsonOperation.credential = credential;
2318- [self.operationQueue addOperation:jsonOperation];
2319-}
2320-
2321-- (void)handleError:(NSError*)error;
2322-{
2323- NSString *errorMessage = [error localizedDescription];
2324- if ([error code] == 401)
2325- errorMessage = NSLocalizedString(@"Incorrect username or password.", nil);
2326- else if (errorMessage == nil)
2327- errorMessage = NSLocalizedString(@"An error occured trying to sign in, please try again.", @"Login Error Message");
2328-
2329- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Ubuntu One", nil) message:errorMessage delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
2330- [alert show];
2331- [alert release];
2332- [self.loginViewController.view setUserInteractionEnabled:YES];
2333- UOSSOCredentialsViewController *loginController = (id)[(UINavigationController*)[self loginViewController] topViewController];
2334- [loginController reset];
2335+ [self.loginViewController.view setUserInteractionEnabled:NO];
2336+
2337+ UOAuthManager *authManager = [UOAuthManager sharedAuthManager];
2338+ id completionBlock = ^(){
2339+ id subsonicCompletionBlock = ^(NSString *username) {
2340+ [self.delegate loginControllerDidLoginWithUsername:username];
2341+ };
2342+ id subsonicErrorBlock = ^(NSError *error) {
2343+ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Ubuntu One", nil) message:[error localizedDescription] delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
2344+ [alert show];
2345+ [self.loginViewController.view setUserInteractionEnabled:YES];
2346+ UOSSOCredentialsViewController *loginController = (id)[(UINavigationController*)[self loginViewController] topViewController];
2347+ [loginController reset];
2348+ };
2349+ [authManager fetchSubsonicCredentials:subsonicCompletionBlock errorBlock:subsonicErrorBlock];
2350+ };
2351+ id errorBlock = ^(NSError *error) {
2352+ NSString *errorMessage = nil;[error localizedDescription];
2353+ switch (error.code) {
2354+ case 401:
2355+ errorMessage = NSLocalizedString(@"Incorrect username or password.", nil);
2356+ break;
2357+ default:
2358+ errorMessage = [error localizedDescription];
2359+ if (errorMessage == nil) {
2360+ errorMessage = NSLocalizedString(@"An error occured trying to sign in, please try again.", @"Login Error Message");
2361+ }
2362+ break;
2363+ }
2364+ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Ubuntu One", nil) message:errorMessage delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
2365+ [alert show];
2366+ [self.loginViewController.view setUserInteractionEnabled:YES];
2367+ UOSSOCredentialsViewController *loginController = (id)[(UINavigationController*)[self loginViewController] topViewController];
2368+ [loginController reset];
2369+ };
2370+ [authManager loginWithUsername:username andPassword:password completionBlock:completionBlock errorBlock:errorBlock];
2371 }
2372
2373 @end
2374
2375=== modified file 'view_controllers/UOSSOCredentialsViewController.h'
2376--- view_controllers/UOSSOCredentialsViewController.h 2011-07-11 21:22:24 +0000
2377+++ view_controllers/UOSSOCredentialsViewController.h 2012-09-19 03:34:23 +0000
2378@@ -17,13 +17,6 @@
2379
2380
2381 @interface UOSSOCredentialsViewController : UIViewController <UITextFieldDelegate>
2382-{
2383- UITextField *emailField;
2384- UITextField *passwordField;
2385- UIView *patternView;
2386- UIActivityIndicatorView *spinner;
2387- UIButton *loginButton;
2388-}
2389
2390 @property (nonatomic, retain) IBOutlet UITextField *emailField;
2391 @property (nonatomic, retain) IBOutlet UITextField *passwordField;
2392
2393=== modified file 'view_controllers/UOSSOCredentialsViewController.m'
2394--- view_controllers/UOSSOCredentialsViewController.m 2011-07-13 01:16:11 +0000
2395+++ view_controllers/UOSSOCredentialsViewController.m 2012-09-19 03:34:23 +0000
2396@@ -25,17 +25,6 @@
2397 @synthesize loginButton;
2398 @synthesize loginAction;
2399
2400-- (void)dealloc;
2401-{
2402- [emailField release];
2403- [passwordField release];
2404- [loginAction release];
2405- [patternView release];
2406- [loginButton release];
2407- [spinner release];
2408- [super dealloc];
2409-}
2410-
2411 - (void)viewDidUnload;
2412 {
2413 [self setEmailField:nil];
2414@@ -51,12 +40,9 @@
2415 [super viewDidLoad];
2416
2417 UIImage *backgroundImage = [UIImage imageNamed:@"header_bg"];
2418- UIColor *backgroundColor = [[[UIColor alloc] initWithPatternImage:backgroundImage] autorelease];
2419+ UIColor *backgroundColor = [[UIColor alloc] initWithPatternImage:backgroundImage];
2420 [self.patternView setBackgroundColor:backgroundColor];
2421 [self.patternView setOpaque:NO];
2422- // The following should not be necessary but without it the pattern color is opaque...
2423- // http://stackoverflow.com/questions/3899398/uicolor-colorwithpatternimage-alpha-blending-problem-solution-ios-sdk-4-1/5348396#5348396
2424- [self.patternView.layer setOpaque:NO];
2425 }
2426
2427 - (IBAction)logIn:(id)sender;

Subscribers

People subscribed via source and target branches