Lockscreen improvements.
[FIXED] Switching between guide and unlock screen. [ADDED] Sign out button in action so you can sign in with a different master password. [REMOVED] Change password from MPConfig. There are better facilities for this now. [FIXED] Image names in the lockscreen.
This commit is contained in:
parent
2ff3f0804b
commit
eae8e9b7c4
2
External/Pearl
vendored
2
External/Pearl
vendored
@ -1 +1 @@
|
|||||||
Subproject commit bb0df3e88994972fe2af336c823211493a427139
|
Subproject commit bb9d8d10cb564d3a759b3d247d10d34c5da16dac
|
File diff suppressed because it is too large
Load Diff
@ -1,17 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0430"
|
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction>
|
||||||
parallelizeBuildables = "YES"
|
|
||||||
buildImplicitDependencies = "YES">
|
|
||||||
<BuildActionEntries>
|
<BuildActionEntries>
|
||||||
<BuildActionEntry
|
<BuildActionEntry
|
||||||
buildForTesting = "YES"
|
buildForRunning = "YES">
|
||||||
buildForRunning = "YES"
|
|
||||||
buildForProfiling = "YES"
|
|
||||||
buildForArchiving = "YES"
|
|
||||||
buildForAnalyzing = "YES">
|
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
||||||
@ -22,65 +15,19 @@
|
|||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
</BuildActionEntries>
|
</BuildActionEntries>
|
||||||
</BuildAction>
|
</BuildAction>
|
||||||
<TestAction
|
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
|
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
||||||
buildConfiguration = "Production">
|
|
||||||
<Testables>
|
|
||||||
</Testables>
|
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
|
||||||
BuildableName = "MasterPassword.app"
|
|
||||||
BlueprintName = "MasterPassword"
|
|
||||||
ReferencedContainer = "container:MasterPassword.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
</TestAction>
|
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
launchStyle = "0"
|
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
buildConfiguration = "Production"
|
|
||||||
ignoresPersistentStateOnLaunch = "NO"
|
|
||||||
debugDocumentVersioning = "YES"
|
|
||||||
allowLocationSimulation = "YES">
|
|
||||||
<BuildableProductRunnable>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
|
||||||
BuildableName = "MasterPassword.app"
|
|
||||||
BlueprintName = "MasterPassword"
|
|
||||||
ReferencedContainer = "container:MasterPassword.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildableProductRunnable>
|
|
||||||
<AdditionalOptions>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</LaunchAction>
|
|
||||||
<ProfileAction
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
||||||
savedToolIdentifier = ""
|
|
||||||
useCustomWorkingDirectory = "NO"
|
|
||||||
buildConfiguration = "Production"
|
|
||||||
debugDocumentVersioning = "YES">
|
|
||||||
<BuildableProductRunnable>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
|
||||||
BuildableName = "MasterPassword.app"
|
|
||||||
BlueprintName = "MasterPassword"
|
|
||||||
ReferencedContainer = "container:MasterPassword.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildableProductRunnable>
|
|
||||||
</ProfileAction>
|
|
||||||
<AnalyzeAction
|
|
||||||
buildConfiguration = "Production">
|
buildConfiguration = "Production">
|
||||||
</AnalyzeAction>
|
<BuildableProductRunnable>
|
||||||
<ArchiveAction
|
<BuildableReference
|
||||||
buildConfiguration = "Production"
|
BuildableIdentifier = "primary"
|
||||||
revealArchiveInOrganizer = "YES">
|
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
||||||
</ArchiveAction>
|
BuildableName = "MasterPassword.app"
|
||||||
|
BlueprintName = "MasterPassword"
|
||||||
|
ReferencedContainer = "container:MasterPassword.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</LaunchAction>
|
||||||
</Scheme>
|
</Scheme>
|
||||||
|
@ -1,17 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0430"
|
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction>
|
||||||
parallelizeBuildables = "YES"
|
|
||||||
buildImplicitDependencies = "YES">
|
|
||||||
<BuildActionEntries>
|
<BuildActionEntries>
|
||||||
<BuildActionEntry
|
<BuildActionEntry
|
||||||
buildForTesting = "YES"
|
buildForRunning = "YES">
|
||||||
buildForRunning = "YES"
|
|
||||||
buildForProfiling = "YES"
|
|
||||||
buildForArchiving = "YES"
|
|
||||||
buildForAnalyzing = "YES">
|
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
||||||
@ -22,75 +15,19 @@
|
|||||||
</BuildActionEntry>
|
</BuildActionEntry>
|
||||||
</BuildActionEntries>
|
</BuildActionEntries>
|
||||||
</BuildAction>
|
</BuildAction>
|
||||||
<TestAction
|
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
|
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
||||||
buildConfiguration = "Debug">
|
|
||||||
<Testables>
|
|
||||||
</Testables>
|
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
|
||||||
BuildableName = "MasterPassword.app"
|
|
||||||
BlueprintName = "MasterPassword"
|
|
||||||
ReferencedContainer = "container:MasterPassword.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
</TestAction>
|
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
launchStyle = "0"
|
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
buildConfiguration = "Debug"
|
|
||||||
ignoresPersistentStateOnLaunch = "NO"
|
|
||||||
debugDocumentVersioning = "YES"
|
|
||||||
allowLocationSimulation = "YES">
|
|
||||||
<BuildableProductRunnable>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
|
||||||
BuildableName = "MasterPassword.app"
|
|
||||||
BlueprintName = "MasterPassword"
|
|
||||||
ReferencedContainer = "container:MasterPassword.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildableProductRunnable>
|
|
||||||
<AdditionalOptions>
|
|
||||||
<AdditionalOption
|
|
||||||
key = "OBJC_PRINT_EXCEPTIONS"
|
|
||||||
value = "YES"
|
|
||||||
isEnabled = "YES">
|
|
||||||
</AdditionalOption>
|
|
||||||
<AdditionalOption
|
|
||||||
key = "NSZombieEnabled"
|
|
||||||
value = "YES"
|
|
||||||
isEnabled = "YES">
|
|
||||||
</AdditionalOption>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</LaunchAction>
|
|
||||||
<ProfileAction
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
||||||
savedToolIdentifier = ""
|
|
||||||
useCustomWorkingDirectory = "NO"
|
|
||||||
buildConfiguration = "Debug"
|
|
||||||
debugDocumentVersioning = "YES">
|
|
||||||
<BuildableProductRunnable>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
|
||||||
BuildableName = "MasterPassword.app"
|
|
||||||
BlueprintName = "MasterPassword"
|
|
||||||
ReferencedContainer = "container:MasterPassword.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildableProductRunnable>
|
|
||||||
</ProfileAction>
|
|
||||||
<AnalyzeAction
|
|
||||||
buildConfiguration = "Debug">
|
buildConfiguration = "Debug">
|
||||||
</AnalyzeAction>
|
<BuildableProductRunnable>
|
||||||
<ArchiveAction
|
<BuildableReference
|
||||||
buildConfiguration = "Release"
|
BuildableIdentifier = "primary"
|
||||||
revealArchiveInOrganizer = "YES">
|
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
|
||||||
</ArchiveAction>
|
BuildableName = "MasterPassword.app"
|
||||||
|
BlueprintName = "MasterPassword"
|
||||||
|
ReferencedContainer = "container:MasterPassword.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildableProductRunnable>
|
||||||
|
</LaunchAction>
|
||||||
</Scheme>
|
</Scheme>
|
||||||
|
@ -25,7 +25,8 @@
|
|||||||
- (NSURL *)applicationDocumentsDirectory;
|
- (NSURL *)applicationDocumentsDirectory;
|
||||||
|
|
||||||
- (void)showGuide;
|
- (void)showGuide;
|
||||||
- (void)loadKeyPhrase;
|
- (void)loadKeyPhrase:(BOOL)animated;
|
||||||
|
- (void)signOut;
|
||||||
- (void)forgetKeyPhrase;
|
- (void)forgetKeyPhrase;
|
||||||
- (NSData *)keyPhraseWithLength:(NSUInteger)keyLength;
|
- (NSData *)keyPhraseWithLength:(NSUInteger)keyLength;
|
||||||
- (BOOL)tryMasterPassword:(NSString *)tryPassword;
|
- (BOOL)tryMasterPassword:(NSString *)tryPassword;
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
+ (NSDictionary *)keyPhraseHashQuery;
|
+ (NSDictionary *)keyPhraseHashQuery;
|
||||||
|
|
||||||
- (void)loadStoredKeyPhrase;
|
- (void)loadStoredKeyPhrase;
|
||||||
- (void)askKeyPhrase;
|
- (void)askKeyPhrase:(BOOL)animated;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@ -37,6 +37,8 @@
|
|||||||
|
|
||||||
+ (void)initialize {
|
+ (void)initialize {
|
||||||
|
|
||||||
|
[MPConfig get];
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
[PearlLogger get].autoprintLevel = PearlLogLevelTrace;
|
[PearlLogger get].autoprintLevel = PearlLogLevelTrace;
|
||||||
[NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];
|
[NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];
|
||||||
@ -146,23 +148,25 @@
|
|||||||
if ([NSStringFromSelector(@selector(storeKeyPhrase))
|
if ([NSStringFromSelector(@selector(storeKeyPhrase))
|
||||||
isEqualToString:[note.object description]]) {
|
isEqualToString:[note.object description]]) {
|
||||||
self.keyPhrase = self.keyPhrase;
|
self.keyPhrase = self.keyPhrase;
|
||||||
[self loadKeyPhrase];
|
[self loadKeyPhrase:YES];
|
||||||
}
|
}
|
||||||
if ([NSStringFromSelector(@selector(forgetKeyPhrase))
|
if ([NSStringFromSelector(@selector(forgetKeyPhrase))
|
||||||
isEqualToString:[note.object description]])
|
isEqualToString:[note.object description]])
|
||||||
[self loadKeyPhrase];
|
[self loadKeyPhrase:YES];
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[self loadKeyPhrase];
|
[[UIApplication sharedApplication] setStatusBarHidden:NO
|
||||||
|
withAnimation:UIStatusBarAnimationSlide];
|
||||||
|
|
||||||
return [super application:application didFinishLaunchingWithOptions:launchOptions];
|
return [super application:application didFinishLaunchingWithOptions:launchOptions];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
||||||
|
|
||||||
if ([[MPConfig get].showQuickStart boolValue])
|
if ([[MPConfig get].showQuickStart boolValue])
|
||||||
[self showGuide];
|
[self showGuide];
|
||||||
else
|
else
|
||||||
[self loadKeyPhrase];
|
[self loadKeyPhrase:NO];
|
||||||
|
|
||||||
#ifndef PRODUCTION
|
#ifndef PRODUCTION
|
||||||
[TestFlight passCheckpoint:MPTestFlightCheckpointActivated];
|
[TestFlight passCheckpoint:MPTestFlightCheckpointActivated];
|
||||||
@ -178,24 +182,16 @@
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)loadKeyPhrase {
|
- (void)loadKeyPhrase:(BOOL)animated {
|
||||||
|
|
||||||
if (self.keyPhrase)
|
if (self.keyPhrase)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ([[MPConfig get].forgetKeyPhrase boolValue]) {
|
|
||||||
[self forgetKeyPhrase];
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[self loadStoredKeyPhrase];
|
[self loadStoredKeyPhrase];
|
||||||
if (self.keyPhrase)
|
if (!self.keyPhrase) {
|
||||||
[[UIApplication sharedApplication] setStatusBarHidden:NO
|
|
||||||
withAnimation:UIStatusBarAnimationSlide];
|
|
||||||
else {
|
|
||||||
// Key phrase is not known. Ask user to set/specify it.
|
// Key phrase is not known. Ask user to set/specify it.
|
||||||
dbg(@"Key phrase not known. Will ask user.");
|
dbg(@"Key phrase not known. Will ask user.");
|
||||||
[self askKeyPhrase];
|
[self askKeyPhrase:animated];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -205,10 +201,11 @@
|
|||||||
dbg(@"Forgetting key phrase.");
|
dbg(@"Forgetting key phrase.");
|
||||||
[PearlAlert showAlertWithTitle:@"Changing Master Password"
|
[PearlAlert showAlertWithTitle:@"Changing Master Password"
|
||||||
message:
|
message:
|
||||||
@"You've requested to change your master password.\n\n"
|
@"This will allow you to log in with a different master password.\n\n"
|
||||||
@"If you continue, your current sites and passwords will become unavailable.\n\n"
|
@"Note that you will only see the sites and passwords for the master password you log in with.\n"
|
||||||
@"You can always change back to the old master password later.\n"
|
@"If you log in with a different master password, your current sites will be unavailable.\n\n"
|
||||||
@"Your old sites and passwords will then become available again."
|
@"You can always change back to your current master password later.\n"
|
||||||
|
@"Your current sites and passwords will then become available again."
|
||||||
viewStyle:UIAlertViewStyleDefault
|
viewStyle:UIAlertViewStyleDefault
|
||||||
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
|
||||||
if (buttonIndex != [alert cancelButtonIndex]) {
|
if (buttonIndex != [alert cancelButtonIndex]) {
|
||||||
@ -223,7 +220,7 @@
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
[self loadKeyPhrase];
|
[self loadKeyPhrase:YES];
|
||||||
|
|
||||||
#ifndef PRODUCTION
|
#ifndef PRODUCTION
|
||||||
[TestFlight passCheckpoint:MPTestFlightCheckpointMPChanged];
|
[TestFlight passCheckpoint:MPTestFlightCheckpointMPChanged];
|
||||||
@ -231,7 +228,12 @@
|
|||||||
}
|
}
|
||||||
cancelTitle:[PearlStrings get].commonButtonAbort
|
cancelTitle:[PearlStrings get].commonButtonAbort
|
||||||
otherTitles:[PearlStrings get].commonButtonContinue, nil];
|
otherTitles:[PearlStrings get].commonButtonContinue, nil];
|
||||||
[MPConfig get].forgetKeyPhrase = [NSNumber numberWithBool:NO];
|
}
|
||||||
|
|
||||||
|
- (void)signOut {
|
||||||
|
|
||||||
|
self.keyPhrase = nil;
|
||||||
|
[self loadKeyPhrase:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)loadStoredKeyPhrase {
|
- (void)loadStoredKeyPhrase {
|
||||||
@ -251,9 +253,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)askKeyPhrase {
|
- (void)askKeyPhrase:(BOOL)animated {
|
||||||
|
|
||||||
[self.navigationController presentViewController:[self.navigationController.storyboard instantiateViewControllerWithIdentifier:@"MPUnlockViewController"] animated:NO completion:nil];
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
[self.navigationController presentViewController:
|
||||||
|
[self.navigationController.storyboard instantiateViewControllerWithIdentifier:@"MPUnlockViewController"]
|
||||||
|
animated:animated completion:nil];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)applicationWillResignActive:(UIApplication *)application {
|
- (void)applicationWillResignActive:(UIApplication *)application {
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
@property (nonatomic, retain) NSNumber *dataStoreError;
|
@property (nonatomic, retain) NSNumber *dataStoreError;
|
||||||
@property (nonatomic, retain) NSNumber *storeKeyPhrase;
|
@property (nonatomic, retain) NSNumber *storeKeyPhrase;
|
||||||
@property (nonatomic, retain) NSNumber *rememberKeyPhrase;
|
@property (nonatomic, retain) NSNumber *rememberKeyPhrase;
|
||||||
@property (nonatomic, retain) NSNumber *forgetKeyPhrase;
|
|
||||||
@property (nonatomic, retain) NSNumber *helpHidden;
|
@property (nonatomic, retain) NSNumber *helpHidden;
|
||||||
@property (nonatomic, retain) NSNumber *showQuickStart;
|
@property (nonatomic, retain) NSNumber *showQuickStart;
|
||||||
|
|
||||||
|
@ -9,9 +9,7 @@
|
|||||||
#import "MPConfig.h"
|
#import "MPConfig.h"
|
||||||
|
|
||||||
@implementation MPConfig
|
@implementation MPConfig
|
||||||
|
@dynamic dataStoreError, storeKeyPhrase, rememberKeyPhrase, helpHidden, showQuickStart;
|
||||||
@dynamic dataStoreError, storeKeyPhrase, rememberKeyPhrase, forgetKeyPhrase, helpHidden, showQuickStart;
|
|
||||||
|
|
||||||
|
|
||||||
- (id)init {
|
- (id)init {
|
||||||
|
|
||||||
@ -22,7 +20,6 @@
|
|||||||
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(dataStoreError)),
|
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(dataStoreError)),
|
||||||
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(storeKeyPhrase)),
|
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(storeKeyPhrase)),
|
||||||
[NSNumber numberWithBool:YES], NSStringFromSelector(@selector(rememberKeyPhrase)),
|
[NSNumber numberWithBool:YES], NSStringFromSelector(@selector(rememberKeyPhrase)),
|
||||||
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(forgetKeyPhrase)),
|
|
||||||
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(helpHidden)),
|
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(helpHidden)),
|
||||||
[NSNumber numberWithBool:YES], NSStringFromSelector(@selector(showQuickStart)),
|
[NSNumber numberWithBool:YES], NSStringFromSelector(@selector(showQuickStart)),
|
||||||
nil]];
|
nil]];
|
||||||
|
@ -29,9 +29,16 @@
|
|||||||
[super viewWillDisappear:animated];
|
[super viewWillDisappear:animated];
|
||||||
|
|
||||||
[MPConfig get].showQuickStart = [NSNumber numberWithBool:NO];
|
[MPConfig get].showQuickStart = [NSNumber numberWithBool:NO];
|
||||||
[[MPAppDelegate get] loadKeyPhrase];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)viewDidDisappear:(BOOL)animated {
|
||||||
|
|
||||||
|
[super viewDidDisappear:animated];
|
||||||
|
|
||||||
|
[[MPAppDelegate get] loadKeyPhrase:animated];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)viewDidUnload {
|
- (void)viewDidUnload {
|
||||||
|
|
||||||
[self setScrollView:nil];
|
[self setScrollView:nil];
|
||||||
|
@ -359,7 +359,13 @@
|
|||||||
case 4:
|
case 4:
|
||||||
[TestFlight openFeedbackView];
|
[TestFlight openFeedbackView];
|
||||||
break;
|
break;
|
||||||
|
case 5: {
|
||||||
|
#else
|
||||||
|
case 4: {
|
||||||
#endif
|
#endif
|
||||||
|
[[MPAppDelegate get] signOut];
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef PRODUCTION
|
#ifndef PRODUCTION
|
||||||
@ -371,6 +377,7 @@
|
|||||||
#ifndef PRODUCTION
|
#ifndef PRODUCTION
|
||||||
@"Feedback",
|
@"Feedback",
|
||||||
#endif
|
#endif
|
||||||
|
@"Sign Out",
|
||||||
nil];
|
nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,16 +35,16 @@ typedef enum {
|
|||||||
self.lock.alpha = 0.0f;
|
self.lock.alpha = 0.0f;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case MPLockscreenIdle:
|
case MPLockscreenIdle:
|
||||||
[self.lock setImage:[UIImage imageNamed:@"lockscreen_idle"]];
|
[self.lock setImage:[UIImage imageNamed:@"lock_idle"]];
|
||||||
break;
|
break;
|
||||||
case MPLockscreenError:
|
case MPLockscreenError:
|
||||||
[self.lock setImage:[UIImage imageNamed:@"lockscreen_red"]];
|
[self.lock setImage:[UIImage imageNamed:@"lock_red"]];
|
||||||
break;
|
break;
|
||||||
case MPLockscreenSuccess:
|
case MPLockscreenSuccess:
|
||||||
[self.lock setImage:[UIImage imageNamed:@"lockscreen_green"]];
|
[self.lock setImage:[UIImage imageNamed:@"lock_green"]];
|
||||||
break;
|
break;
|
||||||
case MPLockscreenProgress:
|
case MPLockscreenProgress:
|
||||||
[self.lock setImage:[UIImage imageNamed:@"lockscreen_blue"]];
|
[self.lock setImage:[UIImage imageNamed:@"lock_blue"]];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,7 +378,7 @@ The passwords aren't saved anywhere. This is a major advantage: if you loose yo
|
|||||||
<size key="shadowOffset" width="0.0" height="1"/>
|
<size key="shadowOffset" width="0.0" height="1"/>
|
||||||
</label>
|
</label>
|
||||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="S3cre7^Pa$swcrD" textAlignment="center" minimumFontSize="17" clearButtonMode="whileEditing" id="fiX-10-fif">
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="S3cre7^Pa$swcrD" textAlignment="center" minimumFontSize="17" clearButtonMode="whileEditing" id="fiX-10-fif">
|
||||||
<rect key="frame" x="20" y="33" width="280" height="60"/>
|
<rect key="frame" x="20" y="46" width="280" height="60"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<fontDescription key="fontDescription" name="Copperplate-Bold" family="Copperplate" pointSize="26"/>
|
<fontDescription key="fontDescription" name="Copperplate-Bold" family="Copperplate" pointSize="26"/>
|
||||||
@ -389,7 +389,7 @@ The passwords aren't saved anywhere. This is a major advantage: if you loose yo
|
|||||||
</textField>
|
</textField>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.50000000000000011" contentMode="left" text="1" textAlignment="right" lineBreakMode="tailTruncation" minimumFontSize="10" id="Iuf-np-e9C">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.50000000000000011" contentMode="left" text="1" textAlignment="right" lineBreakMode="tailTruncation" minimumFontSize="10" id="Iuf-np-e9C">
|
||||||
<rect key="frame" x="240" y="27" width="40" height="20"/>
|
<rect key="frame" x="240" y="27" width="40" height="20"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" name="Copperplate-Bold" family="Copperplate" pointSize="17"/>
|
<fontDescription key="fontDescription" name="Copperplate-Bold" family="Copperplate" pointSize="17"/>
|
||||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
@ -445,22 +445,22 @@ The passwords aren't saved anywhere. This is a major advantage: if you loose yo
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" id="v2m-Gf-pEV">
|
<view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" id="v2m-Gf-pEV">
|
||||||
<rect key="frame" x="55" y="8" width="210" height="57"/>
|
<rect key="frame" x="55" y="5" width="210" height="60"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="fdm-NG-GFC">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="fdm-NG-GFC">
|
||||||
<rect key="frame" x="0.0" y="-1" width="210" height="60"/>
|
<rect key="frame" x="0.0" y="0.0" width="210" height="60"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap to set a password." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="ieN-QQ-PyR">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap to set a password." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="ieN-QQ-PyR">
|
||||||
<rect key="frame" x="20" y="0.0" width="170" height="37"/>
|
<rect key="frame" x="20" y="0.0" width="170" height="40"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_edit.png" id="KEn-n3-qhX">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_edit.png" id="KEn-n3-qhX">
|
||||||
<rect key="frame" x="48.5" y="6.5" width="24" height="24"/>
|
<rect key="frame" x="48" y="6" width="24" height="24"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
</subviews>
|
</subviews>
|
||||||
@ -534,7 +534,7 @@ L4m3P4sSw0rD</string>
|
|||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
<searchBar contentMode="redraw" barStyle="blackOpaque" placeholder="Site" showsSearchResultsButton="YES" id="qeo-n2-WVh">
|
<searchBar contentMode="redraw" barStyle="blackOpaque" placeholder="Enter site name" showsSearchResultsButton="YES" id="qeo-n2-WVh">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||||
<gestureRecognizers/>
|
<gestureRecognizers/>
|
||||||
@ -544,24 +544,21 @@ L4m3P4sSw0rD</string>
|
|||||||
</connections>
|
</connections>
|
||||||
</searchBar>
|
</searchBar>
|
||||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="zOR-Du-qRL">
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="zOR-Du-qRL">
|
||||||
<rect key="frame" x="55" y="-27" width="210" height="57"/>
|
<rect key="frame" x="10" y="-25" width="300" height="60"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="ORD-Xv-bOQ">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="ORD-Xv-bOQ">
|
||||||
<rect key="frame" x="0.0" y="-1" width="210" height="60"/>
|
<rect key="frame" x="0.0" y="0.0" width="300" height="60"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<rect key="contentStretch" x="0.15000000000000002" y="0.15000000000000002" width="0.69999999999999973" height="0.69999999999999973"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Enter the site's name." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="21b-bH-lR9">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Begin by entering the name of your site." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="21b-bH-lR9">
|
||||||
<rect key="frame" x="20" y="0.0" width="170" height="37"/>
|
<rect key="frame" x="-20" y="9" width="340" height="21"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_edit.png" id="4Xf-mC-295">
|
|
||||||
<rect key="frame" x="49" y="6" width="24" height="24"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
</imageView>
|
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
@ -604,63 +601,56 @@ L4m3P4sSw0rD</string>
|
|||||||
<objects>
|
<objects>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="7yf-G7-kVy" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="7yf-G7-kVy" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
<viewController id="qz3-eG-aEi" customClass="MPGuideViewController" sceneMemberID="viewController">
|
<viewController id="qz3-eG-aEi" customClass="MPGuideViewController" sceneMemberID="viewController">
|
||||||
<view key="view" contentMode="scaleToFill" id="cwa-ct-2DY">
|
<scrollView key="view" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" directionalLockEnabled="YES" pagingEnabled="YES" showsVerticalScrollIndicator="NO" id="Nr4-hi-8b2">
|
||||||
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
|
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" pagingEnabled="YES" showsVerticalScrollIndicator="NO" id="Nr4-hi-8b2">
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_0.png" id="eJP-cS-VRU">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="320" height="460"/>
|
<rect key="frame" x="0.0" y="0.0" width="320" height="460"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
</imageView>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_0.png" id="eJP-cS-VRU">
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_1.png" id="1J9-z9-h96">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="320" height="460"/>
|
<rect key="frame" x="320" y="0.0" width="320" height="460"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_1.png" id="1J9-z9-h96">
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_2.png" id="8kf-Wm-F3L">
|
||||||
<rect key="frame" x="320" y="0.0" width="320" height="460"/>
|
<rect key="frame" x="640" y="0.0" width="320" height="460"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_2.png" id="8kf-Wm-F3L">
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_3.png" id="H5W-P4-o7O">
|
||||||
<rect key="frame" x="640" y="0.0" width="320" height="460"/>
|
<rect key="frame" x="960" y="0.0" width="320" height="460"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_3.png" id="H5W-P4-o7O">
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_4.png" id="IXz-T9-Umi">
|
||||||
<rect key="frame" x="960" y="0.0" width="320" height="460"/>
|
<rect key="frame" x="1280" y="0.0" width="320" height="460"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_4.png" id="IXz-T9-Umi">
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_5.png" id="Hd0-Or-naq">
|
||||||
<rect key="frame" x="1280" y="0.0" width="320" height="460"/>
|
<rect key="frame" x="1280" y="0.0" width="320" height="460"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_5.png" id="Hd0-Or-naq">
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_6.png" id="1jq-Ic-GVZ">
|
||||||
<rect key="frame" x="1280" y="0.0" width="320" height="460"/>
|
<rect key="frame" x="1600" y="0.0" width="320" height="460"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_6.png" id="1jq-Ic-GVZ">
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" reversesTitleShadowWhenHighlighted="YES" lineBreakMode="middleTruncation" id="q93-J1-auj">
|
||||||
<rect key="frame" x="1600" y="0.0" width="320" height="460"/>
|
<rect key="frame" x="1610" y="394" width="300" height="46"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
</imageView>
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" reversesTitleShadowWhenHighlighted="YES" lineBreakMode="middleTruncation" id="q93-J1-auj">
|
<size key="titleShadowOffset" width="0.0" height="1"/>
|
||||||
<rect key="frame" x="1610" y="394" width="300" height="46"/>
|
<state key="normal" title="Get started" backgroundImage="ui_button_green_large.png">
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
<color key="titleShadowColor" red="0.194560533886145" green="0.30086678832116787" blue="0.1263640535337863" alpha="1" colorSpace="deviceRGB"/>
|
||||||
<size key="titleShadowOffset" width="0.0" height="1"/>
|
</state>
|
||||||
<state key="normal" title="Get started" backgroundImage="ui_button_green_large.png">
|
<state key="highlighted">
|
||||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
<color key="titleShadowColor" red="0.194560533886145" green="0.30086678832116787" blue="0.1263640535337863" alpha="1" colorSpace="deviceRGB"/>
|
</state>
|
||||||
</state>
|
<connections>
|
||||||
<state key="highlighted">
|
<action selector="close" destination="qz3-eG-aEi" eventType="touchUpInside" id="uYR-EJ-U6H"/>
|
||||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
</connections>
|
||||||
</state>
|
</button>
|
||||||
<connections>
|
|
||||||
<action selector="close" destination="qz3-eG-aEi" eventType="touchUpInside" id="uYR-EJ-U6H"/>
|
|
||||||
</connections>
|
|
||||||
</button>
|
|
||||||
</subviews>
|
|
||||||
</scrollView>
|
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
|
</scrollView>
|
||||||
</view>
|
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="scrollView" destination="Nr4-hi-8b2" id="8QD-sv-vu6"/>
|
<outlet property="scrollView" destination="Nr4-hi-8b2" id="8QD-sv-vu6"/>
|
||||||
</connections>
|
</connections>
|
||||||
|
@ -78,24 +78,6 @@
|
|||||||
<key>Type</key>
|
<key>Type</key>
|
||||||
<string>PSToggleSwitchSpecifier</string>
|
<string>PSToggleSwitchSpecifier</string>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
|
||||||
<key>FooterText</key>
|
|
||||||
<string>Turn this on if you want to change the master password. Start the application and it will ask you for a new master password. All passwords will change to those for the new master password.</string>
|
|
||||||
<key>Title</key>
|
|
||||||
<string></string>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>PSGroupSpecifier</string>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>DefaultValue</key>
|
|
||||||
<false/>
|
|
||||||
<key>Key</key>
|
|
||||||
<string>forgetKeyPhrase</string>
|
|
||||||
<key>Title</key>
|
|
||||||
<string>Change my password</string>
|
|
||||||
<key>Type</key>
|
|
||||||
<string>PSToggleSwitchSpecifier</string>
|
|
||||||
</dict>
|
|
||||||
</array>
|
</array>
|
||||||
<key>StringsTable</key>
|
<key>StringsTable</key>
|
||||||
<string>Root</string>
|
<string>Root</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user