Deprecate iCloud and remove hardcoded absolute paths from lib dirs.
This commit is contained in:
parent
adc79d331b
commit
cf52221175
BIN
External/iOS/Crashlytics.framework/submit
vendored
BIN
External/iOS/Crashlytics.framework/submit
vendored
Binary file not shown.
@ -14,7 +14,6 @@
|
|||||||
@property(nonatomic, retain) NSNumber *rememberLogin;
|
@property(nonatomic, retain) NSNumber *rememberLogin;
|
||||||
@property(nonatomic, retain) NSNumber *hidePasswords;
|
@property(nonatomic, retain) NSNumber *hidePasswords;
|
||||||
|
|
||||||
@property(nonatomic, retain) NSNumber *iCloudDecided;
|
|
||||||
@property(nonatomic, retain) NSNumber *checkInconsistency;
|
@property(nonatomic, retain) NSNumber *checkInconsistency;
|
||||||
|
|
||||||
@property(nonatomic, strong) NSNumber *siteAttacker;
|
@property(nonatomic, strong) NSNumber *siteAttacker;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
@implementation MPConfig
|
@implementation MPConfig
|
||||||
|
|
||||||
@dynamic sendInfo, rememberLogin, iCloudDecided, checkInconsistency, hidePasswords, siteAttacker;
|
@dynamic sendInfo, rememberLogin, checkInconsistency, hidePasswords, siteAttacker;
|
||||||
|
|
||||||
- (id)init {
|
- (id)init {
|
||||||
|
|
||||||
@ -23,7 +23,6 @@
|
|||||||
NSStringFromSelector( @selector( sendInfo ) ) : @NO,
|
NSStringFromSelector( @selector( sendInfo ) ) : @NO,
|
||||||
NSStringFromSelector( @selector( rememberLogin ) ) : @NO,
|
NSStringFromSelector( @selector( rememberLogin ) ) : @NO,
|
||||||
NSStringFromSelector( @selector( hidePasswords ) ) : @NO,
|
NSStringFromSelector( @selector( hidePasswords ) ) : @NO,
|
||||||
NSStringFromSelector( @selector( iCloudDecided ) ) : @NO,
|
|
||||||
NSStringFromSelector( @selector( checkInconsistency ) ) : @NO,
|
NSStringFromSelector( @selector( checkInconsistency ) ) : @NO,
|
||||||
NSStringFromSelector( @selector( siteAttacker ) ) : @(MPAttacker1),
|
NSStringFromSelector( @selector( siteAttacker ) ) : @(MPAttacker1),
|
||||||
}];
|
}];
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
|
|
||||||
@interface MPSetupViewController : UIViewController
|
@interface MPSetupViewController : UIViewController
|
||||||
|
|
||||||
@property(weak, nonatomic) IBOutlet UISwitch *cloudSwitch;
|
|
||||||
@property(weak, nonatomic) IBOutlet UISwitch *rememberLoginSwitch;
|
@property(weak, nonatomic) IBOutlet UISwitch *rememberLoginSwitch;
|
||||||
|
|
||||||
- (IBAction)close:(UIBarButtonItem *)sender;
|
- (IBAction)close:(UIBarButtonItem *)sender;
|
||||||
|
@ -26,10 +26,6 @@
|
|||||||
|
|
||||||
[super viewDidAppear:animated];
|
[super viewDidAppear:animated];
|
||||||
|
|
||||||
self.cloudSwitch.enabled = [[MPAppDelegate_Shared get].storeManager cloudAvailable];
|
|
||||||
|
|
||||||
if (self.cloudSwitch && [[MPiOSConfig get].iCloudDecided boolValue])
|
|
||||||
self.cloudSwitch.on = [[MPiOSConfig get].iCloudEnabled boolValue];
|
|
||||||
if (self.rememberLoginSwitch)
|
if (self.rememberLoginSwitch)
|
||||||
self.rememberLoginSwitch.on = [[MPiOSConfig get].rememberLogin boolValue];
|
self.rememberLoginSwitch.on = [[MPiOSConfig get].rememberLogin boolValue];
|
||||||
}
|
}
|
||||||
@ -38,10 +34,6 @@
|
|||||||
|
|
||||||
[super viewWillDisappear:animated];
|
[super viewWillDisappear:animated];
|
||||||
|
|
||||||
if (self.cloudSwitch) {
|
|
||||||
[MPiOSConfig get].iCloudDecided = @YES;
|
|
||||||
[MPiOSConfig get].iCloudEnabled = @(self.cloudSwitch.on);
|
|
||||||
}
|
|
||||||
if (self.rememberLoginSwitch)
|
if (self.rememberLoginSwitch)
|
||||||
[MPiOSConfig get].rememberLogin = @(self.rememberLoginSwitch.on);
|
[MPiOSConfig get].rememberLogin = @(self.rememberLoginSwitch.on);
|
||||||
}
|
}
|
||||||
|
@ -72,16 +72,16 @@
|
|||||||
@try {
|
@try {
|
||||||
[[NSNotificationCenter defaultCenter] addObserverForName:MPCheckConfigNotification object:nil queue:[NSOperationQueue mainQueue]
|
[[NSNotificationCenter defaultCenter] addObserverForName:MPCheckConfigNotification object:nil queue:[NSOperationQueue mainQueue]
|
||||||
usingBlock:^(NSNotification *note) {
|
usingBlock:^(NSNotification *note) {
|
||||||
[self updateConfigKey:note.object];
|
[self updateConfigKey:note.object];
|
||||||
}];
|
}];
|
||||||
[[NSNotificationCenter defaultCenter] addObserverForName:kIASKAppSettingChanged object:nil queue:nil usingBlock:
|
[[NSNotificationCenter defaultCenter] addObserverForName:kIASKAppSettingChanged object:nil queue:nil usingBlock:
|
||||||
^(NSNotification *note) {
|
^(NSNotification *note) {
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:MPCheckConfigNotification object:note.object];
|
[[NSNotificationCenter defaultCenter] postNotificationName:MPCheckConfigNotification object:note.object];
|
||||||
}];
|
}];
|
||||||
[[NSNotificationCenter defaultCenter] addObserverForName:NSUserDefaultsDidChangeNotification object:nil queue:nil usingBlock:
|
[[NSNotificationCenter defaultCenter] addObserverForName:NSUserDefaultsDidChangeNotification object:nil queue:nil usingBlock:
|
||||||
^(NSNotification *note) {
|
^(NSNotification *note) {
|
||||||
[[NSNotificationCenter defaultCenter] postNotificationName:MPCheckConfigNotification object:nil];
|
[[NSNotificationCenter defaultCenter] postNotificationName:MPCheckConfigNotification object:nil];
|
||||||
}];
|
}];
|
||||||
|
|
||||||
#ifdef ADHOC
|
#ifdef ADHOC
|
||||||
[PearlAlert showAlertWithTitle:@"Welcome, tester!" message:
|
[PearlAlert showAlertWithTitle:@"Welcome, tester!" message:
|
||||||
@ -109,26 +109,26 @@
|
|||||||
|
|
||||||
[[NSNotificationCenter defaultCenter] addObserverForName:MPFoundInconsistenciesNotification object:nil queue:nil usingBlock:
|
[[NSNotificationCenter defaultCenter] addObserverForName:MPFoundInconsistenciesNotification object:nil queue:nil usingBlock:
|
||||||
^(NSNotification *note) {
|
^(NSNotification *note) {
|
||||||
switch ((MPFixableResult)[note.userInfo[MPInconsistenciesFixResultUserKey] unsignedIntegerValue]) {
|
switch ((MPFixableResult)[note.userInfo[MPInconsistenciesFixResultUserKey] unsignedIntegerValue]) {
|
||||||
|
|
||||||
case MPFixableResultNoProblems:
|
case MPFixableResultNoProblems:
|
||||||
break;
|
break;
|
||||||
case MPFixableResultProblemsFixed:
|
case MPFixableResultProblemsFixed:
|
||||||
[PearlAlert showAlertWithTitle:@"Inconsistencies Fixed" message:
|
[PearlAlert showAlertWithTitle:@"Inconsistencies Fixed" message:
|
||||||
@"Some inconsistencies were detected in your sites.\n"
|
@"Some inconsistencies were detected in your sites.\n"
|
||||||
@"All issues were fixed."
|
@"All issues were fixed."
|
||||||
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
||||||
tappedButtonBlock:nil cancelTitle:[PearlStrings get].commonButtonOkay otherTitles:nil];
|
tappedButtonBlock:nil cancelTitle:[PearlStrings get].commonButtonOkay otherTitles:nil];
|
||||||
break;
|
break;
|
||||||
case MPFixableResultProblemsNotFixed:
|
case MPFixableResultProblemsNotFixed:
|
||||||
[PearlAlert showAlertWithTitle:@"Inconsistencies Found" message:
|
[PearlAlert showAlertWithTitle:@"Inconsistencies Found" message:
|
||||||
@"Some inconsistencies were detected in your sites.\n"
|
@"Some inconsistencies were detected in your sites.\n"
|
||||||
@"Not all issues could be fixed. Try signing in to each user or checking the logs."
|
@"Not all issues could be fixed. Try signing in to each user or checking the logs."
|
||||||
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
||||||
tappedButtonBlock:nil cancelTitle:[PearlStrings get].commonButtonOkay otherTitles:nil];
|
tappedButtonBlock:nil cancelTitle:[PearlStrings get].commonButtonOkay otherTitles:nil];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
|
|
||||||
PearlMainQueue( ^{
|
PearlMainQueue( ^{
|
||||||
if ([[MPiOSConfig get].showSetup boolValue])
|
if ([[MPiOSConfig get].showSetup boolValue])
|
||||||
@ -186,16 +186,16 @@
|
|||||||
@"Enter that master password to unlock the exported data.", userName )
|
@"Enter that master password to unlock the exported data.", userName )
|
||||||
viewStyle:UIAlertViewStyleSecureTextInput
|
viewStyle:UIAlertViewStyleSecureTextInput
|
||||||
initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) {
|
initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) {
|
||||||
@try {
|
@try {
|
||||||
if (buttonIndex_ == [alert_ cancelButtonIndex])
|
if (buttonIndex_ == [alert_ cancelButtonIndex])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
masterPassword = [alert_ textFieldAtIndex:0].text;
|
masterPassword = [alert_ textFieldAtIndex:0].text;
|
||||||
}
|
}
|
||||||
@finally {
|
@finally {
|
||||||
dispatch_group_leave( importPasswordGroup );
|
dispatch_group_leave( importPasswordGroup );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:@"Unlock Import", nil];
|
cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:@"Unlock Import", nil];
|
||||||
} );
|
} );
|
||||||
dispatch_group_wait( importPasswordGroup, DISPATCH_TIME_FOREVER );
|
dispatch_group_wait( importPasswordGroup, DISPATCH_TIME_FOREVER );
|
||||||
@ -209,19 +209,19 @@
|
|||||||
dispatch_async( dispatch_get_main_queue(), ^{
|
dispatch_async( dispatch_get_main_queue(), ^{
|
||||||
[PearlAlert showAlertWithTitle:strf( @"Master Password for\n%@", userName )
|
[PearlAlert showAlertWithTitle:strf( @"Master Password for\n%@", userName )
|
||||||
message:strf( @"Imports %lu sites, overwriting %lu.",
|
message:strf( @"Imports %lu sites, overwriting %lu.",
|
||||||
(unsigned long)importCount, (unsigned long)deleteCount )
|
(unsigned long)importCount, (unsigned long)deleteCount )
|
||||||
viewStyle:UIAlertViewStyleSecureTextInput
|
viewStyle:UIAlertViewStyleSecureTextInput
|
||||||
initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) {
|
initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) {
|
||||||
@try {
|
@try {
|
||||||
if (buttonIndex_ == [alert_ cancelButtonIndex])
|
if (buttonIndex_ == [alert_ cancelButtonIndex])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
masterPassword = [alert_ textFieldAtIndex:0].text;
|
masterPassword = [alert_ textFieldAtIndex:0].text;
|
||||||
}
|
}
|
||||||
@finally {
|
@finally {
|
||||||
dispatch_group_leave( userPasswordGroup );
|
dispatch_group_leave( userPasswordGroup );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:@"Import", nil];
|
cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:@"Import", nil];
|
||||||
} );
|
} );
|
||||||
dispatch_group_wait( userPasswordGroup, DISPATCH_TIME_FOREVER );
|
dispatch_group_wait( userPasswordGroup, DISPATCH_TIME_FOREVER );
|
||||||
@ -303,8 +303,8 @@
|
|||||||
@"and then include log files in your message."
|
@"and then include log files in your message."
|
||||||
viewStyle:UIAlertViewStyleDefault
|
viewStyle:UIAlertViewStyleDefault
|
||||||
initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) {
|
initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) {
|
||||||
[self openFeedbackWithLogs:(buttonIndex_ == [alert_ firstOtherButtonIndex]) forVC:viewController];
|
[self openFeedbackWithLogs:(buttonIndex_ == [alert_ firstOtherButtonIndex]) forVC:viewController];
|
||||||
} cancelTitle:nil otherTitles:@"Include Logs", @"No Logs", nil];
|
} cancelTitle:nil otherTitles:@"Include Logs", @"No Logs", nil];
|
||||||
else
|
else
|
||||||
[self openFeedbackWithLogs:NO forVC:viewController];
|
[self openFeedbackWithLogs:NO forVC:viewController];
|
||||||
}
|
}
|
||||||
@ -318,14 +318,14 @@
|
|||||||
|
|
||||||
[[[PearlEMail alloc] initForEMailTo:@"Master Password Development <masterpassword@lyndir.com>"
|
[[[PearlEMail alloc] initForEMailTo:@"Master Password Development <masterpassword@lyndir.com>"
|
||||||
subject:strf( @"Feedback for Master Password [%@]",
|
subject:strf( @"Feedback for Master Password [%@]",
|
||||||
[[PearlKeyChain deviceIdentifier] stringByDeletingMatchesOf:@"-.*"] )
|
[[PearlKeyChain deviceIdentifier] stringByDeletingMatchesOf:@"-.*"] )
|
||||||
body:strf( @"\n\n\n"
|
body:strf( @"\n\n\n"
|
||||||
@"--\n"
|
@"--\n"
|
||||||
@"%@"
|
@"%@"
|
||||||
@"Master Password %@, build %@",
|
@"Master Password %@, build %@",
|
||||||
userName? ([userName stringByAppendingString:@"\n"]): @"",
|
userName? ([userName stringByAppendingString:@"\n"]): @"",
|
||||||
[PearlInfoPlist get].CFBundleShortVersionString,
|
[PearlInfoPlist get].CFBundleShortVersionString,
|
||||||
[PearlInfoPlist get].CFBundleVersion )
|
[PearlInfoPlist get].CFBundleVersion )
|
||||||
|
|
||||||
attachments:(logs
|
attachments:(logs
|
||||||
? [[PearlEMailAttachment alloc]
|
? [[PearlEMailAttachment alloc]
|
||||||
@ -351,24 +351,25 @@
|
|||||||
@"restore your list of sites."
|
@"restore your list of sites."
|
||||||
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
||||||
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
||||||
if (buttonIndex != [alert cancelButtonIndex])
|
if (buttonIndex != [alert cancelButtonIndex])
|
||||||
[PearlAlert showAlertWithTitle:@"Show Passwords?"
|
[PearlAlert showAlertWithTitle:@"Show Passwords?"
|
||||||
message:@"Would you like to make all your passwords "
|
message:@"Would you like to make all your passwords "
|
||||||
@"visible in the export file?\n\n"
|
@"visible in the export file?\n\n"
|
||||||
@"A safe export will include all sites "
|
@"A safe export will include all sites "
|
||||||
@"but make their passwords invisible.\n"
|
@"but make their passwords invisible.\n"
|
||||||
@"It is great as a backup and remains "
|
@"It is great as a backup and remains "
|
||||||
@"safe when fallen in the wrong hands."
|
@"safe when fallen in the wrong hands."
|
||||||
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
||||||
tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) {
|
tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) {
|
||||||
if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 0)
|
if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 0)
|
||||||
// Safe Export
|
// Safe Export
|
||||||
[self showExportRevealPasswords:NO forVC:viewController];
|
[self showExportRevealPasswords:NO forVC:viewController];
|
||||||
if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 1)
|
if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 1)
|
||||||
// Show Passwords
|
// Show Passwords
|
||||||
[self showExportRevealPasswords:YES forVC:viewController];
|
[self showExportRevealPasswords:YES forVC:viewController];
|
||||||
} cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:@"Safe Export", @"Show Passwords", nil];
|
} cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:@"Safe Export", @"Show Passwords",
|
||||||
} cancelTitle:@"Cancel" otherTitles:@"Export Sites", nil];
|
nil];
|
||||||
|
} cancelTitle:@"Cancel" otherTitles:@"Export Sites", nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showExportRevealPasswords:(BOOL)revealPasswords forVC:(UIViewController *)viewController {
|
- (void)showExportRevealPasswords:(BOOL)revealPasswords forVC:(UIViewController *)viewController {
|
||||||
@ -389,18 +390,18 @@
|
|||||||
|
|
||||||
if (revealPasswords)
|
if (revealPasswords)
|
||||||
message = strf( @"Export of Master Password sites with passwords included.\n\n"
|
message = strf( @"Export of Master Password sites with passwords included.\n\n"
|
||||||
@"REMINDER: Make sure nobody else sees this file! Passwords are visible!\n\n\n"
|
@"REMINDER: Make sure nobody else sees this file! Passwords are visible!\n\n\n"
|
||||||
@"--\n"
|
@"--\n"
|
||||||
@"%@\n"
|
@"%@\n"
|
||||||
@"Master Password %@, build %@",
|
@"Master Password %@, build %@",
|
||||||
[self activeUserForMainThread].name,
|
[self activeUserForMainThread].name,
|
||||||
[PearlInfoPlist get].CFBundleShortVersionString,
|
[PearlInfoPlist get].CFBundleShortVersionString,
|
||||||
[PearlInfoPlist get].CFBundleVersion );
|
[PearlInfoPlist get].CFBundleVersion );
|
||||||
else
|
else
|
||||||
message = strf( @"Backup of Master Password sites.\n\n\n"
|
message = strf( @"Backup of Master Password sites.\n\n\n"
|
||||||
@"--\n"
|
@"--\n"
|
||||||
@"%@\n"
|
@"%@\n"
|
||||||
@"Master Password %@, build %@",
|
@"Master Password %@, build %@",
|
||||||
[self activeUserForMainThread].name,
|
[self activeUserForMainThread].name,
|
||||||
[PearlInfoPlist get].CFBundleShortVersionString,
|
[PearlInfoPlist get].CFBundleShortVersionString,
|
||||||
[PearlInfoPlist get].CFBundleVersion );
|
[PearlInfoPlist get].CFBundleVersion );
|
||||||
@ -425,22 +426,22 @@
|
|||||||
@"Changing the master password back to the old one will cause your passwords to revert as well."
|
@"Changing the master password back to the old one will cause your passwords to revert as well."
|
||||||
viewStyle:UIAlertViewStyleDefault
|
viewStyle:UIAlertViewStyleDefault
|
||||||
initAlert:nil tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
initAlert:nil tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
||||||
if (buttonIndex == [alert cancelButtonIndex])
|
if (buttonIndex == [alert cancelButtonIndex])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
[moc performBlockAndWait:^{
|
[moc performBlockAndWait:^{
|
||||||
inf( @"Unsetting master password for: %@.", user.userID );
|
inf( @"Unsetting master password for: %@.", user.userID );
|
||||||
user.keyID = nil;
|
user.keyID = nil;
|
||||||
[self forgetSavedKeyFor:user];
|
[self forgetSavedKeyFor:user];
|
||||||
[moc saveToStore];
|
[moc saveToStore];
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[self signOutAnimated:YES];
|
[self signOutAnimated:YES];
|
||||||
if (didReset)
|
if (didReset)
|
||||||
didReset();
|
didReset();
|
||||||
|
|
||||||
MPCheckpoint( MPCheckpointChangeMP, nil );
|
MPCheckpoint( MPCheckpointChangeMP, nil );
|
||||||
}
|
}
|
||||||
cancelTitle:[PearlStrings get].commonButtonAbort
|
cancelTitle:[PearlStrings get].commonButtonAbort
|
||||||
otherTitles:[PearlStrings get].commonButtonContinue, nil];
|
otherTitles:[PearlStrings get].commonButtonContinue, nil];
|
||||||
}
|
}
|
||||||
@ -482,11 +483,11 @@
|
|||||||
@"or overwrite them with your current sites."
|
@"or overwrite them with your current sites."
|
||||||
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
||||||
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
||||||
if (buttonIndex == [alert cancelButtonIndex])
|
if (buttonIndex == [alert cancelButtonIndex])
|
||||||
setConfirmationAnswer( NO );
|
setConfirmationAnswer( NO );
|
||||||
if (buttonIndex == [alert firstOtherButtonIndex])
|
if (buttonIndex == [alert firstOtherButtonIndex])
|
||||||
setConfirmationAnswer( YES );
|
setConfirmationAnswer( YES );
|
||||||
}
|
}
|
||||||
cancelTitle:@"Use Old" otherTitles:@"Overwrite", nil];
|
cancelTitle:@"Use Old" otherTitles:@"Overwrite", nil];
|
||||||
}];
|
}];
|
||||||
else
|
else
|
||||||
@ -512,11 +513,11 @@
|
|||||||
@"or overwrite them with your current iCloud sites."
|
@"or overwrite them with your current iCloud sites."
|
||||||
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
||||||
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
||||||
if (buttonIndex == [alert cancelButtonIndex])
|
if (buttonIndex == [alert cancelButtonIndex])
|
||||||
setConfirmationAnswer( NO );
|
setConfirmationAnswer( NO );
|
||||||
if (buttonIndex == [alert firstOtherButtonIndex])
|
if (buttonIndex == [alert firstOtherButtonIndex])
|
||||||
setConfirmationAnswer( YES );
|
setConfirmationAnswer( YES );
|
||||||
}
|
}
|
||||||
cancelTitle:@"Use Old" otherTitles:@"Overwrite", nil];
|
cancelTitle:@"Use Old" otherTitles:@"Overwrite", nil];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
@ -547,7 +548,6 @@
|
|||||||
MPCheckpoint( MPCheckpointConfig, @{
|
MPCheckpoint( MPCheckpointConfig, @{
|
||||||
@"rememberLogin" : @([[MPConfig get].rememberLogin boolValue]),
|
@"rememberLogin" : @([[MPConfig get].rememberLogin boolValue]),
|
||||||
@"iCloudEnabled" : @([[MPiOSConfig get].iCloudEnabled boolValue]),
|
@"iCloudEnabled" : @([[MPiOSConfig get].iCloudEnabled boolValue]),
|
||||||
@"iCloudDecided" : @([[MPConfig get].iCloudDecided boolValue]),
|
|
||||||
@"sendInfo" : @([[MPiOSConfig get].sendInfo boolValue]),
|
@"sendInfo" : @([[MPiOSConfig get].sendInfo boolValue]),
|
||||||
@"helpHidden" : @([[MPiOSConfig get].helpHidden boolValue]),
|
@"helpHidden" : @([[MPiOSConfig get].helpHidden boolValue]),
|
||||||
@"showQuickStart" : @([[MPiOSConfig get].showSetup boolValue]),
|
@"showQuickStart" : @([[MPiOSConfig get].showSetup boolValue]),
|
||||||
@ -583,6 +583,23 @@
|
|||||||
[self.fixCloudContentAlert cancelAlertAnimated:YES];
|
[self.fixCloudContentAlert cancelAlertAnimated:YES];
|
||||||
[self.storeLoadingOverlay cancelOverlayAnimated:YES];
|
[self.storeLoadingOverlay cancelOverlayAnimated:YES];
|
||||||
[self.handleCloudDisabledAlert cancelAlertAnimated:YES];
|
[self.handleCloudDisabledAlert cancelAlertAnimated:YES];
|
||||||
|
|
||||||
|
if (isCloudStore)
|
||||||
|
[PearlAlert showAlertWithTitle:@"iCloud Support Deprecated" message:
|
||||||
|
@"Master Password is moving away from iCloud due to limited platform support and reliability issues. "
|
||||||
|
@"\n\nMaster Password's generated passwords do not require syncing. "
|
||||||
|
@"Your sites will always have the same passwords on all your devices, even without iCloud. "
|
||||||
|
@"\n\niCloud continues to work for now but will be deactivated in a future update. "
|
||||||
|
@"Disable iCloud now to copy your iCloud sites to your device and avoid having to recreate them "
|
||||||
|
@"when iCloud becomes discontinued."
|
||||||
|
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
||||||
|
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
||||||
|
if (buttonIndex == [alert cancelButtonIndex])
|
||||||
|
return;
|
||||||
|
|
||||||
|
[[self storeManager] migrateCloudToLocal];
|
||||||
|
}
|
||||||
|
cancelTitle:@"Ignore For Now" otherTitles:@"Disable iCloud", nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)ubiquityStoreManager:(UbiquityStoreManager *)manager failedLoadingStoreWithCause:(UbiquityStoreErrorCause)cause context:(id)context
|
- (void)ubiquityStoreManager:(UbiquityStoreManager *)manager failedLoadingStoreWithCause:(UbiquityStoreErrorCause)cause context:(id)context
|
||||||
@ -607,17 +624,17 @@
|
|||||||
|
|
||||||
if (!self.handleCloudDisabledAlert)
|
if (!self.handleCloudDisabledAlert)
|
||||||
self.handleCloudDisabledAlert = [PearlAlert showAlertWithTitle:@"iCloud Login" message:
|
self.handleCloudDisabledAlert = [PearlAlert showAlertWithTitle:@"iCloud Login" message:
|
||||||
@"You haven't added an iCloud account to your device yet.\n"
|
@"You haven't added an iCloud account to your device yet.\n"
|
||||||
@"To add one, go into Apple's Settings -> iCloud."
|
@"To add one, go into Apple's Settings -> iCloud."
|
||||||
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
viewStyle:UIAlertViewStyleDefault initAlert:nil
|
||||||
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
||||||
if (buttonIndex == alert.firstOtherButtonIndex) {
|
if (buttonIndex == alert.firstOtherButtonIndex) {
|
||||||
[MPiOSConfig get].iCloudEnabled = @NO;
|
[MPiOSConfig get].iCloudEnabled = @NO;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
[self.storeManager reloadStore];
|
[self.storeManager reloadStore];
|
||||||
} cancelTitle:@"Try Again" otherTitles:@"Disable iCloud", nil];
|
} cancelTitle:@"Try Again" otherTitles:@"Disable iCloud", nil];
|
||||||
|
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
@ -631,27 +648,27 @@
|
|||||||
message:@"Waiting for your other device to auto‑correct the problem..."
|
message:@"Waiting for your other device to auto‑correct the problem..."
|
||||||
viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:
|
viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:
|
||||||
^(UIAlertView *alert, NSInteger buttonIndex) {
|
^(UIAlertView *alert, NSInteger buttonIndex) {
|
||||||
if (buttonIndex == [alert firstOtherButtonIndex])
|
if (buttonIndex == [alert firstOtherButtonIndex])
|
||||||
wSelf.fixCloudContentAlert = [PearlAlert showAlertWithTitle:@"Fix iCloud Now" message:
|
wSelf.fixCloudContentAlert = [PearlAlert showAlertWithTitle:@"Fix iCloud Now" message:
|
||||||
@"This problem can be auto‑corrected by opening the app on another device where you recently made changes.\n"
|
@"This problem can be auto‑corrected by opening the app on another device where you recently made changes.\n"
|
||||||
@"You can fix the problem from this device anyway, but recent changes from another device might get lost.\n\n"
|
@"You can fix the problem from this device anyway, but recent changes from another device might get lost.\n\n"
|
||||||
@"You can also turn iCloud off for now."
|
@"You can also turn iCloud off for now."
|
||||||
viewStyle:UIAlertViewStyleDefault
|
viewStyle:UIAlertViewStyleDefault
|
||||||
initAlert:nil tappedButtonBlock:
|
initAlert:nil tappedButtonBlock:
|
||||||
^(UIAlertView *alert_, NSInteger buttonIndex_) {
|
^(UIAlertView *alert_, NSInteger buttonIndex_) {
|
||||||
if (buttonIndex_ == alert_.cancelButtonIndex)
|
if (buttonIndex_ == alert_.cancelButtonIndex)
|
||||||
[wSelf showCloudContentAlert];
|
[wSelf showCloudContentAlert];
|
||||||
if (buttonIndex_ == [alert_ firstOtherButtonIndex])
|
if (buttonIndex_ == [alert_ firstOtherButtonIndex])
|
||||||
[wSelf.storeManager rebuildCloudContentFromCloudStoreOrLocalStore:YES];
|
[wSelf.storeManager rebuildCloudContentFromCloudStoreOrLocalStore:YES];
|
||||||
if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 1)
|
if (buttonIndex_ == [alert_ firstOtherButtonIndex] + 1)
|
||||||
[MPiOSConfig get].iCloudEnabled = @NO;
|
[MPiOSConfig get].iCloudEnabled = @NO;
|
||||||
}
|
}
|
||||||
cancelTitle:[PearlStrings get].commonButtonBack
|
cancelTitle:[PearlStrings get].commonButtonBack
|
||||||
otherTitles:@"Fix Anyway",
|
otherTitles:@"Fix Anyway",
|
||||||
@"Turn Off", nil];
|
@"Turn Off", nil];
|
||||||
if (buttonIndex == [alert firstOtherButtonIndex] + 1)
|
if (buttonIndex == [alert firstOtherButtonIndex] + 1)
|
||||||
[MPiOSConfig get].iCloudEnabled = @NO;
|
[MPiOSConfig get].iCloudEnabled = @NO;
|
||||||
} cancelTitle:nil otherTitles:@"Fix Now", @"Turn Off", nil];
|
} cancelTitle:nil otherTitles:@"Fix Now", @"Turn Off", nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - Crashlytics
|
#pragma mark - Crashlytics
|
||||||
|
@ -107,7 +107,6 @@
|
|||||||
DA3509FE15F101A500C14A8E /* PearlQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3509FC15F101A500C14A8E /* PearlQueue.h */; };
|
DA3509FE15F101A500C14A8E /* PearlQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3509FC15F101A500C14A8E /* PearlQueue.h */; };
|
||||||
DA3509FF15F101A500C14A8E /* PearlQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = DA3509FD15F101A500C14A8E /* PearlQueue.m */; };
|
DA3509FF15F101A500C14A8E /* PearlQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = DA3509FD15F101A500C14A8E /* PearlQueue.m */; };
|
||||||
DA38D6A318CCB5BF009AEB3E /* Storyboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA38D6A218CCB5BF009AEB3E /* Storyboard.storyboard */; };
|
DA38D6A318CCB5BF009AEB3E /* Storyboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA38D6A218CCB5BF009AEB3E /* Storyboard.storyboard */; };
|
||||||
DA3B844E190FC5DF00246EEA /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA3B844D190FC5DF00246EEA /* Crashlytics.framework */; };
|
|
||||||
DA4425CC1557BED40052177D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
DA4425CC1557BED40052177D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||||
DA44260A1557D9E40052177D /* libUbiquityStoreManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */; };
|
DA44260A1557D9E40052177D /* libUbiquityStoreManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */; };
|
||||||
DA4522441902355C008F650A /* icon_book.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD370C1711E29500CF925C /* icon_book.png */; };
|
DA4522441902355C008F650A /* icon_book.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD370C1711E29500CF925C /* icon_book.png */; };
|
||||||
@ -118,6 +117,8 @@
|
|||||||
DA45224A190628A1008F650A /* icon_wrench@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD386B1711E29700CF925C /* icon_wrench@2x.png */; };
|
DA45224A190628A1008F650A /* icon_wrench@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD386B1711E29700CF925C /* icon_wrench@2x.png */; };
|
||||||
DA45224B190628B2008F650A /* icon_gear.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD37821711E29500CF925C /* icon_gear.png */; };
|
DA45224B190628B2008F650A /* icon_gear.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD37821711E29500CF925C /* icon_gear.png */; };
|
||||||
DA45224C190628B2008F650A /* icon_gear@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD37831711E29500CF925C /* icon_gear@2x.png */; };
|
DA45224C190628B2008F650A /* icon_gear@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD37831711E29500CF925C /* icon_gear@2x.png */; };
|
||||||
|
DA48856019A5A82E000C2D79 /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAA141191922FED80032B392 /* Crashlytics.framework */; };
|
||||||
|
DA48856119A5AC1E000C2D79 /* libopensslcrypto-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAE8E65119867AB500416A0F /* libopensslcrypto-ios.a */; };
|
||||||
DA4DA1D91564471A00F6F596 /* libjrswizzle.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6326C148680650075AEA5 /* libjrswizzle.a */; };
|
DA4DA1D91564471A00F6F596 /* libjrswizzle.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6326C148680650075AEA5 /* libjrswizzle.a */; };
|
||||||
DA4DA1DA1564471F00F6F596 /* libuicolor-utilities.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */; };
|
DA4DA1DA1564471F00F6F596 /* libuicolor-utilities.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */; };
|
||||||
DA5A09DF171A70E4005284AB /* play.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5A09DD171A70E4005284AB /* play.png */; };
|
DA5A09DF171A70E4005284AB /* play.png in Resources */ = {isa = PBXBuildFile; fileRef = DA5A09DD171A70E4005284AB /* play.png */; };
|
||||||
@ -271,7 +272,6 @@
|
|||||||
DACA29BF1705E2DE002C6C22 /* UIColor+HSV.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA29BB1705E2DE002C6C22 /* UIColor+HSV.m */; };
|
DACA29BF1705E2DE002C6C22 /* UIColor+HSV.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA29BB1705E2DE002C6C22 /* UIColor+HSV.m */; };
|
||||||
DAD312C21552A22700A3F9ED /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD312C01552A20800A3F9ED /* libsqlite3.dylib */; };
|
DAD312C21552A22700A3F9ED /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = DAD312C01552A20800A3F9ED /* libsqlite3.dylib */; };
|
||||||
DAE1EF2217E942DE00BC0086 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DAE1EF2417E942DE00BC0086 /* Localizable.strings */; };
|
DAE1EF2217E942DE00BC0086 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DAE1EF2417E942DE00BC0086 /* Localizable.strings */; };
|
||||||
DAE8E65219867AB500416A0F /* libopensslcrypto-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAE8E65119867AB500416A0F /* libopensslcrypto-ios.a */; };
|
|
||||||
DAEBC45314F6364500987BF6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAEBC45214F6364500987BF6 /* QuartzCore.framework */; };
|
DAEBC45314F6364500987BF6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAEBC45214F6364500987BF6 /* QuartzCore.framework */; };
|
||||||
DAEC85B518E3DD9A007FC0DF /* UIView+Touches.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B118E3DD9A007FC0DF /* UIView+Touches.m */; };
|
DAEC85B518E3DD9A007FC0DF /* UIView+Touches.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B118E3DD9A007FC0DF /* UIView+Touches.m */; };
|
||||||
DAEC85B618E3DD9A007FC0DF /* PearlUINavigationBar.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B218E3DD9A007FC0DF /* PearlUINavigationBar.m */; };
|
DAEC85B618E3DD9A007FC0DF /* PearlUINavigationBar.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEC85B218E3DD9A007FC0DF /* PearlUINavigationBar.m */; };
|
||||||
@ -1349,6 +1349,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
DA48856119A5AC1E000C2D79 /* libopensslcrypto-ios.a in Frameworks */,
|
||||||
DAFC5691172C582A00CB5CC5 /* libInAppSettingsKit.a in Frameworks */,
|
DAFC5691172C582A00CB5CC5 /* libInAppSettingsKit.a in Frameworks */,
|
||||||
DA6701E016406BB400B61001 /* AdSupport.framework in Frameworks */,
|
DA6701E016406BB400B61001 /* AdSupport.framework in Frameworks */,
|
||||||
DA6701DE16406B7300B61001 /* Social.framework in Frameworks */,
|
DA6701DE16406B7300B61001 /* Social.framework in Frameworks */,
|
||||||
@ -1358,17 +1359,16 @@
|
|||||||
DABB981615100B4000B05417 /* SystemConfiguration.framework in Frameworks */,
|
DABB981615100B4000B05417 /* SystemConfiguration.framework in Frameworks */,
|
||||||
DA672D3014F9413D004A189C /* libPearl.a in Frameworks */,
|
DA672D3014F9413D004A189C /* libPearl.a in Frameworks */,
|
||||||
DA672D2F14F92C6B004A189C /* libz.dylib in Frameworks */,
|
DA672D2F14F92C6B004A189C /* libz.dylib in Frameworks */,
|
||||||
DAE8E65219867AB500416A0F /* libopensslcrypto-ios.a in Frameworks */,
|
|
||||||
DAEBC45314F6364500987BF6 /* QuartzCore.framework in Frameworks */,
|
DAEBC45314F6364500987BF6 /* QuartzCore.framework in Frameworks */,
|
||||||
DA95D5F214DF0B2C008D1B94 /* MessageUI.framework in Frameworks */,
|
DA95D5F214DF0B2C008D1B94 /* MessageUI.framework in Frameworks */,
|
||||||
DA04E33E14B1E70400ECA4F3 /* MobileCoreServices.framework in Frameworks */,
|
DA04E33E14B1E70400ECA4F3 /* MobileCoreServices.framework in Frameworks */,
|
||||||
|
DA48856019A5A82E000C2D79 /* Crashlytics.framework in Frameworks */,
|
||||||
DAC632891486D9690075AEA5 /* Security.framework in Frameworks */,
|
DAC632891486D9690075AEA5 /* Security.framework in Frameworks */,
|
||||||
DA5BFA49147E415C00F98B1E /* UIKit.framework in Frameworks */,
|
DA5BFA49147E415C00F98B1E /* UIKit.framework in Frameworks */,
|
||||||
DA5BFA4B147E415C00F98B1E /* Foundation.framework in Frameworks */,
|
DA5BFA4B147E415C00F98B1E /* Foundation.framework in Frameworks */,
|
||||||
DA5BFA4D147E415C00F98B1E /* CoreGraphics.framework in Frameworks */,
|
DA5BFA4D147E415C00F98B1E /* CoreGraphics.framework in Frameworks */,
|
||||||
DA5BFA4F147E415C00F98B1E /* CoreData.framework in Frameworks */,
|
DA5BFA4F147E415C00F98B1E /* CoreData.framework in Frameworks */,
|
||||||
93D399433EA75E50656040CB /* Twitter.framework in Frameworks */,
|
93D399433EA75E50656040CB /* Twitter.framework in Frameworks */,
|
||||||
DA3B844E190FC5DF00246EEA /* Crashlytics.framework in Frameworks */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -3449,10 +3449,6 @@
|
|||||||
GCC_WARN_UNUSED_VALUE = YES;
|
GCC_WARN_UNUSED_VALUE = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||||
LIBRARY_SEARCH_PATHS = (
|
|
||||||
"$(inherit)",
|
|
||||||
"\"$(SRCROOT)/../../../External\"/**",
|
|
||||||
);
|
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_NAME = "${TARGET_NAME}";
|
PRODUCT_NAME = "${TARGET_NAME}";
|
||||||
@ -3532,10 +3528,6 @@
|
|||||||
GCC_WARN_UNUSED_VALUE = YES;
|
GCC_WARN_UNUSED_VALUE = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||||
LIBRARY_SEARCH_PATHS = (
|
|
||||||
"$(inherit)",
|
|
||||||
"\"$(SRCROOT)/../../../External\"/**",
|
|
||||||
);
|
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_NAME = "${TARGET_NAME}";
|
PRODUCT_NAME = "${TARGET_NAME}";
|
||||||
RUN_CLANG_STATIC_ANALYZER = YES;
|
RUN_CLANG_STATIC_ANALYZER = YES;
|
||||||
@ -3556,12 +3548,13 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = MasterPassword.entitlements;
|
CODE_SIGN_ENTITLEMENTS = MasterPassword.entitlements;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/iOS,
|
"\"$(SRCROOT)/../../../External/iOS\"",
|
||||||
);
|
);
|
||||||
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
|
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
|
||||||
INFOPLIST_FILE = "MasterPassword-Info.plist";
|
INFOPLIST_FILE = "MasterPassword-Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
LIBRARY_SEARCH_PATHS = (
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"",
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/Pearl/Pearl-Crypto/lib",
|
"/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/Pearl/Pearl-Crypto/lib",
|
||||||
);
|
);
|
||||||
@ -3588,12 +3581,13 @@
|
|||||||
EXCLUDED_SOURCE_FILE_NAMES = libDCIntrospect.a;
|
EXCLUDED_SOURCE_FILE_NAMES = libDCIntrospect.a;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/iOS,
|
"\"$(SRCROOT)/../../../External/iOS\"",
|
||||||
);
|
);
|
||||||
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
|
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
|
||||||
INFOPLIST_FILE = "MasterPassword-Info.plist";
|
INFOPLIST_FILE = "MasterPassword-Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
LIBRARY_SEARCH_PATHS = (
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"",
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/Pearl/Pearl-Crypto/lib",
|
"/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/Pearl/Pearl-Crypto/lib",
|
||||||
);
|
);
|
||||||
@ -3674,10 +3668,6 @@
|
|||||||
GCC_WARN_UNUSED_VALUE = YES;
|
GCC_WARN_UNUSED_VALUE = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||||
LIBRARY_SEARCH_PATHS = (
|
|
||||||
"$(inherit)",
|
|
||||||
"\"$(SRCROOT)/../../../External\"/**",
|
|
||||||
);
|
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_NAME = "${TARGET_NAME}";
|
PRODUCT_NAME = "${TARGET_NAME}";
|
||||||
RUN_CLANG_STATIC_ANALYZER = YES;
|
RUN_CLANG_STATIC_ANALYZER = YES;
|
||||||
@ -3700,12 +3690,13 @@
|
|||||||
EXCLUDED_SOURCE_FILE_NAMES = libDCIntrospect.a;
|
EXCLUDED_SOURCE_FILE_NAMES = libDCIntrospect.a;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/iOS,
|
"\"$(SRCROOT)/../../../External/iOS\"",
|
||||||
);
|
);
|
||||||
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
|
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
|
||||||
INFOPLIST_FILE = "MasterPassword-Info.plist";
|
INFOPLIST_FILE = "MasterPassword-Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
LIBRARY_SEARCH_PATHS = (
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"",
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/Pearl/Pearl-Crypto/lib",
|
"/Users/lhunath/Documents/workspace/lyndir/MasterPassword/External/Pearl/Pearl-Crypto/lib",
|
||||||
);
|
);
|
||||||
@ -3723,7 +3714,10 @@
|
|||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
DSTROOT = /tmp/Pearl.dst;
|
DSTROOT = /tmp/Pearl.dst;
|
||||||
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include";
|
PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
@ -3808,7 +3802,10 @@
|
|||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
DSTROOT = /tmp/Pearl.dst;
|
DSTROOT = /tmp/Pearl.dst;
|
||||||
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PUBLIC_HEADERS_FOLDER_PATH = include;
|
PUBLIC_HEADERS_FOLDER_PATH = include;
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
@ -3821,7 +3818,10 @@
|
|||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
DSTROOT = /tmp/Pearl.dst;
|
DSTROOT = /tmp/Pearl.dst;
|
||||||
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
GCC_PREFIX_HEADER = "../Pearl/Pearl-Prefix.pch";
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"\"$(SRCROOT)/../../../External/Pearl/Pearl-Crypto/lib\"",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include";
|
PUBLIC_HEADERS_FOLDER_PATH = "../../BuildProductsPath/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -2108,130 +2108,13 @@ CgoKCgoKCgoKCgoKCg
|
|||||||
</userDefinedRuntimeAttribute>
|
</userDefinedRuntimeAttribute>
|
||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
<connections>
|
<connections>
|
||||||
<segue destination="qhJ-iI-EZA" kind="relationship" relationship="rootViewController" id="OAp-eP-WpD"/>
|
<segue destination="7cx-iG-3ol" kind="relationship" relationship="rootViewController" id="6rw-Ba-P0D"/>
|
||||||
</connections>
|
</connections>
|
||||||
</navigationController>
|
</navigationController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="sCQ-j4-a2p" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="sCQ-j4-a2p" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="813" y="2672"/>
|
<point key="canvasLocation" x="813" y="2672"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Setup View Controller - iCloud-->
|
|
||||||
<scene sceneID="sB2-sT-bJO">
|
|
||||||
<objects>
|
|
||||||
<viewController id="qhJ-iI-EZA" customClass="MPSetupViewController" sceneMemberID="viewController">
|
|
||||||
<layoutGuides>
|
|
||||||
<viewControllerLayoutGuide type="top" id="npQ-Xj-fxC"/>
|
|
||||||
<viewControllerLayoutGuide type="bottom" id="5KX-6p-eQz"/>
|
|
||||||
</layoutGuides>
|
|
||||||
<view key="view" contentMode="scaleToFill" id="CyM-rG-rOH">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="center" image="background.png" translatesAutoresizingMaskIntoConstraints="NO" id="ou1-MG-6If">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
</imageView>
|
|
||||||
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hxU-3i-hPR">
|
|
||||||
<rect key="frame" x="0.0" y="64" width="320" height="504"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="top" image="cloud.png" translatesAutoresizingMaskIntoConstraints="NO" id="ano-Dt-se5">
|
|
||||||
<rect key="frame" x="108" y="20" width="105" height="80"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
</imageView>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Enable iCloud?" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eC1-NU-fVL">
|
|
||||||
<rect key="frame" x="20" y="108" width="277" height="21"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
|
|
||||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="277" translatesAutoresizingMaskIntoConstraints="NO" id="tco-oc-EfM">
|
|
||||||
<rect key="frame" x="20" y="137" width="277" height="262"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
<attributedString key="attributedText">
|
|
||||||
<fragment>
|
|
||||||
<string key="content">Enabling iCloud will keep all your iPhones, iPads and Macs nicely in-sync. Any site you add on this device will automatically appear on all your others as well.
|
|
||||||
|
|
||||||
</string>
|
|
||||||
<attributes>
|
|
||||||
<color key="NSBackgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
|
|
||||||
<color key="NSColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
<font key="NSFont" size="14" name="HelveticaNeue"/>
|
|
||||||
<paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
|
|
||||||
</attributes>
|
|
||||||
</fragment>
|
|
||||||
<fragment content="Note: some people have reported iCloud can be unreliable">
|
|
||||||
<attributes>
|
|
||||||
<color key="NSBackgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
|
|
||||||
<color key="NSColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
<font key="NSFont" size="14" name="HelveticaNeue-Bold"/>
|
|
||||||
<paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
|
|
||||||
</attributes>
|
|
||||||
</fragment>
|
|
||||||
<fragment>
|
|
||||||
<string key="content">. Even without iCloud your generated passwords will be available from any device you add your user to. iCloud mainly serves to keep the list of sites you use updated across devices.
|
|
||||||
|
|
||||||
Only site names and personal passwords are sent to iCloud. Passwords are encrypted with your master password and unreadable by anyone else.</string>
|
|
||||||
<attributes>
|
|
||||||
<color key="NSBackgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="calibratedRGB"/>
|
|
||||||
<color key="NSColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
<font key="NSFont" size="14" name="HelveticaNeue"/>
|
|
||||||
<paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
|
|
||||||
</attributes>
|
|
||||||
</fragment>
|
|
||||||
</attributedString>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
<switch opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="adu-Cl-cW3">
|
|
||||||
<rect key="frame" x="136" y="433" width="51" height="31"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<color key="onTintColor" red="0.37254901959999998" green="0.3921568627" blue="0.42745098040000001" alpha="1" colorSpace="calibratedRGB"/>
|
|
||||||
</switch>
|
|
||||||
</subviews>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="centerX" secondItem="ano-Dt-se5" secondAttribute="centerX" id="0jx-hf-dBP"/>
|
|
||||||
<constraint firstAttribute="centerX" secondItem="adu-Cl-cW3" secondAttribute="centerX" constant="-0.5" id="Ck0-pS-M1Q"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="eC1-NU-fVL" secondAttribute="trailing" constant="20" symbolic="YES" id="Czl-bU-uLI"/>
|
|
||||||
<constraint firstItem="ano-Dt-se5" firstAttribute="top" secondItem="hxU-3i-hPR" secondAttribute="top" constant="20" symbolic="YES" id="FAQ-Uc-Xre"/>
|
|
||||||
<constraint firstItem="tco-oc-EfM" firstAttribute="leading" secondItem="hxU-3i-hPR" secondAttribute="leading" constant="20" symbolic="YES" id="Fso-di-GK9"/>
|
|
||||||
<constraint firstItem="adu-Cl-cW3" firstAttribute="top" relation="greaterThanOrEqual" secondItem="tco-oc-EfM" secondAttribute="bottom" constant="8" symbolic="YES" id="U0w-Ty-idK"/>
|
|
||||||
<constraint firstItem="eC1-NU-fVL" firstAttribute="top" secondItem="ano-Dt-se5" secondAttribute="bottom" constant="8" symbolic="YES" id="aKA-EK-Gw6"/>
|
|
||||||
<constraint firstItem="tco-oc-EfM" firstAttribute="top" secondItem="eC1-NU-fVL" secondAttribute="bottom" constant="8" symbolic="YES" id="ab4-pX-8S8"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="adu-Cl-cW3" secondAttribute="bottom" constant="20" symbolic="YES" id="cFW-t7-AXE"/>
|
|
||||||
<constraint firstItem="eC1-NU-fVL" firstAttribute="leading" secondItem="hxU-3i-hPR" secondAttribute="leading" constant="20" symbolic="YES" id="gRb-lQ-VTq"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="tco-oc-EfM" secondAttribute="trailing" constant="20" symbolic="YES" id="h1K-gS-Tb2"/>
|
|
||||||
</constraints>
|
|
||||||
</scrollView>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="5KX-6p-eQz" firstAttribute="top" secondItem="adu-Cl-cW3" secondAttribute="bottom" priority="250" constant="40" id="Jci-LV-6Wc"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="hxU-3i-hPR" secondAttribute="trailing" id="Pd0-9H-coF"/>
|
|
||||||
<constraint firstItem="5KX-6p-eQz" firstAttribute="top" secondItem="hxU-3i-hPR" secondAttribute="bottom" id="SCA-yI-frG"/>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="ou1-MG-6If" secondAttribute="bottom" id="hc4-Ui-yJd"/>
|
|
||||||
<constraint firstItem="ou1-MG-6If" firstAttribute="top" secondItem="CyM-rG-rOH" secondAttribute="top" id="i18-Ra-ta6"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="ou1-MG-6If" secondAttribute="trailing" id="mXl-1W-w9f"/>
|
|
||||||
<constraint firstItem="hxU-3i-hPR" firstAttribute="top" secondItem="npQ-Xj-fxC" secondAttribute="bottom" id="n2N-CG-eG8"/>
|
|
||||||
<constraint firstItem="hxU-3i-hPR" firstAttribute="leading" secondItem="CyM-rG-rOH" secondAttribute="leading" id="vUc-x5-mkA"/>
|
|
||||||
<constraint firstItem="ou1-MG-6If" firstAttribute="leading" secondItem="CyM-rG-rOH" secondAttribute="leading" id="zzg-9R-bUr"/>
|
|
||||||
</constraints>
|
|
||||||
</view>
|
|
||||||
<navigationItem key="navigationItem" title="iCloud" id="D4X-G1-wsv">
|
|
||||||
<barButtonItem key="rightBarButtonItem" title="Next" id="RuR-JL-6Rb">
|
|
||||||
<connections>
|
|
||||||
<segue destination="7cx-iG-3ol" kind="push" id="Zri-0I-HDm"/>
|
|
||||||
</connections>
|
|
||||||
</barButtonItem>
|
|
||||||
</navigationItem>
|
|
||||||
<connections>
|
|
||||||
<outlet property="cloudSwitch" destination="adu-Cl-cW3" id="rnS-TH-6Jp"/>
|
|
||||||
</connections>
|
|
||||||
</viewController>
|
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="wjk-3M-08S" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
<point key="canvasLocation" x="1350" y="2672"/>
|
|
||||||
</scene>
|
|
||||||
<!--Setup View Controller - Security-->
|
<!--Setup View Controller - Security-->
|
||||||
<scene sceneID="GSG-87-pnH">
|
<scene sceneID="GSG-87-pnH">
|
||||||
<objects>
|
<objects>
|
||||||
@ -2324,7 +2207,7 @@ However, it means that anyone who finds your device unlocked can do the same.</s
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="HhJ-mB-A8g" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="HhJ-mB-A8g" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="1887" y="2672"/>
|
<point key="canvasLocation" x="1350" y="2672"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--Setup View Controller - About-->
|
<!--Setup View Controller - About-->
|
||||||
<scene sceneID="p3O-pB-vAg">
|
<scene sceneID="p3O-pB-vAg">
|
||||||
@ -2505,7 +2388,7 @@ See </string>
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="xht-w2-261" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="xht-w2-261" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="2424" y="2672"/>
|
<point key="canvasLocation" x="1887" y="2672"/>
|
||||||
</scene>
|
</scene>
|
||||||
<!--View Controller-->
|
<!--View Controller-->
|
||||||
<scene sceneID="D1h-xG-jy2">
|
<scene sceneID="D1h-xG-jy2">
|
||||||
@ -2529,7 +2412,6 @@ See </string>
|
|||||||
<resources>
|
<resources>
|
||||||
<image name="avatar-0.png" width="110" height="110"/>
|
<image name="avatar-0.png" width="110" height="110"/>
|
||||||
<image name="background.png" width="568" height="568"/>
|
<image name="background.png" width="568" height="568"/>
|
||||||
<image name="cloud.png" width="105" height="80"/>
|
|
||||||
<image name="icon_book.png" width="32" height="32"/>
|
<image name="icon_book.png" width="32" height="32"/>
|
||||||
<image name="icon_cancel.png" width="32" height="32"/>
|
<image name="icon_cancel.png" width="32" height="32"/>
|
||||||
<image name="icon_edit.png" width="32" height="32"/>
|
<image name="icon_edit.png" width="32" height="32"/>
|
||||||
@ -2557,6 +2439,6 @@ See </string>
|
|||||||
</simulatedMetricsContainer>
|
</simulatedMetricsContainer>
|
||||||
<inferredMetricsTieBreakers>
|
<inferredMetricsTieBreakers>
|
||||||
<segue reference="GZk-I4-JyH"/>
|
<segue reference="GZk-I4-JyH"/>
|
||||||
<segue reference="Ql4-wf-T8u"/>
|
<segue reference="k2G-nL-x3l"/>
|
||||||
</inferredMetricsTieBreakers>
|
</inferredMetricsTieBreakers>
|
||||||
</document>
|
</document>
|
||||||
|
Loading…
Reference in New Issue
Block a user