This about does it. I want to do a couple more things, especially multiple screen...
authorMatthew Judy <mjudy@ithinksw.com>
Mon, 24 Nov 2003 18:54:59 +0000 (18:54 +0000)
committerMatthew Judy <mjudy@ithinksw.com>
Mon, 24 Nov 2003 18:54:59 +0000 (18:54 +0000)
English.lproj/Preferences.nib/info.nib
English.lproj/Preferences.nib/keyedobjects.nib
PreferencesController.m
StatusWindow.m
libValidate.a

index a98025e..33cecb8 100755 (executable)
@@ -3,7 +3,7 @@
 <plist version="1.0">
 <dict>
        <key>IBDocumentLocation</key>
-       <string>0 3 356 240 0 0 1056 770 </string>
+       <string>39 237 356 240 0 0 1056 770 </string>
        <key>IBEditorPositions</key>
        <dict>
                <key>634</key>
@@ -20,6 +20,7 @@
        <key>IBOpenObjects</key>
        <array>
                <integer>6</integer>
+               <integer>793</integer>
        </array>
        <key>IBSystem Version</key>
        <string>7C107</string>
index ec39348..ca7a082 100755 (executable)
Binary files a/English.lproj/Preferences.nib/keyedobjects.nib and b/English.lproj/Preferences.nib/keyedobjects.nib differ
index 3919848..6f18bc0 100755 (executable)
@@ -384,7 +384,7 @@ static PreferencesController *prefs = nil;
     
         BOOL entryEffectValid = YES;
         BOOL exitEffectValid  = YES;
-        
+                
         [df setInteger:[sender selectedRow] forKey:@"statusWindowVerticalPosition"];
         [df setInteger:[sender selectedColumn] forKey:@"statusWindowHorizontalPosition"];
         [sw setVerticalPosition:[sender selectedRow]];
@@ -416,8 +416,7 @@ static PreferencesController *prefs = nil;
             [vanishEffectPopup selectItemAtIndex:[[vanishEffectPopup menu] indexOfItemWithRepresentedObject:[[sw exitEffect] class]]];
         }
         
-        // Update the window's position.
-        // Yeah, do that.
+        [(MainController *)controller showCurrentTrackInfo];
         
     } else if ( [sender tag] == 2020) {
     
@@ -485,8 +484,8 @@ static PreferencesController *prefs = nil;
         }
 
     } else if ( [sender tag] == 2095) {
-        [sw vanish:self];
         [df setInteger:[sender indexOfSelectedItem] forKey:@"statusWindowSizing"];
+        [(MainController *)controller showCurrentTrackInfo];
     }
     
     [df synchronize];
index 3465be3..8377ac0 100755 (executable)
@@ -9,18 +9,18 @@
 #import "StatusWindow.h"
 
 
-#define SW_PAD            24.00
-#define SW_SPACE          24.00
-#define SW_MINW          211.00
-#define SW_BORDER         32.00
-#define SW_METER_PAD       4.00
-#define SW_BUTTON_PAD_R   30.00
-#define SW_BUTTON_PAD_B   24.00
-#define SW_BUTTON_DIV     12.00
-#define SW_BUTTON_EXTRA_W  8.00
-#define SW_SHADOW_SAT      1.25
-#define SMALL_DIVISOR      1.33333
-#define MINI_DIVISOR       1.66667
+#define SW_PAD             24.00
+#define SW_SPACE           24.00
+#define SW_MINW           211.00
+#define SW_BORDER          32.00
+#define SW_METER_PAD        4.00
+#define SW_BUTTON_PAD_R    30.00
+#define SW_BUTTON_PAD_B    24.00
+#define SW_BUTTON_DIV      12.00
+#define SW_BUTTON_EXTRA_W   8.00
+#define SW_SHADOW_SAT       1.25
+#define SMALL_DIVISOR       1.33333
+#define MINI_DIVISOR        1.66667
 
 @interface StatusWindow (Private)
 - (NSRect)setupWindowWithDataSize:(NSSize)dataSize;
     float        contentHeight = 0.0;
     float        windowWidth   = 0.0;
     float        windowHeight  = 0.0;
+    NSRect       visibleFrame  = [[self screen] visibleFrame];
+    NSPoint      screenOrigin  = visibleFrame.origin;
+    float        screenWidth   = visibleFrame.size.width;
+    float        screenHeight  = visibleFrame.size.height;
+    float        maxWidth      = ( screenWidth  - (SW_BORDER * 2) );
+    float        maxHeight     = ( screenHeight - (SW_BORDER * 2) );
+    float        excessWidth   = 0.0;
+    float        excessHeight  = 0.0;
+    NSPoint      windowOrigin;
     ITImageView *imageView;
 
     if ( _sizing == StatusWindowSmall ) {
         divisor = MINI_DIVISOR;
     }
 
