--- /dev/null
+#import "StatusWindowController.h"
+#import "StatusWindow.h"
+
+@implementation StatusWindowController
+
+- (id)init
+{
+ if ( (self = [super init]) ) {
+ [NSBundle loadNibNamed:@"StatusWindow" owner:self];
+ [statusWindow center];
+ }
+ return self;
+}
+
+- (void)setUpcomingSongs:(NSString *)string
+{
+ int size = 0, i;
+ NSArray *lines = [string componentsSeparatedByString:@"\n"];
+
+ for (i = 0; i < [lines count]; i++) {
+ int temp = [[lines objectAtIndex:i] sizeWithAttributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"Lucida Grande" size:12] forKey:NSFontAttributeName]].width;
+
+ if (temp > size) {
+ size = temp;
+ }
+ }
+
+ if (size < 255) {
+ size = 255;
+ }
+
+ [statusField setStringValue:string];
+ [statusWindow setFrame:NSMakeRect(0, 0, size + 45, 40 + ([lines count] * 15)) display:YES];
+ [statusWindow center];
+ [statusWindow makeKeyAndOrderFront:nil];
+}
+
+- (void)setTrackInfo:(NSString *)string
+{
+ int size = 0, i;
+ NSArray *lines = [string componentsSeparatedByString:@"\n"];
+
+ for (i = 0; i < [lines count]; i++) {
+ int temp = [[lines objectAtIndex:i] sizeWithAttributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"Lucida Grande" size:12] forKey:NSFontAttributeName]].width;
+
+ if (temp > size) {
+ size = temp;
+ }
+ }
+
+ if (size < 285) {
+ size = 285;
+ }
+
+ [statusField setStringValue:string];
+ [statusWindow setFrame:NSMakeRect(0, 0, size + 45, 40 + ([lines count] * 16)) display:NO];
+ [statusWindow center];
+ [statusWindow makeKeyAndOrderFront:nil];
+}
+
+- (void)fadeWindowOut
+{
+ [NSThread detachNewThreadSelector:@selector(fadeOutAux) toTarget:self withObject:nil];
+}
+
+- (void)fadeOutAux
+{
+ NSAutoreleasePool *p00l = [[NSAutoreleasePool alloc] init];
+ float i;
+ for (i = 0.6; i > 0; i -= .004) {
+ [statusWindow setAlphaValue:i];
+ }
+ [statusWindow close];
+ [p00l release];
+}
+
+@end