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