-    //  Get image width and height.
+//  Get image width and height.
     imageWidth  = ( [_image size].width  / divisor );
     imageHeight = ( [_image size].height / divisor );
     
     windowWidth  = ( (SW_PAD / divisor) + imageWidth + (SW_SPACE / divisor) + dataWidth + (SW_PAD / divisor) );
     windowHeight = ( (SW_PAD / divisor) + contentHeight + (SW_PAD / divisor) );
     
-#warning Adjust frame for positioning here.
+//  Constrain size to max limits.  Adjust data sizes accordingly.
+    excessWidth  = (windowWidth  - maxWidth );
+    excessHeight = (windowHeight - maxHeight);
+
+    if ( excessWidth > 0.0 ) {
+        windowWidth = maxWidth;
+        dataWidth -= excessWidth;
+    }
+    
+    if ( excessHeight > 0.0 ) {
+        windowHeight = maxHeight;
+        dataHeight -= excessHeight;
+    }
     
-    [self setFrame:NSMakeRect( (SW_BORDER + [[self screen] visibleFrame].origin.x),
-                               (SW_BORDER + [[self screen] visibleFrame].origin.y),
+    if ( [self horizontalPosition] == ITWindowPositionLeft ) {
+        windowOrigin.x = ( SW_BORDER + screenOrigin.x );
+    } else if ( [self horizontalPosition] == ITWindowPositionCenter ) {
+        windowOrigin.x = ( screenOrigin.x + (screenWidth / 2) - (windowWidth / 2) );
+    } else if ( [self horizontalPosition] == ITWindowPositionRight ) {
+        windowOrigin.x = ( screenOrigin.x + screenWidth - (windowWidth + SW_BORDER) );
+    }
+    
+    if ( [self verticalPosition] == ITWindowPositionTop ) {
+        windowOrigin.y = ( screenOrigin.y + screenHeight - (windowHeight + SW_BORDER) );
+    } else if ( [self verticalPosition] == ITWindowPositionMiddle ) {
+//      Middle-oriented windows should be slightly proud of the screen's middle.
+        windowOrigin.y = ( (screenOrigin.y + (screenHeight / 2) - (windowHeight / 2)) + (screenHeight / 8) );
+    } else if ( [self verticalPosition] == ITWindowPositionBottom ) {
+        windowOrigin.y = ( SW_BORDER + screenOrigin.y );
+    }
+    
+    [self setFrame:NSMakeRect( windowOrigin.x,
+                               windowOrigin.y,
                                windowWidth,
                                windowHeight) display:YES animate:YES];
-    [[[self contentView] subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
 
+    [[[self contentView] subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
+    
 //  Setup, position, fill, and add the image view to the content view.
     imageRect = NSMakeRect( (SW_PAD / divisor),
                             ((SW_PAD / divisor) + ((contentHeight - imageHeight) / 2)),
                             imageWidth,
                             imageHeight );
     imageView = [[[NSImageView alloc] initWithFrame:imageRect] autorelease];
+    [imageView setAutoresizingMask:(NSViewMinYMargin | NSViewMaxYMargin)];
     [imageView setImage:_image];
     [[self contentView] addSubview:imageView];
 
         
 //      Create, position, setup, fill, and add the text view to the content view.
         textField = [[[ITTextField alloc] initWithFrame:dataRect] autorelease];
+        [textField setAutoresizingMask:(NSViewHeightSizable | NSViewWidthSizable)];
         [textField setEditable:NO];
         [textField setSelectable:NO];
         [textField setBordered:NO];
         [textField setFont:font];
         [textField setTextColor:[NSColor whiteColor]];
         [textField setCastsShadow:YES];
+        [[textField cell] setWraps:NO];
         [textField setStringValue:text];
         [textField setShadowSaturation:SW_SHADOW_SAT];
         [[self contentView] addSubview:textField];
         
         [volMatrix setCellSize:NSMakeSize(cellWidth, cellHeight)];
         [volMatrix setIntercellSpacing:NSMakeSize(0, 0)];
+        [volMatrix setAutoresizingMask:(NSViewHeightSizable | NSViewWidthSizable)];
 
         cellEnum = [[volMatrix cells] objectEnumerator];
 
     }
 }
 
+- (NSTimeInterval)animationResizeTime:(NSRect)newFrame
+{
+    return (NSTimeInterval)0.25;
+}
 
 @end
index 49fb834..600c085 100755 (executable)
Binary files a/libValidate.a and b/libValidate.a differ