From 3f1e25babb21cfaa27a1e424d98e993e77fb3051 Mon Sep 17 00:00:00 2001 From: Matthieu Lalonde Date: Sat, 4 Jun 2011 17:42:50 -0400 Subject: [PATCH] FIXED - Protocol setting is now fully functional MODIF - Init/deinit procedure, automatic preferences shown when no defaults exists --- DDWRT_MonitorAppDelegate.h | 4 ++ DDWRT_MonitorAppDelegate.m | 119 ++++++++++++++++++++----------------- English.lproj/MainMenu.xib | 31 +++++++++- 3 files changed, 98 insertions(+), 56 deletions(-) diff --git a/DDWRT_MonitorAppDelegate.h b/DDWRT_MonitorAppDelegate.h index 944b70b..b679d24 100644 --- a/DDWRT_MonitorAppDelegate.h +++ b/DDWRT_MonitorAppDelegate.h @@ -86,6 +86,9 @@ BOOL _wrtReachable; } +- (void) initialize; +- (void) deinitialize; + - (void) initDefaults; - (void) readDefaults; - (void) writeDefaults; @@ -121,6 +124,7 @@ - (void) throughputCallback:(NSData *)data; - (void) doUpdateStatus:(NSData *)data; +- (NSMenu*) createCopyMenuItem; - (IBAction) copyParentMenuTitle:(id)sender; - (NSString *) stringFromSize:(uint64_t)theBytes; - (NSString *) stringFromSpeed:(uint64_t)theBytes; diff --git a/DDWRT_MonitorAppDelegate.m b/DDWRT_MonitorAppDelegate.m index ba9d9f1..af399f1 100644 --- a/DDWRT_MonitorAppDelegate.m +++ b/DDWRT_MonitorAppDelegate.m @@ -27,11 +27,17 @@ if (![defaults boolForKey:@"configured"]) { [self initDefaults]; + [self showConfigPanel:nil]; + } else { + [self initialize]; } - +} + +- (void) initialize +{ NSLog(@"Reading defaults..."); [self readDefaults]; - + // initialize the client wrt_client = [[WRTStatusClient alloc] initWithHostname:hostname port:port protocol:protocol username:username password:password]; @@ -42,8 +48,20 @@ [_readTimer fire]; } +- (void) deinitialize +{ + [_readTimer invalidate]; + _readTimer = nil; + + [wrt_client release]; + wrt_client = nil; +} + - (void) dealloc { - //[_readTimer invalidate]; + if (_readTimer != nil) { + [_readTimer invalidate]; + } + [AppMenu release]; [_appMenu release]; [ConfigPanel release]; @@ -70,7 +88,6 @@ [defaults setBool:YES forKey:@"configured"]; // sync the defaults to disk - //[defaults registerDefaults:appDefaults]; [defaults synchronize]; // TODO: Add modal alert "First launch" here... @@ -104,7 +121,6 @@ [defaults setInteger:refreshTime forKey:@"refreshTime"]; // sync the defaults to disk - //[defaults registerDefaults:appDefaults]; [defaults synchronize]; } @@ -192,6 +208,15 @@ [configLabelRefresh setStringValue:[NSString stringWithFormat:@"%d s", ([defaults integerForKey:@"refreshTime"] + 1)]]; + if ([protocol isEqualToString:@"http"] == true) { + [configFieldProtocolHTTP setState:1]; + [configFieldProtocolHTTPS setState:0]; + } else if ([protocol isEqualToString:@"https"] == true) { + [configFieldProtocolHTTP setState:0]; + [configFieldProtocolHTTPS setState:1]; + } + + [ConfigPanel makeKeyAndOrderFront:nil]; } @@ -236,18 +261,15 @@ - (void) setConfigHostname:(id)sender { - NSLog(@"%@", [sender title]); + } - (IBAction) setConfigProtocol:(id)sender { - NSLog(@"%@", [sender title]); - if ([sender state] == NSOnState) { - NSLog(@"Yes"); - //NSLog(@"%s", [sender title]); - } else { - NSLog(@"No"); - //NSLog(@"%s", [sender title]); + if ([configFieldProtocolHTTP state] == 1 && [[configFieldPort stringValue] isEqualToString:@"443"] == true) { + [configFieldPort setStringValue:@"80"]; + } else if ([configFieldProtocolHTTPS state] == 1 && [[configFieldPort stringValue] isEqualToString:@"80"] == true) { + [configFieldPort setStringValue:@"443"]; } } @@ -278,6 +300,8 @@ - (void) saveConfig:(id)sender { + [self deinitialize]; + [configStateStatus startAnimation:nil]; [configStateStatus setHidden:false]; @@ -292,18 +316,17 @@ [defaults setInteger:port forKey:@"port"]; //NSLog(@"%d", [configFieldProtocol state]); - //NSLog(@"%d", [configFieldProtocolHTTP state]); - //NSLog(@"%d", [configFieldProtocolHTTPS state]); + if ([configFieldProtocolHTTP state] == 1) { + protocol = @"http"; + } else if ([configFieldProtocolHTTPS state] == 1) { + protocol = @"https"; + } + + [defaults setValue:protocol forKey:@"protocol"]; refreshTime = [configFieldRefresh integerValue]; [defaults setInteger:refreshTime forKey:@"refreshTime"]; - [_readTimer invalidate]; - _readTimer = nil; - _readTimer = [NSTimer scheduledTimerWithTimeInterval:refreshTime+1 target:self selector:@selector(updateThroughput:) userInfo:nil repeats:YES]; - - [_readTimer fire]; - useBytes = ([configFieldUseBytes state] == 1 ? true: false); [defaults setBool:useBytes forKey:@"useBytes"]; @@ -321,6 +344,8 @@ [defaults synchronize]; + [self initialize]; + [self hideConfigPanel:nil]; } @@ -566,17 +591,15 @@ NSArray *clientsData = [clientsStringData componentsSeparatedByString:@","]; NSMenu *clientMenu; - NSMenu *copyMenu; - NSMenuItem *copyMenuItem; NSMenuItem *clientMenuItem; NSMenuItem *clientItem; - uint32_t clientsCount = [clientsData count] / 4; + uint16_t clientsCount = [clientsData count] / 4; [menuClientsCount setTitle:[NSString stringWithFormat:@"%lu Active Client%@", clientsCount, (clientsCount > 1 ? @"s" : @"")]]; // Clear the old client data - uint32_t clientIndex; - uint32_t firstItem = [menuClients indexOfItem:menuClientsSeparator]; + uint16_t clientIndex; + uint16_t firstItem = [menuClients indexOfItem:menuClientsSeparator]; if ([menuClients numberOfItems] > firstItem) { for (clientIndex = ([menuClients numberOfItems] - 1); clientIndex > (firstItem + 1); clientIndex--) { [menuClients removeItemAtIndex:clientIndex]; @@ -584,49 +607,26 @@ } for (clientIndex = 0; clientIndex < [clientsData count]; clientIndex+=4) { - /*NSLog(@"Client: %@ IP: %@ MAC: %@ Connections: %@", - [clientsData objectAtIndex:clientIndex], - [clientsData objectAtIndex:clientIndex+1], - [clientsData objectAtIndex:clientIndex+2], - [clientsData objectAtIndex:clientIndex+3]); - */ + // Allocate a new menu for the client data clientMenu = [[NSMenu alloc] init]; // Hostname - copyMenu = [[NSMenu alloc] init]; - copyMenuItem = [[NSMenuItem alloc] initWithTitle:@"Copy" action:@selector(copyParentMenuTitle:) keyEquivalent:@""]; - [copyMenuItem setEnabled:true]; - [copyMenuItem setTarget:self]; - [copyMenu addItem:copyMenuItem]; - clientMenuItem = [[NSMenuItem alloc] initWithTitle:[clientsData objectAtIndex:clientIndex] action:nil keyEquivalent:@""]; - [clientMenuItem setSubmenu:copyMenu]; + [clientMenuItem setSubmenu:[self createCopyMenuItem]]; [clientMenu addItem:clientMenuItem]; // IP - copyMenu = [[NSMenu alloc] init]; - copyMenuItem = [[NSMenuItem alloc] initWithTitle:@"Copy" action:@selector(copyParentMenuTitle:) keyEquivalent:@""]; - [copyMenuItem setEnabled:true]; - [copyMenuItem setTarget:self]; - [copyMenu addItem:copyMenuItem]; - clientMenuItem = [[NSMenuItem alloc] initWithTitle:[clientsData objectAtIndex:(clientIndex+1)] action:nil keyEquivalent:@""]; - [clientMenuItem setSubmenu:copyMenu]; + [clientMenuItem setSubmenu:[self createCopyMenuItem]]; [clientMenu addItem:clientMenuItem]; // MAC - copyMenu = [[NSMenu alloc] init]; - copyMenuItem = [[NSMenuItem alloc] initWithTitle:@"Copy" action:@selector(copyParentMenuTitle:) keyEquivalent:@""]; - [copyMenuItem setEnabled:true]; - [copyMenuItem setTarget:self]; - [copyMenu addItem:copyMenuItem]; - clientMenuItem = [[NSMenuItem alloc] initWithTitle:[clientsData objectAtIndex:(clientIndex+2)] action:nil keyEquivalent:@""]; - [clientMenuItem setSubmenu:copyMenu]; + [clientMenuItem setSubmenu:[self createCopyMenuItem]]; [clientMenu addItem:clientMenuItem]; // Connections - uint32_t conn = strtoull([[clientsData objectAtIndex:(clientIndex+3)] UTF8String], NULL, 0); + uint16_t conn = strtoull([[clientsData objectAtIndex:(clientIndex+3)] UTF8String], NULL, 0); clientMenuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@"%lu Connection%@", conn, (conn > 1 ? @"s" : @"")] action:nil keyEquivalent:@""]; [clientMenu addItem:clientMenuItem]; @@ -642,6 +642,17 @@ [_readTimer fire]; } +- (NSMenu*) createCopyMenuItem +{ + NSMenu *copyMenu = [[NSMenu alloc] init]; + NSMenuItem *copyMenuItem = [[NSMenuItem alloc] initWithTitle:@"Copy" action:@selector(copyParentMenuTitle:) keyEquivalent:@""]; + [copyMenuItem setEnabled:true]; + [copyMenuItem setTarget:self]; + [copyMenu addItem:copyMenuItem]; + + return [copyMenu retain]; +} + - (IBAction) copyParentMenuTitle:(id)sender { NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard]; diff --git a/English.lproj/MainMenu.xib b/English.lproj/MainMenu.xib index aa3d9ac..a1b699f 100644 --- a/English.lproj/MainMenu.xib +++ b/English.lproj/MainMenu.xib @@ -539,7 +539,7 @@ NSPanel - + 256 YES @@ -558,6 +558,7 @@ 268 {{129, 55}, {125, 17}} + YES @@ -585,6 +586,7 @@ 268 {{15, 56}, {62, 14}} + YES @@ -618,6 +620,7 @@ 268 {{79, 56}, {45, 14}} + 1 YES @@ -637,6 +640,7 @@ 268 {{82, 125}, {171, 16}} + YES @@ -673,6 +677,7 @@ 268 {{15, 125}, {62, 14}} + YES @@ -690,6 +695,7 @@ 268 {{15, 105}, {62, 14}} + YES @@ -707,6 +713,7 @@ 268 {{82, 103}, {126, 18}} + YES 1 @@ -820,6 +827,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{82, 82}, {39, 16}} + YES @@ -839,6 +847,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{15, 82}, {62, 14}} + YES @@ -856,6 +865,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{15, 32}, {74, 18}} + YES @@ -884,6 +894,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{15, 12}, {76, 18}} + YES @@ -905,11 +916,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{1, 1}, {272, 152}} + {{17, 41}, {274, 168}} + {0, 0} @@ -934,6 +947,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{156, 195}, {135, 17}} + YES @@ -954,6 +968,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 289 {{213, 20}, {75, 17}} + YES -2080244224 @@ -974,6 +989,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{130, 20}, {75, 17}} + YES @@ -996,6 +1012,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{20, 20}, {16, 16}} + 2 20746 @@ -1003,6 +1020,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{7, 11}, {308, 232}} + + {{0, 0}, {2048, 1130}} @@ -1579,6 +1598,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 823 + + + setConfigProtocol: + + + + 826 + @@ -2631,7 +2658,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 824 + 826