Release No. 1.1
Added Auto-Lyrics Improved the preferences window
This commit is contained in:
@@ -19,4 +19,11 @@
|
|||||||
\
|
\
|
||||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural
|
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural
|
||||||
\cf0 - Added Split View on Main Window\
|
\cf0 - Added Split View on Main Window\
|
||||||
- Some little code changes}
|
- Some little code changes\
|
||||||
|
\
|
||||||
|
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\qc
|
||||||
|
\cf0 Release No. 1.1 - 06/17/2012\
|
||||||
|
\
|
||||||
|
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural
|
||||||
|
\cf0 -Added Auto-Lyrics\
|
||||||
|
-Improved the preferences window}
|
||||||
@@ -8,6 +8,11 @@
|
|||||||
/* "No Selection" label(s) in the main window */
|
/* "No Selection" label(s) in the main window */
|
||||||
"iLyrics.text.noSelection" = "Keine Auswahl";
|
"iLyrics.text.noSelection" = "Keine Auswahl";
|
||||||
|
|
||||||
|
/* Preference Items */
|
||||||
|
"iLyrics.text.enableAutoLyrics" = "Auto-Lyrics einschalten";
|
||||||
|
|
||||||
|
"iLyrics.text.disableAutoLyrics" = "Auto-Lyrics ausschalten";
|
||||||
|
|
||||||
/* Text displayed when a lyrics hoster does not return a valid NSDate in it's hosterVersion method */
|
/* Text displayed when a lyrics hoster does not return a valid NSDate in it's hosterVersion method */
|
||||||
"iLyrics.text.illegalDateFormat" = "Keine Angabe";
|
"iLyrics.text.illegalDateFormat" = "Keine Angabe";
|
||||||
|
|
||||||
@@ -65,4 +70,4 @@
|
|||||||
|
|
||||||
"Growl.messages.lyricsSent.title" = "Songtext an iTunes gesendet";
|
"Growl.messages.lyricsSent.title" = "Songtext an iTunes gesendet";
|
||||||
|
|
||||||
"Growl.messages.lyricsSent.detail" = "";
|
"Growl.messages.lyricsSent.detail" = "Songtext an \"%@\" gesendet.";
|
||||||
@@ -8,6 +8,11 @@
|
|||||||
/* "No Selection" label(s) in the main window */
|
/* "No Selection" label(s) in the main window */
|
||||||
"iLyrics.text.noSelection" = "No Selection";
|
"iLyrics.text.noSelection" = "No Selection";
|
||||||
|
|
||||||
|
/* Preference Items */
|
||||||
|
"iLyrics.text.enableAutoLyrics" = "Enable Auto-Lyrics";
|
||||||
|
|
||||||
|
"iLyrics.text.disableAutoLyrics" = "Disable Auto-Lyrics";
|
||||||
|
|
||||||
/* Text displayed when a lyrics hoster does not return a valid NSDate in it's hosterVersion method */
|
/* Text displayed when a lyrics hoster does not return a valid NSDate in it's hosterVersion method */
|
||||||
"iLyrics.text.illegalDateFormat" = "No Specification";
|
"iLyrics.text.illegalDateFormat" = "No Specification";
|
||||||
|
|
||||||
@@ -65,4 +70,5 @@
|
|||||||
|
|
||||||
"Growl.messages.lyricsSent.title" = "Lyrics sent to iTunes";
|
"Growl.messages.lyricsSent.title" = "Lyrics sent to iTunes";
|
||||||
|
|
||||||
"Growl.messages.lyricsSent.detail" = "";
|
/* %@ is the name of the song */
|
||||||
|
"Growl.messages.lyricsSent.detail" = "Lyrics sent to \"%@\".";
|
||||||
@@ -21,6 +21,8 @@
|
|||||||
3B20EF551584ECD9006C0CDF /* Lyrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B20EF541584ECD9006C0CDF /* Lyrics.m */; };
|
3B20EF551584ECD9006C0CDF /* Lyrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B20EF541584ECD9006C0CDF /* Lyrics.m */; };
|
||||||
3B20EF5C1584F34E006C0CDF /* SearchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B20EF5B1584F34E006C0CDF /* SearchResult.m */; };
|
3B20EF5C1584F34E006C0CDF /* SearchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B20EF5B1584F34E006C0CDF /* SearchResult.m */; };
|
||||||
3B20EF6115853345006C0CDF /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3B20EF6315853345006C0CDF /* Localizable.strings */; };
|
3B20EF6115853345006C0CDF /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3B20EF6315853345006C0CDF /* Localizable.strings */; };
|
||||||
|
3B2DC55B158CD31E00C004A4 /* PreferencesWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B2DC55A158CD31E00C004A4 /* PreferencesWindow.m */; };
|
||||||
|
3B73010E158CDF7200D3AF26 /* AutoLyrics.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B73010D158CDF7200D3AF26 /* AutoLyrics.m */; };
|
||||||
3B81D4FE1586248F00916CE3 /* ScriptingBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B81D4FD1586248F00916CE3 /* ScriptingBridge.framework */; };
|
3B81D4FE1586248F00916CE3 /* ScriptingBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B81D4FD1586248F00916CE3 /* ScriptingBridge.framework */; };
|
||||||
3BBD9B76158C873F00A5CD2C /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BBD9B75158C873F00A5CD2C /* Growl.framework */; };
|
3BBD9B76158C873F00A5CD2C /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BBD9B75158C873F00A5CD2C /* Growl.framework */; };
|
||||||
3BBD9B78158C876200A5CD2C /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3BBD9B75158C873F00A5CD2C /* Growl.framework */; };
|
3BBD9B78158C876200A5CD2C /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3BBD9B75158C873F00A5CD2C /* Growl.framework */; };
|
||||||
@@ -69,6 +71,10 @@
|
|||||||
3B20EF5D1584F458006C0CDF /* LyricsHoster.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LyricsHoster.h; sourceTree = "<group>"; };
|
3B20EF5D1584F458006C0CDF /* LyricsHoster.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LyricsHoster.h; sourceTree = "<group>"; };
|
||||||
3B20EF6215853345006C0CDF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
3B20EF6215853345006C0CDF /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
3B2DC558158CCE8100C004A4 /* Changelog.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = Changelog.rtf; sourceTree = SOURCE_ROOT; };
|
3B2DC558158CCE8100C004A4 /* Changelog.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = Changelog.rtf; sourceTree = SOURCE_ROOT; };
|
||||||
|
3B2DC559158CD31E00C004A4 /* PreferencesWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreferencesWindow.h; sourceTree = "<group>"; };
|
||||||
|
3B2DC55A158CD31E00C004A4 /* PreferencesWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreferencesWindow.m; sourceTree = "<group>"; };
|
||||||
|
3B73010C158CDF7200D3AF26 /* AutoLyrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutoLyrics.h; sourceTree = "<group>"; };
|
||||||
|
3B73010D158CDF7200D3AF26 /* AutoLyrics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutoLyrics.m; sourceTree = "<group>"; };
|
||||||
3B81D4FD1586248F00916CE3 /* ScriptingBridge.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ScriptingBridge.framework; path = System/Library/Frameworks/ScriptingBridge.framework; sourceTree = SDKROOT; };
|
3B81D4FD1586248F00916CE3 /* ScriptingBridge.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ScriptingBridge.framework; path = System/Library/Frameworks/ScriptingBridge.framework; sourceTree = SDKROOT; };
|
||||||
3B81D5041586298100916CE3 /* iTunes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTunes.h; sourceTree = "<group>"; };
|
3B81D5041586298100916CE3 /* iTunes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTunes.h; sourceTree = "<group>"; };
|
||||||
3BBD9B72158C7F8A00A5CD2C /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
|
3BBD9B72158C7F8A00A5CD2C /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
@@ -79,6 +85,7 @@
|
|||||||
3BE95010158A269D00E78FEF /* Magistrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Magistrix.m; sourceTree = "<group>"; };
|
3BE95010158A269D00E78FEF /* Magistrix.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Magistrix.m; sourceTree = "<group>"; };
|
||||||
3BE95015158A291500E78FEF /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreferencesController.h; sourceTree = "<group>"; };
|
3BE95015158A291500E78FEF /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreferencesController.h; sourceTree = "<group>"; };
|
||||||
3BE95016158A291500E78FEF /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreferencesController.m; sourceTree = "<group>"; };
|
3BE95016158A291500E78FEF /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreferencesController.m; sourceTree = "<group>"; };
|
||||||
|
3BFDD3FA158D420400BF32B0 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = de.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@@ -141,8 +148,12 @@
|
|||||||
3B20EF3D1584EA9A006C0CDF /* AppDelegate.h */,
|
3B20EF3D1584EA9A006C0CDF /* AppDelegate.h */,
|
||||||
3B20EF3E1584EA9A006C0CDF /* AppDelegate.m */,
|
3B20EF3E1584EA9A006C0CDF /* AppDelegate.m */,
|
||||||
3B20EF401584EA9A006C0CDF /* MainMenu.xib */,
|
3B20EF401584EA9A006C0CDF /* MainMenu.xib */,
|
||||||
|
3B2DC559158CD31E00C004A4 /* PreferencesWindow.h */,
|
||||||
|
3B2DC55A158CD31E00C004A4 /* PreferencesWindow.m */,
|
||||||
3BE95015158A291500E78FEF /* PreferencesController.h */,
|
3BE95015158A291500E78FEF /* PreferencesController.h */,
|
||||||
3BE95016158A291500E78FEF /* PreferencesController.m */,
|
3BE95016158A291500E78FEF /* PreferencesController.m */,
|
||||||
|
3B73010C158CDF7200D3AF26 /* AutoLyrics.h */,
|
||||||
|
3B73010D158CDF7200D3AF26 /* AutoLyrics.m */,
|
||||||
3B20EF501584EAF8006C0CDF /* MainController.h */,
|
3B20EF501584EAF8006C0CDF /* MainController.h */,
|
||||||
3B20EF511584EAF8006C0CDF /* MainController.m */,
|
3B20EF511584EAF8006C0CDF /* MainController.m */,
|
||||||
3B20EF5A1584F34E006C0CDF /* SearchResult.h */,
|
3B20EF5A1584F34E006C0CDF /* SearchResult.h */,
|
||||||
@@ -269,6 +280,8 @@
|
|||||||
3B20EF5C1584F34E006C0CDF /* SearchResult.m in Sources */,
|
3B20EF5C1584F34E006C0CDF /* SearchResult.m in Sources */,
|
||||||
3BE95011158A269D00E78FEF /* Magistrix.m in Sources */,
|
3BE95011158A269D00E78FEF /* Magistrix.m in Sources */,
|
||||||
3BE95017158A291500E78FEF /* PreferencesController.m in Sources */,
|
3BE95017158A291500E78FEF /* PreferencesController.m in Sources */,
|
||||||
|
3B2DC55B158CD31E00C004A4 /* PreferencesWindow.m in Sources */,
|
||||||
|
3B73010E158CDF7200D3AF26 /* AutoLyrics.m in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -296,6 +309,7 @@
|
|||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
children = (
|
children = (
|
||||||
3B20EF411584EA9A006C0CDF /* en */,
|
3B20EF411584EA9A006C0CDF /* en */,
|
||||||
|
3BFDD3FA158D420400BF32B0 /* de */,
|
||||||
);
|
);
|
||||||
name = MainMenu.xib;
|
name = MainMenu.xib;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||||
[defaults setBool:[quitWhenAllWindowClosedCheckBox state] == NSOnState forKey:@"Quit when all windows are closed"];
|
[defaults setBool:[quitWhenAllWindowClosedCheckBox state] == NSOnState forKey:@"Quit when all windows are closed"];
|
||||||
[mainController saveToDefalts:defaults];
|
[mainController saveToDefalts:defaults];
|
||||||
|
[[AutoLyrics autoLyrics] saveToDefaults:defaults];
|
||||||
[defaults synchronize];
|
[defaults synchronize];
|
||||||
return NSTerminateNow;
|
return NSTerminateNow;
|
||||||
}
|
}
|
||||||
|
|||||||
28
iLyrics/AutoLyrics.h
Normal file
28
iLyrics/AutoLyrics.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
//
|
||||||
|
// AutoLyrics.h
|
||||||
|
// iLyrics
|
||||||
|
//
|
||||||
|
// Created by Kim Wittenburg on 16.06.12.
|
||||||
|
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import <Growl/Growl.h>
|
||||||
|
#import "iTunes.h"
|
||||||
|
#import "Magistrix.h"
|
||||||
|
|
||||||
|
@interface AutoLyrics : NSObject
|
||||||
|
|
||||||
|
@property NSUInteger interval;
|
||||||
|
@property BOOL enabled;
|
||||||
|
@property BOOL replaceOldLyrics;
|
||||||
|
|
||||||
|
+(AutoLyrics *)autoLyrics;
|
||||||
|
|
||||||
|
-(void) shouldSetLyrics: (NSTimer *)timer;
|
||||||
|
-(void) setLyrics;
|
||||||
|
|
||||||
|
-(void) saveToDefaults: (NSUserDefaults *)defaults;
|
||||||
|
-(void) loadFromDefaults: (NSUserDefaults *)defaults;
|
||||||
|
|
||||||
|
@end
|
||||||
94
iLyrics/AutoLyrics.m
Normal file
94
iLyrics/AutoLyrics.m
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
//
|
||||||
|
// AutoLyrics.m
|
||||||
|
// iLyrics
|
||||||
|
//
|
||||||
|
// Created by Kim Wittenburg on 16.06.12.
|
||||||
|
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "AutoLyrics.h"
|
||||||
|
|
||||||
|
@implementation AutoLyrics {
|
||||||
|
NSTimer *timer;
|
||||||
|
NSUInteger interval;
|
||||||
|
BOOL enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@synthesize replaceOldLyrics;
|
||||||
|
|
||||||
|
AutoLyrics *instace;
|
||||||
|
|
||||||
|
+(AutoLyrics *)autoLyrics {
|
||||||
|
if (instace == nil) {
|
||||||
|
instace = [[AutoLyrics alloc] init];
|
||||||
|
[instace loadFromDefaults:[NSUserDefaults standardUserDefaults]];
|
||||||
|
}
|
||||||
|
return instace;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(id)init {
|
||||||
|
enabled = NO;
|
||||||
|
replaceOldLyrics = NO;
|
||||||
|
[self setInterval:5];
|
||||||
|
return [super init];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(BOOL)enabled {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setEnabled:(BOOL)flag {
|
||||||
|
enabled = flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
//In seconds
|
||||||
|
-(void)setInterval:(NSUInteger)i {
|
||||||
|
interval = i;
|
||||||
|
if (timer) {
|
||||||
|
[timer invalidate];
|
||||||
|
}
|
||||||
|
timer = [[NSTimer alloc] initWithFireDate:[[NSDate alloc]init] interval:interval target:self selector:@selector(shouldSetLyrics:) userInfo:nil repeats:YES];
|
||||||
|
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(NSUInteger)interval {
|
||||||
|
return interval;
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)shouldSetLyrics: (NSTimer *) sender {
|
||||||
|
if (enabled) {
|
||||||
|
iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
|
||||||
|
iTunesTrack *current = [iTunes currentTrack];
|
||||||
|
if ([current name] != nil) {
|
||||||
|
if (replaceOldLyrics || [[current lyrics] length] == 0) {
|
||||||
|
[self setLyrics];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)setLyrics {
|
||||||
|
iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
|
||||||
|
iTunesTrack *track = [iTunes currentTrack];
|
||||||
|
Magistrix *magistrix = [[Magistrix alloc] init];
|
||||||
|
[magistrix startNewSearchForQuery:[NSString stringWithFormat:@"%@ - %@", [track name], [track artist]]];
|
||||||
|
NSArray *results = [magistrix nextResults];
|
||||||
|
if (results != nil && [results count] > 0) {
|
||||||
|
Lyrics *lyrics = [magistrix lyricsBySearchResult:[results objectAtIndex:0]];
|
||||||
|
[track setLyrics:[lyrics lyrics]];
|
||||||
|
[GrowlApplicationBridge notifyWithTitle:NSLocalizedString(@"Growl.messages.lyricsSent.title", @"") description:[NSString stringWithFormat:NSLocalizedString(@"Growl.messages.lyricsSent.detail", @""), [track name]] notificationName:@"Lyrics sent to iTunes" iconData:nil priority:0 isSticky:NO clickContext:nil];
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)saveToDefaults:(NSUserDefaults *)defaults {
|
||||||
|
[defaults setBool:enabled forKey:@"Auto Lyrics Enabled"];
|
||||||
|
[defaults setBool:replaceOldLyrics forKey:@"Auto Lyrics replaces old lyrics"];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)loadFromDefaults:(NSUserDefaults *)defaults {
|
||||||
|
enabled = [defaults boolForKey:@"Auto Lyrics Enabled"];
|
||||||
|
replaceOldLyrics = [defaults boolForKey:@"Auto Lyrics replaces old lyrics"];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
-(void) resetLoadedResults;
|
-(void) resetLoadedResults;
|
||||||
|
|
||||||
|
//Return nil for a "network error"
|
||||||
-(Lyrics*) lyricsBySearchResult: (SearchResult *) result;
|
-(Lyrics*) lyricsBySearchResult: (SearchResult *) result;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -183,8 +183,9 @@
|
|||||||
|
|
||||||
- (void)replaceLyricsSheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo {
|
- (void)replaceLyricsSheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo {
|
||||||
if (returnCode == NSAlertDefaultReturn) {
|
if (returnCode == NSAlertDefaultReturn) {
|
||||||
[[iTunes currentTrack] setLyrics:[lyricsArea string]];
|
iTunesTrack *track = [iTunes currentTrack];
|
||||||
[GrowlApplicationBridge notifyWithTitle:NSLocalizedString(@"Growl.messages.lyricsSent.title", @"") description:NSLocalizedString(@"Growl.messages.lyricsSent.detail", @"") notificationName:@"Lyrics sent to iTunes" iconData:nil priority:0 isSticky:NO clickContext:nil];
|
[track setLyrics:[lyricsArea string]];
|
||||||
|
[GrowlApplicationBridge notifyWithTitle:NSLocalizedString(@"Growl.messages.lyricsSent.title", @"") description:[NSString stringWithFormat:NSLocalizedString(@"Growl.messages.lyricsSent.detail", @""), [track name]] notificationName:@"Lyrics sent to iTunes" iconData:nil priority:0 isSticky:NO clickContext:nil];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,13 +8,28 @@
|
|||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import "LyricsHoster.h"
|
#import "LyricsHoster.h"
|
||||||
|
#import "PreferencesWindow.h"
|
||||||
|
#import "AutoLyrics.h"
|
||||||
|
|
||||||
@interface PreferencesController : NSObject <NSTableViewDataSource>
|
@interface PreferencesController : NSObject <NSWindowDelegate, NSTableViewDataSource>
|
||||||
|
|
||||||
|
@property (unsafe_unretained) IBOutlet PreferencesWindow *preferencesWindow;
|
||||||
|
@property (weak) IBOutlet NSToolbarItem *generalButton;
|
||||||
@property (weak) IBOutlet NSTableView *hosterTable;
|
@property (weak) IBOutlet NSTableView *hosterTable;
|
||||||
@property NSArray *hosters;
|
@property NSArray *hosters;
|
||||||
|
@property (weak) IBOutlet NSView *generalView;
|
||||||
|
@property (weak) IBOutlet NSView *autoLyricsView;
|
||||||
|
@property (weak) IBOutlet NSButton *toggleAutoLyricsButton;
|
||||||
|
@property (weak) IBOutlet NSButton *replaceOldCheckBox;
|
||||||
|
|
||||||
-(void) addHoster: (id<LyricsHoster>) hoster;
|
-(void) addHoster: (id<LyricsHoster>) hoster;
|
||||||
-(void) removeHoster: (id<LyricsHoster>) hoster;
|
-(void) removeHoster: (id<LyricsHoster>) hoster;
|
||||||
|
|
||||||
|
- (IBAction)showGeneralPreferences:(id)sender;
|
||||||
|
- (IBAction)showAutoLyricsPreferences:(id)sender;
|
||||||
|
|
||||||
|
- (IBAction)toggleAutoLyrics:(id)sender;
|
||||||
|
- (IBAction)changeAutoLyricsInterval:(id)sender;
|
||||||
|
- (IBAction)toggleReplaceOldLyrics:(id)sender;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -5,19 +5,47 @@
|
|||||||
// Created by Kim Wittenburg on 14.06.12.
|
// Created by Kim Wittenburg on 14.06.12.
|
||||||
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
||||||
//
|
//
|
||||||
|
//TODO: Implement Auto-Lyricds Interval
|
||||||
|
//TODO: Set the title of the window when the toolbar button selection changed
|
||||||
|
|
||||||
#import "PreferencesController.h"
|
#import "PreferencesController.h"
|
||||||
|
|
||||||
@implementation PreferencesController {
|
@implementation PreferencesController {
|
||||||
NSMutableArray *hosters;
|
NSMutableArray *hosters;
|
||||||
|
AutoLyrics *autoLyrics;
|
||||||
}
|
}
|
||||||
|
@synthesize generalView;
|
||||||
|
@synthesize autoLyricsView;
|
||||||
|
@synthesize toggleAutoLyricsButton;
|
||||||
|
@synthesize replaceOldCheckBox;
|
||||||
|
@synthesize preferencesWindow;
|
||||||
|
@synthesize generalButton;
|
||||||
@synthesize hosterTable;
|
@synthesize hosterTable;
|
||||||
|
|
||||||
-(id)init {
|
-(id)init {
|
||||||
|
autoLyrics = [AutoLyrics autoLyrics];
|
||||||
hosters = [[NSMutableArray alloc] init];
|
hosters = [[NSMutableArray alloc] init];
|
||||||
return [super init];
|
return [super init];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark Window Delegate Methods
|
||||||
|
|
||||||
|
-(void)awakeFromNib {
|
||||||
|
if ([autoLyrics enabled]) {
|
||||||
|
[self enableAutoLyrics:toggleAutoLyricsButton];
|
||||||
|
} else {
|
||||||
|
[self disableAutoLyrics:toggleAutoLyricsButton];
|
||||||
|
}
|
||||||
|
if ([autoLyrics replaceOldLyrics]) {
|
||||||
|
[replaceOldCheckBox setState:NSOnState];
|
||||||
|
} else {
|
||||||
|
[replaceOldCheckBox setState:NSOffState];
|
||||||
|
}
|
||||||
|
[[preferencesWindow toolbar] setSelectedItemIdentifier:@"general"];
|
||||||
|
[self showGeneralPreferences:nil];
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Properties
|
#pragma mark Properties
|
||||||
|
|
||||||
@@ -42,6 +70,45 @@
|
|||||||
[hosterTable reloadData];
|
[hosterTable reloadData];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (IBAction)showGeneralPreferences:(id)sender {
|
||||||
|
[self changeContentViewTo:generalView];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(IBAction)showAutoLyricsPreferences:(id)sender {
|
||||||
|
[self changeContentViewTo:autoLyricsView];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)toggleAutoLyrics:(id)sender {
|
||||||
|
if ([autoLyrics enabled]) {
|
||||||
|
[self disableAutoLyrics:sender];
|
||||||
|
} else {
|
||||||
|
[self enableAutoLyrics:sender];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)enableAutoLyrics: (id) sender{
|
||||||
|
[autoLyrics setEnabled:YES];
|
||||||
|
[sender setTitle:NSLocalizedString(@"iLyrics.text.disableAutoLyrics", @"")];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)disableAutoLyrics: (id) sender {
|
||||||
|
[autoLyrics setEnabled:NO];
|
||||||
|
[sender setTitle:NSLocalizedString(@"iLyrics.text.enableAutoLyrics", @"")];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)changeAutoLyricsInterval:(id)sender {
|
||||||
|
NSLog(@"%i", [sender intValue]);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (IBAction)toggleReplaceOldLyrics:(id)sender {
|
||||||
|
[autoLyrics setReplaceOldLyrics:[sender state] == NSOnState];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)changeContentViewTo: (NSView *)view {
|
||||||
|
[preferencesWindow setContentView:view];
|
||||||
|
//[preferencesWindow setFrame:[view frame] display:YES animate:YES];
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Table Data Source
|
#pragma mark Table Data Source
|
||||||
-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
|
-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
|
||||||
@@ -57,7 +124,6 @@
|
|||||||
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
|
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
|
||||||
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
|
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
|
||||||
return [dateFormatter stringFromDate:version];
|
return [dateFormatter stringFromDate:version];
|
||||||
// return desc == nil ? NSLocalizedString(@"iLyrics.text.illegalDateFormat", @"") : desc;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
13
iLyrics/PreferencesWindow.h
Normal file
13
iLyrics/PreferencesWindow.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
//
|
||||||
|
// PreferencesWindow.h
|
||||||
|
// iLyrics
|
||||||
|
//
|
||||||
|
// Created by Kim Wittenburg on 16.06.12.
|
||||||
|
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
@interface PreferencesWindow : NSWindow
|
||||||
|
|
||||||
|
@end
|
||||||
20
iLyrics/PreferencesWindow.m
Normal file
20
iLyrics/PreferencesWindow.m
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
//
|
||||||
|
// PreferencesWindow.m
|
||||||
|
// iLyrics
|
||||||
|
//
|
||||||
|
// Created by Kim Wittenburg on 16.06.12.
|
||||||
|
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "PreferencesWindow.h"
|
||||||
|
|
||||||
|
@implementation PreferencesWindow
|
||||||
|
|
||||||
|
-(BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)anItem {
|
||||||
|
if ([anItem action]==@selector(toggleToolbarShown:)) {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
return [super validateUserInterfaceItem:anItem];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
5115
iLyrics/de.lproj/MainMenu.xib
Normal file
5115
iLyrics/de.lproj/MainMenu.xib
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -17,11 +17,11 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.0</string>
|
<string>1.1.0</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>5</string>
|
||||||
<key>LSApplicationCategoryType</key>
|
<key>LSApplicationCategoryType</key>
|
||||||
<string>public.app-category.music</string>
|
<string>public.app-category.music</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
|||||||
Reference in New Issue
Block a user