Commit 3652cfb0 authored by Loïc Siret's avatar Loïc Siret Committed by Alexandre Lision

multi-device: rewording and view improvement

Correct wording concerning multidevice Linking function.
Fix windows size in the account creation wizard.
Addings user hints to better understand Linking function.

Tuleap: #1158
Change-Id: I0d68a68ba61f51200052bb1a4428b82e79848447
parent 4823c951
......@@ -100,8 +100,8 @@ QMetaObject::Connection accountConnection;
}
break;
case Account::ExportOnRingStatus::WRONG_PASSWORD:{
NSLog(@"Export ended with Wrong Password");
[self showError:NSLocalizedString(@"Export ended with Wrong Password", @"Error shown to the user" )];
NSLog(@"Export ended with wrong password");
[self showError:NSLocalizedString(@"The password you entered does not unlock this account", @"Error shown to the user" )];
}
break;
case Account::ExportOnRingStatus::NETWORK_ERROR:{
......@@ -121,18 +121,23 @@ QMetaObject::Connection accountConnection;
}
//TODO: Move String formatting to a dedicated Utility Classes
- (NSAttributedString *)formatPinMessage:(NSString*) pin
- (NSAttributedString*) formatPinMessage:(NSString*) pin
{
NSMutableAttributedString* hereIsThePin = [[NSMutableAttributedString alloc] initWithString:NSLocalizedString(@"Your generated pin:","Title shown to user to concat with Pin")];
NSMutableAttributedString* thePin = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@" %@\n", pin]];
NSMutableAttributedString* thePin = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"\n%@\n", pin]];
[thePin beginEditing];
NSRange range = NSMakeRange(0, [thePin length]);
[thePin addAttribute:NSFontAttributeName value:[NSFont fontWithName:@"Helvetica-Bold" size:12.0] range:range];
[hereIsThePin appendAttributedString:thePin];
NSMutableAttributedString* infos = [[NSMutableAttributedString alloc] initWithString:NSLocalizedString(@"This pin and the account password should be entered on your new device within 5 minutes. On most client, this is done from \"Existing Ring account\" menu. You may generate a new pin at any moment.","Infos on how to use the pin")];
[hereIsThePin appendAttributedString:infos];
[thePin addAttribute:NSFontAttributeName value:[NSFont fontWithName:@"Helvetica-Bold" size:20.0] range:range];
return hereIsThePin;
NSMutableParagraphStyle* mutParaStyle=[[NSMutableParagraphStyle alloc] init];
[mutParaStyle setAlignment:NSCenterTextAlignment];
[thePin addAttributes:[NSDictionary dictionaryWithObject:mutParaStyle forKey:NSParagraphStyleAttributeName] range:range];
NSMutableAttributedString* infos = [[NSMutableAttributedString alloc] initWithString:NSLocalizedString(@"To complete the processs, you need to open Ring on the new device and choose the option \"Link this device to an account\". Your pin is valid for 10 minutes.","Title shown to user to concat with Pin")];
[thePin appendAttributedString:infos];
[thePin endEditing];
return thePin;
}
@end
......@@ -56,6 +56,7 @@
__unsafe_unretained IBOutlet NSProgressIndicator* progressBar;
__unsafe_unretained IBOutlet NSView* errorContainer;
__unsafe_unretained IBOutlet NSPopover* helpContainer;
Account* accountToCreate;
NSTimer* errorTimer;
......@@ -83,6 +84,12 @@
[errorContainer setHidden:YES];
}
- (IBAction)showHelp:(id)sender
{
[helpContainer showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxYEdge];
}
- (IBAction)importRingAccount:(id)sender
{
[self showLoading];
......
......@@ -21,6 +21,7 @@
@protocol RingWizardNewDelegate <NSObject>
- (void)didCreateAccountWithSuccess:(BOOL)success;
- (void)showView:(NSView*)view;
@end
@interface RingWizardNewAccountVC : NSViewController
......@@ -29,5 +30,9 @@
@property (nonatomic, weak)NSString* alias;
@property (nonatomic, weak)NSString* password;
@property (nonatomic, weak)NSString* repeatPassword;
@property (readonly)BOOL isRepeatPasswordValid;
@property (readonly)BOOL isPasswordValid;
- (void)show;
@end
......@@ -49,21 +49,41 @@
@implementation RingWizardNewAccountVC
{
__unsafe_unretained IBOutlet NSView* loadingView;
__unsafe_unretained IBOutlet NSView* creationView;
__unsafe_unretained IBOutlet NSButton* photoView;
__unsafe_unretained IBOutlet NSTextField* nicknameField;
__unsafe_unretained IBOutlet NSSecureTextField* passwordField;
__unsafe_unretained IBOutlet NSProgressIndicator* progressBar;
__unsafe_unretained IBOutlet NSTextField* indicationLabel;
__unsafe_unretained IBOutlet NSSecureTextField* passwordRepeatField;
__unsafe_unretained IBOutlet NSTextField* passwordLabel;
__unsafe_unretained IBOutlet NSTextField* passwordRepeatLabel;
__unsafe_unretained IBOutlet NSImageView* passwordCheck;
__unsafe_unretained IBOutlet NSImageView* passwordRepeatCheck;
__unsafe_unretained IBOutlet NSButton* createButton;
__unsafe_unretained IBOutlet NSButton* cancelButton;
__unsafe_unretained IBOutlet NSProgressIndicator* progressBar;
Account* accountToCreate;
NSTimer* errorTimer;
QMetaObject::Connection stateChanged;
}
NSInteger const NICKNAME_TAG = 1;
NSInteger const NICKNAME_TAG = 1;
//ERROR CODE for textfields validations
NSInteger const ERROR_PASSWORD_TOO_SHORT = -1;
NSInteger const ERROR_REPEAT_MISMATCH = -2;
- (BOOL)produceError:(NSError**)error withCode:(NSInteger)code andMessage:(NSString*)message
{
if (error != NULL){
NSDictionary *errorDetail = @{NSLocalizedDescriptionKey: message};
*error = [NSError errorWithDomain:@"Input" code:code userInfo:errorDetail];
}
return NO;
}
- (void)show
{
......@@ -81,11 +101,25 @@ NSInteger const NICKNAME_TAG = 1;
[photoView setWantsLayer: YES];
photoView.layer.cornerRadius = photoView.frame.size.width / 2;
photoView.layer.masksToBounds = YES;
[self display:creationView];
}
- (void)removeSubviews
{
while ([self.view.subviews count] > 0){
[[self.view.subviews firstObject] removeFromSuperview];
}
}
- (void)display:(NSView *)view
{
[self.delegate showView:view];
}
- (IBAction)editPhoto:(id)sender
{
auto pictureTaker = [IKPictureTaker pictureTaker];
auto pictureTaker = [IKPictureTaker pictureTaker];
[pictureTaker beginPictureTakerSheetForWindow:[self.delegate window]
withDelegate:self
......@@ -104,18 +138,66 @@ NSInteger const NICKNAME_TAG = 1;
[photoView setImage:[NSImage imageNamed:@"default_user_icon"]];
}
#pragma mark - Input validation
- (BOOL)isPasswordValid
{
return self.password.length >= 6;
}
- (BOOL)isRepeatPasswordValid
{
return [self.password isEqualToString:self.repeatPassword];
}
- (BOOL)validateRepeatPassword:(NSError **)error
{
if (!self.isRepeatPasswordValid){
return [self produceError:error
withCode:ERROR_REPEAT_MISMATCH
andMessage:NSLocalizedString(@"Passwords don't match",
@"Indication for user")];
}
return YES;
}
- (BOOL)validatePassword:(NSError **)error
{
if (!self.isRepeatPasswordValid){
return [self produceError:error
withCode:ERROR_PASSWORD_TOO_SHORT
andMessage:NSLocalizedString(@"Password is too short",
@"Indication for user")];
}
return YES;
}
- (BOOL)validateUserInputPassword:(NSError **)error
{
return [self validatePassword:error] && [self validateRepeatPassword:error];
}
- (IBAction)createRingAccount:(id)sender
{
[nicknameField setHidden:YES];
[progressBar setHidden:NO];
[createButton setHidden:YES];
[photoView setHidden:YES];
[passwordField setHidden:YES];
[passwordLabel setHidden:YES];
[cancelButton setHidden:YES];
NSError *error = nil;
if (![self validateUserInputPassword:&error]){
NSAlert* alert = [NSAlert alertWithMessageText:[error localizedDescription]
defaultButton:NSLocalizedString(@"Revise Input",
@"Button title")
alternateButton:nil
otherButton:nil
informativeTextWithFormat:@"%@",error];
[alert beginSheetModalForWindow:passwordField.window
modalDelegate:nil
didEndSelector:NULL
contextInfo:NULL];
return;
}
[self display:loadingView];
[progressBar startAnimation:nil];
[indicationLabel setStringValue:NSLocalizedString(@"Just a moment...",
@"Indication for user")];
if ([self.alias isEqualToString:@""]) {
self.alias = NSLocalizedString(@"Unknown", @"Name used when user leave field empty");
......@@ -139,7 +221,7 @@ NSInteger const NICKNAME_TAG = 1;
profile->save();
}
QModelIndex qIdx = AccountModel::instance().protocolModel()->selectionModel()->currentIndex();
QModelIndex qIdx = AccountModel::instance().protocolModel()->selectionModel()->currentIndex();
[self setCallback];
......@@ -229,4 +311,14 @@ NSInteger const NICKNAME_TAG = 1;
self.alias = alias;
}
+ (NSSet *)keyPathsForValuesAffectingIsPasswordValid
{
return [NSSet setWithObjects:@"password", nil];
}
+ (NSSet *)keyPathsForValuesAffectingIsRepeatPasswordValid
{
return [NSSet setWithObjects:@"password", @"repeatPassword", nil];
}
@end
......@@ -25,7 +25,6 @@
NSOpenSavePanelDelegate, RingWizardChooseDelegate, RingWizardNewDelegate,
RingWizardLinkDelegate>
- (void)showChooseWithCancelButton:(BOOL)showCancel;
- (void)showNewAccountVC;
- (void)showLinkAccountVC;
......
......@@ -41,26 +41,26 @@
IBOutlet RingWizardNewAccountVC* newAccountWC;
IBOutlet RingWizardLinkAccountVC* linkAccountWC;
IBOutlet RingWizardChooseVC* chooseActiontWC;
float initialHeight;
float currentHeight;
BOOL isCancelable;
}
- (instancetype)initWithWindowNibName:(NSString *)windowNibName{
self = [super initWithWindowNibName:windowNibName];
chooseActiontWC = [[RingWizardChooseVC alloc] initWithNibName:@"RingWizardChoose" bundle:nil];
linkAccountWC = [[RingWizardLinkAccountVC alloc] initWithNibName:@"RingWizardLinkAccount" bundle:nil];
newAccountWC = [[RingWizardNewAccountVC alloc] initWithNibName:@"RingWizardChoose" bundle:nil];
return self;
}
- (void)windowDidLoad
{
[super windowDidLoad];
[self.window setBackgroundColor:[NSColor ringGreyHighlight]];
chooseActiontWC = [[RingWizardChooseVC alloc] initWithNibName:@"RingWizardChoose" bundle:nil];
[chooseActiontWC setDelegate:self];
linkAccountWC = [[RingWizardLinkAccountVC alloc] initWithNibName:@"RingWizardLinkAccount" bundle:nil];
[linkAccountWC setDelegate:self];
newAccountWC = [[RingWizardNewAccountVC alloc] initWithNibName:@"RingWizardNewAccount" bundle:nil];
[newAccountWC setDelegate:self];
initialHeight = self.window.frame.size.height;
currentHeight = self.window.frame.size.height;
isCancelable = NO;
[self showView:chooseActiontWC.view];
[self.window setBackgroundColor:[NSColor ringGreyHighlight]];
[self showChooseWithCancelButton:isCancelable];
}
- (void)removeSubviews
......@@ -71,33 +71,31 @@
}
}
#define minHeight 135
- (void)showView: (NSView*) view
#define headerHeight 60
#define minHeight 141
#define defaultMargin 20
- (void)showView:(NSView*)view
{
[self removeSubviews];
NSRect frame = [self.container frame];
frame.size.height = MAX(minHeight, view.bounds.size.height);
float sizeFrame = MAX(minHeight, view.bounds.size.height);
frame.size.height = sizeFrame;
[view setFrame:frame];
[self.container setFrame:frame];
float size = 0;
NSView *container = self.window.contentView;
for (NSView *child in container.subviews){
size += child.frame.size.height;
}
if (currentHeight != size){
currentHeight = size;
NSRect frameWindows = self.window.frame;
frameWindows.size.height = currentHeight;
[self.window setFrame:frameWindows display:YES animate:YES];
}
float size = headerHeight + sizeFrame + defaultMargin;
NSRect frameWindows = self.window.frame;
frameWindows.size.height = size;
[self.window setFrame:frameWindows display:YES animate:YES];
[self.container addSubview:view];
}
- (void)showChooseWithCancelButton:(BOOL)showCancel
{
[self showView: chooseActiontWC.view];
[chooseActiontWC showCancelButton:showCancel];
isCancelable = showCancel;
[self showView:chooseActiontWC.view];
}
- (void)showNewAccountVC
......
/* Class = "NSTextFieldCell"; title = "To use this account on other devices, you must first expose it on Ring. 
This will generate a PIN code that you must enter on the new device to setup the account. 
The PIN is valid for 10 minutes."; ObjectID = "Kzk-fW-9c3"; */
"Kzk-fW-9c3.title" = "To use this account on other devices, you must first expose it on Ring. 
This will generate a PIN code that you must enter on the new device to setup the account. 
The PIN is valid for 10 minutes.";
/* Class = "NSTextFieldCell"; title = "Use the same Ring account on multiple devices. Below is the list of devices linked to this Ring account"; ObjectID = "kMd-iv-UAy"; */
"kMd-iv-UAy.title" = "Use the same Ring account on multiple devices. Below is the list of devices linked to this Ring account";
/* Class = "NSTextFieldCell"; placeholderString = "Status"; ObjectID = "mAD-1Z-aYB"; */
"mAD-1Z-aYB.placeholderString" = "Status";
/* Class = "NSButtonCell"; title = "Link another device to this account"; ObjectID = "uDY-qB-G0I"; */
"uDY-qB-G0I.title" = "Link another device to this account";
/* Class = "NSTextFieldCell"; placeholderString = "Name"; ObjectID = "w62-Jz-2tu"; */
"w62-Jz-2tu.placeholderString" = "Name";
This diff is collapsed.
/* Class = "BindingConnection"; ibShadowedIsNilPlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
/* Class = "CocoaBindingsConnection"; ibShadowedIsNilPlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
"5cX-yS-4Sl.ibShadowedIsNilPlaceholder" = "Password...";
/* Class = "BindingConnection"; ibShadowedMultipleValuesPlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
/* Class = "CocoaBindingsConnection"; ibShadowedMultipleValuesPlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
"5cX-yS-4Sl.ibShadowedMultipleValuesPlaceholder" = "Password...";
/* Class = "BindingConnection"; ibShadowedNoSelectionPlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
/* Class = "CocoaBindingsConnection"; ibShadowedNoSelectionPlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
"5cX-yS-4Sl.ibShadowedNoSelectionPlaceholder" = "Password...";
/* Class = "BindingConnection"; ibShadowedNotApplicablePlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
/* Class = "CocoaBindingsConnection"; ibShadowedNotApplicablePlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
"5cX-yS-4Sl.ibShadowedNotApplicablePlaceholder" = "Password...";
/* Class = "NSTextFieldCell"; title = "To add a new device to your Ring account, you export your account on the Ring. This will generate a pin that must be entered on your new device within 5 minutes of its generation."; ObjectID = "859-10-HEb"; */
"859-10-HEb.title" = "To add a new device to your Ring account, you export your account on the Ring. This will generate a pin that must be entered on your new device within 5 minutes of its generation.";
/* Class = "NSTextFieldCell"; title = "Please provide your Ring account password to start"; ObjectID = "859-10-HEb"; */
"859-10-HEb.title" = "Please provide your Ring account password to start";
/* Class = "NSWindow"; title = "Window"; ObjectID = "QvC-M9-y7g"; */
"QvC-M9-y7g.title" = "Window";
/* Class = "NSTextFieldCell"; placeholderString = "error label"; ObjectID = "Ua9-fG-r6k"; */
"Ua9-fG-r6k.placeholderString" = "error label";
/* Class = "NSButtonCell"; title = "OK"; ObjectID = "VN1-A3-RIh"; */
"VN1-A3-RIh.title" = "OK";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "cSU-aD-OwX"; */
"cSU-aD-OwX.title" = "Cancel";
/* Class = "NSButtonCell"; title = "OK"; ObjectID = "cre-OL-lZy"; */
"cre-OL-lZy.title" = "OK";
/* Class = "NSButtonCell"; title = "OK"; ObjectID = "dfD-AK-f3R"; */
"dfD-AK-f3R.title" = "OK";
/* Class = "NSTextFieldCell"; placeholderString = "error label"; ObjectID = "e7n-Ev-bK7"; */
"e7n-Ev-bK7.placeholderString" = "error label";
......@@ -38,8 +35,8 @@
/* Class = "NSTextFieldCell"; title = "Password"; ObjectID = "vwh-K9-3O9"; */
"vwh-K9-3O9.title" = "Password";
/* Class = "NSTextFieldCell"; title = "Adding new device"; ObjectID = "wmv-sA-Mlh"; */
"wmv-sA-Mlh.title" = "Adding new device";
/* Class = "NSTextFieldCell"; title = "Link another device to this account"; ObjectID = "wmv-sA-Mlh"; */
"wmv-sA-Mlh.title" = "Link another device to this account";
/* Class = "NSSecureTextFieldCell"; placeholderString = "Password..."; ObjectID = "xqz-Uz-hqU"; */
"xqz-Uz-hqU.placeholderString" = "Password...";
This diff is collapsed.
/* Class = "CocoaBindingsConnection"; ibShadowedIsNilPlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
"5cX-yS-4Sl.ibShadowedIsNilPlaceholder" = "Password...";
/* Class = "CocoaBindingsConnection"; ibShadowedMultipleValuesPlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
"5cX-yS-4Sl.ibShadowedMultipleValuesPlaceholder" = "Password...";
/* Class = "CocoaBindingsConnection"; ibShadowedNoSelectionPlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
"5cX-yS-4Sl.ibShadowedNoSelectionPlaceholder" = "Password...";
/* Class = "CocoaBindingsConnection"; ibShadowedNotApplicablePlaceholder = "Password..."; ObjectID = "5cX-yS-4Sl"; */
"5cX-yS-4Sl.ibShadowedNotApplicablePlaceholder" = "Password...";
/* Class = "NSTextFieldCell"; title = "Where"; ObjectID = "9h8-GU-av4"; */
"9h8-GU-av4.title" = "Where";
/* Class = "NSTextFieldCell"; title = "Restore a local copy of your account. You need to enter the password you used to secure this archive."; ObjectID = "KYZ-TW-44Y"; */
"KYZ-TW-44Y.title" = "Restore a local copy of your account. You need to enter the password you used to secure this archive.";
/* Class = "NSWindow"; title = "Window"; ObjectID = "QvC-M9-y7g"; */
"QvC-M9-y7g.title" = "Window";
/* Class = "NSButtonCell"; title = "OK"; ObjectID = "VN1-A3-RIh"; */
"VN1-A3-RIh.title" = "OK";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "cSU-aD-OwX"; */
"cSU-aD-OwX.title" = "Cancel";
/* Class = "NSTextFieldCell"; title = "An error occured during the restoration"; ObjectID = "e7n-Ev-bK7"; */
"e7n-Ev-bK7.title" = "An error occured during the restoration";
/* Class = "NSButtonCell"; title = "OK"; ObjectID = "rW5-Il-5YD"; */
"rW5-Il-5YD.title" = "OK";
/* Class = "NSTextFieldCell"; title = "Password"; ObjectID = "vwh-K9-3O9"; */
"vwh-K9-3O9.title" = "Password";
/* Class = "NSSecureTextFieldCell"; placeholderString = "Password..."; ObjectID = "xqz-Uz-hqU"; */
"xqz-Uz-hqU.placeholderString" = "Password...";
/* Class = "NSTextFieldCell"; title = "Choose your own certificates"; ObjectID = "4ls-Yq-mDp"; */
"4ls-Yq-mDp.title" = "Choose your own certificates";
/* Class = "NSTextFieldCell"; placeholderString = "'Unknown' if empty..."; ObjectID = "5Z7-Wi-530"; */
"5Z7-Wi-530.placeholderString" = "'Unknown' if empty...";
/* Class = "NSTextFieldCell"; title = "Advanced security (optional)"; ObjectID = "Gnn-K9-PTH"; */
"Gnn-K9-PTH.title" = "Advanced security (optional)";
/* Class = "NSSecureTextFieldCell"; placeholderString = "Password..."; ObjectID = "Hsc-U9-2RV"; */
"Hsc-U9-2RV.placeholderString" = "Password...";
/* Class = "NSButtonCell"; title = "Share"; ObjectID = "Kwr-LJ-K8C"; */
"Kwr-LJ-K8C.title" = "Share";
/* Class = "NSTextFieldCell"; title = "Certificate Authority list"; ObjectID = "SpA-zX-ytE"; */
"SpA-zX-ytE.title" = "Certificate Authority list";
/* Class = "NSTextFieldCell"; title = "User Certificate"; ObjectID = "V1U-ew-Ge2"; */
"V1U-ew-Ge2.title" = "User Certificate";
/* Class = "NSButton"; ibShadowedToolTip = "Choose custom certificates"; ObjectID = "aZl-bU-psB"; */
"aZl-bU-psB.ibShadowedToolTip" = "Choose custom certificates";
/* Class = "NSTextFieldCell"; title = "Choose your username"; ObjectID = "meL-TZ-VQO"; */
"meL-TZ-VQO.title" = "Choose your username";
/* Class = "NSTextFieldCell"; title = "Private key"; ObjectID = "poP-JD-MDa"; */
"poP-JD-MDa.title" = "Private key";
/* Class = "NSTextFieldCell"; title = "Welcome to Ring"; ObjectID = "uqu-uh-Wao"; */
"uqu-uh-Wao.title" = "Welcome to Ring";
/* Class = "NSButtonCell"; title = "Next"; ObjectID = "wDw-Ut-RUm"; */
"wDw-Ut-RUm.title" = "Next";
/* Class = "NSTextFieldCell"; title = "Welcome to Ring"; ObjectID = "2mM-yx-BfM"; */
"2mM-yx-BfM.title" = "Welcome to Ring";
......@@ -6,25 +6,28 @@
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="RingWizardWC">
<connections>
<outlet property="chooseActiontWC" destination="TGh-Qf-0hi" id="Q7C-b1-FN1"/>
<outlet property="container" destination="T98-k1-e6X" id="ucm-VA-quB"/>
<outlet property="linkAccountWC" destination="Hlf-uv-gt6" id="GFL-I8-wsd"/>
<outlet property="newAccountWC" destination="M2H-0Y-6UW" id="w3w-Wd-TvD"/>
<outlet property="window" destination="4LP-GX-BkH" id="Bgr-iZ-rif"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="4LP-GX-BkH">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" texturedBackground="YES"/>
<rect key="contentRect" x="599" y="440" width="509" height="179"/>
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" texturedBackground="YES"/>
<rect key="contentRect" x="599" y="440" width="509" height="318"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
<view key="contentView" id="Wgr-xH-z0G">
<rect key="frame" x="0.0" y="0.0" width="509" height="179"/>
<rect key="frame" x="0.0" y="0.0" width="509" height="318"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="9ok-Ga-Q8u" userLabel="header">
<rect key="frame" x="0.0" y="134" width="509" height="45"/>
<rect key="frame" x="0.0" y="258" width="509" height="60"/>
<subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="EpY-Kl-fNa">
<rect key="frame" x="113" y="8" width="229" height="36"/>
<rect key="frame" x="113" y="12" width="229" height="36"/>
<textFieldCell key="cell" controlSize="mini" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Welcome to Ring" id="2mM-yx-BfM">
<font key="font" metaFont="system" size="30"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
......@@ -32,24 +35,24 @@
</textFieldCell>
</textField>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="P7h-tj-klA">
<rect key="frame" x="348" y="0.0" width="45" height="45"/>
<rect key="frame" x="348" y="7" width="45" height="46"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="XMY-BN-Ymg"/>
<constraint firstAttribute="height" constant="45" id="i8K-g8-EfQ"/>
<constraint firstAttribute="height" constant="46" id="i8K-g8-EfQ"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="FCFFD2E7-2FE4-4DA1-8E12-AA0B2702EF69" id="XSN-TP-V1z"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="AFEB12E4-CFAC-4035-A92B-8ED00981BEF7" id="XSN-TP-V1z"/>
</imageView>
</subviews>
<constraints>
<constraint firstItem="EpY-Kl-fNa" firstAttribute="top" secondItem="9ok-Ga-Q8u" secondAttribute="top" constant="1" id="DAz-Kg-Cak"/>
<constraint firstItem="P7h-tj-klA" firstAttribute="centerY" secondItem="9ok-Ga-Q8u" secondAttribute="centerY" id="82u-TT-jdV"/>
<constraint firstItem="EpY-Kl-fNa" firstAttribute="leading" secondItem="9ok-Ga-Q8u" secondAttribute="leading" constant="115" id="Kv8-F4-uJL"/>
<constraint firstItem="P7h-tj-klA" firstAttribute="top" secondItem="9ok-Ga-Q8u" secondAttribute="top" id="bDu-ca-izv"/>
<constraint firstAttribute="height" constant="45" id="bnc-Ui-EBV"/>
<constraint firstAttribute="height" constant="60" id="bnc-Ui-EBV"/>
<constraint firstItem="P7h-tj-klA" firstAttribute="leading" secondItem="EpY-Kl-fNa" secondAttribute="trailing" constant="8" symbolic="YES" id="ckf-Wb-pkP"/>
<constraint firstItem="EpY-Kl-fNa" firstAttribute="centerY" secondItem="9ok-Ga-Q8u" secondAttribute="centerY" id="i1N-4g-yOy"/>
</constraints>
</customView>
<view translatesAutoresizingMaskIntoConstraints="NO" id="T98-k1-e6X">
<rect key="frame" x="0.0" y="0.0" width="509" height="134"/>
<rect key="frame" x="0.0" y="0.0" width="509" height="258"/>
</view>
</subviews>
<constraints>
......@@ -65,11 +68,14 @@
<connections>
<outlet property="delegate" destination="-2" id="cKX-Z2-yDq"/>
</connections>
<point key="canvasLocation" x="447.5" y="-558.5"/>
<point key="canvasLocation" x="447.5" y="-489"/>
</window>
<viewController nibName="RingWizardChoose" id="TGh-Qf-0hi" customClass="RingWizardChooseVC"/>
<viewController nibName="RingWizardLinkAccount" id="Hlf-uv-gt6" customClass="RingWizardLinkAccountVC"/>
<viewController nibName="RingWizardNewAccount" id="M2H-0Y-6UW" customClass="RingWizardNewAccountVC"/>
</objects>
<resources>
<image name="FCFFD2E7-2FE4-4DA1-8E12-AA0B2702EF69" width="92.160003662109375" height="85.919998168945312">
<image name="AFEB12E4-CFAC-4035-A92B-8ED00981BEF7" width="92.160003662109375" height="85.919998168945312">
<mutableData key="keyedArchiveRepresentation">
YnBsaXN0MDDUAQIDBAUGOjtYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK0HCBEW
GxwgISgrLjQ3VSRudWxs1AkKCwwNDg8QViRjbGFzc1xOU0ltYWdlRmxhZ3NWTlNSZXBzV05TQ29sb3KA
......
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "YJ3-7G-cU1"; */
"YJ3-7G-cU1.title" = "Cancel";
/* Class = "NSButtonCell"; title = "Link this device to an account"; ObjectID = "Z9K-mD-ucr"; */
"Z9K-mD-ucr.title" = "Link this device to an account";
/* Class = "NSButtonCell"; title = "New Ring account"; ObjectID = "k1T-a7-yZD"; */
"k1T-a7-yZD.title" = "New Ring account";
This diff is collapsed.
/* Class = "NSTextFieldCell"; title = "Enter your pin"; ObjectID = "3ik-rY-Gig"; */
"3ik-rY-Gig.title" = "Enter your pin";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "4ev-TK-8Yt"; */
"4ev-TK-8Yt.title" = "Cancel";
/* Class = "NSButtonCell"; title = "Next"; ObjectID = "8b8-bt-eAj"; */
"8b8-bt-eAj.title" = "Next";
/* Class = "NSTextFieldCell"; title = "An error occured, please check your password and pin."; ObjectID = "DyG-SJ-U1Q"; */
"DyG-SJ-U1Q.title" = "An error occured, please check your password and pin.";
/* Class = "NSTextFieldCell"; title = "Just a moment..."; ObjectID = "M4C-GY-B6t"; */
"M4C-GY-B6t.title" = "Just a moment...";
/* Class = "NSTextFieldCell"; title = "Enter your Ring account password"; ObjectID = "U2K-fu-INc"; */
"U2K-fu-INc.title" = "Enter your Ring account password";
/* Class = "NSTextFieldCell"; title = "To link this device to another account, you first need to obtain a pin code. 
To generate the pin code, go to the account management setting of a previous device, choose the Ring Account to use and select \"Link another device to this account\". 
You will get the necessary pin to complete this form.
The Pin is only valid for 10 minutes."; ObjectID = "dJ0-Rk-Rqr"; */
"dJ0-Rk-Rqr.title" = "To link this device to another account, you first need to obtain a pin code. 
To generate the pin code, go to the account management setting of a previous device, choose the Ring Account to use and select \"Link another device to this account\". 
You will get the necessary pin to complete this form.
The Pin is only valid for 10 minutes.";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "t12-O0-kcf"; */
"t12-O0-kcf.title" = "Cancel";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "uhy-DE-TKw"; */
"uhy-DE-TKw.title" = "Cancel";
This diff is collapsed.
/* Class = "NSTextFieldCell"; placeholderString = "Mandatory*"; ObjectID = "1TO-Ov-S8j"; */
"1TO-Ov-S8j.placeholderString" = "Mandatory*";
/* Class = "NSTextFieldCell"; title = "Choose your password"; ObjectID = "B6x-jj-48R"; */
"B6x-jj-48R.title" = "Choose your password";
/* Class = "NSTextFieldCell"; placeholderString = "Mandatory*"; ObjectID = "BCg-5V-Ek4"; */
"BCg-5V-Ek4.placeholderString" = "Mandatory*";
/* Class = "NSTextFieldCell"; title = "Just a moment..."; ObjectID = "YIN-YL-JBs"; */
"YIN-YL-JBs.title" = "Just a moment...";
/* Class = "NSTextFieldCell"; placeholderString = "'Unknown' if empty..."; ObjectID = "bdC-Uc-Qhs"; */
"bdC-Uc-Qhs.placeholderString" = "'Unknown' if empty...";
/* Class = "NSTextFieldCell"; title = "Repeat your password"; ObjectID = "fEY-eO-HwI"; */
"fEY-eO-HwI.title" = "Repeat your password";
/* Class = "NSTextFieldCell"; title = "Choose your username"; ObjectID = "tzf-88-Yn5"; */
"tzf-88-Yn5.title" = "Choose your username";
/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "v7f-52-GJA"; */
"v7f-52-GJA.title" = "Cancel";
/* Class = "NSButtonCell"; title = "Next"; ObjectID = "zfA-n9-V4X"; */
"zfA-n9-V4X.title" = "Next";
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment