diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a67c6806496b5b58c2c008bc970f91f4612b724..788d2e4fc2bd7105bff43574076c6166eec7f011 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,8 @@ SET(ringclient_CONTROLLERS src/AccAdvancedVC.h src/AccSecurityVC.mm src/AccSecurityVC.h + src/CertificateWC.mm + src/CertificateWC.h src/AudioPrefsVC.mm src/AudioPrefsVC.h src/AccountsVC.mm @@ -103,7 +105,8 @@ SET(ringclient_XIBS AudioPrefs VideoPrefs PreferencesScreen - RingWizard) + RingWizard + CertificateWindow) # Icons # This part tells CMake where to find and install the file itself diff --git a/src/AccAdvancedVC.mm b/src/AccAdvancedVC.mm index d4bfeca790c10ce8f00f2c1465c7c4bc1f4791f4..1f42a78cbcbb2331968d75b62103e709a76562eb 100644 --- a/src/AccAdvancedVC.mm +++ b/src/AccAdvancedVC.mm @@ -137,22 +137,6 @@ #pragma mark - NSTextFieldDelegate methods -- (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor -{ - NSLog(@"textShouldBeginEditing"); - return YES; -} - -- (void)control:(NSControl *)control didFailToValidatePartialString:(NSString *)string errorDescription:(NSString *)error -{ - NSLog(@"didFailToValidatePartialString"); -} - --(void)controlTextDidBeginEditing:(NSNotification *)obj -{ - -} - -(void)controlTextDidChange:(NSNotification *)notif { NSTextField *textField = [notif object]; diff --git a/src/AccGeneralVC.mm b/src/AccGeneralVC.mm index cfb92ead7bb3b32c3df1cea02e7da4210a9b95e5..a75ad535fc1fe11b4ee02110d9978fac5f52c2d8 100644 --- a/src/AccGeneralVC.mm +++ b/src/AccGeneralVC.mm @@ -54,6 +54,8 @@ @property (assign) IBOutlet NSTextField *serverHostTextField; @property (assign) IBOutlet NSTextField *usernameTextField; @property (assign) IBOutlet NSSecureTextField *passwordTextField; +@property (assign) IBOutlet NSTextField *clearTextField; +@property (assign) IBOutlet NSButton *tryRegisterButton; @property (assign) IBOutlet NSButton *upnpButton; @property (assign) IBOutlet NSButton *autoAnswerButton; @@ -72,6 +74,7 @@ @synthesize serverHostTextField; @synthesize usernameTextField; @synthesize passwordTextField; +@synthesize clearTextField; @synthesize upnpButton; @synthesize autoAnswerButton; @synthesize userAgentButton; @@ -124,6 +127,7 @@ [self.serverHostTextField setStringValue:account->hostname().toNSString()]; [self.usernameTextField setStringValue:account->username().toNSString()]; [self.passwordTextField setStringValue:account->password().toNSString()]; + [self.clearTextField setStringValue:account->password().toNSString()]; } switch (account->protocol()) { @@ -148,6 +152,36 @@ [self.userAgentTextField setStringValue:account->userAgent().toNSString()]; } +- (IBAction)tryRegistration:(id)sender { + self.privateAccount << Account::EditAction::SAVE; +} + +- (IBAction)showPassword:(NSButton *)sender { + if (sender.state == NSOnState) { + clearTextField = [[NSTextField alloc] initWithFrame:passwordTextField.frame]; + [clearTextField setTag:passwordTextField.tag]; + [clearTextField setDelegate:self]; + [clearTextField setBounds:passwordTextField.bounds]; + [clearTextField setStringValue:passwordTextField.stringValue]; + [clearTextField becomeFirstResponder]; + [boxingParameters addSubview:clearTextField]; + [passwordTextField setHidden:YES]; + } else { + [passwordTextField setStringValue:clearTextField.stringValue]; + [passwordTextField setHidden:NO]; + [clearTextField removeFromSuperview]; + clearTextField = nil; + } +} + +/** + * Debug purpose + */ +-(void) dumpFrame:(CGRect) frame WithName:(NSString*) name +{ + NSLog(@"frame %@ : %f %f %f %f \n\n",name ,frame.origin.x, frame.origin.y, frame.size.width, frame.size.height); +} + #pragma mark - NSTextFieldDelegate methods - (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor diff --git a/src/AccSecurityVC.h b/src/AccSecurityVC.h index 952a8de945be990f69ed79bbc139158c21404d72..f967c1f42ffd23188c1a69416c78034465ca107e 100644 --- a/src/AccSecurityVC.h +++ b/src/AccSecurityVC.h @@ -34,7 +34,7 @@ #import <account.h> -@interface AccSecurityVC : NSViewController<NSPathControlDelegate, NSOpenSavePanelDelegate> { +@interface AccSecurityVC : NSViewController<NSMenuDelegate, NSPathControlDelegate, NSOpenSavePanelDelegate> { } diff --git a/src/AccSecurityVC.mm b/src/AccSecurityVC.mm index 6302cbead0dd1bb647b95a47b12f20b13f8521de..22320b1ae3763692a96448b529ff116e3196159d 100644 --- a/src/AccSecurityVC.mm +++ b/src/AccSecurityVC.mm @@ -29,26 +29,305 @@ */ #import "AccSecurityVC.h" +#import <QUrl> +#import <certificate.h> +#import <tlsmethodmodel.h> +#import <qitemselectionmodel.h> +#import <ciphermodel.h> + +#import "QNSTreeController.h" +#import "CertificateWC.h" + +// Tags for views +#define PVK_PASSWORD_TAG 0 +#define OUTGOING_TLS_SRV_NAME 1 +#define TLS_NEGOTIATION_TAG 2 + +#define COLUMNID_NAME @"CipherNameColumn" +#define COLUMNID_STATE @"CipherStateColumn" + @interface AccSecurityVC () @property Account* privateAccount; +@property NSTreeController *treeController; +@property (unsafe_unretained) IBOutlet NSOutlineView *cipherListView; +@property (unsafe_unretained) IBOutlet NSButton *useTLS; +@property (unsafe_unretained) IBOutlet NSView *tlsContainer; +@property (unsafe_unretained) IBOutlet NSSecureTextField *pvkPasswordField; +@property (unsafe_unretained) IBOutlet NSTextField *outgoingTlsServerName; +@property (unsafe_unretained) IBOutlet NSTextField *tlsNegotiationTimeout; +@property (unsafe_unretained) IBOutlet NSStepper *tlsNegotiationTimeoutStepper; +@property CertificateWC* certificateWC; + +@property (unsafe_unretained) IBOutlet NSPathControl *caListPathControl; +@property (unsafe_unretained) IBOutlet NSPathControl *certificatePathControl; +@property (unsafe_unretained) IBOutlet NSPathControl *pvkPathControl; +@property (unsafe_unretained) IBOutlet NSPopUpButton *tlsMethodList; +@property (unsafe_unretained) IBOutlet NSButton *srtpRTPFallback; +@property (unsafe_unretained) IBOutlet NSButton *useSRTP; + +@property (unsafe_unretained) IBOutlet NSButton *verifyCertAsClientButton; +@property (unsafe_unretained) IBOutlet NSButton *verifyCertAsServerButton; +@property (unsafe_unretained) IBOutlet NSButton *requireCertButton; @end @implementation AccSecurityVC @synthesize privateAccount; +@synthesize treeController; +@synthesize cipherListView; +@synthesize certificateWC; +@synthesize tlsContainer; +@synthesize useTLS; +@synthesize useSRTP; +@synthesize srtpRTPFallback; +@synthesize pvkPasswordField; +@synthesize tlsNegotiationTimeout; +@synthesize tlsNegotiationTimeoutStepper; +@synthesize outgoingTlsServerName; +@synthesize caListPathControl; +@synthesize certificatePathControl; +@synthesize pvkPathControl; +@synthesize verifyCertAsClientButton; +@synthesize verifyCertAsServerButton; +@synthesize requireCertButton; - (void)awakeFromNib { NSLog(@"INIT Security VC"); + [pvkPasswordField setTag:PVK_PASSWORD_TAG]; + [outgoingTlsServerName setTag:OUTGOING_TLS_SRV_NAME]; + [tlsNegotiationTimeoutStepper setTag:TLS_NEGOTIATION_TAG]; + [tlsNegotiationTimeout setTag:TLS_NEGOTIATION_TAG]; + } - (void)loadAccount:(Account *)account { privateAccount = account; + + [self updateControlsWithTag:PVK_PASSWORD_TAG]; + [self updateControlsWithTag:OUTGOING_TLS_SRV_NAME]; + [self updateControlsWithTag:TLS_NEGOTIATION_TAG]; + + QModelIndex qTlsMethodIdx = privateAccount->tlsMethodModel()->selectionModel()->currentIndex(); + [self.tlsMethodList removeAllItems]; + [self.tlsMethodList addItemWithTitle:qTlsMethodIdx.data(Qt::DisplayRole).toString().toNSString()]; + + treeController = [[QNSTreeController alloc] initWithQModel:privateAccount->cipherModel()]; + [treeController setAvoidsEmptySelection:NO]; + [treeController setAlwaysUsesMultipleValuesMarker:YES]; + [treeController setChildrenKeyPath:@"children"]; + + [cipherListView bind:@"content" toObject:treeController withKeyPath:@"arrangedObjects" options:nil]; + [cipherListView bind:@"sortDescriptors" toObject:treeController withKeyPath:@"sortDescriptors" options:nil]; + [cipherListView bind:@"selectionIndexPaths" toObject:treeController withKeyPath:@"selectionIndexPaths" options:nil]; + + [useTLS setState:privateAccount->isTlsEnabled()]; + [tlsContainer setHidden:!privateAccount->isTlsEnabled()]; + + [useSRTP setState:privateAccount->isSrtpEnabled()]; + [srtpRTPFallback setState:privateAccount->isSrtpRtpFallback()]; + [srtpRTPFallback setEnabled:useSRTP.state]; + + NSArray * pathComponentArray = [self pathComponentArray]; + + if(privateAccount->tlsCaListCertificate() != nil) { + NSLog(@"CA ==> %@", privateAccount->tlsCaListCertificate()->path().toNSURL()); + [caListPathControl setURL:privateAccount->tlsCaListCertificate()->path().toNSURL()]; + } else { + [caListPathControl setURL:nil]; + } + + if(privateAccount->tlsCertificate() != nil) { + NSLog(@" CERT ==> %@", privateAccount->tlsCertificate()->path().toNSURL()); + [certificatePathControl setURL:privateAccount->tlsCertificate()->path().toNSURL()]; + } else { + [certificatePathControl setURL:nil]; + } + + if(privateAccount->tlsPrivateKeyCertificate() != nil) { + NSLog(@" PVK ==> %@", privateAccount->tlsPrivateKeyCertificate()->path().toNSURL()); + [pvkPathControl setURL:privateAccount->tlsPrivateKeyCertificate()->path().toNSURL()]; + } else { + [pvkPathControl setURL:nil]; + } + + [verifyCertAsServerButton setState:privateAccount->isTlsVerifyServer()]; + [verifyCertAsClientButton setState:privateAccount->isTlsVerifyClient()]; + [requireCertButton setState:privateAccount->isTlsRequireClientCertificate()]; +} + +/* + Assemble a set of custom cells to display into an array to pass to the path control. + */ +- (NSArray *)pathComponentArray +{ + NSMutableArray *pathComponentArray = [[NSMutableArray alloc] init]; + + NSFileManager *fileManager = [[NSFileManager alloc] init]; + + NSURL* desktopURL = [fileManager URLForDirectory:NSDesktopDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; + NSURL* documentsURL = [fileManager URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; + NSURL* userURL = [fileManager URLForDirectory:NSUserDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; + + NSPathComponentCell *componentCell; + + // Use utility method to obtain a NSPathComponentCell based on icon, title and URL. + componentCell = [self componentCellForType:kGenericFolderIcon withTitle:@"Desktop" URL:desktopURL]; + [pathComponentArray addObject:componentCell]; + + componentCell = [self componentCellForType:kGenericFolderIcon withTitle:@"Documents" URL:documentsURL]; + [pathComponentArray addObject:componentCell]; + + componentCell = [self componentCellForType:kUserFolderIcon withTitle:NSUserName() URL:userURL]; + [pathComponentArray addObject:componentCell]; + + return pathComponentArray; +} + +/* + This method is used by pathComponentArray to create a NSPathComponent cell based on icon, title and URL information. + Each path component needs an icon, URL and title. + */ +- (NSPathComponentCell *)componentCellForType:(OSType)withIconType withTitle:(NSString *)title URL:(NSURL *)url +{ + NSPathComponentCell *componentCell = [[NSPathComponentCell alloc] init]; + + NSImage *iconImage = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(withIconType)]; + [componentCell setImage:iconImage]; + [componentCell setURL:url]; + [componentCell setTitle:title]; + + return componentCell; +} + +- (IBAction)chooseTlsMethod:(id)sender { + int index = [sender indexOfSelectedItem]; + QModelIndex qIdx = privateAccount->tlsMethodModel()->index(index, 0); + privateAccount->tlsMethodModel()->selectionModel()->setCurrentIndex(qIdx, QItemSelectionModel::ClearAndSelect); +} + +- (IBAction)toggleUseTLS:(id)sender { + privateAccount->setTlsEnabled([sender state]); + [tlsContainer setHidden:![sender state]]; +} + +- (IBAction)toggleUseSRTP:(id)sender { + privateAccount->setSrtpEnabled([sender state]); + [srtpRTPFallback setEnabled:[sender state]]; +} +- (IBAction)toggleRTPFallback:(id)sender { + privateAccount->setSrtpRtpFallback([sender state]); +} + +- (IBAction)toggleVerifyCertAsClient:(id)sender { + privateAccount->setTlsVerifyClient([sender state]); +} + +- (IBAction)toggleVerifyCertServer:(id)sender { + privateAccount->setTlsVerifyServer([sender state]); +} + +- (IBAction)toggleRequireCert:(id)sender { + privateAccount->setTlsRequireClientCertificate([sender state]); +} + +- (IBAction)toggleCipher:(id)sender { + NSInteger row = [sender clickedRow]; + NSTableColumn *col = [sender tableColumnWithIdentifier:COLUMNID_STATE]; + NSButtonCell *cell = [col dataCellForRow:row]; + privateAccount->cipherModel()->setData(privateAccount->cipherModel()->index(row, 0, QModelIndex()), + cell.state == NSOnState ? Qt::Unchecked : Qt::Checked, Qt::CheckStateRole); +} + +- (void) updateControlsWithTag:(NSInteger) tag +{ + switch (tag) { + case PVK_PASSWORD_TAG: + [pvkPasswordField setStringValue:privateAccount->tlsPassword().toNSString()]; + break; + case OUTGOING_TLS_SRV_NAME: + [outgoingTlsServerName setStringValue:privateAccount->tlsServerName().toNSString()]; + break; + case TLS_NEGOTIATION_TAG: + [tlsNegotiationTimeout setIntegerValue:privateAccount->tlsNegotiationTimeoutSec()]; + [tlsNegotiationTimeoutStepper setIntegerValue:privateAccount->tlsNegotiationTimeoutSec()]; + break; + default: + break; + } +} + +#pragma mark - NSTextFieldDelegate methods + +-(void)controlTextDidChange:(NSNotification *)notif +{ + NSTextField *textField = [notif object]; + NSRange test = [[textField currentEditor] selectedRange]; + + [self valueDidChange:textField]; + //FIXME: saving account lose focus because in NSTreeController we remove and reinsert row so View selction change + [textField.window makeFirstResponder:textField]; + [[textField currentEditor] setSelectedRange:test]; +} + +- (IBAction) valueDidChange: (id) sender +{ + switch ([sender tag]) { + case PVK_PASSWORD_TAG: + privateAccount->setTlsPassword([[sender stringValue] UTF8String]); + break; + case OUTGOING_TLS_SRV_NAME: + privateAccount->setTlsServerName([[sender stringValue] UTF8String]); + break; + case TLS_NEGOTIATION_TAG: + privateAccount->setTlsNegotiationTimeoutSec([sender integerValue]); + break; + default: + break; + } + [self updateControlsWithTag:[sender tag]]; } #pragma mark - NSPathControl delegate methods +- (IBAction)caListPathControlSingleClick:(id)sender { + NSURL* fileURL = [[sender clickedPathComponentCell] URL]; + NSLog(@"==> %@", fileURL); + [self.caListPathControl setURL:fileURL]; + privateAccount->setTlsCaListCertificate(QUrl::fromNSURL(fileURL).toString()); +} + +- (IBAction)certificatePathControlSingleClick:(id)sender { + // Select that chosen component of the path. + NSURL* fileURL = [[sender clickedPathComponentCell] URL]; + NSLog(@"==> %@", fileURL); + [self.certificatePathControl setURL:fileURL]; + privateAccount->setTlsCertificate(QUrl::fromNSURL(fileURL).toString()); +} + +- (IBAction)pvkFilePathControlSingleClick:(id)sender { + NSURL* fileURL = [[sender clickedPathComponentCell] URL]; + NSLog(@"==> %@", fileURL); + [self.pvkPathControl setURL:fileURL]; + privateAccount->setTlsPrivateKeyCertificate(QUrl::fromNSURL(fileURL).toString()); + + + // qDebug() << "TEST" << privateAccount->tlsPrivateKeyCertificate()->hasPrivateKey(); +} + +- (IBAction)showCA:(id)sender +{ + certificateWC = [[CertificateWC alloc] initWithWindowNibName:@"CertificateWindow"]; + [certificateWC setCertificate:privateAccount->tlsCaListCertificate()]; + [self.view.window beginSheet:certificateWC.window completionHandler:nil]; +} + +- (IBAction)showEndpointCertificate:(id)sender +{ + certificateWC = [[CertificateWC alloc] initWithWindowNibName:@"CertificateWindow"]; + [certificateWC setCertificate:privateAccount->tlsCertificate()]; + [self.view.window beginSheet:certificateWC.window completionHandler:nil];} /* Delegate method of NSPathControl to determine how the NSOpenPanel will look/behave. @@ -60,7 +339,16 @@ [openPanel setCanChooseDirectories:NO]; [openPanel setCanChooseFiles:YES]; [openPanel setResolvesAliases:YES]; - [openPanel setTitle:NSLocalizedString(@"Choose a file", @"Open panel title")]; + + if(pathControl == self.caListPathControl) { + [openPanel setTitle:NSLocalizedString(@"Choose a CA list", @"Open panel title")]; + } else if (pathControl == self.certificatePathControl) { + [openPanel setTitle:NSLocalizedString(@"Choose a certificate", @"Open panel title")]; + } else { + [openPanel setTitle:NSLocalizedString(@"Choose a private key file", @"Open panel title")]; + } + + [openPanel setPrompt:NSLocalizedString(@"Choose", @"Open panel prompt for 'Choose a file'")]; [openPanel setDelegate:self]; } @@ -91,12 +379,97 @@ { NSLog(@"validateURL"); return YES; +} + +#pragma mark - NSMenuDelegate methods + +- (BOOL)menu:(NSMenu *)menu updateItem:(NSMenuItem *)item atIndex:(NSInteger)index shouldCancel:(BOOL)shouldCancel +{ + QModelIndex qIdx; + + if([menu.title isEqualToString:@"tlsmethodlist"]) + { + qIdx = privateAccount->tlsMethodModel()->index(index); + [item setTitle:qIdx.data(Qt::DisplayRole).toString().toNSString()]; + } + return YES; +} + +- (NSInteger)numberOfItemsInMenu:(NSMenu *)menu +{ + if([menu.title isEqualToString:@"tlsmethodlist"]) + return privateAccount->tlsMethodModel()->rowCount(); +} + +#pragma mark - NSOutlineViewDelegate methods + +// ------------------------------------------------------------------------------- +// shouldSelectItem:item +// ------------------------------------------------------------------------------- +- (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item; +{ + return YES; +} +// ------------------------------------------------------------------------------- +// dataCellForTableColumn:tableColumn:item +// ------------------------------------------------------------------------------- +- (NSCell *)outlineView:(NSOutlineView *)outlineView dataCellForTableColumn:(NSTableColumn *)tableColumn item:(id)item +{ + NSCell *returnCell = [tableColumn dataCell]; + return returnCell; } -- (void)panel:(id)sender didChangeToDirectoryURL:(NSURL *)url +// ------------------------------------------------------------------------------- +// textShouldEndEditing:fieldEditor +// ------------------------------------------------------------------------------- +- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor { - //NSLog(@"didChangeToDirectoryURL"); + if ([[fieldEditor string] length] == 0) + { + // don't allow empty node names + return NO; + } + else + { + return YES; + } +} + +// ------------------------------------------------------------------------------- +// shouldEditTableColumn:tableColumn:item +// +// Decide to allow the edit of the given outline view "item". +// ------------------------------------------------------------------------------- +- (BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item +{ + return NO; +} + +// ------------------------------------------------------------------------------- +// outlineView:willDisplayCell:forTableColumn:item +// ------------------------------------------------------------------------------- +- (void)outlineView:(NSOutlineView *)olv willDisplayCell:(NSCell*)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item +{ + QModelIndex qIdx = [treeController toQIdx:((NSTreeNode*)item)]; + if(!qIdx.isValid()) + return; + + if ([[tableColumn identifier] isEqualToString:COLUMNID_NAME]) + { + cell.title = qIdx.data(Qt::DisplayRole).toString().toNSString(); + } +} + +// ------------------------------------------------------------------------------- +// outlineViewSelectionDidChange:notification +// ------------------------------------------------------------------------------- +- (void)outlineViewSelectionDidChange:(NSNotification *)notification +{ + // ask the tree controller for the current selection + if([[treeController selectedNodes] count] > 0) { + + } } @end diff --git a/src/AccountsVC.mm b/src/AccountsVC.mm index 3bbd086d933c1e1070861bfc4e526213f9f180d6..42ae01b62fb880d35e6a6d4b02f5bcc66021dd46 100644 --- a/src/AccountsVC.mm +++ b/src/AccountsVC.mm @@ -113,12 +113,9 @@ public: [accountsListView bind:@"sortDescriptors" toObject:treeController withKeyPath:@"sortDescriptors" options:nil]; [accountsListView bind:@"selectionIndexPaths" toObject:treeController withKeyPath:@"selectionIndexPaths" options:nil]; - QObject::connect(AccountModel::instance(), &QAbstractItemModel::dataChanged, [=](const QModelIndex &topLeft, const QModelIndex &bottomRight) { - NSLog(@"data changed %d, %d", topLeft.row(), bottomRight.row()); - [accountsListView reloadDataForRowIndexes: [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(topLeft.row(), bottomRight.row() + 1)] columnIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, accountsListView.tableColumns.count)]]; @@ -208,8 +205,8 @@ public: [configPanels insertTabViewItem:generalTabItem atIndex:0]; [configPanels insertTabViewItem:audioTabItem atIndex:1]; [configPanels insertTabViewItem:videoTabItem atIndex:2]; - //[configPanels insertTabViewItem:advancedTabItem atIndex:3]; - //[configPanels insertTabViewItem:securityTabItem atIndex:4]; + [configPanels insertTabViewItem:advancedTabItem atIndex:3]; + [configPanels insertTabViewItem:securityTabItem atIndex:4]; [self.generalVC loadAccount:acc]; [self.audioVC loadAccount:acc]; @@ -270,6 +267,7 @@ public: Account* toToggle = AccountModel::instance()->getAccountByModelIndex(accIdx); NSButtonCell *cell = [col dataCellForRow:row]; toToggle->setEnabled(cell.state == NSOnState ? NO : YES); + toToggle << Account::EditAction::SAVE; } } @@ -288,7 +286,17 @@ public: // ------------------------------------------------------------------------------- - (NSCell *)outlineView:(NSOutlineView *)outlineView dataCellForTableColumn:(NSTableColumn *)tableColumn item:(id)item { - NSCell *returnCell = [tableColumn dataCell]; + NSCell *returnCell; + + QModelIndex qIdx = [treeController toQIdx:((NSTreeNode*)item)]; + // Prevent user from enabling/disabling IP2IP account + if ([[tableColumn identifier] isEqualToString:COLUMNID_ENABLE] && + AccountModel::instance()->ip2ip()->index() == qIdx) { + + returnCell = [[NSCell alloc] init]; + } else { + returnCell = [tableColumn dataCell]; + } return returnCell; } @@ -331,25 +339,30 @@ public: { cell.title = AccountModel::instance()->data(qIdx, Qt::DisplayRole).toString().toNSString(); } else if([[tableColumn identifier] isEqualToString:COLUMNID_STATE]) { - Account::RegistrationState state = qvariant_cast<Account::RegistrationState>(AccountModel::instance()->data(qIdx, (int)Account::Role::RegistrationState)); + NSTextFieldCell* stateCell = cell; + Account::RegistrationState state = qvariant_cast<Account::RegistrationState>(qIdx.data((int)Account::Role::RegistrationState)); switch (state) { case Account::RegistrationState::READY: - [cell setTitle:@"Ready"]; + [stateCell setTextColor:[NSColor colorWithCalibratedRed:116/255.0 green:179/255.0 blue:93/255.0 alpha:1.0]]; + [stateCell setTitle:@"Ready"]; break; case Account::RegistrationState::TRYING: - [cell setTitle:@"Trying..."]; + [stateCell setTextColor:[NSColor redColor]]; + [stateCell setTitle:@"Trying..."]; break; case Account::RegistrationState::UNREGISTERED: - [cell setTitle:@"Unregistered"]; + [stateCell setTextColor:[NSColor blackColor]]; + [stateCell setTitle:@"Unregistered"]; break; case Account::RegistrationState::ERROR: - [cell setTitle:@"Error"]; + [stateCell setTextColor:[NSColor redColor]]; + [stateCell setTitle:@"Error"]; break; default: break; } } else if([[tableColumn identifier] isEqualToString:COLUMNID_ENABLE]) { - [cell setState:AccountModel::instance()->data(qIdx, Qt::CheckStateRole).value<BOOL>()]; + [cell setState:qIdx.data(Qt::CheckStateRole).value<BOOL>()]; } } @@ -396,7 +409,7 @@ public: { QModelIndex proxyIdx = proxyProtocolModel->index(index, 0); QModelIndex qIdx = AccountModel::instance()->protocolModel()->index(proxyProtocolModel->mapToSource(proxyIdx).row()); - [item setTitle:AccountModel::instance()->protocolModel()->data(qIdx, Qt::DisplayRole).toString().toNSString()]; + [item setTitle:qIdx.data(Qt::DisplayRole).toString().toNSString()]; return YES; } diff --git a/src/AudioPrefsVC.mm b/src/AudioPrefsVC.mm index 16700a6b93c4f26487e2cbee6c56d9e26acfe1cc..cd18ed062e821b2be25e7640df73342723a10849 100644 --- a/src/AudioPrefsVC.mm +++ b/src/AudioPrefsVC.mm @@ -73,6 +73,8 @@ if([[Audio::Settings::instance()->recordPath().toNSURL() absoluteString] isEqualToString:@""]) { NSArray * pathComponentArray = [self pathComponentArray]; [recordingsPathControl setPathComponentCells:pathComponentArray]; + } else { + [recordingsPathControl setURL:Audio::Settings::instance()->recordPath().toNSURL()]; } } diff --git a/src/CertificateWC.h b/src/CertificateWC.h new file mode 100644 index 0000000000000000000000000000000000000000..ea45bfbdfde7e108f8c4e68d26ba023786e6bee7 --- /dev/null +++ b/src/CertificateWC.h @@ -0,0 +1,17 @@ +// +// CertificateWC.h +// Ring +// +// Created by Alexandre Lision on 2015-04-28. +// +// + +#import <Cocoa/Cocoa.h> + +#import <certificate.h> + +@interface CertificateWC : NSWindowController + +- (void) setCertificate:(Certificate*) cert; + +@end diff --git a/src/CertificateWC.mm b/src/CertificateWC.mm new file mode 100644 index 0000000000000000000000000000000000000000..8d76a603929ed9131460a976d67e8caf60db101d --- /dev/null +++ b/src/CertificateWC.mm @@ -0,0 +1,29 @@ +// +// CertificateWC.m +// Ring +// +// Created by Alexandre Lision on 2015-04-28. +// +// + +#import "CertificateWC.h" + +@implementation CertificateWC + +- (void)windowDidLoad { + [super windowDidLoad]; +} + +- (void) setCertificate:(Certificate*) cert +{ + NSLog(@"CertificateWC loaded"); +} + +- (IBAction)closePanel:(id)sender +{ + [NSApp endSheet:self.window]; + [self.window orderOut:self]; +} + + +@end diff --git a/src/GeneralPrefsVC.mm b/src/GeneralPrefsVC.mm index 4bc2b3bc1368e30e95cb70388f499210b055d589..46085286bb4637211a491206ad0273d479a72e4f 100644 --- a/src/GeneralPrefsVC.mm +++ b/src/GeneralPrefsVC.mm @@ -35,18 +35,21 @@ @interface GeneralPrefsVC () @property (assign) IBOutlet NSTextField *historyChangedLabel; +@property (assign) IBOutlet NSView *advancedGeneralSettings; @end -@implementation GeneralPrefsVC { - -} +@implementation GeneralPrefsVC @synthesize historyChangedLabel; +@synthesize advancedGeneralSettings; - (void)loadView { [super loadView]; [[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:Preferences::HistoryLimit options:NSKeyValueObservingOptionNew context:NULL]; + [[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:Preferences::ShowAdvanced options:NSKeyValueObservingOptionNew context:NULL]; + + [advancedGeneralSettings setHidden:![[NSUserDefaults standardUserDefaults] boolForKey:Preferences::ShowAdvanced]]; } - (IBAction)clearHistory:(id)sender { @@ -58,8 +61,11 @@ -(void)observeValueForKeyPath:(NSString *)aKeyPath ofObject:(id)anObject change:(NSDictionary *)aChange context:(void *)aContext { - NSLog(@"VALUE CHANGED"); - [historyChangedLabel setHidden:NO]; + if (aKeyPath == Preferences::HistoryLimit) { + [historyChangedLabel setHidden:NO]; + } else if (aKeyPath == Preferences::ShowAdvanced) { + [advancedGeneralSettings setHidden:[[aChange objectForKey: NSKeyValueChangeNewKey] boolValue]]; + } } @end diff --git a/src/PreferencesVC.h b/src/PreferencesVC.h index 583e2e596513bd6da2713c14ca9c994470f4f922..e763caad07bef30dab12a9aa8edd23ab09ac9d79 100644 --- a/src/PreferencesVC.h +++ b/src/PreferencesVC.h @@ -34,13 +34,13 @@ @interface PreferencesVC : NSViewController <NSToolbarDelegate> -- (void) close; @property (nonatomic, assign) NSViewController *currentVC; @property (nonatomic, assign) NSViewController *accountsPrefsVC; @property (nonatomic, assign) NSViewController *generalPrefsVC; @property (nonatomic, assign) NSViewController *audioPrefsVC; @property (nonatomic, assign) NSViewController *videoPrefsVC; +- (void) close; - (void)displayGeneral:(NSToolbarItem *)sender; - (void)displayAudio:(NSToolbarItem *)sender; - (void)displayAncrage:(NSToolbarItem *)sender; diff --git a/src/RingWindowController.mm b/src/RingWindowController.mm index 72fdda5ce52f7a8cab3a3e269fa42d82f95539a4..f708f7c7540c64fb8052bc6670ed84835b83907f 100644 --- a/src/RingWindowController.mm +++ b/src/RingWindowController.mm @@ -202,7 +202,6 @@ static NSString* const kCallButtonIdentifer = @"CallButtonIdentifier"; - (IBAction)placeCall:(id)sender { Call* c = CallModel::instance()->dialingCall(); - // check for a valid ring hash NSCharacterSet *hexSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789abcdefABCDEF"]; BOOL valid = [[[callField stringValue] stringByTrimmingCharactersInSet:hexSet] isEqualToString:@""]; diff --git a/ui/AccAdvanced.xib b/ui/AccAdvanced.xib index 5edd143ff61121daae0b96186e13219ec1d4cbee..291a17d17cf8799cb244bc48bd981580d30d1efc 100644 --- a/ui/AccAdvanced.xib +++ b/ui/AccAdvanced.xib @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6751" systemVersion="14C1510" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6751" systemVersion="13F1077" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6751"/> </dependencies> @@ -44,15 +44,16 @@ </textFieldCell> </textField> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="A98-ed-6iq"> - <rect key="frame" x="266" y="434" width="19" height="27"/> + <rect key="frame" x="219" y="434" width="19" height="27"/> <stepperCell key="cell" continuous="YES" alignment="left" maxValue="200" id="3kR-uk-WAl"/> <connections> <action selector="valueDidChange:" target="-2" id="eL2-tT-Wdd"/> </connections> </stepper> <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Vy9-CY-MrG"> - <rect key="frame" x="165" y="437" width="96" height="22"/> + <rect key="frame" x="165" y="437" width="49" height="22"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="rtX-dk-eMQ"> + <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="99r-pE-lsZ"/> <font key="font" metaFont="system"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> @@ -105,7 +106,7 @@ </button> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="e6E-9n-08s"> <rect key="frame" x="266" y="365" width="19" height="27"/> - <stepperCell key="cell" continuous="YES" alignment="left" maxValue="99999" id="sr0-PX-dXX"/> + <stepperCell key="cell" continuous="YES" alignment="left" maxValue="65534" id="sr0-PX-dXX"/> <connections> <action selector="valueDidChange:" target="-2" id="5GF-aO-SNO"/> </connections> @@ -113,6 +114,9 @@ <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TgP-vt-AeS"> <rect key="frame" x="165" y="368" width="96" height="22"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="x39-hY-AAQ"> + <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="7Cv-xY-6X5"> + <real key="maximum" value="65534"/> + </numberFormatter> <font key="font" metaFont="system"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> @@ -142,7 +146,7 @@ </textField> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Bnh-Mc-8kR"> <rect key="frame" x="198" y="153" width="19" height="27"/> - <stepperCell key="cell" continuous="YES" alignment="left" maxValue="99999" id="IDZ-ip-UEs"/> + <stepperCell key="cell" continuous="YES" alignment="left" maxValue="65534" id="IDZ-ip-UEs"/> <connections> <action selector="valueDidChange:" target="-2" id="Daw-BV-Edf"/> </connections> @@ -150,6 +154,9 @@ <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="b3n-gl-1th"> <rect key="frame" x="97" y="156" width="96" height="22"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="fsG-bB-ubb"> + <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="oaP-iC-Alq"> + <real key="maximum" value="65534"/> + </numberFormatter> <font key="font" metaFont="system"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> @@ -168,7 +175,7 @@ </textField> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="FI1-5p-EcC"> <rect key="frame" x="364" y="153" width="19" height="27"/> - <stepperCell key="cell" continuous="YES" alignment="left" maxValue="99999" id="6DL-JU-9vo"/> + <stepperCell key="cell" continuous="YES" alignment="left" maxValue="65534" id="6DL-JU-9vo"/> <connections> <action selector="valueDidChange:" target="-2" id="qZ3-R2-m60"/> </connections> @@ -176,6 +183,9 @@ <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GOf-0V-pyS"> <rect key="frame" x="263" y="156" width="96" height="22"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="rcL-uY-sov"> + <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="nBc-fC-RAm"> + <real key="maximum" value="65534"/> + </numberFormatter> <font key="font" metaFont="system"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> @@ -202,7 +212,7 @@ </textField> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="caC-em-Z8T"> <rect key="frame" x="197" y="92" width="19" height="27"/> - <stepperCell key="cell" continuous="YES" alignment="left" maxValue="99999" id="uSL-4H-pJJ"/> + <stepperCell key="cell" continuous="YES" alignment="left" maxValue="65534" id="uSL-4H-pJJ"/> <connections> <action selector="valueDidChange:" target="-2" id="gab-7r-VfC"/> </connections> @@ -210,6 +220,9 @@ <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="khU-Ue-Hen"> <rect key="frame" x="96" y="95" width="96" height="22"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="J1A-gZ-lMv"> + <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="7Vg-kX-7gY"> + <real key="maximum" value="65534"/> + </numberFormatter> <font key="font" metaFont="system"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> @@ -228,7 +241,7 @@ </textField> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uac-nZ-Hcw"> <rect key="frame" x="363" y="92" width="19" height="27"/> - <stepperCell key="cell" continuous="YES" alignment="left" maxValue="99999" id="heA-0J-Vqe"/> + <stepperCell key="cell" continuous="YES" alignment="left" maxValue="65534" id="heA-0J-Vqe"/> <connections> <action selector="valueDidChange:" target="-2" id="uJU-9R-UJR"/> </connections> @@ -236,6 +249,9 @@ <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IJS-5x-riX"> <rect key="frame" x="262" y="95" width="96" height="22"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="L2A-qa-yTI"> + <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="qXb-fv-xC6"> + <real key="maximum" value="65534"/> + </numberFormatter> <font key="font" metaFont="system"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> @@ -255,7 +271,7 @@ <matrix verticalHuggingPriority="750" fixedFrame="YES" allowsEmptySelection="NO" autorecalculatesCellSize="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2yz-X7-dVm"> <rect key="frame" x="64" y="255" width="320" height="38"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - <size key="cellSize" width="216" height="18"/> + <size key="cellSize" width="217" height="18"/> <size key="intercellSpacing" width="4" height="2"/> <buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="fB0-X8-GXk"> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> @@ -309,6 +325,14 @@ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kpt-7R-pUj"> + <rect key="frame" x="240" y="440" width="55" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="seconds" id="xGw-j0-4ID"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> </subviews> </customView> </subviews> diff --git a/ui/AccGeneral.xib b/ui/AccGeneral.xib index 4e8f5167e739c0a008b27e8eafc633d197a24209..b4d5ad2d8b1152ee223fb463dc9e6b6e53e37247 100644 --- a/ui/AccGeneral.xib +++ b/ui/AccGeneral.xib @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6254" systemVersion="13F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> <dependencies> - <deployment identifier="macosx"/> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6254"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/> </dependencies> <objects> <customObject id="-2" userLabel="File's Owner" customClass="AccGeneralVC"> @@ -147,6 +146,26 @@ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> + <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SEc-jZ-TUE"> + <rect key="frame" x="327" y="5" width="129" height="18"/> + <buttonCell key="cell" type="check" title="Show password" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="Ue3-ai-FBV"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <connections> + <action selector="showPassword:" target="-2" id="5zI-is-yfV"/> + </connections> + </button> + <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jgg-ZS-LyJ"> + <rect key="frame" x="323" y="37" width="137" height="32"/> + <buttonCell key="cell" type="push" title="Try Registration" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="j6w-ZG-17T"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <connections> + <action selector="tryRegistration:" target="-2" id="KIF-Ps-esl"/> + </connections> + </button> </subviews> </customView> <customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7NY-Hh-Icd"> diff --git a/ui/AccSecurity.xib b/ui/AccSecurity.xib index 26fd39d19b5346520af55a0fbd0175414f3cb56f..30b8bc620e6cabcf3ac9d37132e97bacb4188d1f 100644 --- a/ui/AccSecurity.xib +++ b/ui/AccSecurity.xib @@ -1,227 +1,337 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6254" systemVersion="14C109" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES"> <dependencies> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6254"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/> </dependencies> <objects> <customObject id="-2" userLabel="File's Owner" customClass="AccSecurityVC"> <connections> + <outlet property="caListPathControl" destination="D3W-lQ-lnP" id="LS8-ny-clH"/> + <outlet property="certificatePathControl" destination="nm6-E0-NSH" id="fCd-di-v07"/> + <outlet property="cipherListView" destination="J53-ev-CMr" id="G0A-j6-uHa"/> + <outlet property="outgoingTlsServerName" destination="Zw6-Ys-Kie" id="JQC-aS-9eu"/> + <outlet property="pvkPasswordField" destination="bZ4-7D-4l0" id="EEN-a1-4oT"/> + <outlet property="pvkPathControl" destination="88W-qC-bQk" id="rWY-57-6pv"/> + <outlet property="requireCertButton" destination="oUu-x4-vV2" id="PNH-3v-phG"/> + <outlet property="srtpRTPFallback" destination="uPY-dc-wnh" id="mqd-Uf-g1o"/> + <outlet property="tlsContainer" destination="Ubf-Oe-BbE" id="a5m-qR-9n2"/> + <outlet property="tlsMethodList" destination="OzX-Lm-vTo" id="t16-Ed-be0"/> + <outlet property="tlsNegotiationTimeout" destination="Vei-qo-Elj" id="aHP-q0-cLi"/> + <outlet property="tlsNegotiationTimeoutStepper" destination="HTb-Hz-UsO" id="nAt-yM-bvQ"/> + <outlet property="useSRTP" destination="MDR-gI-NEM" id="cEh-uu-v1A"/> + <outlet property="useTLS" destination="KkG-2O-ExR" id="Ain-yM-iXd"/> + <outlet property="verifyCertAsClientButton" destination="IEc-xs-DVB" id="jxt-UK-0Pr"/> + <outlet property="verifyCertAsServerButton" destination="zc3-fU-bFt" id="DmT-0V-uWA"/> <outlet property="view" destination="Hz6-mo-xeY" id="zzq-0g-nOy"/> </connections> </customObject> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/> <customView id="Hz6-mo-xeY"> - <rect key="frame" x="0.0" y="0.0" width="498" height="477"/> + <rect key="frame" x="0.0" y="0.0" width="694" height="628"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <subviews> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KkG-2O-ExR"> - <rect key="frame" x="18" y="441" width="133" height="18"/> + <rect key="frame" x="18" y="532" width="133" height="18"/> <buttonCell key="cell" type="check" title="Use TLS transport" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="oTT-gO-fqM"> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <font key="font" metaFont="system"/> </buttonCell> - </button> - <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pMZ-IN-XqN"> - <rect key="frame" x="213" y="413" width="96" height="22"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="OlW-vM-KEy"> - <font key="font" metaFont="system"/> - <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <secureTextField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bZ4-7D-4l0"> - <rect key="frame" x="213" y="278" width="192" height="22"/> - <secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" usesSingleLineMode="YES" id="7c2-kF-dcs"> - <font key="font" metaFont="system"/> - <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> - <allowedInputSourceLocales> - <string>NSAllRomanInputSourcesLocaleIdentifier</string> - </allowedInputSourceLocales> - </secureTextFieldCell> - </secureTextField> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Tde-PT-YmG"> - <rect key="frame" x="68" y="281" width="136" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Private key password" id="gRf-gt-1lS"> - <font key="font" metaFont="system"/> - <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Vei-qo-Elj"> - <rect key="frame" x="210" y="154" width="96" height="22"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="wIn-YV-Pbm"> - <font key="font" metaFont="system"/> - <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="JIN-cT-eC7"> - <rect key="frame" x="69" y="251" width="135" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="TLS protocol method" id="uOE-XA-5gW"> - <font key="font" metaFont="system"/> - <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zw6-Ys-Kie"> - <rect key="frame" x="361" y="184" width="96" height="22"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="CAB-Dc-UQr"> - <font key="font" metaFont="system"/> - <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <pathControl verticalHuggingPriority="750" fixedFrame="YES" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="D3W-lQ-lnP"> - <rect key="frame" x="208" y="381" width="200" height="26"/> - <pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="onD-BW-yiQ"> - <font key="font" metaFont="system"/> - </pathCell> <connections> - <outlet property="delegate" destination="-2" id="xmv-cI-kXi"/> + <action selector="toggleUseTLS:" target="-2" id="ThA-al-8l0"/> </connections> - </pathControl> - <pathControl verticalHuggingPriority="750" fixedFrame="YES" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nm6-E0-NSH"> - <rect key="frame" x="208" y="350" width="200" height="26"/> - <pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="jgm-ZK-yDf"> - <font key="font" metaFont="system"/> - </pathCell> - <connections> - <outlet property="delegate" destination="-2" id="7dO-SK-pkt"/> - </connections> - </pathControl> - <pathControl verticalHuggingPriority="750" fixedFrame="YES" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="88W-qC-bQk"> - <rect key="frame" x="208" y="315" width="200" height="26"/> - <pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="peP-JR-p0s"> - <font key="font" metaFont="system"/> - </pathCell> - <connections> - <outlet property="delegate" destination="-2" id="Lg6-ti-eMl"/> - </connections> - </pathControl> - <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GXt-f8-Yr7"> - <rect key="frame" x="314" y="410" width="19" height="27"/> - <stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="RDj-lm-kWd"/> - </stepper> - <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5gr-bk-6ak"> - <rect key="frame" x="462" y="181" width="19" height="27"/> - <stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="ExI-j5-7st"/> - </stepper> - <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IEc-xs-DVB"> - <rect key="frame" x="42" y="96" width="198" height="18"/> - <buttonCell key="cell" type="check" title="Verify certificates, as a client" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="1xi-9G-zOX"> - <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> - <font key="font" metaFont="system"/> - </buttonCell> - </button> - <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zc3-fU-bFt"> - <rect key="frame" x="42" y="124" width="263" height="18"/> - <buttonCell key="cell" type="check" title="Verify incoming certificates, as a server" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="x2s-ov-cVQ"> - <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> - <font key="font" metaFont="system"/> - </buttonCell> </button> - <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oUu-x4-vV2"> - <rect key="frame" x="42" y="66" width="329" height="18"/> - <buttonCell key="cell" type="check" title="Require certificates for incoming TLS connections" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="1f9-X5-ykb"> + <customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ubf-Oe-BbE"> + <rect key="frame" x="27" y="305" width="625" height="221"/> + <subviews> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="JIN-cT-eC7"> + <rect key="frame" x="54" y="85" width="135" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="TLS protocol method" id="uOE-XA-5gW"> + <font key="font" metaFont="system"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <pathControl verticalHuggingPriority="750" fixedFrame="YES" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="D3W-lQ-lnP"> + <rect key="frame" x="193" y="177" width="200" height="26"/> + <pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="onD-BW-yiQ"> + <font key="font" metaFont="system"/> + </pathCell> + <connections> + <action selector="caListPathControlSingleClick:" target="-2" id="q3F-hD-ivO"/> + <outlet property="delegate" destination="-2" id="xmv-cI-kXi"/> + </connections> + </pathControl> + <pathControl verticalHuggingPriority="750" fixedFrame="YES" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nm6-E0-NSH"> + <rect key="frame" x="193" y="146" width="200" height="26"/> + <pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="jgm-ZK-yDf"> + <font key="font" metaFont="system"/> + </pathCell> + <connections> + <action selector="certificatePathControlSingleClick:" target="-2" id="QEp-Pf-AmX"/> + <outlet property="delegate" destination="-2" id="7dO-SK-pkt"/> + </connections> + </pathControl> + <pathControl verticalHuggingPriority="750" fixedFrame="YES" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="88W-qC-bQk"> + <rect key="frame" x="193" y="111" width="200" height="26"/> + <pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="peP-JR-p0s"> + <font key="font" metaFont="system"/> + </pathCell> + <connections> + <action selector="pvkFilePathControlSingleClick:" target="-2" id="zsf-fI-Wms"/> + <outlet property="delegate" destination="-2" id="Lg6-ti-eMl"/> + </connections> + </pathControl> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oPj-Ol-4rt"> + <rect key="frame" x="92" y="150" width="101" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="User Certificate" id="Jqz-P0-zAz"> + <font key="font" metaFont="system"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1Si-LL-vAi"> + <rect key="frame" x="121" y="117" width="72" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Private key" id="JHb-iu-ZwI"> + <font key="font" metaFont="system"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OzX-Lm-vTo"> + <rect key="frame" x="194" y="80" width="204" height="26"/> + <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="XAT-9Y-9e0"> + <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="menu"/> + <menu key="menu" title="tlsmethodlist" id="hOG-SW-CBI"> + <connections> + <outlet property="delegate" destination="-2" id="ri6-UD-0cj"/> + </connections> + </menu> + </popUpButtonCell> + <connections> + <action selector="chooseTlsMethod:" target="-2" id="Mas-vi-T6e"/> + </connections> + </popUpButton> + <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Vei-qo-Elj"> + <rect key="frame" x="346" y="17" width="96" height="22"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="wIn-YV-Pbm"> + <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" groupingSize="0" minimumIntegerDigits="0" maximumIntegerDigits="42" id="Duh-um-Evj"/> + <font key="font" metaFont="system"/> + <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + <connections> + <outlet property="delegate" destination="-2" id="vaP-6X-fFT"/> + </connections> + </textField> + <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zw6-Ys-Kie"> + <rect key="frame" x="346" y="46" width="244" height="22"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="CAB-Dc-UQr"> + <font key="font" metaFont="system"/> + <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + <connections> + <outlet property="delegate" destination="-2" id="OPQ-A6-Llk"/> + </connections> + </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TnB-RJ-T6u"> + <rect key="frame" x="23" y="49" width="317" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Server name instance for outgoing TLS connection" id="UxS-et-whJ"> + <font key="font" metaFont="system"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9Nq-Sf-LSO"> + <rect key="frame" x="211" y="20" width="129" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Negociation timeout" id="9Q3-1W-Lh3"> + <font key="font" metaFont="system"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <button horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Bea-Hp-LP1"> + <rect key="frame" x="392" y="169" width="39" height="38"/> + <buttonCell key="cell" type="round" bezelStyle="circular" image="NSInfo" imagePosition="above" alignment="left" borderStyle="border" imageScaling="proportionallyDown" id="un1-35-2si"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="label"/> + </buttonCell> + <connections> + <action selector="showCA:" target="-2" id="tfO-R7-Odx"/> + </connections> + </button> + <button horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aTq-AA-kGe"> + <rect key="frame" x="392" y="138" width="39" height="38"/> + <buttonCell key="cell" type="round" bezelStyle="circular" image="NSInfo" imagePosition="above" alignment="left" borderStyle="border" imageScaling="proportionallyDown" id="lFn-d8-HkS"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="label"/> + </buttonCell> + <connections> + <action selector="showEndpointCertificate:" target="-2" id="1dC-9g-Uax"/> + </connections> + </button> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="J7P-Gf-Pq8"> + <rect key="frame" x="38" y="181" width="155" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Certificate Authority list" id="vPF-Rp-aR6"> + <font key="font" metaFont="system"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <secureTextField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bZ4-7D-4l0"> + <rect key="frame" x="398" y="112" width="192" height="22"/> + <secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="Password..." drawsBackground="YES" usesSingleLineMode="YES" id="7c2-kF-dcs"> + <font key="font" metaFont="system"/> + <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + <allowedInputSourceLocales> + <string>NSAllRomanInputSourcesLocaleIdentifier</string> + </allowedInputSourceLocales> + </secureTextFieldCell> + <connections> + <outlet property="delegate" destination="-2" id="xf5-zS-Th0"/> + </connections> + </secureTextField> + <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HTb-Hz-UsO"> + <rect key="frame" x="447" y="14" width="19" height="27"/> + <stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" id="NiO-pL-W7t"/> + <connections> + <action selector="valueDidChange:" target="-2" id="SZI-r3-CRu"/> + </connections> + </stepper> + </subviews> + </customView> + <customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Hb0-lT-WfA"> + <rect key="frame" x="27" y="35" width="625" height="262"/> + <subviews> + <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3df-06-qZy"> + <rect key="frame" x="44" y="178" width="160" height="18"/> + <buttonCell key="cell" type="check" title="Use custom cipher list" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="2e5-zS-ghg"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + </button> + <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zc3-fU-bFt"> + <rect key="frame" x="44" y="63" width="290" height="18"/> + <buttonCell key="cell" type="check" title="Verify incoming certificates, as a server" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="x2s-ov-cVQ"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <connections> + <action selector="toggleVerifyCertServer:" target="-2" id="c4y-hN-v0d"/> + </connections> + </button> + <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oUu-x4-vV2"> + <rect key="frame" x="44" y="42" width="333" height="18"/> + <buttonCell key="cell" type="check" title="Require certificates for incoming TLS connections" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="1f9-X5-ykb"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <connections> + <action selector="toggleRequireCert:" target="-2" id="4Vu-Hg-beA"/> + </connections> + </button> + <scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rf5-DP-g8u"> + <rect key="frame" x="230" y="113" width="395" height="149"/> + <clipView key="contentView" misplaced="YES" id="5qx-CS-RZZ"> + <rect key="frame" x="1" y="17" width="238" height="117"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO" autosaveColumns="NO" headerView="d0e-h3-O5f" indentationPerLevel="16" outlineTableColumn="n3A-3A-ad2" id="J53-ev-CMr"> + <rect key="frame" x="0.0" y="0.0" width="393" height="19"/> + <autoresizingMask key="autoresizingMask"/> + <size key="intercellSpacing" width="3" height="2"/> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> + <tableColumns> + <tableColumn identifier="StateColumn" width="30.08984375" minWidth="10" maxWidth="3.4028234663852886e+38" id="Ctd-77-A6e" userLabel="State"> + <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left"> + <font key="font" metaFont="smallSystem"/> + <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> + </tableHeaderCell> + <buttonCell key="dataCell" type="check" bezelStyle="regularSquare" imagePosition="overlaps" alignment="left" inset="2" id="lbr-Bo-TJZ"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + <connections> + <action selector="toggleCipher:" target="-2" id="IJu-SC-UzR"/> + </connections> + </buttonCell> + <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> + </tableColumn> + <tableColumn identifier="CipherNameColumn" width="357" minWidth="40" maxWidth="1000" id="n3A-3A-ad2"> + <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left"> + <font key="font" metaFont="smallSystem"/> + <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> + </tableHeaderCell> + <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="5LC-T6-hpk"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> + </tableColumn> + </tableColumns> + <connections> + <outlet property="delegate" destination="-2" id="wwd-1j-4m9"/> + </connections> + </outlineView> + </subviews> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + </clipView> + <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="IPW-7g-Ykq"> + <rect key="frame" x="1" y="119" width="223" height="15"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="P9Y-fn-MnT"> + <rect key="frame" x="224" y="17" width="15" height="102"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <tableHeaderView key="headerView" id="d0e-h3-O5f"> + <rect key="frame" x="0.0" y="0.0" width="238" height="17"/> + <autoresizingMask key="autoresizingMask"/> + </tableHeaderView> + </scrollView> + <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IEc-xs-DVB"> + <rect key="frame" x="44" y="83" width="243" height="18"/> + <buttonCell key="cell" type="check" title="Verify certificates, as a client" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="1xi-9G-zOX"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <connections> + <action selector="toggleVerifyCertAsClient:" target="-2" id="fau-7t-gD2"/> + </connections> + </button> + </subviews> + </customView> + <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uPY-dc-wnh"> + <rect key="frame" x="38" y="564" width="149" height="18"/> + <buttonCell key="cell" type="check" title="Fallback on RTP" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Ig9-B1-7N3"> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <font key="font" metaFont="system"/> </buttonCell> + <connections> + <action selector="toggleRTPFallback:" target="-2" id="UOi-fW-eWB"/> + </connections> </button> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="c3y-9n-Gpj"> - <rect key="frame" x="98" y="416" width="106" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="TLS listener port" id="lKC-W6-rAb"> - <font key="font" metaFont="system"/> - <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="J7P-Gf-Pq8"> - <rect key="frame" x="39" y="385" width="165" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Certificate of Authority list" id="vPF-Rp-aR6"> - <font key="font" metaFont="system"/> - <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oPj-Ol-4rt"> - <rect key="frame" x="38" y="354" width="166" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Public endpoint certificate" id="Jqz-P0-zAz"> - <font key="font" metaFont="system"/> - <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1Si-LL-vAi"> - <rect key="frame" x="110" y="321" width="94" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Private key file" id="JHb-iu-ZwI"> - <font key="font" metaFont="system"/> - <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OzX-Lm-vTo"> - <rect key="frame" x="209" y="246" width="199" height="26"/> - <popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="AR3-KR-uq5" id="XAT-9Y-9e0"> - <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> - <font key="font" metaFont="menu"/> - <menu key="menu" id="hOG-SW-CBI"> - <items> - <menuItem title="Item 1" state="on" id="AR3-KR-uq5"/> - <menuItem title="Item 2" id="y3X-lJ-AUe"/> - <menuItem title="Item 3" id="Jgr-gX-SAn"/> - </items> - </menu> - </popUpButtonCell> - </popUpButton> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HA0-ix-NrF"> - <rect key="frame" x="112" y="219" width="93" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="TLS cipher list" id="R0v-ng-LPE"> - <font key="font" metaFont="system"/> - <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TnB-RJ-T6u"> - <rect key="frame" x="38" y="187" width="317" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Server name instance for outgoing TLS connection" id="UxS-et-whJ"> - <font key="font" metaFont="system"/> - <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9Nq-Sf-LSO"> - <rect key="frame" x="75" y="157" width="129" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Negociation timeout" id="9Q3-1W-Lh3"> - <font key="font" metaFont="system"/> - <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> - <popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zfa-Ks-xJm"> - <rect key="frame" x="208" y="214" width="200" height="26"/> - <popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="5TG-WY-fVo" id="uk0-kX-M0u"> - <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/> - <font key="font" metaFont="menu"/> - <menu key="menu" id="WO9-SC-D1y"> - <items> - <menuItem title="Item 1" state="on" id="5TG-WY-fVo"/> - <menuItem title="Item 2" id="168-7q-W1h"/> - <menuItem title="Item 3" id="BVX-Y0-vyG"/> - </items> - </menu> - </popUpButtonCell> - </popUpButton> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MDR-gI-NEM"> - <rect key="frame" x="18" y="21" width="85" height="18"/> + <rect key="frame" x="18" y="592" width="85" height="18"/> <buttonCell key="cell" type="check" title="Use SRTP" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="YtQ-hx-hih"> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <font key="font" metaFont="system"/> </buttonCell> + <connections> + <action selector="toggleUseSRTP:" target="-2" id="crs-ka-i2O"/> + </connections> </button> </subviews> - <point key="canvasLocation" x="222" y="251.5"/> + <point key="canvasLocation" x="263" y="156"/> </customView> </objects> + <resources> + <image name="NSInfo" width="32" height="32"/> + </resources> </document> diff --git a/ui/AccVideo.xib b/ui/AccVideo.xib index 66ca7e6826599c641d698518d14159f248335d93..d6b02dbd0966f7123fae0fbd585ca4096ef84398 100644 --- a/ui/AccVideo.xib +++ b/ui/AccVideo.xib @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6254" systemVersion="13F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6751" systemVersion="13F1077" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> <dependencies> - <deployment identifier="macosx"/> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6254"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6751"/> </dependencies> <objects> <customObject id="-2" userLabel="File's Owner" customClass="AccVideoVC"> @@ -30,7 +29,7 @@ </connections> </button> <customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qN4-Se-Waf"> - <rect key="frame" x="33" y="55" width="322" height="216"/> + <rect key="frame" x="33" y="55" width="379" height="245"/> <subviews> <scrollView focusRingType="none" fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0Xq-Du-JwG"> <rect key="frame" x="0.0" y="46" width="315" height="170"/> @@ -140,16 +139,16 @@ <action selector="moveUp:" target="-2" id="y2e-P5-leK"/> </connections> </button> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="flI-L9-J7Q"> + <rect key="frame" x="3" y="224" width="53" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Codecs" id="DlW-RF-2xv"> + <font key="font" metaFont="systemBold"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> </subviews> </customView> - <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="flI-L9-J7Q"> - <rect key="frame" x="31" y="279" width="53" height="17"/> - <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Codecs" id="DlW-RF-2xv"> - <font key="font" metaFont="systemBold"/> - <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> - <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> - </textFieldCell> - </textField> </subviews> <point key="canvasLocation" x="273" y="167"/> </customView> diff --git a/ui/AudioPrefs.xib b/ui/AudioPrefs.xib index d40e68c23377914b982ee7123b3f04bb7b22836e..3dcd213eb155362640d80d312afc8f1e28f3f186 100644 --- a/ui/AudioPrefs.xib +++ b/ui/AudioPrefs.xib @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6751" systemVersion="14C1510" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6751" systemVersion="13F1077" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6751"/> </dependencies> @@ -72,17 +72,6 @@ <action selector="chooseOutput:" target="-2" id="SIh-kG-rV5"/> </connections> </popUpButton> - <pathControl verticalHuggingPriority="750" fixedFrame="YES" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nyE-tZ-v4C"> - <rect key="frame" x="95" y="316" width="210" height="26"/> - <pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="SPB-Bz-vDM"> - <font key="font" metaFont="system"/> - <url key="url" string="file://localhost/Applications/"/> - </pathCell> - <connections> - <action selector="pathControlSingleClick:" target="-2" id="a8r-s5-lxq"/> - <outlet property="delegate" destination="-2" id="JXx-Le-f5R"/> - </connections> - </pathControl> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bMB-Zm-k0Z"> <rect key="frame" x="20" y="253" width="99" height="17"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Audio devices" id="B0r-wh-wc3"> @@ -132,6 +121,17 @@ <action selector="chooseInput:" target="-2" id="ADO-Qj-tAz"/> </connections> </popUpButton> + <pathControl verticalHuggingPriority="750" fixedFrame="YES" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nyE-tZ-v4C"> + <rect key="frame" x="95" y="318" width="210" height="26"/> + <pathCell key="cell" selectable="YES" editable="YES" alignment="left" pathStyle="popUp" id="SPB-Bz-vDM"> + <font key="font" metaFont="system"/> + <url key="url" string="file://localhost/Applications/"/> + </pathCell> + <connections> + <action selector="pathControlSingleClick:" target="-2" id="jyC-qZ-OzW"/> + <outlet property="delegate" destination="-2" id="JXx-Le-f5R"/> + </connections> + </pathControl> </subviews> </customView> </subviews> diff --git a/ui/CertificateWindow.xib b/ui/CertificateWindow.xib new file mode 100644 index 0000000000000000000000000000000000000000..107b06f386478abd307ba9eb316b21821fde203f --- /dev/null +++ b/ui/CertificateWindow.xib @@ -0,0 +1,148 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6751" systemVersion="13F1077" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> + <dependencies> + <deployment identifier="macosx"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6751"/> + </dependencies> + <objects> + <customObject id="-2" userLabel="File's Owner" customClass="CertificateWC"> + <connections> + <outlet property="window" destination="QvC-M9-y7g" id="bos-rN-Jgz"/> + </connections> + </customObject> + <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> + <customObject id="-3" userLabel="Application" customClass="NSObject"/> + <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="QvC-M9-y7g"> + <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/> + <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/> + <rect key="contentRect" x="196" y="240" width="601" height="388"/> + <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1050"/> + <view key="contentView" id="EiT-Mj-1SZ"> + <rect key="frame" x="0.0" y="0.0" width="601" height="388"/> + <autoresizingMask key="autoresizingMask"/> + <subviews> + <scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Oot-0X-jju"> + <rect key="frame" x="20" y="54" width="561" height="135"/> + <clipView key="contentView" misplaced="YES" id="rbk-gh-ueD"> + <rect key="frame" x="1" y="17" width="238" height="117"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="MKo-as-RdY" viewBased="YES" indentationPerLevel="16" outlineTableColumn="UEk-iW-QGt" id="GQE-up-gwL"> + <rect key="frame" x="0.0" y="0.0" width="238" height="117"/> + <autoresizingMask key="autoresizingMask"/> + <size key="intercellSpacing" width="3" height="2"/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> + <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/> + <tableColumns> + <tableColumn width="116" minWidth="40" maxWidth="1000" id="UEk-iW-QGt"> + <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left"> + <font key="font" metaFont="smallSystem"/> + <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> + </tableHeaderCell> + <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="G7a-wY-fOS"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> + <prototypeCellViews> + <tableCellView id="EQf-hj-0zK"> + <rect key="frame" x="1" y="1" width="116" height="17"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qaS-Bh-sxP"> + <rect key="frame" x="0.0" y="0.0" width="100" height="17"/> + <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="Od1-pH-TGO"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + </subviews> + <connections> + <outlet property="textField" destination="qaS-Bh-sxP" id="OtI-5l-esy"/> + </connections> + </tableCellView> + </prototypeCellViews> + </tableColumn> + <tableColumn width="437" minWidth="40" maxWidth="1000" id="09Y-Vz-ax6"> + <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left"> + <font key="font" metaFont="smallSystem"/> + <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/> + </tableHeaderCell> + <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="RMj-fd-OsX"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/> + <prototypeCellViews> + <tableCellView id="ekp-aB-Wuv"> + <rect key="frame" x="120" y="1" width="437" height="17"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="A3p-Z8-Fhy"> + <rect key="frame" x="0.0" y="0.0" width="100" height="17"/> + <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="khh-uZ-Keh"> + <font key="font" metaFont="system"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + </subviews> + <connections> + <outlet property="textField" destination="A3p-Z8-Fhy" id="5Ui-kq-mhW"/> + </connections> + </tableCellView> + </prototypeCellViews> + </tableColumn> + </tableColumns> + </outlineView> + </subviews> + <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + </clipView> + <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="Gim-9c-e4f"> + <rect key="frame" x="1" y="119" width="223" height="15"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="Gdk-7j-Chx"> + <rect key="frame" x="224" y="17" width="15" height="102"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <tableHeaderView key="headerView" id="MKo-as-RdY"> + <rect key="frame" x="0.0" y="0.0" width="238" height="17"/> + <autoresizingMask key="autoresizingMask"/> + </tableHeaderView> + </scrollView> + <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pXw-HJ-Apl"> + <rect key="frame" x="505" y="13" width="82" height="32"/> + <buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="x6p-u4-4Ot"> + <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> + <font key="font" metaFont="system"/> + <string key="keyEquivalent" base64-UTF8="YES"> +DQ +</string> + </buttonCell> + <connections> + <action selector="closePanel:" target="-2" id="0f6-l1-xBw"/> + </connections> + </button> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yvG-8F-MvY"> + <rect key="frame" x="18" y="351" width="177" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Certificate information" id="BrE-Hz-sVE"> + <font key="font" metaFont="systemBold"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + </subviews> + </view> + <connections> + <outlet property="delegate" destination="-2" id="3wn-SC-48D"/> + </connections> + <point key="canvasLocation" x="167.5" y="128"/> + </window> + </objects> +</document> diff --git a/ui/GeneralPrefs.xib b/ui/GeneralPrefs.xib index 83d3111956a3622cceaeb7f978a962d73e272462..362972e214f17211e791d6af98d3b46e395cb008 100644 --- a/ui/GeneralPrefs.xib +++ b/ui/GeneralPrefs.xib @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6751" systemVersion="14C1510" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> <dependencies> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6751"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/> </dependencies> <objects> <customObject id="-2" userLabel="File's Owner" customClass="GeneralPrefsVC"> <connections> + <outlet property="advancedGeneralSettings" destination="VH6-yw-pgr" id="lSD-RY-Puf"/> <outlet property="historyChangedLabel" destination="Gyi-ID-Z3v" id="aoO-Fh-UCQ"/> <outlet property="view" destination="c22-O7-iKe" id="kqH-6G-Ohq"/> </connections> @@ -13,11 +14,11 @@ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/> <customView id="c22-O7-iKe"> - <rect key="frame" x="0.0" y="0.0" width="562" height="249"/> + <rect key="frame" x="0.0" y="0.0" width="899" height="583"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <subviews> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kYQ-jU-skU"> - <rect key="frame" x="57" y="203" width="143" height="17"/> + <rect key="frame" x="57" y="528" width="143" height="17"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Desktop Notifications:" id="xlz-zw-IJI"> <font key="font" metaFont="system"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> @@ -25,7 +26,7 @@ </textFieldCell> </textField> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lIm-zX-RIV"> - <rect key="frame" x="76" y="167" width="124" height="17"/> + <rect key="frame" x="76" y="492" width="124" height="17"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Window behaviour:" id="sog-Ok-Y0N"> <font key="font" metaFont="system"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> @@ -33,7 +34,7 @@ </textFieldCell> </textField> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Oth-up-2k2"> - <rect key="frame" x="204" y="201" width="147" height="18"/> + <rect key="frame" x="204" y="526" width="147" height="18"/> <buttonCell key="cell" type="check" title="Enable Notifications" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="uCL-ye-tsv"> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <font key="font" metaFont="system"/> @@ -43,7 +44,7 @@ </connections> </button> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Is4-pD-LOT"> - <rect key="frame" x="204" y="166" width="294" height="18"/> + <rect key="frame" x="204" y="491" width="294" height="18"/> <buttonCell key="cell" type="check" title="Bring Ring to foreground on incoming calls" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="uYI-hA-JHk"> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <font key="font" metaFont="system"/> @@ -53,7 +54,7 @@ </connections> </button> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fC0-ce-Yiz"> - <rect key="frame" x="38" y="127" width="54" height="17"/> + <rect key="frame" x="38" y="452" width="54" height="17"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="History" id="DSD-yl-noX"> <font key="font" metaFont="systemBold"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> @@ -61,21 +62,21 @@ </textFieldCell> </textField> <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DgD-2y-4g5"> - <rect key="frame" x="56" y="100" width="195" height="18"/> + <rect key="frame" x="56" y="425" width="195" height="18"/> <buttonCell key="cell" type="check" title="Keep my history for at least" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="3Pb-Ec-zl5"> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <font key="font" metaFont="system"/> </buttonCell> </button> <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QmA-ZI-ZL5"> - <rect key="frame" x="302" y="94" width="19" height="27"/> + <rect key="frame" x="302" y="419" width="19" height="27"/> <stepperCell key="cell" continuous="YES" alignment="left" maxValue="100" doubleValue="30" id="30B-YQ-Opa"/> <connections> <binding destination="Sz0-vm-i3t" name="value" keyPath="values.history_limit" id="c2j-mK-kYa"/> </connections> </stepper> <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tHZ-7Q-5iP"> - <rect key="frame" x="257" y="97" width="40" height="22"/> + <rect key="frame" x="257" y="422" width="40" height="22"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="center" title="30" drawsBackground="YES" id="JvS-c4-OeT"> <font key="font" metaFont="system"/> <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> @@ -86,7 +87,7 @@ </connections> </textField> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nah-Jm-ZYB"> - <rect key="frame" x="324" y="101" width="33" height="17"/> + <rect key="frame" x="324" y="426" width="33" height="17"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="days" id="e5K-l0-Nfw"> <font key="font" metaFont="system"/> <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> @@ -94,7 +95,7 @@ </textFieldCell> </textField> <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="U84-le-Iy4"> - <rect key="frame" x="58" y="63" width="122" height="19"/> + <rect key="frame" x="58" y="388" width="122" height="19"/> <buttonCell key="cell" type="roundRect" title="Clear History" bezelStyle="roundedRect" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="cd5-9L-Bbb"> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <font key="font" metaFont="cellTitle"/> @@ -104,15 +105,182 @@ </connections> </button> <textField hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Gyi-ID-Z3v"> - <rect key="frame" x="361" y="97" width="167" height="17"/> + <rect key="frame" x="361" y="422" width="167" height="17"/> <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="(Applied on application restart)" id="OTl-vx-S43"> <font key="font" metaFont="smallSystem"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> </textFieldCell> </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="j3T-5j-Fom"> + <rect key="frame" x="38" y="553" width="94" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Interruptions" id="Rzy-Gh-3wQ"> + <font key="font" metaFont="systemBold"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <customView hidden="YES" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VH6-yw-pgr"> + <rect key="frame" x="20" y="20" width="859" height="361"/> + <subviews> + <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kAy-G5-0gJ"> + <rect key="frame" x="65" y="296" width="104" height="18"/> + <buttonCell key="cell" type="check" title="Using STUN" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="J3i-Kd-ufy"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + </button> + <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sMR-LQ-v1D"> + <rect key="frame" x="166" y="294" width="216" height="22"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Server url..." drawsBackground="YES" id="MzH-CP-Tf3"> + <font key="font" metaFont="system"/> + <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <matrix verticalHuggingPriority="750" fixedFrame="YES" allowsEmptySelection="NO" autorecalculatesCellSize="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vSL-q3-yQ7"> + <rect key="frame" x="67" y="241" width="320" height="38"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + <size key="cellSize" width="216" height="18"/> + <size key="intercellSpacing" width="4" height="2"/> + <buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="JPG-Km-0oR"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <cells> + <column> + <buttonCell type="radio" title="Same as local parameters" imagePosition="left" alignment="left" state="on" tag="1" inset="2" id="jLT-dL-1vJ"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <buttonCell type="radio" title="Set published address and port" imagePosition="left" alignment="left" inset="2" id="qQz-Qg-AcZ"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + </column> + </cells> + </matrix> + <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zjo-JQ-eys"> + <rect key="frame" x="87" y="200" width="187" height="22"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="mWy-F0-AW6"> + <font key="font" metaFont="system"/> + <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8Tf-sb-mk9"> + <rect key="frame" x="316" y="200" width="63" height="22"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="u2t-ps-CAH"> + <font key="font" metaFont="system"/> + <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="asH-TC-Vjh"> + <rect key="frame" x="280" y="203" width="30" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Port" id="mfD-5d-YAO"> + <font key="font" metaFont="system"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Rcn-X4-Z0S"> + <rect key="frame" x="30" y="203" width="55" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Address" id="mDR-e7-DwU"> + <font key="font" metaFont="system"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="v1V-gL-Qea"> + <rect key="frame" x="18" y="324" width="87" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="STUN server" id="5BD-IL-feS"> + <font key="font" metaFont="systemBold"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Tlg-3Y-SwP"> + <rect key="frame" x="564" y="294" width="216" height="22"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="Server url..." drawsBackground="YES" id="5IL-CF-xNE"> + <font key="font" metaFont="system"/> + <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <matrix verticalHuggingPriority="750" fixedFrame="YES" allowsEmptySelection="NO" autorecalculatesCellSize="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Jxr-u3-BHN"> + <rect key="frame" x="465" y="241" width="320" height="38"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + <size key="cellSize" width="216" height="18"/> + <size key="intercellSpacing" width="4" height="2"/> + <buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="5or-Uc-aW4"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <cells> + <column> + <buttonCell type="radio" title="Same as local parameters" imagePosition="left" alignment="left" state="on" tag="1" inset="2" id="AyQ-SW-wnT"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + <buttonCell type="radio" title="Set published address and port" imagePosition="left" alignment="left" inset="2" id="S5X-FW-4tQ"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + </column> + </cells> + </matrix> + <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="orf-tH-Ryt"> + <rect key="frame" x="485" y="200" width="187" height="22"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="DxB-Pf-IB5"> + <font key="font" metaFont="system"/> + <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="L7A-C3-OaS"> + <rect key="frame" x="714" y="200" width="63" height="22"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="qBg-Z7-cPZ"> + <font key="font" metaFont="system"/> + <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cy7-Hu-7rs"> + <rect key="frame" x="678" y="203" width="30" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Port" id="Kby-vh-BDl"> + <font key="font" metaFont="system"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qwZ-OU-p2U"> + <rect key="frame" x="428" y="203" width="55" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Address" id="fsN-LH-LkL"> + <font key="font" metaFont="system"/> + <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IVO-Du-c46"> + <rect key="frame" x="416" y="324" width="88" height="17"/> + <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="TURN server" id="RdV-YO-mtx"> + <font key="font" metaFont="systemBold"/> + <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/> + <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/> + </textFieldCell> + </textField> + <button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="H4W-dK-kUO"> + <rect key="frame" x="463" y="296" width="104" height="18"/> + <buttonCell key="cell" type="check" title="Using TURN" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="jr8-R1-kiL"> + <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> + <font key="font" metaFont="system"/> + </buttonCell> + </button> + </subviews> + </customView> </subviews> - <point key="canvasLocation" x="383" y="124.5"/> + <point key="canvasLocation" x="523.5" y="220.5"/> </customView> <userDefaultsController representsSharedInstance="YES" id="Sz0-vm-i3t"/> </objects>