From dda74d0608377db90ed3eedeb5ad373c59e91bc3 Mon Sep 17 00:00:00 2001 From: lmsilva Date: Fri, 21 Nov 2008 15:14:23 +0000 Subject: [PATCH] fixed seek slider from becoming active & disabling it when STOP occurs --- Application/PlaybackController.m | 15 +- Audio/CogAudio.xcodeproj/project.pbxproj | 8 + Audio/Plugin.h | 8 + Cog.xcodeproj/project.pbxproj | 26 + English.lproj/MainMenu.xib | 704 ++++++++++++++++-- Playlist/PlaylistController.h | 2 + Playlist/PlaylistController.m | 15 +- .../TagLib/TagLib.xcodeproj/project.pbxproj | 17 + Plugins/TagLib/TagLibMetadataReader.m | 2 + 9 files changed, 730 insertions(+), 67 deletions(-) diff --git a/Application/PlaybackController.m b/Application/PlaybackController.m index b3ee03af2..8e3231098 100644 --- a/Application/PlaybackController.m +++ b/Application/PlaybackController.m @@ -108,6 +108,7 @@ { [audioPlayer stop]; + if([[NSUserDefaults standardUserDefaults] boolForKey:@"enableAudioScrobbler"]) { [scrobbler stop]; } @@ -144,9 +145,14 @@ - (IBAction)play:(id)sender { if ([playlistView selectedRow] == -1) - [playlistView selectRow:0 byExtendingSelection:NO]; + [playlistView selectRow:0 byExtendingSelection:NO]; - [self playEntryAtIndex:[playlistView selectedRow]]; + // IF added by safari (23:52 - 11Nov2008) + // - to fix the trackingslider getting enabled, when play is + // pressed and there is nothing on the playlist + // - check if selectedRow is empty, before playing. + if ([playlistView selectedRow] == 0) + [self playEntryAtIndex:[playlistView selectedRow]]; } - (void)playEntry:(PlaylistEntry *)pe @@ -549,8 +555,8 @@ if (status == kCogStatusStopped) { [positionSlider setDoubleValue:0.0f]; - - [self updateTimeField:0.0f]; + [positionSlider setEnabled:NO]; // the player stopped, disable the slider + [self updateTimeField:0.0f]; } //Show play image @@ -568,6 +574,7 @@ if (status == kCogStatusStopped) { NSLog(@"DONE!"); [playlistController setCurrentEntry:nil]; + [positionSlider setEnabled:NO]; // the player stopped, disable the slider } else { NSLog(@"PLAYING!"); diff --git a/Audio/CogAudio.xcodeproj/project.pbxproj b/Audio/CogAudio.xcodeproj/project.pbxproj index 70acd7344..15ad2a8c1 100644 --- a/Audio/CogAudio.xcodeproj/project.pbxproj +++ b/Audio/CogAudio.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 07DB5F3E0ED353A900C2E3EF /* AudioMetadataWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 07DB5F3C0ED353A900C2E3EF /* AudioMetadataWriter.h */; }; + 07DB5F3F0ED353A900C2E3EF /* AudioMetadataWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 07DB5F3D0ED353A900C2E3EF /* AudioMetadataWriter.m */; }; 17A2D3C50B8D1D37000778C4 /* AudioDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 17A2D3C30B8D1D37000778C4 /* AudioDecoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; 17A2D3C60B8D1D37000778C4 /* AudioDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 17A2D3C40B8D1D37000778C4 /* AudioDecoder.m */; }; 17ADB13C0B97926D00257CA2 /* AudioSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 17ADB13A0B97926D00257CA2 /* AudioSource.h */; }; @@ -63,6 +65,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 07DB5F3C0ED353A900C2E3EF /* AudioMetadataWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioMetadataWriter.h; sourceTree = ""; }; + 07DB5F3D0ED353A900C2E3EF /* AudioMetadataWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AudioMetadataWriter.m; sourceTree = ""; }; 0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; @@ -177,6 +181,8 @@ 17A2D3C40B8D1D37000778C4 /* AudioDecoder.m */, 17C940210B900909008627D6 /* AudioMetadataReader.h */, 17C940220B900909008627D6 /* AudioMetadataReader.m */, + 07DB5F3C0ED353A900C2E3EF /* AudioMetadataWriter.h */, + 07DB5F3D0ED353A900C2E3EF /* AudioMetadataWriter.m */, 17B6192E0B909BC300BC003F /* AudioPropertiesReader.h */, 17B6192F0B909BC300BC003F /* AudioPropertiesReader.m */, 17ADB13A0B97926D00257CA2 /* AudioSource.h */, @@ -312,6 +318,7 @@ 8EC1225F0B993BD500C5B3AD /* ConverterNode.h in Headers */, 8E8D3D2F0CBAEE6E00135C1B /* AudioContainer.h in Headers */, B0575F2D0D687A0800411D77 /* Helper.h in Headers */, + 07DB5F3E0ED353A900C2E3EF /* AudioMetadataWriter.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -388,6 +395,7 @@ 8EC122600B993BD500C5B3AD /* ConverterNode.m in Sources */, 8E8D3D300CBAEE6E00135C1B /* AudioContainer.m in Sources */, B0575F300D687A4000411D77 /* Helper.m in Sources */, + 07DB5F3F0ED353A900C2E3EF /* AudioMetadataWriter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Audio/Plugin.h b/Audio/Plugin.h index bc5ae603e..da9023833 100644 --- a/Audio/Plugin.h +++ b/Audio/Plugin.h @@ -50,6 +50,12 @@ + (NSDictionary *)metadataForURL:(NSURL *)url; @end +@protocol CogMetadataWriter +//+ (NSArray *)fileTypes; +//+ (NSArray *)mimeTypes; ++ (int)putMetadataInURL:(NSURL *)url; +@end + @protocol CogPropertiesReader + (NSArray *)fileTypes; + (NSArray *)mimeTypes; @@ -74,6 +80,8 @@ - (NSDictionary *) metadataForURL:(NSURL *)url; - (NSDictionary *) propertiesForURL:(NSURL *)url; - (id) audioDecoderForSource:(id)source; + +- (int) putMetadataInURL:(NSURL *)url; @end diff --git a/Cog.xcodeproj/project.pbxproj b/Cog.xcodeproj/project.pbxproj index 68930e41a..d1f8bb2d0 100644 --- a/Cog.xcodeproj/project.pbxproj +++ b/Cog.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 07D971E60ED1DAA800E7602E /* TagEditorController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D971E50ED1DAA800E7602E /* TagEditorController.m */; }; 07E18DF30D62B38400BB0E11 /* NSArray+ShuffleUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 07E18DF20D62B38400BB0E11 /* NSArray+ShuffleUtils.m */; }; 170680630B950158006BA573 /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 170680620B950158006BA573 /* Growl.framework */; }; 170680840B950164006BA573 /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 170680620B950158006BA573 /* Growl.framework */; }; @@ -446,6 +447,15 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + 07DFC3930ECDF80100DA400D /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 177FD1000B90CB570011C3B5 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -487,6 +497,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 07D971E40ED1DAA800E7602E /* TagEditorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TagEditorController.h; path = TagEditor/TagEditorController.h; sourceTree = ""; }; + 07D971E50ED1DAA800E7602E /* TagEditorController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TagEditorController.m; path = TagEditor/TagEditorController.m; sourceTree = ""; }; 07E18DF10D62B38400BB0E11 /* NSArray+ShuffleUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+ShuffleUtils.h"; sourceTree = ""; }; 07E18DF20D62B38400BB0E11 /* NSArray+ShuffleUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+ShuffleUtils.m"; sourceTree = ""; }; 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -725,6 +737,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 07D973050ED1E8F200E7602E /* ID3TagEditor */ = { + isa = PBXGroup; + children = ( + 07D971E40ED1DAA800E7602E /* TagEditorController.h */, + 07D971E50ED1DAA800E7602E /* TagEditorController.m */, + ); + name = ID3TagEditor; + sourceTree = ""; + }; 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( @@ -738,6 +759,7 @@ 1766C68D0B911DF1004A7AE4 /* AudioScrobbler */, 177EC0110B8BC2CF0000BC8C /* Utils */, 177EBF770B8BC2A70000BC8C /* ThirdParty */, + 07D973050ED1E8F200E7602E /* ID3TagEditor */, ); name = Classes; sourceTree = ""; @@ -1344,6 +1366,7 @@ 8D1107290486CEB800E47090 /* Resources */, 8E757AEC09F3265E0080F1EE /* CopyFiles */, 177FD1000B90CB570011C3B5 /* CopyFiles */, + 07DFC3930ECDF80100DA400D /* CopyFiles */, ); buildRules = ( ); @@ -1770,6 +1793,7 @@ 173855FF0E0CC81F00488CD4 /* FileTreeOutlineView.m in Sources */, 1738589B0E0D92DD00488CD4 /* SideBarController.m in Sources */, 1738589D0E0D92DD00488CD4 /* SideWindowController.m in Sources */, + 07D971E60ED1DAA800E7602E /* TagEditorController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1956,6 +1980,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/build/Release/WMA.framework\"", + "\"$(SRCROOT)/ID3/libid3\"", ); OTHER_CFLAGS = ( "-D__MACOSX__", @@ -1991,6 +2016,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/build/Release/WMA.framework\"", + "\"$(SRCROOT)/ID3/libid3\"", ); OTHER_CFLAGS = ( "-D__MACOSX__", diff --git a/English.lproj/MainMenu.xib b/English.lproj/MainMenu.xib index 40871e6c7..6b44080b8 100644 --- a/English.lproj/MainMenu.xib +++ b/English.lproj/MainMenu.xib @@ -2,18 +2,20 @@ 1050 - 9D34 - 667 - 949.33 + 9F33 + 672 + 949.34 352.00 YES + + - - - - + + + + YES @@ -884,44 +886,100 @@ ELIAAAAAAAgACAAIAAgAAQABAAEAAQ - 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 -ZSwgSW5jLiwgMjAwOAA + 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 +MdMzSDTBNjc3njj9OlY7pjzwPjU/dkC3QfpDPUSDRcRG+EgiSUtKakuFTJxNsE7ET9lQ8FILUylUUlV8 +VqxX21kKWjVbWVxzXYBehV+AYHNhkmK8Y+tlHWZUZ4howmn6ay9sYm2Pbqpvk3BncURyK3MadBF1EXYX +dx94KHkvejR7PHxDfUd+Rn9CgDiBKoIbgwyD/ITuheKG1ofJiLmJpoqQi3mMYY1LjjiPKJAbkRCSBZL0 +k9+UyJWslo+XbZhLmSuaDJrwm9ecvp2ennafS6AeoO6hu6KGo1KkH6TupcCmkqd0qFupRaoxqx2sB6zu +rdGuq698sEWxE7HvstyzzrTBtbq2r7eluJq5i7p7u2S8P70Fvbm+c780v/zAy8GjwoDDYMRBxSLGA8bj +x8bIo8l8ylHLI8vyzLzNhs5OzxbP3tCl0WfSJ9Ln06PUXtUa1dXWlNdU2BfY3dmj2mPbIdve3JXdTd4E +3rvfdOAw4O/hsuJz4zLj7+Sm5VrmDOa652joFujE6XXqJ+rd65zsVO0D7ZruJe6h7xjvhu/58JzxYvJF +8wzzj/QR9Iz1CvWV9ir21vep+K75/vxg//8AAAAXAFAApwEZAawCaQNZBH4F2weJCX0LuA4bEJ4TGxVt +F4oZfxtDHNkeOx+RIOMiPCOZJPwmWSe8KSYqjSvzLVouwTAlMYQy4DQ+NZE24zg0OXg6uzv0PSw+Wz+L +QLdB3kMERCBFQEZWR2pIekmGSo9LmEyfTaROqE+pUKtRslLFU91U8lYGVxhYKFkzWj5bR1xPXVZeXl9j +YG5hdmKBY5Bkn2WvZsNnzmjHabRqn2uJbHRtYm5Qbz5wLXEechBzA3P3dO515nbfd9p42HnXetR7zXy7 +fZ1+en9agD2BI4ILgvSD34TMhbmGpYePiHqJZ4pPizeMHIz/jeCOwI+ekIqRbpJWkzuUH5UAld+WvZeY +mHGZSJoemvObxZyVnWaeNZ8Cn8+gn6FxolWjPaQlpQ6l9qbdp8OoqKmMqnCrVKw4rRut/K7er7+worGC +smSzRbQjtPq1y7aZt2y4P7kTuem6wbudvHq9Wb46vx7AA8Dpwc3CuMOexIjFc8ZaxznID8jjybfKk8tv +zE3NLM4Nzu7P0NCv0Y3SZ9M+1BLU5NWv1nfXO9f82MLZrdqa24fccd1X3jvfGt/04M/ho+Jz4z/kCeTS +5ZbmWecc593onelc6iHq9OvJ7JLtV+4a7tfvlPBP8QfxxPKB80H0BPTS9ar2j/eG+JX5yftO/W3//wAA +AA4AMABjAKcA+QFjAdwChQNeBHgF0QeNCWwLOgzuDooQDRFsErsT/RUpFkwXaxh7GYIahhuNHJYdoh6t +H7kgwyHLIs8j0STKJbwmqieVKHwpYSpFKyosESz7Lecu1C++MJ8xeTJRMyIz7jS3NX82RjcLN9Q4nzlu +OkU7ITwCPOU9yD6qP4dAYEEwQfdCuEN7RFJFN0YeRwhH80jfScxKuEugTIZNZ05ETulPjVAzUOFRllJQ +UxRT21SkVW5WN1cAV8xYmllmWjBa9lu6XHtdPV3+XsFfhWBMYRNh2WKdY15kHGTZZZZmUmcSZ9Rol2ld +aiBq32ucbFdtD23Gbn5vN2/ycLBxcXI2cvhztnRwdSR113aGdzJ33XiIeTR54nqSe0V8BnzPfZt+an87 +gAuA2YGjgmaDIYPXhImFWYYwhw2H7IjOibGKlIt4jFeNNY4PjtiPjZAkkL2RXpIHkrSTapQklOGVoJZf +lx+X5JismXOaN5r5m7mcd501nfSetJ91oDmg/qHFooujUaQWpNuloaZppzaoBqjaqbKqjqtqrEStHq33 +rtOvsLCQsXiyZLNXtE+1SLY+tzG4ILkKufC61Lu2vJy9gL5nv1LAQcE4wjTDNMQ2xTnGOsc4yDLJJsoU +yvrL4M0tzqnQSNIO1A3WY9kW3GjgiOXG7Of3ff//AABuZGluAAAAAAAABjYAAJfpAABbUAAAVJsAAI5W +AAAnpAAAFWAAAFANAABUOQACXCgAAiFHAAFFHgADAQAAAgAAABoAOABSAGkAfwCRAKMAtADEANMA4gDw +AP4BDAEbASwBPAFOAWABdAGIAZ4BtAHMAeYCAgIfAj4CXwKCAqgCzwL4AyIDTwN8A6sD2wQNBEEEdgSs +BOQFHgVZBZQF0QYPBk0GiwbKBwkHSgeMB9EIGQhjCK8I/glPCaMJ+QpRCqsLBQthC74MGwx6DN0NRg2y +DiAOkw8JD4IP/xB9EP0RfhIAEoETAxOBFAEUgBUAFYIWBRaMFxgXqRhCGOIZiho9GtUbaRv8HI4dIR2z +Hkge2x9wIAcgoSE9Id0igCNOJDglGiX0JscnlSheKSYp7iq3K4UsVS0kLfYuzS+pMIsxdDJiM1M0RjU7 +Ni43JDgbORg6GjsiPC09Oz5JP1RAXkFnQm5DfUSVRbFG1kgASTFKZUuYTMpN+k8pUGVRr1MAVFpVvFcm +WJBZ+ltgXMZeFV9eYKVh7GM2ZIdl32dLaMhqXGvUbSxufm/QcRxybnPAdRZ2dHfWeUV623y5fouARYHu +g4aFFoaiiDCJwItUjOWOg5Arkd+Tn5Vslz6ZFZrwnM+ewaC3orukw6bPqNKq06zKrsSw1LLttRe3Q7l2 +u6C9wb/ZwfjEJ8ZoyLzLI82Mz/rSX9S61vbZX9w638DjtuZq6FDqYu3J8XL0tfdc+XP7Efxh/S39+P6K +/wb/g///AAAAIgBCAF0AdgCNAKMAtwDKAN0A7gEAAREBIgE0AUUBVwFpAXwBjwGkAbkB0AHpAgMCHwI9 +Al4CggKpAtcDBgM4A2sDngPSBAcEPAR0BKwE5QUeBVkFlAXSBhAGTwaQBtIHFgdcB6MH6wg2CIMI0Qkh +CXUJygoiCn4K2ws8C54MAgxqDNQNQA2yDiMOmg8TD5AQEBCUERoRohIuErsTTRPgFHUVBBWQFh8WsRdF +F9sYdRkTGbIaVRr6G6EcSRz1HZ8eTR76H6cgVSEFIbMiYyMiI/IkxiWeJncnTygpKQYp4yrAK58sfi1e +Lj0vHi//MN8xvzKiM4g0eTV+Now3lziiOak6szu8PMM9zT7aP+tA/UIOQypERUVoRpBHvEjvShBLPUxn +TZhOzVAKUUlSkVPdVTBWhlfkWUharlwaXY1e/WBpYbVjBWRUZadm/GhWabRrFWx3bd1vRHCxch9zkXUD +dnp38HlrevN8j34yf86BbIMJhKOGOYfMiV6K7Yx6jgePmZEhkrSUQpXOl2iZHZrdnJ+eUaAFobejaqUa +ps2ohqpFrBCt5K/CsbKzrbW/t8a5crsmvNu+ncBjwjfEGcX+x/TJ+cwLziTQTtJ71LDW7dks2zrdRd92 +4bLkBeZc6MXrJO1+79LyBPQX9gr30flv+t/8Fv0G/d3+nf9O//8AAAA5AG0AlAC0ANAA6gEAARYBLAFD +AVwBdwGTAbEB0gH1AhwCRgJzAqMC2AMQA0oDiQPNBBUEXgSpBPUFQwWTBeUGOgaSBu0HSwewCBkIhwj5 +CW8J6QplCuILYAvfDGAM5w14Dg4OrA9RD/0QrRFhEhUSyhN5FCYU0RV+Fi0W4heeGGUZORocGucbpxxn +HScd6B6rH28gOSEHIdwiuCPnJRUmNCdIKFEpWCpeK2oseC2CLpEvpzDGMe0zGDRFNXM2njfNOQA6PjuD +PM4+HT9oQLJB+kNIRKZGCkd3SOhKWkvHTTBOlFABUYJTD1SqVlNYAlmyW15dA16CX/phbmLhZFtl3Gdz +aR9q5WxrbeBvUXC+cixzmnUKdoN4AXmMe2Z9pX/Agb6DpIV9h1GJJ4r6jL+Oi5BhkkGUKpYWmACZ6pvP +nbCflaF9o2ylWadCqSCq96zEroywVLIks/e1yLeXuWG7HbzQvnnAHMHCw3DFJsboyLTKisxkzjrQFNHn +07bVedcv2ODaj9w73enfn+Fb4yTk+ebi6N/qQ+t87KHtue7C77/wqPGL8lXzGPPO9Hb1H/Wv9jn2xPdA +96/4H/iO+PP5Svmi+fn6UPqk+uT7JPtl+6X75vwm/Gb8kfy9/Oj9E/0//Wr9lf3B/ez+GP5I/n/+tv7s +/yP/Wv+R/8j//wAAZGVzYwAAAAAAAAAKQ29sb3IgTENEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAA +AAAAEgAAAAxuYk5PAAAAEgAAAOhwdFBUAAAAFgAAAPpzdlNFAAAAEAAAARBmaUZJAAAAEAAAASBkYURL +AAAAHAAAATB6aENOAAAADAAAAUxmckZSAAAAEgAAAVhqYUpQAAAADgAAAWplblVTAAAAEgAAAXhwbFBM +AAAAEgAAAYpwdEJSAAAAGAAAAZxlc0VTAAAAEgAAAbR6aFRXAAAADgAAAcZydVJVAAAAJAAAAdRrb0tS +AAAADAAAAfhkZURFAAAAEAAAAgRubE5MAAAAFgAAAhRpdElUAAAAFAAAAioARgBhAHIAZwBlAC0ATABD +AEQATABDAEQAIABhACAAQwBvAHIAZQBzAEYA5AByAGcALQBMAEMARABWAOQAcgBpAC0ATABDAEQATABD +AEQALQBmAGEAcgB2AGUAcwBrAOYAcgBtX2mCcgAgAEwAQwBEAMkAYwByAGEAbgAgAEwAQwBEMKsw6TD8 +ACAATABDAEQAQwBvAGwAbwByACAATABDAEQASwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABv +AHIAaQBkAG8ATABDAEQAIABjAG8AbABvAHJfaYJybbJmdphveTpWaAQmBDIENQRCBD0EPgQ5ACAEFgQa +AC0ENAQ4BEEEPwQ7BDUEOc7st+wAIABMAEMARABGAGEAcgBiAC0ATABDAEQASwBsAGUAdQByAGUAbgAt +AEwAQwBEAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGgAAAAAwhEFcAAAAAAAAAAA +AAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAwOAA NSCalibratedRGBColorSpace 8 @@ -2434,7 +2492,7 @@ ZSwgSW5jLiwgMjAwOAA {3.40282e+38, 3.40282e+38} {213, 107} - + 256 YES @@ -2505,6 +2563,29 @@ ZSwgSW5jLiwgMjAwOAA 2322 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + Apple URL pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + CorePasteboardFlavorType 0x75726C20 + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + NeXT font pasteboard type + NeXT ruler pasteboard type + WebURLsWithTitlesPboardType + + {423, 14} @@ -2708,6 +2789,7 @@ ZSwgSW5jLiwgMjAwOAA {480, 376} + {{0, 0}, {1920, 1178}} {213, 129} @@ -3151,6 +3233,15 @@ ZSwgSW5jLiwgMjAwOAA + + + YES + Information + + 2147483647 + + + Show in Finder @@ -3364,6 +3455,202 @@ ZSwgSW5jLiwgMjAwOAA SideWindowController + + TagEditorController + + + 3 + 2 + {{196, 240}, {480, 270}} + 1946157056 + Tag Editor + NSWindow + + {3.40282e+38, 3.40282e+38} + + + 256 + + YES + + + 268 + {{362, 18}, {96, 32}} + + YES + + 67239424 + 134217728 + Save + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{266, 18}, {96, 32}} + + YES + + 67239424 + 134217728 + Cancel + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{57, 233}, {197, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{9, 239}, {43, 17}} + + YES + + 68288064 + 272630784 + Artist: + + + + + + + + + 268 + {{57, 201}, {197, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{9, 204}, {43, 17}} + + YES + + 68288064 + 272630784 + Title: + + + + + + + + + 268 + {{57, 169}, {197, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{9, 172}, {50, 17}} + + YES + + 68288064 + 272630784 + Album: + + + + + + + + + 268 + {{57, 137}, {197, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{9, 139}, {46, 17}} + + YES + + 68288064 + 272630784 + Genre: + + + + + + + + {480, 270} + + + {{0, 0}, {1440, 878}} + {3.40282e+38, 3.40282e+38} + @@ -5988,6 +6275,30 @@ ZSwgSW5jLiwgMjAwOAA 2182 + + + cancel: + + + + 2211 + + + + tageditorWindow + + + + 2214 + + + + showTagEditor: + + + + 2219 + @@ -7255,6 +7566,7 @@ ZSwgSW5jLiwgMjAwOAA + ContextualMenu @@ -7927,6 +8239,185 @@ ZSwgSW5jLiwgMjAwOAA + + 2187 + + + YES + + + + TagEditorWindow + + + 2188 + + + YES + + + + + + + + + + + + + + + 2189 + + + YES + + + + + + 2190 + + + YES + + + + + + 2191 + + + YES + + + + + + 2192 + + + YES + + + + + + 2193 + + + YES + + + + + + 2194 + + + YES + + + + + + 2195 + + + YES + + + + + + 2196 + + + YES + + + + + + 2197 + + + YES + + + + + + 2198 + + + YES + + + + + + 2199 + + + + + 2200 + + + + + 2201 + + + + + 2202 + + + + + 2203 + + + + + 2204 + + + + + 2205 + + + + + 2206 + + + + + 2207 + + + + + 2208 + + + + + 2209 + + + TagEditorController + + + 2212 + + + @@ -7939,6 +8430,7 @@ ZSwgSW5jLiwgMjAwOAA -3.ImportedFromIB2 103.IBPluginDependency 103.ImportedFromIB2 + 106.IBEditorWindowLastContentRect 106.IBPluginDependency 106.ImportedFromIB2 106.editorWindowContentRectSynchronizationRect @@ -8195,6 +8687,7 @@ ZSwgSW5jLiwgMjAwOAA 1683.IBPluginDependency 1685.IBPluginDependency 1688.IBPluginDependency + 169.IBEditorWindowLastContentRect 169.IBPluginDependency 169.ImportedFromIB2 169.editorWindowContentRectSynchronizationRect @@ -8295,6 +8788,33 @@ ZSwgSW5jLiwgMjAwOAA 218.CustomClassName 218.IBPluginDependency 218.ImportedFromIB2 + 2187.IBEditorWindowLastContentRect + 2187.IBPluginDependency + 2187.IBWindowTemplateEditedContentRect + 2187.NSWindowTemplate.visibleAtLaunch + 2188.IBPluginDependency + 2189.IBPluginDependency + 2190.IBPluginDependency + 2191.IBPluginDependency + 2192.IBPluginDependency + 2193.IBPluginDependency + 2194.IBPluginDependency + 2195.IBPluginDependency + 2196.IBPluginDependency + 2197.IBPluginDependency + 2198.IBPluginDependency + 2199.IBPluginDependency + 2200.IBPluginDependency + 2201.IBPluginDependency + 2202.IBPluginDependency + 2203.IBPluginDependency + 2204.IBPluginDependency + 2205.IBPluginDependency + 2206.IBPluginDependency + 2207.IBPluginDependency + 2208.IBPluginDependency + 2209.IBPluginDependency + 2212.IBPluginDependency 226.IBPluginDependency 226.ImportedFromIB2 23.IBPluginDependency @@ -8303,6 +8823,7 @@ ZSwgSW5jLiwgMjAwOAA 24.IBPluginDependency 24.ImportedFromIB2 24.editorWindowContentRectSynchronizationRect + 268.IBEditorWindowLastContentRect 268.IBPluginDependency 268.IBWindowTemplateEditedContentRect 268.ImportedFromIB2 @@ -8401,6 +8922,7 @@ ZSwgSW5jLiwgMjAwOAA 520.ImportedFromIB2 56.IBPluginDependency 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect 57.IBPluginDependency 57.ImportedFromIB2 57.editorWindowContentRectSynchronizationRect @@ -8430,6 +8952,7 @@ ZSwgSW5jLiwgMjAwOAA 806.ImportedFromIB2 807.IBPluginDependency 807.ImportedFromIB2 + 81.IBEditorWindowLastContentRect 81.IBPluginDependency 81.ImportedFromIB2 81.editorWindowContentRectSynchronizationRect @@ -8474,10 +8997,11 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin + {{582, 703}, {137, 23}} com.apple.InterfaceBuilder.CocoaPlugin {{365, 691}, {137, 23}} - {{375, 675}, {187, 133}} + {{310, 480}, {187, 153}} com.apple.InterfaceBuilder.CocoaPlugin {{482, 640}, {187, 133}} @@ -8518,7 +9042,7 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin - {{0, 821}, {140, 163}} + {{0, 693}, {140, 163}} com.apple.InterfaceBuilder.CocoaPlugin {{14, 571}, {140, 163}} @@ -8730,6 +9254,7 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + {{282, 543}, {252, 183}} com.apple.InterfaceBuilder.CocoaPlugin {{213, 653}, {252, 183}} @@ -8755,7 +9280,7 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{342, 733}, {277, 243}} + {{326, 483}, {277, 243}} com.apple.InterfaceBuilder.CocoaPlugin {{257, 573}, {237, 163}} com.apple.InterfaceBuilder.CocoaPlugin @@ -8807,17 +9332,17 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin - {{347, 268}, {691, 397}} + {{103, 226}, {691, 397}} com.apple.InterfaceBuilder.CocoaPlugin - {{347, 268}, {691, 397}} + {{103, 226}, {691, 397}} {{25, 14}, {683, 396}} - + {3.40282e+38, 3.40282e+38} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{619, 920}, {64, 6}} + {{603, 670}, {64, 6}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -8830,19 +9355,47 @@ ZSwgSW5jLiwgMjAwOAA PlaylistController com.apple.InterfaceBuilder.CocoaPlugin + {{92, 297}, {480, 270}} + com.apple.InterfaceBuilder.CocoaPlugin + {{92, 297}, {480, 270}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{527, 873}, {197, 103}} + {{511, 623}, {197, 103}} com.apple.InterfaceBuilder.CocoaPlugin {{442, 733}, {197, 103}} + {{314, 416}, {480, 376}} com.apple.InterfaceBuilder.CocoaPlugin - {{139, 290}, {480, 376}} + {{314, 416}, {480, 376}} {{139, 290}, {480, 376}} - + {3.40282e+38, 3.40282e+38} {213, 107} @@ -8866,7 +9419,7 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin - + {3.40282e+38, 3.40282e+38} {213, 107} @@ -8884,7 +9437,7 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin - {{197, 976}, {462, 20}} + {{181, 726}, {462, 20}} com.apple.InterfaceBuilder.CocoaPlugin {{112, 736}, {462, 20}} @@ -8900,7 +9453,7 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin - {{195, 671}, {222, 293}} + {{376, 433}, {222, 293}} com.apple.InterfaceBuilder.CocoaPlugin {{307, 443}, {222, 293}} @@ -8922,7 +9475,7 @@ ZSwgSW5jLiwgMjAwOAA {{195, 555}, {321, 103}} com.apple.InterfaceBuilder.CocoaPlugin - {{193, 397}, {164, 143}} + {{331, 436}, {164, 143}} com.apple.InterfaceBuilder.CocoaPlugin {{58, 502}, {164, 143}} @@ -8936,6 +9489,7 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin + {{193, 473}, {232, 253}} com.apple.InterfaceBuilder.CocoaPlugin {{124, 483}, {232, 253}} @@ -8965,6 +9519,7 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin + {{240, 623}, {189, 103}} com.apple.InterfaceBuilder.CocoaPlugin {{171, 733}, {189, 103}} @@ -8994,7 +9549,7 @@ ZSwgSW5jLiwgMjAwOAA com.apple.InterfaceBuilder.CocoaPlugin - {{461, 683}, {299, 293}} + {{445, 433}, {299, 293}} com.apple.InterfaceBuilder.CocoaPlugin {{376, 543}, {299, 293}} @@ -9022,7 +9577,7 @@ ZSwgSW5jLiwgMjAwOAA - 2182 + 2219 @@ -9696,6 +10251,31 @@ ZSwgSW5jLiwgMjAwOAA Spotlight/SpotlightWindowController.h + + TagEditorController + NSObject + + YES + + YES + cancel: + showTagEditor: + + + YES + id + id + + + + tageditorWindow + NSWindow + + + IBProjectSource + TagEditor/TagEditorController.h + + TrackingCell NSSliderCell diff --git a/Playlist/PlaylistController.h b/Playlist/PlaylistController.h index a46a16d0d..f853e106a 100644 --- a/Playlist/PlaylistController.h +++ b/Playlist/PlaylistController.h @@ -88,6 +88,8 @@ typedef enum { - (IBAction)clearFilterPredicate:(id)sender; - (IBAction)clear:(id)sender; +//- (IBAction)showTagEditor:(id)sender; + // Spotlight - (IBAction)searchByArtist:(id)sender; - (IBAction)searchByAlbum:(id)sender; diff --git a/Playlist/PlaylistController.m b/Playlist/PlaylistController.m index 306018764..007cab0ed 100644 --- a/Playlist/PlaylistController.m +++ b/Playlist/PlaylistController.m @@ -16,6 +16,7 @@ #import "RepeatTransformers.h" #import "StatusImageTransformer.h" #import "ToggleQueueTitleTransformer.h" +#import "TagEditorController.h" #import "CogAudio/AudioPlayer.h" @@ -642,7 +643,19 @@ if ([url isFileURL]) [ws selectFile:[url path] inFileViewerRootedAtPath:[url path]]; } - +/* +- (IBAction)showTagEditor:(id)sender +{ +// call the editor & pass the url + if ([self selectionIndex] < 0) + return; + + NSURL *url = [[[self selectedObjects] objectAtIndex:0] URL]; + if ([url isFileURL]) + [TagEditorController openTagEditor:url sender:sender]; + +} +*/ - (IBAction)searchByArtist:(id)sender; { PlaylistEntry *entry = [[self arrangedObjects] objectAtIndex:[self selectionIndex]]; diff --git a/Plugins/TagLib/TagLib.xcodeproj/project.pbxproj b/Plugins/TagLib/TagLib.xcodeproj/project.pbxproj index f0b8f8b8f..8403631bb 100644 --- a/Plugins/TagLib/TagLib.xcodeproj/project.pbxproj +++ b/Plugins/TagLib/TagLib.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 07CACE8B0ED1AD1000C0F1E8 /* TagLibMetadataWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 07CACE8A0ED1AD1000C0F1E8 /* TagLibMetadataWriter.m */; }; 177FCFA50B90C9600011C3B5 /* Plugin.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 177FCFA40B90C9600011C3B5 /* Plugin.h */; }; 17C93FC30B90056C008627D6 /* TagLibMetadataReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 17C93FC20B90056C008627D6 /* TagLibMetadataReader.m */; }; 17F563B40C3BDBB30019975C /* TagLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17F563A60C3BDB8F0019975C /* TagLib.framework */; }; @@ -46,6 +47,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 07CACE890ED1AD1000C0F1E8 /* TagLibMetadataWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TagLibMetadataWriter.h; sourceTree = ""; }; + 07CACE8A0ED1AD1000C0F1E8 /* TagLibMetadataWriter.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = TagLibMetadataWriter.m; sourceTree = ""; }; 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; @@ -104,6 +107,8 @@ 08FB77AFFE84173DC02AAC07 /* Classes */ = { isa = PBXGroup; children = ( + 07CACE890ED1AD1000C0F1E8 /* TagLibMetadataWriter.h */, + 07CACE8A0ED1AD1000C0F1E8 /* TagLibMetadataWriter.m */, 177FCFA40B90C9600011C3B5 /* Plugin.h */, 17C93FC10B90056C008627D6 /* TagLibMetadataReader.h */, 17C93FC20B90056C008627D6 /* TagLibMetadataReader.m */, @@ -156,6 +161,16 @@ }; /* End PBXGroup section */ +/* Begin PBXHeadersBuildPhase section */ + 07CACEC00ED1AF7D00C0F1E8 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + /* Begin PBXNativeTarget section */ 8D5B49AC048680CD000E48DA /* TagLib Plugin */ = { isa = PBXNativeTarget; @@ -165,6 +180,7 @@ 8D5B49B1048680CD000E48DA /* Sources */, 8D5B49B3048680CD000E48DA /* Frameworks */, 17C93FF20B900734008627D6 /* CopyFiles */, + 07CACEC00ED1AF7D00C0F1E8 /* Headers */, ); buildRules = ( ); @@ -226,6 +242,7 @@ buildActionMask = 2147483647; files = ( 17C93FC30B90056C008627D6 /* TagLibMetadataReader.m in Sources */, + 07CACE8B0ED1AD1000C0F1E8 /* TagLibMetadataWriter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Plugins/TagLib/TagLibMetadataReader.m b/Plugins/TagLib/TagLibMetadataReader.m index 7c1c0edcf..cd8e838cb 100644 --- a/Plugins/TagLib/TagLibMetadataReader.m +++ b/Plugins/TagLib/TagLibMetadataReader.m @@ -14,6 +14,8 @@ + (NSDictionary *)metadataForURL:(NSURL *)url { + + NSString *lArtist = @"", *lTitle = @"", *lAlbum = @"", *lGenre = @""; int lYear = 0, lTrack = 0;