diff --git a/Application/DockIconController.h b/Application/DockIconController.h index a268f1eac..2142402f1 100644 --- a/Application/DockIconController.h +++ b/Application/DockIconController.h @@ -14,6 +14,8 @@ NSImage *dockImage; IBOutlet PlaybackController *playbackController; + + NSInteger lastPlaybackStatus; } @end diff --git a/Application/DockIconController.m b/Application/DockIconController.m index 23df53412..6cebc3861 100644 --- a/Application/DockIconController.m +++ b/Application/DockIconController.m @@ -16,39 +16,76 @@ static NSString *DockIconPlaybackStatusObservationContext = @"DockIconPlaybackSt - (void)startObserving { [playbackController addObserver:self forKeyPath:@"playbackStatus" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial) context:DockIconPlaybackStatusObservationContext]; + [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.colorfulDockIcons" options:0 context:DockIconPlaybackStatusObservationContext]; } - (void)stopObserving { [playbackController removeObserver:self forKeyPath:@"playbackStatus"]; + [[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.colorfulDockIcons"]; +} + +static NSString *getBadgeName(NSString *baseName, BOOL colorfulIcons) +{ + if (colorfulIcons) + { + return [baseName stringByAppendingString:@"Colorful"]; + } + else + { + return baseName; + } +} + +- (void)refreshDockIcon:(NSInteger)playbackStatus +{ + if ( playbackStatus < 0 ) + playbackStatus = lastPlaybackStatus; + else + lastPlaybackStatus = playbackStatus; + + NSImage *badgeImage = nil; + + BOOL colorfulIcons = [[NSUserDefaults standardUserDefaults] boolForKey:@"colorfulDockIcons"]; + + if (playbackStatus == kCogStatusPlaying) { + badgeImage = [NSImage imageNamed:getBadgeName(@"playDockBadge", colorfulIcons)]; + } + else if (playbackStatus == kCogStatusPaused) { + badgeImage = [NSImage imageNamed:getBadgeName(@"pauseDockBadge", colorfulIcons)]; + } + else { + badgeImage = [NSImage imageNamed:getBadgeName(@"stopDockBadge", colorfulIcons)]; + } + + NSSize badgeSize = [badgeImage size]; + + NSImage *newDockImage = [dockImage copy]; + [newDockImage lockFocus]; + + [badgeImage drawInRect:NSMakeRect(0, 0, 128, 128) + fromRect:NSMakeRect(0, 0, badgeSize.width, badgeSize.height) + operation:NSCompositeSourceOver fraction:1.0]; + + [newDockImage unlockFocus]; + [NSApp setApplicationIconImage:newDockImage]; + [newDockImage release]; } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([DockIconPlaybackStatusObservationContext isEqual:context]) { - NSInteger playbackStatus = [[change objectForKey:NSKeyValueChangeNewKey] integerValue]; - - NSImage *badgeImage = nil; - - if (playbackStatus == kCogStatusPlaying) { - badgeImage = [NSImage imageNamed:@"playDockBadge"]; - } - else if (playbackStatus == kCogStatusPaused) { - badgeImage = [NSImage imageNamed:@"pauseDockBadge"]; - } - else { - badgeImage = [NSImage imageNamed:@"stopDockBadge"]; - } - - NSSize badgeSize = [badgeImage size]; - - NSImage *newDockImage = [dockImage copy]; - [newDockImage lockFocus]; - [badgeImage drawInRect:NSMakeRect(0, 0, 128, 128) fromRect:NSMakeRect(0, 0, badgeSize.width, badgeSize.height) operation:NSCompositeSourceOver fraction:1.0]; - [newDockImage unlockFocus]; - [NSApp setApplicationIconImage:newDockImage]; - [newDockImage release]; + if ([keyPath isEqualToString:@"playbackStatus"]) + { + NSInteger playbackStatus = [[change objectForKey:NSKeyValueChangeNewKey] integerValue]; + + [self refreshDockIcon:playbackStatus]; + } + else if ([keyPath isEqualToString:@"values.colorfulDockIcons"]) + { + [self refreshDockIcon:-1]; + } } else { diff --git a/Application/PlaybackEventController.m b/Application/PlaybackEventController.m index 35904f0be..497cf3a82 100644 --- a/Application/PlaybackEventController.m +++ b/Application/PlaybackEventController.m @@ -94,6 +94,26 @@ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidPause:) name:CogPlaybackDidPauseNotficiation object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidResume:) name:CogPlaybackDidResumeNotficiation object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackDidStop:) name:CogPlaybackDidStopNotficiation object:nil]; + + [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.enableGrowlMist" options:0 context:nil]; + + [self toggleGrowlMist]; +} + +- (void) toggleGrowlMist +{ + BOOL enableMist = [[NSUserDefaults standardUserDefaults] boolForKey:@"enableGrowlMist"]; + [GrowlApplicationBridge setShouldUseBuiltInNotifications:enableMist]; +} + +- (void) observeValueForKeyPath:(NSString *)keyPath + ofObject:(id)object + change:(NSDictionary *)change + context:(void *)context +{ + if ([keyPath isEqualToString:@"values.enableGrowlMist"]) { + [self toggleGrowlMist]; + } } - (void)playbackDidBegin:(NSNotification *)notification diff --git a/Cog.xcodeproj/project.pbxproj b/Cog.xcodeproj/project.pbxproj index 9aceb7752..0a44ad50c 100644 --- a/Cog.xcodeproj/project.pbxproj +++ b/Cog.xcodeproj/project.pbxproj @@ -87,9 +87,6 @@ 17A8F6860D6A7FCA0095DA13 /* repeat_none.png in Resources */ = {isa = PBXBuildFile; fileRef = 17A8F6830D6A7FCA0095DA13 /* repeat_none.png */; }; 17A8F6870D6A7FCA0095DA13 /* repeat_one.png in Resources */ = {isa = PBXBuildFile; fileRef = 17A8F6840D6A7FCA0095DA13 /* repeat_one.png */; }; 17A8F71A0D6A89730095DA13 /* repeat_album.png in Resources */ = {isa = PBXBuildFile; fileRef = 17A8F7190D6A89730095DA13 /* repeat_album.png */; }; - 17B7CF5C0F5A05EE00A47027 /* pauseBadge.png in Resources */ = {isa = PBXBuildFile; fileRef = 17B7CF590F5A05EE00A47027 /* pauseBadge.png */; }; - 17B7CF5D0F5A05EE00A47027 /* playBadge.png in Resources */ = {isa = PBXBuildFile; fileRef = 17B7CF5A0F5A05EE00A47027 /* playBadge.png */; }; - 17B7CF5E0F5A05EE00A47027 /* stopBadge.png in Resources */ = {isa = PBXBuildFile; fileRef = 17B7CF5B0F5A05EE00A47027 /* stopBadge.png */; }; 17BB5CED0B8A86010009ACB1 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17BB5CEC0B8A86010009ACB1 /* AudioToolbox.framework */; }; 17BB5CF90B8A86350009ACB1 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17BB5CF60B8A86350009ACB1 /* AudioUnit.framework */; }; 17BB5CFA0B8A86350009ACB1 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17BB5CF70B8A86350009ACB1 /* CoreAudio.framework */; }; @@ -177,6 +174,9 @@ 8384916C18083EAB00E7332D /* stopTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 8384915618083EAB00E7332D /* stopTemplate.pdf */; }; 8384916D18083EAB00E7332D /* volume1Template.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 8384915718083EAB00E7332D /* volume1Template.pdf */; }; 8384916E18083EAB00E7332D /* volume3Template.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 8384915818083EAB00E7332D /* volume3Template.pdf */; }; + 83849172180843B200E7332D /* pauseDockBadgeColorful.png in Resources */ = {isa = PBXBuildFile; fileRef = 8384916F180843B200E7332D /* pauseDockBadgeColorful.png */; }; + 83849173180843B200E7332D /* playDockBadgeColorful.png in Resources */ = {isa = PBXBuildFile; fileRef = 83849170180843B200E7332D /* playDockBadgeColorful.png */; }; + 83849174180843B200E7332D /* stopDockBadgeColorful.png in Resources */ = {isa = PBXBuildFile; fileRef = 83849171180843B200E7332D /* stopDockBadgeColorful.png */; }; 8399D4E21805A55000B503B1 /* XmlContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8399D4E01805A55000B503B1 /* XmlContainer.m */; }; 83BCB8DE17FC971300760340 /* FFMPEG.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = B09E94350D747F7B0064F138 /* FFMPEG.bundle */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; @@ -675,9 +675,6 @@ 17A8F6830D6A7FCA0095DA13 /* repeat_none.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = repeat_none.png; path = Images/repeat_none.png; sourceTree = ""; }; 17A8F6840D6A7FCA0095DA13 /* repeat_one.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = repeat_one.png; path = Images/repeat_one.png; sourceTree = ""; }; 17A8F7190D6A89730095DA13 /* repeat_album.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = repeat_album.png; path = Images/repeat_album.png; sourceTree = ""; }; - 17B7CF590F5A05EE00A47027 /* pauseBadge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pauseBadge.png; path = Images/pauseBadge.png; sourceTree = ""; }; - 17B7CF5A0F5A05EE00A47027 /* playBadge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = playBadge.png; path = Images/playBadge.png; sourceTree = ""; }; - 17B7CF5B0F5A05EE00A47027 /* stopBadge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stopBadge.png; path = Images/stopBadge.png; sourceTree = ""; }; 17BB5CEC0B8A86010009ACB1 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; 17BB5CF60B8A86350009ACB1 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; 17BB5CF70B8A86350009ACB1 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; @@ -797,6 +794,9 @@ 8384915618083EAB00E7332D /* stopTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = stopTemplate.pdf; path = Images/stopTemplate.pdf; sourceTree = ""; }; 8384915718083EAB00E7332D /* volume1Template.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = volume1Template.pdf; path = Images/volume1Template.pdf; sourceTree = ""; }; 8384915818083EAB00E7332D /* volume3Template.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = volume3Template.pdf; path = Images/volume3Template.pdf; sourceTree = ""; }; + 8384916F180843B200E7332D /* pauseDockBadgeColorful.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pauseDockBadgeColorful.png; path = Images/pauseDockBadgeColorful.png; sourceTree = ""; }; + 83849170180843B200E7332D /* playDockBadgeColorful.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = playDockBadgeColorful.png; path = Images/playDockBadgeColorful.png; sourceTree = ""; }; + 83849171180843B200E7332D /* stopDockBadgeColorful.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stopDockBadgeColorful.png; path = Images/stopDockBadgeColorful.png; sourceTree = ""; }; 8399D4E01805A55000B503B1 /* XmlContainer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XmlContainer.m; sourceTree = ""; }; 8399D4E11805A55000B503B1 /* XmlContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XmlContainer.h; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; @@ -1014,6 +1014,9 @@ 177EC02D0B8BC2E60000BC8C /* Images */ = { isa = PBXGroup; children = ( + 8384916F180843B200E7332D /* pauseDockBadgeColorful.png */, + 83849170180843B200E7332D /* playDockBadgeColorful.png */, + 83849171180843B200E7332D /* stopDockBadgeColorful.png */, 8384914318083EAB00E7332D /* infoTemplate.pdf */, 8384914418083EAB00E7332D /* missingArt@2x.png */, 8384914518083EAB00E7332D /* navigatorTemplate.pdf */, @@ -1038,9 +1041,6 @@ 8384915818083EAB00E7332D /* volume3Template.pdf */, 8384913B1808217300E7332D /* randomize.png */, 1778D3AF0F645A190037E7A0 /* missingArt.png */, - 17B7CF590F5A05EE00A47027 /* pauseBadge.png */, - 17B7CF5A0F5A05EE00A47027 /* playBadge.png */, - 17B7CF5B0F5A05EE00A47027 /* stopBadge.png */, B09E96620D74A7BC0064F138 /* stop_current.png */, 17A8F7190D6A89730095DA13 /* repeat_album.png */, 17A8F6820D6A7FCA0095DA13 /* repeat_all.png */, @@ -1891,9 +1891,11 @@ 177EC04D0B8BC2FF0000BC8C /* pause.png in Resources */, 177EC04F0B8BC2FF0000BC8C /* play.png in Resources */, 177EC0510B8BC2FF0000BC8C /* previous.png in Resources */, + 83849174180843B200E7332D /* stopDockBadgeColorful.png in Resources */, 177EC0580B8BC2FF0000BC8C /* volume_high.png in Resources */, 177EC0590B8BC2FF0000BC8C /* volume_low.png in Resources */, 17E41E230C130EE200AC744D /* Help in Resources */, + 83849173180843B200E7332D /* playDockBadgeColorful.png in Resources */, 8384916418083EAB00E7332D /* repeatModeAllTemplate.pdf in Resources */, 1766C8920B912FB4004A7AE4 /* files_off.png in Resources */, 1766C8930B912FB4004A7AE4 /* files_on.png in Resources */, @@ -1942,6 +1944,7 @@ 17342ABF0D5FD36400E8D854 /* OpenURLPanel.xib in Resources */, 17211A7E0D68B7C500911CA9 /* FileTree.xib in Resources */, 17A8F6850D6A7FCA0095DA13 /* repeat_all.png in Resources */, + 83849172180843B200E7332D /* pauseDockBadgeColorful.png in Resources */, 17A8F6860D6A7FCA0095DA13 /* repeat_none.png in Resources */, 8384916318083EAB00E7332D /* repeatModeAlbumTemplate.pdf in Resources */, 17A8F6870D6A7FCA0095DA13 /* repeat_one.png in Resources */, @@ -1949,9 +1952,6 @@ B09E96630D74A7BC0064F138 /* stop_current.png in Resources */, 8384916B18083EAB00E7332D /* stopDockBadge.png in Resources */, 8384916118083EAB00E7332D /* previousTemplate.pdf in Resources */, - 17B7CF5C0F5A05EE00A47027 /* pauseBadge.png in Resources */, - 17B7CF5D0F5A05EE00A47027 /* playBadge.png in Resources */, - 17B7CF5E0F5A05EE00A47027 /* stopBadge.png in Resources */, 8384916A18083EAB00E7332D /* stop.png in Resources */, 178456C30F6320B5007E8021 /* SpotlightPanel.xib in Resources */, 17D1B0D20F6320EA00694C57 /* InfoInspector.xib in Resources */, diff --git a/Images/pauseBadge.png b/Images/pauseBadge.png deleted file mode 100644 index 8679a8416..000000000 Binary files a/Images/pauseBadge.png and /dev/null differ diff --git a/Images/pauseDockBadgeColorful.png b/Images/pauseDockBadgeColorful.png new file mode 100644 index 000000000..530575142 Binary files /dev/null and b/Images/pauseDockBadgeColorful.png differ diff --git a/Images/playBadge.png b/Images/playBadge.png deleted file mode 100644 index c3d2d9a7c..000000000 Binary files a/Images/playBadge.png and /dev/null differ diff --git a/Images/playDockBadgeColorful.png b/Images/playDockBadgeColorful.png new file mode 100644 index 000000000..782c79733 Binary files /dev/null and b/Images/playDockBadgeColorful.png differ diff --git a/Images/stopBadge.png b/Images/stopBadge.png deleted file mode 100644 index 59352d9a7..000000000 Binary files a/Images/stopBadge.png and /dev/null differ diff --git a/Images/stopDockBadgeColorful.png b/Images/stopDockBadgeColorful.png new file mode 100644 index 000000000..bb90ff3ff Binary files /dev/null and b/Images/stopDockBadgeColorful.png differ diff --git a/Preferences/General/English.lproj/Localizable.strings b/Preferences/General/English.lproj/Localizable.strings index ec2422b9a..4d2a9e87a 100644 --- a/Preferences/General/English.lproj/Localizable.strings +++ b/Preferences/General/English.lproj/Localizable.strings @@ -10,6 +10,8 @@ "Updates" = "Updates"; "Last.fm" = "Last.fm"; "Playlist" = "Playlist"; +"Growl" = "Growl"; +"Appearance" = "Appearance"; "Press Key..." = "Press Key..."; diff --git a/Preferences/General/English.lproj/Preferences.xib b/Preferences/General/English.lproj/Preferences.xib index 767a97f3c..c40407990 100644 --- a/Preferences/General/English.lproj/Preferences.xib +++ b/Preferences/General/English.lproj/Preferences.xib @@ -1,12 +1,14 @@ - + - + + + @@ -442,5 +444,39 @@ preference + + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/Preferences/General/General.xcodeproj/project.pbxproj b/Preferences/General/General.xcodeproj/project.pbxproj index 4afa10e41..f5b77e3b4 100644 --- a/Preferences/General/General.xcodeproj/project.pbxproj +++ b/Preferences/General/General.xcodeproj/project.pbxproj @@ -19,6 +19,8 @@ 17E41DB80C130AA500AC744D /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 17E41DB70C130AA500AC744D /* Localizable.strings */; }; 17E78A7E0D68BE3C005C5A59 /* file_tree.png in Resources */ = {isa = PBXBuildFile; fileRef = 17E78A7D0D68BE3C005C5A59 /* file_tree.png */; }; 17E78B6A0D68C1E3005C5A59 /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 17E78B680D68C1E3005C5A59 /* Preferences.xib */; }; + 8384917718084D9F00E7332D /* appearance.png in Resources */ = {isa = PBXBuildFile; fileRef = 8384917518084D9F00E7332D /* appearance.png */; }; + 8384917818084D9F00E7332D /* growl.png in Resources */ = {isa = PBXBuildFile; fileRef = 8384917618084D9F00E7332D /* growl.png */; }; 83EF495F17FBC96A00642E3C /* VolumeBehaviorArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 83EF495E17FBC96A00642E3C /* VolumeBehaviorArrayController.m */; }; 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; }; 8E07AA880AAC8EA200A4B32F /* HotKeyPane.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E07AA810AAC8EA200A4B32F /* HotKeyPane.m */; }; @@ -55,6 +57,8 @@ 17E78B690D68C1E3005C5A59 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/Preferences.xib; sourceTree = ""; }; 32DBCF630370AF2F00C91783 /* General_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = General_Prefix.pch; sourceTree = ""; }; 8384913618081ECB00E7332D /* Logging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logging.h; path = ../../Utils/Logging.h; sourceTree = ""; }; + 8384917518084D9F00E7332D /* appearance.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = appearance.png; path = Icons/appearance.png; sourceTree = ""; }; + 8384917618084D9F00E7332D /* growl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = growl.png; path = Icons/growl.png; sourceTree = ""; }; 83EF495D17FBC96A00642E3C /* VolumeBehaviorArrayController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VolumeBehaviorArrayController.h; sourceTree = ""; }; 83EF495E17FBC96A00642E3C /* VolumeBehaviorArrayController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VolumeBehaviorArrayController.m; sourceTree = ""; }; 8D5B49B6048680CD000E48DA /* General.preferencePane */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = General.preferencePane; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -210,6 +214,8 @@ 8E07ABD90AAC95AF00A4B32F /* Icons */ = { isa = PBXGroup; children = ( + 8384917518084D9F00E7332D /* appearance.png */, + 8384917618084D9F00E7332D /* growl.png */, 17C7E5AF0DCCC30A003CBCF7 /* playlist.png */, 17E78A7D0D68BE3C005C5A59 /* file_tree.png */, 1766C7A70B912A71004A7AE4 /* lastfm.png */, @@ -281,7 +287,9 @@ 178E386E0C3DA64500EE6711 /* InfoPlist.strings in Resources */, 8E07ABDD0AAC95BC00A4B32F /* hot_keys.png in Resources */, 172D72AD0B8926CA00D095BB /* apple_remote.png in Resources */, + 8384917818084D9F00E7332D /* growl.png in Resources */, 8E15A86C0B894768006DC802 /* updates.png in Resources */, + 8384917718084D9F00E7332D /* appearance.png in Resources */, 17C643690B8A788000C53518 /* output.png in Resources */, 1766C7A80B912A71004A7AE4 /* lastfm.png in Resources */, 17E41DB80C130AA500AC744D /* Localizable.strings in Resources */, diff --git a/Preferences/General/GeneralPreferencesPlugin.h b/Preferences/General/GeneralPreferencesPlugin.h index 4886febde..271167938 100644 --- a/Preferences/General/GeneralPreferencesPlugin.h +++ b/Preferences/General/GeneralPreferencesPlugin.h @@ -21,6 +21,8 @@ IBOutlet NSView *scrobblerView; IBOutlet NSView *remoteView; IBOutlet NSView *updatesView; + IBOutlet NSView *growlView; + IBOutlet NSView *appearanceView; } - (HotKeyPane *)hotKeyPane; @@ -30,7 +32,8 @@ - (GeneralPreferencePane *)updatesPane; - (GeneralPreferencePane *)scrobblerPane; - (GeneralPreferencePane *)playlistPane; - +- (GeneralPreferencePane *)growlPane; +- (GeneralPreferencePane *)appearancePane; @end diff --git a/Preferences/General/GeneralPreferencesPlugin.m b/Preferences/General/GeneralPreferencesPlugin.m index df5ccc969..8a82e8b50 100644 --- a/Preferences/General/GeneralPreferencesPlugin.m +++ b/Preferences/General/GeneralPreferencesPlugin.m @@ -22,6 +22,8 @@ [plugin updatesPane], [plugin outputPane], [plugin scrobblerPane], + [plugin growlPane], + [plugin appearancePane], nil]; } @@ -55,4 +57,14 @@ return [GeneralPreferencePane preferencePaneWithView:playlistView title:NSLocalizedStringFromTableInBundle(@"Playlist", nil, [NSBundle bundleForClass:[self class]], @"") iconNamed:@"playlist"]; } +- (GeneralPreferencePane *)growlPane +{ + return [GeneralPreferencePane preferencePaneWithView:growlView title:NSLocalizedStringFromTableInBundle(@"Growl", nil, [NSBundle bundleForClass:[self class]], @"") iconNamed:@"growl"]; +} + +- (GeneralPreferencePane *)appearancePane +{ + return [GeneralPreferencePane preferencePaneWithView:appearanceView title:NSLocalizedStringFromTableInBundle(@"Appearance", nil, [NSBundle bundleForClass:[self class]], @"") iconNamed:@"appearance"]; +} + @end diff --git a/Preferences/General/Icons/appearance.png b/Preferences/General/Icons/appearance.png new file mode 100644 index 000000000..1b4eba6af Binary files /dev/null and b/Preferences/General/Icons/appearance.png differ diff --git a/Preferences/General/Icons/growl.png b/Preferences/General/Icons/growl.png new file mode 100644 index 000000000..7f5204bf1 Binary files /dev/null and b/Preferences/General/Icons/growl.png differ