ShowNetworksViewController.m 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. //
  2. // ShowNetworksViewController.m
  3. // ZeroTier One
  4. //
  5. // Created by Grant Limberg on 8/7/16.
  6. // Copyright © 2016 ZeroTier, Inc. All rights reserved.
  7. //
  8. #import "ShowNetworksViewController.h"
  9. #import "NetworkMonitor.h"
  10. #import "NetworkInfoCell.h"
  11. #import "Network.h"
  12. @interface ShowNetworksViewController ()
  13. @end
  14. @implementation ShowNetworksViewController
  15. - (void)viewDidLoad {
  16. [super viewDidLoad];
  17. [self.tableView setDelegate:self];
  18. [self.tableView setDataSource:self];
  19. [self.tableView setBackgroundColor:[NSColor clearColor]];
  20. }
  21. - (void)viewWillAppear {
  22. [super viewWillAppear];
  23. self.visible = YES;
  24. }
  25. - (void)viewWillDisappear {
  26. [super viewWillDisappear];
  27. self.visible = NO;
  28. }
  29. - (void)deleteNetworkFromList:(NSString *)nwid {
  30. [self.netMonitor deleteSavedNetwork:nwid];
  31. }
  32. - (void)setNetworks:(NSArray<Network *> *)list {
  33. _networkList = list;
  34. if(_visible) {
  35. [_tableView reloadData];
  36. }
  37. }
  38. - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
  39. return [_networkList count];
  40. }
  41. - (NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
  42. {
  43. NetworkInfoCell *cell = (NetworkInfoCell*)[tableView makeViewWithIdentifier:@"NetworkInfoCell"
  44. owner:nil];
  45. Network *network = [_networkList objectAtIndex:row];
  46. cell.parent = self;
  47. cell.networkIdField.stringValue = [NSString stringWithFormat:@"%10llx", network.nwid];
  48. cell.networkNameField.stringValue = network.name;
  49. cell.statusField.stringValue = [network statusString];
  50. cell.typeField.stringValue = [network typeString];
  51. cell.mtuField.stringValue = [NSString stringWithFormat:@"%d", network.mtu];
  52. cell.macField.stringValue = network.mac;
  53. cell.broadcastField.stringValue = network.broadcastEnabled ? @"ENABLED" : @"DISABLED";
  54. cell.bridgingField.stringValue = network.bridge ? @"ENABLED" : @"DISABLED";
  55. cell.deviceField.stringValue = network.portDeviceName;
  56. if(network.connected) {
  57. cell.connectedCheckbox.state = NSOnState;
  58. if(network.allowDefault) {
  59. cell.allowDefault.enabled = YES;
  60. cell.allowDefault.state = NSOnState;
  61. }
  62. else {
  63. cell.allowDefault.state = NSOffState;
  64. if([Network defaultRouteExists:_networkList]) {
  65. cell.allowDefault.enabled = NO;
  66. }
  67. else {
  68. cell.allowDefault.enabled = YES;
  69. }
  70. }
  71. cell.allowGlobal.enabled = YES;
  72. cell.allowManaged.enabled = YES;
  73. }
  74. else {
  75. cell.allowDefault.enabled = NO;
  76. cell.allowGlobal.enabled = NO;
  77. cell.allowManaged.enabled = NO;
  78. }
  79. cell.allowGlobal.state = network.allowGlobal ? NSOnState : NSOffState;
  80. cell.allowManaged.state = network.allowManaged ? NSOnState : NSOffState;
  81. cell.addressesField.stringValue = @"";
  82. for(NSString *addr in network.assignedAddresses) {
  83. cell.addressesField.stringValue = [[cell.addressesField.stringValue stringByAppendingString:addr] stringByAppendingString:@"\n"];
  84. }
  85. return cell;
  86. }
  87. @end