diff --git a/macosx/English.lproj/PrefsWindow.nib/info.nib b/macosx/English.lproj/PrefsWindow.nib/info.nib
index a02deff48..86cf2349f 100644
--- a/macosx/English.lproj/PrefsWindow.nib/info.nib
+++ b/macosx/English.lproj/PrefsWindow.nib/info.nib
@@ -23,7 +23,7 @@
IBOpenObjects
- 66
+ 41
IBSystem Version
8R4031
diff --git a/macosx/English.lproj/PrefsWindow.nib/keyedobjects.nib b/macosx/English.lproj/PrefsWindow.nib/keyedobjects.nib
index 3f3d10408..ff905ce66 100644
Binary files a/macosx/English.lproj/PrefsWindow.nib/keyedobjects.nib and b/macosx/English.lproj/PrefsWindow.nib/keyedobjects.nib differ
diff --git a/macosx/PrefsController.h b/macosx/PrefsController.h
index 9643ef520..725987b70 100644
--- a/macosx/PrefsController.h
+++ b/macosx/PrefsController.h
@@ -40,8 +40,6 @@
* fDownloadSoundPopUp, * fSeedingSoundPopUp;
IBOutlet NSTextField * fRatioStopField, * fQueueDownloadField, * fQueueSeedField, * fStalledField;
- NSArray * fSounds;
-
SUUpdater * fUpdater;
IBOutlet NSTextField * fUploadField, * fDownloadField,
@@ -58,8 +56,15 @@
- (id) initWithWindowNibName: (NSString *) name handle: (tr_handle_t *) handle;
- (void) setUpdater: (SUUpdater *) updater;
-- (void) setBadge: (id) sender;
+- (void) setPort: (id) sender;
+- (void) setNat: (id) sender;
+- (void) updatePortStatus;
+- (void) portCheckerDidFinishProbing: (PortChecker *) portChecker;
+
+- (NSArray *) sounds;
- (void) setSound: (id) sender;
+
+- (void) setBadge: (id) sender;
- (void) resetWarnings: (id) sender;
- (void) setCheckForUpdate: (id) sender;
@@ -73,11 +78,6 @@
- (void) folderSheetShow: (id) sender;
- (void) incompleteFolderSheetShow: (id) sender;
-- (void) setPort: (id) sender;
-- (void) setNat: (id) sender;
-- (void) updatePortStatus;
-- (void) portCheckerDidFinishProbing: (PortChecker *) portChecker;
-
- (void) applyRatioSetting: (id) sender;
- (void) updateRatioStopField;
- (void) setRatioStop: (id) sender;
diff --git a/macosx/PrefsController.m b/macosx/PrefsController.m
index 69484feb0..b35f2e110 100644
--- a/macosx/PrefsController.m
+++ b/macosx/PrefsController.m
@@ -80,25 +80,8 @@
//actually set bandwidth limits
[self applySpeedSettings: nil];
-
- //set play sound
- NSMutableArray * sounds = [NSMutableArray array];
- NSEnumerator * soundEnumerator;
-
- //get list of all sounds and sort alphabetically
- if (soundEnumerator = [[NSFileManager defaultManager] enumeratorAtPath: @"System/Library/Sounds"])
- {
- NSString * sound;
- while ((sound = [soundEnumerator nextObject]))
- {
- sound = [sound stringByDeletingPathExtension];
- if ([NSSound soundNamed: sound])
- [sounds addObject: sound];
- }
- }
-
- fSounds = [[sounds sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)] retain];
}
+
return self;
}
@@ -106,7 +89,6 @@
{
if (fNatStatusTimer)
[fNatStatusTimer invalidate];
- [fSounds release];
[super dealloc];
}
@@ -319,6 +301,41 @@
[portChecker release];
}
+- (NSArray *) sounds
+{
+ NSMutableArray * sounds = [[NSMutableArray alloc] init];
+
+ NSArray * directories = [NSArray arrayWithObjects: @"/System/Library/Sounds", @"/Library/Sounds",
+ [NSHomeDirectory() stringByAppendingPathComponent: @"Library/Sounds"], nil];
+ BOOL isDirectory;
+ NSEnumerator * soundEnumerator;
+ NSString * sound;
+
+ NSString * directory;
+ NSEnumerator * enumerator = [directories objectEnumerator];
+ while ((directory = [enumerator nextObject]))
+ if ([[NSFileManager defaultManager] fileExistsAtPath: directory isDirectory: &isDirectory] && isDirectory)
+ {
+ soundEnumerator = [[[NSFileManager defaultManager] directoryContentsAtPath: directory] objectEnumerator];
+ while ((sound = [soundEnumerator nextObject]))
+ {
+ sound = [sound stringByDeletingPathExtension];
+ if ([NSSound soundNamed: sound])
+ [sounds addObject: sound];
+ }
+ }
+
+ return sounds;
+}
+
+- (void) setSound: (id) sender
+{
+ //play sound when selecting
+ NSSound * sound;
+ if ((sound = [NSSound soundNamed: [sender titleOfSelectedItem]]))
+ [sound play];
+}
+
- (void) applySpeedSettings: (id) sender
{
if ([fDefaults boolForKey: @"SpeedLimit"])
@@ -422,14 +439,6 @@
[[NSNotificationCenter defaultCenter] postNotificationName: @"DockBadgeChange" object: self];
}
-- (void) setSound: (id) sender
-{
- //play sound when selecting
- NSSound * sound;
- if ((sound = [NSSound soundNamed: [sender titleOfSelectedItem]]))
- [sound play];
-}
-
- (void) resetWarnings: (id) sender
{
[fDefaults setBool: YES forKey: @"WarningDebug"];