diff options
author | Remko Tronçon <git@el-tramo.be> | 2009-07-21 11:24:26 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2009-07-21 11:30:57 (GMT) |
commit | 052f685338462a8c0c6d9785864e7549290d7037 (patch) | |
tree | f076b9981c62dc6913badf675c22caf6cbfcd874 /Slimber/Cocoa/Menulet.m | |
parent | 06a69020da6ffb527bb2a31f1da2158df2a4d3de (diff) | |
download | swift-contrib-052f685338462a8c0c6d9785864e7549290d7037.zip swift-contrib-052f685338462a8c0c6d9785864e7549290d7037.tar.bz2 |
Show list of connected users.
Diffstat (limited to 'Slimber/Cocoa/Menulet.m')
-rw-r--r-- | Slimber/Cocoa/Menulet.m | 49 |
1 files changed, 33 insertions, 16 deletions
diff --git a/Slimber/Cocoa/Menulet.m b/Slimber/Cocoa/Menulet.m index f72078e..9eda07c 100644 --- a/Slimber/Cocoa/Menulet.m +++ b/Slimber/Cocoa/Menulet.m @@ -12,7 +12,7 @@ [statusItem setToolTip: @"Slimber"]; [statusItem setMenu: statusMenu]; - [self setUsersOnline: NO]; + userNames = [[NSArray alloc] init]; selfOnline = NO; [self updateMenu]; @@ -26,13 +26,36 @@ [super dealloc]; } +- (void) updateIcon: (BOOL) online { + NSBundle* bundle = [NSBundle bundleForClass: [self class]]; + NSString* path; + if (online) { + path = [bundle pathForResource: @"Online" ofType:@"png"]; + } + else { + path = [bundle pathForResource: @"Offline" ofType:@"png"]; + } + menuIcon = [[NSImage alloc] initWithContentsOfFile: path]; + [statusItem setImage: menuIcon]; +} + - (void) updateMenu { while ([statusMenu numberOfItems] > 0) { [statusMenu removeItemAtIndex: 0]; } - NSMenuItem* statusMenuItem = [[NSMenuItem alloc] initWithTitle: @"Online Users" action: NULL keyEquivalent: @""]; - [statusMenu addItem: statusMenuItem]; + if ([userNames count] > 0) { + [statusMenu addItem: [[NSMenuItem alloc] initWithTitle: @"Online users:" action: NULL keyEquivalent: @""]]; + int i; + for (i = 0; i < [userNames count]; ++i) { + NSMenuItem* userItem = [[NSMenuItem alloc] initWithTitle: [@" " stringByAppendingString: [userNames objectAtIndex: i]] action: NULL keyEquivalent: @""]; + [statusMenu addItem: userItem]; + } + } + else { + [statusMenu addItem: [[NSMenuItem alloc] initWithTitle: @"No online users" action: NULL keyEquivalent: @""]]; + } + [self updateIcon: [userNames count] > 0]; [statusMenu addItem: [NSMenuItem separatorItem]]; NSMenuItem* loggedInItem; @@ -50,22 +73,16 @@ [statusMenu addItem: exitMenuItem]; } -- (void) setUsersOnline: (BOOL) online { - NSBundle* bundle = [NSBundle bundleForClass: [self class]]; - NSString* path; - if (online) { - path = [bundle pathForResource: @"Online" ofType:@"png"]; - } - else { - path = [bundle pathForResource: @"Offline" ofType:@"png"]; - } - menuIcon = [[NSImage alloc] initWithContentsOfFile: path]; - [statusItem setImage: menuIcon]; -} - - (void) setSelfConnected: (BOOL) online { selfOnline = online; [self updateMenu]; } +- (void) setUserNames: (NSArray*) names { + [names retain]; + [userNames release]; + userNames = names; + [self updateMenu]; +} + @end |