From 42b847502c82d792abc80f9ca3b568fb84572780 Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Wed, 1 Dec 2004 03:02:27 +0000 Subject: [PATCH] Added preference saving for what screen you want. Showing prefs will only recenter the window if it isn't visible. --- MenuTunes.xcode/project.pbxproj | 12 ++++----- PreferencesController.m | 46 +++++++++++++++++++++++---------- StatusWindowController.m | 10 ++++++- 3 files changed, 48 insertions(+), 20 deletions(-) diff --git a/MenuTunes.xcode/project.pbxproj b/MenuTunes.xcode/project.pbxproj index b7e959c..4f52a96 100755 --- a/MenuTunes.xcode/project.pbxproj +++ b/MenuTunes.xcode/project.pbxproj @@ -17,22 +17,22 @@ 7C95A0E205A929F400B4F576, 7C331F9B05A921E10088905B, 7C331F9C05A921E10088905B, - 7C331F9F05A921E10088905B, 7C331FA005A921E10088905B, - 7C331FA105A921E10088905B, + 7C331F9F05A921E10088905B, 7C331F9D05A921E10088905B, - 7C331F9A05A921E10088905B, + 7C331FA105A921E10088905B, 7C331FA205A921E10088905B, - 7C331F9E05A921E10088905B, + 7C331F9A05A921E10088905B, 7C331F9905A921E10088905B, + 7C331F9E05A921E10088905B, 7C331FA305A921E10088905B, 7C331FA405A921E10088905B, 7C331FB105A922210088905B, 7C331FB205A922210088905B, - 7C331FB305A922210088905B, - 7C331FB405A922210088905B, 7C331FB505A922210088905B, + 7C331FB405A922210088905B, 7C331FB605A922210088905B, + 7C331FB305A922210088905B, 7C331FBD05A922490088905B, 7C331FBE05A922490088905B, 7C331FC205A9225A0088905B, diff --git a/PreferencesController.m b/PreferencesController.m index 8d74cc7..8ad7630 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -42,6 +42,7 @@ - (void)setupCustomizationTables; - (void)setupMenuItems; - (void)setupUI; +- (void)setupScreenPopup; - (void)setStatusWindowEntryEffect:(Class)effectClass; - (void)setStatusWindowExitEffect:(Class)effectClass; - (void)setCustomColor:(NSColor *)color updateWell:(BOOL)update; @@ -220,7 +221,9 @@ static PreferencesController *prefs = nil; [self resetRemotePlayerTextFields]; [launchAtLoginCheckbox becomeFirstResponder]; [NSApp activateIgnoringOtherApps:YES]; - [window center]; + if (![window isVisible]) { + [window center]; + } [window orderFrontRegardless]; [window makeKeyWindow]; } @@ -465,6 +468,7 @@ static PreferencesController *prefs = nil; // Update screen selection. [[StatusWindow sharedWindow] setScreen:[[NSScreen screens] objectAtIndex:[sender indexOfSelectedItem]]]; + [df setInteger:[sender indexOfSelectedItem] forKey:@"statusWindowScreenIndex"]; [(MainController *)controller showCurrentTrackInfo]; } else if ( [sender tag] == 2030) { @@ -575,6 +579,7 @@ static PreferencesController *prefs = nil; [df setFloat:4.0 forKey:@"statusWindowVanishDelay"]; [df setInteger:(int)ITWindowPositionBottom forKey:@"statusWindowVerticalPosition"]; [df setInteger:(int)ITWindowPositionLeft forKey:@"statusWindowHorizontalPosition"]; + [df setInteger:0 forKey:@"statusWindowScreenIndex"]; [[StatusWindow sharedWindow] setVerticalPosition:(int)ITWindowPositionBottom]; [[StatusWindow sharedWindow] setHorizontalPosition:(int)ITWindowPositionLeft]; [df setBool:YES forKey:@"showSongInfoOnChange"]; @@ -783,7 +788,6 @@ static PreferencesController *prefs = nil; NSData *colorData; int selectedBGStyle; id anItem; - NSArray *screens = [NSScreen screens]; [df setInteger:MT_CURRENT_VERSION forKey:@"appVersion"]; @@ -803,17 +807,8 @@ static PreferencesController *prefs = nil; } } - ITDebugLog(@"Setting up screen popup"); - if ([screens count] > 1) { - int i; - [screenPopup setEnabled:YES]; - for (i = 0; i < [screens count]; i++) { - NSScreen *screen = [screens objectAtIndex:i]; - if (![screen isEqual:[NSScreen mainScreen]]) { - [screenPopup addItemWithTitle:[NSString stringWithFormat:@"Screen %i", i + 1]]; - } - } - } + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setupScreenPopup) name:NSApplicationDidChangeScreenParametersNotification object:nil]; + [self setupScreenPopup]; ITDebugLog(@"Setting up track info checkboxes."); // Check current track info buttons @@ -938,6 +933,30 @@ static PreferencesController *prefs = nil; } } +- (void)setupScreenPopup +{ + ITDebugLog(@"Setting up screen popup"); + NSArray *screens = [NSScreen screens]; + if ([screens count] > 1) { + int i, index = [df integerForKey:@"statusWindowScreenIndex"]; + [screenPopup setEnabled:YES]; + for (i = 0; i < [screens count]; i++) { + NSScreen *screen = [screens objectAtIndex:i]; + if (![screen isEqual:[NSScreen mainScreen]]) { + [screenPopup addItemWithTitle:[NSString stringWithFormat:@"Screen %i", i + 1]]; + } + } + [screenPopup selectItemAtIndex:index]; + [[StatusWindow sharedWindow] setScreen:[[NSScreen screens] objectAtIndex:index]]; + } else { + while ([screenPopup numberOfItems] > 1) { + [screenPopup removeItemAtIndex:1]; + } + [screenPopup setEnabled:NO]; + [[StatusWindow sharedWindow] setScreen:[NSScreen mainScreen]]; + } +} + - (void)setStatusWindowEntryEffect:(Class)effectClass { StatusWindow *sw = [StatusWindow sharedWindow]; @@ -1235,6 +1254,7 @@ static PreferencesController *prefs = nil; - (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; [hotKeysArray release]; [hotKeysDictionary release]; [effectClasses release]; diff --git a/StatusWindowController.m b/StatusWindowController.m index b89d4e4..5533c5f 100755 --- a/StatusWindowController.m +++ b/StatusWindowController.m @@ -36,6 +36,8 @@ static StatusWindowController *sharedController; NSArray *classList = [ITWindowEffect effectClasses]; float entrySpeed; float exitSpeed; + NSArray *screens = [NSScreen screens]; + int screenIndex; NSData *colorData; @@ -50,7 +52,13 @@ static StatusWindowController *sharedController; exitClass = [df stringForKey:@"statusWindowVanishEffect"]; entrySpeed = [df floatForKey:@"statusWindowAppearanceSpeed"]; exitSpeed = [df floatForKey:@"statusWindowVanishSpeed"]; - + + screenIndex = [df integerForKey:@"statusWindowScreenIndex"]; + if (screenIndex >= [screens count]) { + screenIndex = 0; + } + [_window setScreen:[screens objectAtIndex:screenIndex]]; + [_window setExitMode:ITTransientStatusWindowExitAfterDelay]; [_window setExitDelay:(exitDelay ? exitDelay : 4.0)]; -- 2.20.1