Word wall + fixes to: guide, export, UI.
[ADDED] Word wall: Show some random dictionary words while user thinks of a new master password to give him some inspiration. [IMPROVED] Only select user after he choose to reset. [IMPROVED] Ugly backdrops in the guide images cleaned up. [FIXED] Export of sites should now include a password version field. [FIXED] Filename to save exported passwords into should use day of the month instead of day of the year. [FIXED] No search predicate was set when search scope button wasn't set. As a result, sites from other users showed up.
@ -3,7 +3,7 @@
|
|||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>BuildMachineOSBuild</key>
|
<key>BuildMachineOSBuild</key>
|
||||||
<string>11C74</string>
|
<string>11E53</string>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>English</string>
|
<string>English</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>FMWK</string>
|
<string>FMWK</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.1.3</string>
|
<string>1.1.5</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleSupportedPlatforms</key>
|
<key>CFBundleSupportedPlatforms</key>
|
||||||
@ -25,7 +25,7 @@
|
|||||||
<string>iPhoneOS</string>
|
<string>iPhoneOS</string>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>0101.03.00</string>
|
<string>0101.05.00</string>
|
||||||
<key>CrashlyticsAPIKey</key>
|
<key>CrashlyticsAPIKey</key>
|
||||||
<string>0d10c90776f5ef5acd01ddbeaca9a6cba4814560</string>
|
<string>0d10c90776f5ef5acd01ddbeaca9a6cba4814560</string>
|
||||||
<key>DTCompiler</key>
|
<key>DTCompiler</key>
|
||||||
|
2
External/Pearl
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 36320eaa305fce113b6c12e45c99d9a61dee80b6
|
Subproject commit d33d38b91a7741b04d1bf5a08145ed4983888dc7
|
@ -680,6 +680,7 @@
|
|||||||
DAB8D93915036BF700CED3BC /* logo-bare.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6B615036BF600CED3BC /* logo-bare.png */; };
|
DAB8D93915036BF700CED3BC /* logo-bare.png in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6B615036BF600CED3BC /* logo-bare.png */; };
|
||||||
DAB8D97C1503718B00CED3BC /* jquery-1.6.1.min.js in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6AB15036BF600CED3BC /* jquery-1.6.1.min.js */; };
|
DAB8D97C1503718B00CED3BC /* jquery-1.6.1.min.js in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D6AB15036BF600CED3BC /* jquery-1.6.1.min.js */; };
|
||||||
DABB981615100B4000B05417 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DABB981515100B4000B05417 /* SystemConfiguration.framework */; };
|
DABB981615100B4000B05417 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DABB981515100B4000B05417 /* SystemConfiguration.framework */; };
|
||||||
|
DAC4149215C53C48007A716E /* dictionary.lst in Resources */ = {isa = PBXBuildFile; fileRef = DAC4149115C53C48007A716E /* dictionary.lst */; };
|
||||||
DAC6325E1486805C0075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
DAC6325E1486805C0075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||||
DAC6326D148680650075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
DAC6326D148680650075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||||
DAC6327B1486809A0075AEA5 /* JRSwizzle.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC632791486809A0075AEA5 /* JRSwizzle.h */; };
|
DAC6327B1486809A0075AEA5 /* JRSwizzle.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC632791486809A0075AEA5 /* JRSwizzle.h */; };
|
||||||
@ -1662,6 +1663,7 @@
|
|||||||
DABB980D150FF40100B05417 /* SendToMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SendToMac.h; sourceTree = "<group>"; };
|
DABB980D150FF40100B05417 /* SendToMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SendToMac.h; sourceTree = "<group>"; };
|
||||||
DABB980E150FF40100B05417 /* SendToMac.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SendToMac.m; sourceTree = "<group>"; };
|
DABB980E150FF40100B05417 /* SendToMac.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SendToMac.m; sourceTree = "<group>"; };
|
||||||
DABB981515100B4000B05417 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
|
DABB981515100B4000B05417 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
|
||||||
|
DAC4149115C53C48007A716E /* dictionary.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dictionary.lst; sourceTree = "<group>"; };
|
||||||
DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libuicolor-utilities.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libuicolor-utilities.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
DAC6326C148680650075AEA5 /* libjrswizzle.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libjrswizzle.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
DAC6326C148680650075AEA5 /* libjrswizzle.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libjrswizzle.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
DAC632791486809A0075AEA5 /* JRSwizzle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JRSwizzle.h; path = External/Pearl/External/jrswizzle/JRSwizzle.h; sourceTree = SOURCE_ROOT; };
|
DAC632791486809A0075AEA5 /* JRSwizzle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JRSwizzle.h; path = External/Pearl/External/jrswizzle/JRSwizzle.h; sourceTree = SOURCE_ROOT; };
|
||||||
@ -2215,6 +2217,7 @@
|
|||||||
DAB8D46F15036BF600CED3BC /* Resources */ = {
|
DAB8D46F15036BF600CED3BC /* Resources */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
DAC4149115C53C48007A716E /* dictionary.lst */,
|
||||||
DA902BD01576CA4A00C38161 /* keypad.png */,
|
DA902BD01576CA4A00C38161 /* keypad.png */,
|
||||||
DA902B931576C0FB00C38161 /* Avatars */,
|
DA902B931576C0FB00C38161 /* Avatars */,
|
||||||
DAB8D47015036BF600CED3BC /* Automaton */,
|
DAB8D47015036BF600CED3BC /* Automaton */,
|
||||||
@ -4174,6 +4177,7 @@
|
|||||||
DAE4C98E157E63BE00EFE047 /* avatar-18@2x.png in Resources */,
|
DAE4C98E157E63BE00EFE047 /* avatar-18@2x.png in Resources */,
|
||||||
DA46826F15AB843200FB09E7 /* tip_basic_black_bottom_right.png in Resources */,
|
DA46826F15AB843200FB09E7 /* tip_basic_black_bottom_right.png in Resources */,
|
||||||
DA46827015AB843200FB09E7 /* tip_basic_black_bottom_right@2x.png in Resources */,
|
DA46827015AB843200FB09E7 /* tip_basic_black_bottom_right@2x.png in Resources */,
|
||||||
|
DAC4149215C53C48007A716E /* dictionary.lst in Resources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -394,6 +394,7 @@
|
|||||||
NSDate *lastUsed = element.lastUsed;
|
NSDate *lastUsed = element.lastUsed;
|
||||||
NSUInteger uses = element.uses;
|
NSUInteger uses = element.uses;
|
||||||
MPElementType type = element.type;
|
MPElementType type = element.type;
|
||||||
|
NSUInteger version = element.version;
|
||||||
NSString *name = element.name;
|
NSString *name = element.name;
|
||||||
NSString *content = nil;
|
NSString *content = nil;
|
||||||
|
|
||||||
@ -406,9 +407,9 @@
|
|||||||
content = element.exportContent;
|
content = element.exportContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
[export appendFormat:@"%@ %8d %8d %20s\t%@\n",
|
[export appendFormat:@"%@ %8d %8s %20s\t%@\n",
|
||||||
[[NSDateFormatter rfc3339DateFormatter] stringFromDate:lastUsed], uses, type,
|
[[NSDateFormatter rfc3339DateFormatter] stringFromDate:lastUsed], uses,
|
||||||
[name cStringUsingEncoding:NSUTF8StringEncoding], content
|
[PearlString(@"%u:%u", type, version) UTF8String], [name UTF8String], content
|
||||||
? content: @""];
|
? content: @""];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,6 @@
|
|||||||
- (void)showGuide;
|
- (void)showGuide;
|
||||||
|
|
||||||
- (void)export;
|
- (void)export;
|
||||||
- (void)changeMasterPasswordFor:(MPUserEntity *)user;
|
- (void)changeMasterPasswordFor:(MPUserEntity *)user didResetBlock:(void(^)(void))didReset;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -286,6 +286,13 @@
|
|||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
|
||||||
|
|
||||||
|
wrn(@"Received memory warning.");
|
||||||
|
|
||||||
|
[super applicationDidReceiveMemoryWarning:application];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
||||||
|
|
||||||
inf(@"Re-activated");
|
inf(@"Re-activated");
|
||||||
@ -466,7 +473,7 @@
|
|||||||
[PearlInfoPlist get].CFBundleVersion);
|
[PearlInfoPlist get].CFBundleVersion);
|
||||||
|
|
||||||
NSDateFormatter *exportDateFormatter = [NSDateFormatter new];
|
NSDateFormatter *exportDateFormatter = [NSDateFormatter new];
|
||||||
[exportDateFormatter setDateFormat:@"yyyy'-'MM'-'DD"];
|
[exportDateFormatter setDateFormat:@"yyyy'-'MM'-'dd"];
|
||||||
|
|
||||||
MFMailComposeViewController *composer = [MFMailComposeViewController new];
|
MFMailComposeViewController *composer = [MFMailComposeViewController new];
|
||||||
[composer setMailComposeDelegate:self];
|
[composer setMailComposeDelegate:self];
|
||||||
@ -480,7 +487,7 @@
|
|||||||
[self.window.rootViewController presentModalViewController:composer animated:YES];
|
[self.window.rootViewController presentModalViewController:composer animated:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)changeMasterPasswordFor:(MPUserEntity *)user {
|
- (void)changeMasterPasswordFor:(MPUserEntity *)user didResetBlock:(void(^)(void))didReset {
|
||||||
|
|
||||||
[PearlAlert showAlertWithTitle:@"Changing Master Password"
|
[PearlAlert showAlertWithTitle:@"Changing Master Password"
|
||||||
message:
|
message:
|
||||||
@ -497,6 +504,9 @@
|
|||||||
[self forgetSavedKeyFor:user];
|
[self forgetSavedKeyFor:user];
|
||||||
[self signOutAnimated:YES];
|
[self signOutAnimated:YES];
|
||||||
|
|
||||||
|
if (didReset)
|
||||||
|
didReset();
|
||||||
|
|
||||||
[TestFlight passCheckpoint:MPCheckpointChangeMP];
|
[TestFlight passCheckpoint:MPCheckpointChangeMP];
|
||||||
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointChangeMP
|
[[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointChangeMP
|
||||||
attributes:nil];
|
attributes:nil];
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
@property (weak, nonatomic) IBOutlet UIImageView *outdatedAlertBack;
|
@property (weak, nonatomic) IBOutlet UIImageView *outdatedAlertBack;
|
||||||
@property (weak, nonatomic) IBOutlet UIButton *outdatedAlertCloseButton;
|
@property (weak, nonatomic) IBOutlet UIButton *outdatedAlertCloseButton;
|
||||||
|
|
||||||
|
|
||||||
@property (copy) void (^contentTipCleanup)(BOOL finished);
|
@property (copy) void (^contentTipCleanup)(BOOL finished);
|
||||||
@property (copy) void (^toolTipCleanup)(BOOL finished);
|
@property (copy) void (^toolTipCleanup)(BOOL finished);
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@
|
|||||||
|
|
||||||
else
|
else
|
||||||
if (cell == self.changeMPCell)
|
if (cell == self.changeMPCell)
|
||||||
[[MPAppDelegate get] changeMasterPasswordFor:[MPAppDelegate get].activeUser];
|
[[MPAppDelegate get] changeMasterPasswordFor:[MPAppDelegate get].activeUser didResetBlock:nil];
|
||||||
|
|
||||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
|
|
||||||
#import "MPSearchDelegate.h"
|
#import "MPSearchDelegate.h"
|
||||||
#import "MPAppDelegate.h"
|
#import "MPAppDelegate.h"
|
||||||
#import "MPAppDelegate_Store.h"
|
|
||||||
#import "LocalyticsSession.h"
|
#import "LocalyticsSession.h"
|
||||||
|
#import "MPAppDelegate_Store.h"
|
||||||
|
|
||||||
@interface MPSearchDelegate (Private)
|
@interface MPSearchDelegate (Private)
|
||||||
|
|
||||||
@ -95,8 +95,8 @@
|
|||||||
|
|
||||||
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
|
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
|
||||||
|
|
||||||
controller.searchBar.prompt = @"Enter the site's name:";
|
controller.searchBar.prompt = @"Enter the site's name:";
|
||||||
controller.searchBar.showsScopeBar = controller.searchBar.selectedScopeButtonIndex != MPSearchScopeAll;
|
controller.searchBar.showsScopeBar = controller.searchBar.selectedScopeButtonIndex != MPSearchScopeAll;
|
||||||
if (controller.searchBar.showsScopeBar)
|
if (controller.searchBar.showsScopeBar)
|
||||||
controller.searchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"All", @"Outdated", nil];
|
controller.searchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"All", @"Outdated", nil];
|
||||||
else
|
else
|
||||||
@ -109,8 +109,8 @@
|
|||||||
|
|
||||||
- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
|
- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
|
||||||
|
|
||||||
controller.searchBar.text = controller.searchBar.searchResultsButtonSelected? @" ": @"";
|
controller.searchBar.text = controller.searchBar.searchResultsButtonSelected? @" ": @"";
|
||||||
self.query = @"";
|
self.query = @"";
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
|
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
|
||||||
@ -151,23 +151,25 @@
|
|||||||
- (void)fetchData {
|
- (void)fetchData {
|
||||||
|
|
||||||
assert(self.query);
|
assert(self.query);
|
||||||
|
assert([MPAppDelegate get].activeUser);
|
||||||
|
|
||||||
|
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"user == %@", [MPAppDelegate get].activeUser];
|
||||||
|
if (self.query.length)
|
||||||
|
predicate = [NSCompoundPredicate
|
||||||
|
andPredicateWithSubpredicates:[NSArray arrayWithObjects:[NSPredicate predicateWithFormat:@"name BEGINSWITH[cd] %@", self.query],
|
||||||
|
predicate, nil]];
|
||||||
|
|
||||||
switch ((MPSearchScope)self.searchDisplayController.searchBar.selectedScopeButtonIndex) {
|
switch ((MPSearchScope)self.searchDisplayController.searchBar.selectedScopeButtonIndex) {
|
||||||
|
|
||||||
case MPSearchScopeAll:
|
case MPSearchScopeAll:
|
||||||
self.fetchedResultsController.fetchRequest.predicate = [NSPredicate predicateWithFormat:
|
|
||||||
@"(%@ == '' OR name BEGINSWITH[cd] %@) AND user == %@",
|
|
||||||
self.query, self.query,
|
|
||||||
NilToNSNull([MPAppDelegate get].activeUser)];
|
|
||||||
break;
|
break;
|
||||||
case MPSearchScopeOutdated:
|
case MPSearchScopeOutdated:
|
||||||
self.fetchedResultsController.fetchRequest.predicate = [NSPredicate predicateWithFormat:
|
predicate = [NSCompoundPredicate
|
||||||
@"(%@ == '' OR name BEGINSWITH[cd] %@) AND user == %@ AND requiresExplicitMigration_ == YES",
|
andPredicateWithSubpredicates:[NSArray arrayWithObjects:[NSPredicate predicateWithFormat:@"requiresExplicitMigration_ == YES"],
|
||||||
self.query, self.query,
|
predicate, nil]];
|
||||||
NilToNSNull([MPAppDelegate get].activeUser)];
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
self.fetchedResultsController.fetchRequest.predicate = predicate;
|
||||||
|
|
||||||
NSError *error;
|
NSError *error;
|
||||||
if (![self.fetchedResultsController performFetch:&error])
|
if (![self.fetchedResultsController performFetch:&error])
|
||||||
@ -239,6 +241,7 @@
|
|||||||
|
|
||||||
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
|
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
|
||||||
|
|
||||||
|
dbg(@"controllerDidChangeContent on thread: %@", [NSThread currentThread].name);
|
||||||
[self.searchDisplayController.searchResultsTableView reloadData];
|
[self.searchDisplayController.searchResultsTableView reloadData];
|
||||||
// [self.searchDisplayController.searchResultsTableView endUpdates];
|
// [self.searchDisplayController.searchResultsTableView endUpdates];
|
||||||
}
|
}
|
||||||
|
@ -111,8 +111,9 @@
|
|||||||
case 7:
|
case 7:
|
||||||
return NSNotFound;
|
return NSNotFound;
|
||||||
|
|
||||||
default:
|
default: {
|
||||||
Throw(@"Unsupported row: %d, when selecting generated element type.", indexPath.row);
|
Throw(@"Unsupported row: %d, when selecting generated element type.", indexPath.row);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,8 +129,9 @@
|
|||||||
case 3:
|
case 3:
|
||||||
return NSNotFound;
|
return NSNotFound;
|
||||||
|
|
||||||
default:
|
default: {
|
||||||
Throw(@"Unsupported row: %d, when selecting stored element type.", indexPath.row);
|
Throw(@"Unsupported row: %d, when selecting stored element type.", indexPath.row);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,15 +11,18 @@
|
|||||||
@interface MPUnlockViewController : UIViewController<UITextFieldDelegate, UIScrollViewDelegate>
|
@interface MPUnlockViewController : UIViewController<UITextFieldDelegate, UIScrollViewDelegate>
|
||||||
|
|
||||||
@property (weak, nonatomic) IBOutlet UIImageView *spinner;
|
@property (weak, nonatomic) IBOutlet UIImageView *spinner;
|
||||||
|
@property (weak, nonatomic) IBOutlet UILabel *passwordFieldLabel;
|
||||||
@property (weak, nonatomic) IBOutlet UITextField *passwordField;
|
@property (weak, nonatomic) IBOutlet UITextField *passwordField;
|
||||||
@property (weak, nonatomic) IBOutlet UIView *passwordView;
|
@property (weak, nonatomic) IBOutlet UIView *passwordView;
|
||||||
@property (weak, nonatomic) IBOutlet UIScrollView *avatarsView;
|
@property (weak, nonatomic) IBOutlet UIScrollView *avatarsView;
|
||||||
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
|
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
|
||||||
@property (weak, nonatomic) IBOutlet UILabel *oldNameLabel;
|
@property (weak, nonatomic) IBOutlet UILabel *oldNameLabel;
|
||||||
@property (weak, nonatomic) IBOutlet UIButton *avatarTemplate;
|
@property (weak, nonatomic) IBOutlet UIButton *avatarTemplate;
|
||||||
|
@property (weak, nonatomic) IBOutlet UIView *createPasswordTipView;
|
||||||
@property (weak, nonatomic) IBOutlet UILabel *deleteTip;
|
@property (weak, nonatomic) IBOutlet UILabel *deleteTip;
|
||||||
@property (weak, nonatomic) IBOutlet UIView *passwordTipView;
|
@property (weak, nonatomic) IBOutlet UIView *passwordTipView;
|
||||||
@property (weak, nonatomic) IBOutlet UILabel *passwordTipLabel;
|
@property (weak, nonatomic) IBOutlet UILabel *passwordTipLabel;
|
||||||
|
@property (weak, nonatomic) IBOutlet UIView *wordWall;
|
||||||
@property (strong, nonatomic) IBOutlet UILongPressGestureRecognizer *targetedUserActionGesture;
|
@property (strong, nonatomic) IBOutlet UILongPressGestureRecognizer *targetedUserActionGesture;
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *avatarShadowColor;
|
@property (nonatomic, strong) UIColor *avatarShadowColor;
|
||||||
|
@ -17,6 +17,9 @@
|
|||||||
|
|
||||||
@property (strong, nonatomic) MPUserEntity *selectedUser;
|
@property (strong, nonatomic) MPUserEntity *selectedUser;
|
||||||
@property (strong, nonatomic) NSMutableDictionary *avatarToUser;
|
@property (strong, nonatomic) NSMutableDictionary *avatarToUser;
|
||||||
|
@property (nonatomic) BOOL wordWallAnimating;
|
||||||
|
@property (nonatomic, strong) NSArray *wordList;
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@ -24,16 +27,21 @@
|
|||||||
@synthesize selectedUser;
|
@synthesize selectedUser;
|
||||||
@synthesize avatarToUser;
|
@synthesize avatarToUser;
|
||||||
@synthesize spinner;
|
@synthesize spinner;
|
||||||
|
@synthesize passwordFieldLabel;
|
||||||
@synthesize passwordField;
|
@synthesize passwordField;
|
||||||
@synthesize passwordView;
|
@synthesize passwordView;
|
||||||
@synthesize avatarsView;
|
@synthesize avatarsView;
|
||||||
@synthesize nameLabel, oldNameLabel;
|
@synthesize nameLabel, oldNameLabel;
|
||||||
@synthesize avatarTemplate;
|
@synthesize avatarTemplate;
|
||||||
|
@synthesize createPasswordTipView;
|
||||||
@synthesize deleteTip;
|
@synthesize deleteTip;
|
||||||
@synthesize passwordTipView;
|
@synthesize passwordTipView;
|
||||||
@synthesize passwordTipLabel;
|
@synthesize passwordTipLabel;
|
||||||
|
@synthesize wordWall;
|
||||||
@synthesize targetedUserActionGesture;
|
@synthesize targetedUserActionGesture;
|
||||||
@synthesize avatarShadowColor = _avatarShadowColor;
|
@synthesize avatarShadowColor = _avatarShadowColor;
|
||||||
|
@synthesize wordWallAnimating = _wordWallAnimating;
|
||||||
|
@synthesize wordList = _wordList;
|
||||||
|
|
||||||
|
|
||||||
- (void)initAvatarAlert:(UIAlertView *)alert forUser:(MPUserEntity *)user {
|
- (void)initAvatarAlert:(UIAlertView *)alert forUser:(MPUserEntity *)user {
|
||||||
@ -66,7 +74,7 @@
|
|||||||
avatar.backgroundColor = self.avatarTemplate.backgroundColor;
|
avatar.backgroundColor = self.avatarTemplate.backgroundColor;
|
||||||
else
|
else
|
||||||
avatar.backgroundColor = [UIColor clearColor];
|
avatar.backgroundColor = [UIColor clearColor];
|
||||||
} options:0];
|
} options:0];
|
||||||
[avatar onSelect:^(BOOL selected) {
|
[avatar onSelect:^(BOOL selected) {
|
||||||
if (selected)
|
if (selected)
|
||||||
user.avatar = (unsigned)avatar.tag;
|
user.avatar = (unsigned)avatar.tag;
|
||||||
@ -121,6 +129,21 @@
|
|||||||
self.avatarTemplate.hidden = YES;
|
self.avatarTemplate.hidden = YES;
|
||||||
self.spinner.alpha = 0;
|
self.spinner.alpha = 0;
|
||||||
self.passwordTipView.alpha = 0;
|
self.passwordTipView.alpha = 0;
|
||||||
|
self.createPasswordTipView.alpha = 0;
|
||||||
|
|
||||||
|
NSMutableArray *wordListLines = [NSMutableArray arrayWithCapacity:27413];
|
||||||
|
[[[NSString alloc] initWithData:[NSData dataWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"dictionary" withExtension:@"lst"]]
|
||||||
|
encoding:NSUTF8StringEncoding] enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
|
||||||
|
[wordListLines addObject:line];
|
||||||
|
}];
|
||||||
|
self.wordList = wordListLines;
|
||||||
|
|
||||||
|
self.wordWall.alpha = 0;
|
||||||
|
[self.wordWall enumerateSubviews:^(UIView *subview, BOOL *stop, BOOL *recurse) {
|
||||||
|
UILabel *wordLabel = (UILabel *)subview;
|
||||||
|
|
||||||
|
[self initializeWordLabel:wordLabel];
|
||||||
|
} recurse:NO];
|
||||||
|
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
}
|
}
|
||||||
@ -137,6 +160,9 @@
|
|||||||
[self setPasswordTipView:nil];
|
[self setPasswordTipView:nil];
|
||||||
[self setPasswordTipLabel:nil];
|
[self setPasswordTipLabel:nil];
|
||||||
[self setTargetedUserActionGesture:nil];
|
[self setTargetedUserActionGesture:nil];
|
||||||
|
[self setWordWall:nil];
|
||||||
|
[self setCreatePasswordTipView:nil];
|
||||||
|
[self setPasswordFieldLabel:nil];
|
||||||
[super viewDidUnload];
|
[super viewDidUnload];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,14 +228,14 @@
|
|||||||
avatar.tag = user.avatar;
|
avatar.tag = user.avatar;
|
||||||
|
|
||||||
[avatar setBackgroundImage:[UIImage imageNamed:PearlString(@"avatar-%u", user.avatar)]
|
[avatar setBackgroundImage:[UIImage imageNamed:PearlString(@"avatar-%u", user.avatar)]
|
||||||
forState:UIControlStateNormal];
|
forState:UIControlStateNormal];
|
||||||
[avatar setSelectionInSuperviewCandidate:YES isClearable:YES];
|
[avatar setSelectionInSuperviewCandidate:YES isClearable:YES];
|
||||||
[avatar onHighlightOrSelect:^(BOOL highlighted, BOOL selected) {
|
[avatar onHighlightOrSelect:^(BOOL highlighted, BOOL selected) {
|
||||||
if (highlighted || selected)
|
if (highlighted || selected)
|
||||||
avatar.backgroundColor = self.avatarTemplate.backgroundColor;
|
avatar.backgroundColor = self.avatarTemplate.backgroundColor;
|
||||||
else
|
else
|
||||||
avatar.backgroundColor = [UIColor clearColor];
|
avatar.backgroundColor = [UIColor clearColor];
|
||||||
} options:0];
|
} options:0];
|
||||||
[avatar onSelect:^(BOOL selected) {
|
[avatar onSelect:^(BOOL selected) {
|
||||||
if (selected) {
|
if (selected) {
|
||||||
if ((self.selectedUser = user))
|
if ((self.selectedUser = user))
|
||||||
@ -220,7 +246,7 @@
|
|||||||
self.selectedUser = nil;
|
self.selectedUser = nil;
|
||||||
[self didToggleUserSelection];
|
[self didToggleUserSelection];
|
||||||
}
|
}
|
||||||
} options:0];
|
} options:0];
|
||||||
|
|
||||||
[self.avatarToUser setObject:NilToNSNull(user) forKey:[NSValue valueWithNonretainedObject:avatar]];
|
[self.avatarToUser setObject:NilToNSNull(user) forKey:[NSValue valueWithNonretainedObject:avatar]];
|
||||||
|
|
||||||
@ -250,9 +276,9 @@
|
|||||||
- (void)didSelectNewUserAvatar:(UIButton *)newUserAvatar {
|
- (void)didSelectNewUserAvatar:(UIButton *)newUserAvatar {
|
||||||
|
|
||||||
MPUserEntity *newUser = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([MPUserEntity class])
|
MPUserEntity *newUser = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([MPUserEntity class])
|
||||||
inManagedObjectContext:[MPAppDelegate managedObjectContext]];
|
inManagedObjectContext:[MPAppDelegate managedObjectContext]];
|
||||||
|
|
||||||
[self showNewUserNameAlertFor:newUser completion:^(BOOL finished){
|
[self showNewUserNameAlertFor:newUser completion:^(BOOL finished) {
|
||||||
newUserAvatar.selected = NO;
|
newUserAvatar.selected = NO;
|
||||||
if (!finished)
|
if (!finished)
|
||||||
[[MPAppDelegate managedObjectContext] deleteObject:newUser];
|
[[MPAppDelegate managedObjectContext] deleteObject:newUser];
|
||||||
@ -279,7 +305,7 @@
|
|||||||
newUser.name = [alert textFieldAtIndex:0].text;
|
newUser.name = [alert textFieldAtIndex:0].text;
|
||||||
[self showNewUserAvatarAlertFor:newUser completion:completion];
|
[self showNewUserAvatarAlertFor:newUser completion:completion];
|
||||||
}
|
}
|
||||||
cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:[PearlStrings get].commonButtonSave, nil];
|
cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:[PearlStrings get].commonButtonSave, nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showNewUserAvatarAlertFor:(MPUserEntity *)newUser completion:(void (^)(BOOL finished))completion {
|
- (void)showNewUserAvatarAlertFor:(MPUserEntity *)newUser completion:(void (^)(BOOL finished))completion {
|
||||||
@ -289,11 +315,11 @@
|
|||||||
initAlert:^(UIAlertView *_alert, UITextField *_firstField) {
|
initAlert:^(UIAlertView *_alert, UITextField *_firstField) {
|
||||||
[self initAvatarAlert:_alert forUser:newUser];
|
[self initAvatarAlert:_alert forUser:newUser];
|
||||||
}
|
}
|
||||||
tappedButtonBlock:^(UIAlertView *_alert, NSInteger _buttonIndex) {
|
tappedButtonBlock:^(UIAlertView *_alert, NSInteger _buttonIndex) {
|
||||||
|
|
||||||
// Okay
|
// Okay
|
||||||
[self showNewUserConfirmationAlertFor:newUser completion:completion];
|
[self showNewUserConfirmationAlertFor:newUser completion:completion];
|
||||||
} cancelTitle:nil otherTitles:[PearlStrings get].commonButtonOkay, nil];
|
} cancelTitle:nil otherTitles:[PearlStrings get].commonButtonOkay, nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showNewUserConfirmationAlertFor:(MPUserEntity *)newUser completion:(void (^)(BOOL finished))completion {
|
- (void)showNewUserConfirmationAlertFor:(MPUserEntity *)newUser completion:(void (^)(BOOL finished))completion {
|
||||||
@ -306,19 +332,19 @@
|
|||||||
initAlert:^void(UIAlertView *__alert, UITextField *__firstField) {
|
initAlert:^void(UIAlertView *__alert, UITextField *__firstField) {
|
||||||
[self initConfirmationAlert:__alert forUser:newUser];
|
[self initConfirmationAlert:__alert forUser:newUser];
|
||||||
}
|
}
|
||||||
tappedButtonBlock:^void(UIAlertView *__alert, NSInteger __buttonIndex) {
|
tappedButtonBlock:^void(UIAlertView *__alert, NSInteger __buttonIndex) {
|
||||||
if (__buttonIndex == [__alert cancelButtonIndex]) {
|
if (__buttonIndex == [__alert cancelButtonIndex]) {
|
||||||
[self showNewUserNameAlertFor:newUser completion:completion];
|
[self showNewUserNameAlertFor:newUser completion:completion];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Confirm
|
// Confirm
|
||||||
completion(YES);
|
completion(YES);
|
||||||
self.selectedUser = newUser;
|
self.selectedUser = newUser;
|
||||||
|
|
||||||
[self updateUsers];
|
[self updateUsers];
|
||||||
}
|
}
|
||||||
cancelTitle:@"Change" otherTitles:@"Confirm", nil];
|
cancelTitle:@"Change" otherTitles:@"Confirm", nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateLayoutAnimated:(BOOL)animated allowScroll:(BOOL)allowScroll completion:(void (^)(BOOL finished))completion {
|
- (void)updateLayoutAnimated:(BOOL)animated allowScroll:(BOOL)allowScroll completion:(void (^)(BOOL finished))completion {
|
||||||
@ -333,14 +359,16 @@
|
|||||||
|
|
||||||
self.oldNameLabel.alpha = 0;
|
self.oldNameLabel.alpha = 0;
|
||||||
self.nameLabel.alpha = 1;
|
self.nameLabel.alpha = 1;
|
||||||
} completion:^(BOOL finished) {
|
} completion:^(BOOL finished) {
|
||||||
if (completion)
|
if (completion)
|
||||||
completion(finished);
|
completion(finished);
|
||||||
}];
|
}];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lay out password entry and user selection views.
|
||||||
if (self.selectedUser && !self.passwordView.alpha) {
|
if (self.selectedUser && !self.passwordView.alpha) {
|
||||||
|
// User was just selected.
|
||||||
self.passwordView.alpha = 1;
|
self.passwordView.alpha = 1;
|
||||||
self.avatarsView.center = CGPointMake(160, 170);
|
self.avatarsView.center = CGPointMake(160, 170);
|
||||||
self.avatarsView.scrollEnabled = NO;
|
self.avatarsView.scrollEnabled = NO;
|
||||||
@ -351,6 +379,7 @@
|
|||||||
self.deleteTip.alpha = 0;
|
self.deleteTip.alpha = 0;
|
||||||
} else
|
} else
|
||||||
if (!self.selectedUser && self.passwordView.alpha == 1) {
|
if (!self.selectedUser && self.passwordView.alpha == 1) {
|
||||||
|
// User was just deselected.
|
||||||
self.passwordField.text = nil;
|
self.passwordField.text = nil;
|
||||||
self.passwordView.alpha = 0;
|
self.passwordView.alpha = 0;
|
||||||
self.avatarsView.center = CGPointMake(160, 310);
|
self.avatarsView.center = CGPointMake(160, 310);
|
||||||
@ -362,6 +391,34 @@
|
|||||||
self.deleteTip.alpha = 0.5;
|
self.deleteTip.alpha = 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lay out the word wall.
|
||||||
|
if (!self.selectedUser || self.selectedUser.keyID) {
|
||||||
|
self.passwordFieldLabel.text = @"Enter your master password:";
|
||||||
|
|
||||||
|
self.wordWall.alpha = 0;
|
||||||
|
self.createPasswordTipView.alpha = 0;
|
||||||
|
self.wordWallAnimating = NO;
|
||||||
|
} else {
|
||||||
|
self.passwordFieldLabel.text = @"Create your master password:";
|
||||||
|
|
||||||
|
if (!self.wordWallAnimating) {
|
||||||
|
self.wordWallAnimating = YES;
|
||||||
|
self.wordWall.alpha = 1;
|
||||||
|
self.createPasswordTipView.alpha = 1;
|
||||||
|
|
||||||
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
// Jump out of our UIView animation block.
|
||||||
|
[self beginWordWallAnimation];
|
||||||
|
});
|
||||||
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 15 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
|
||||||
|
[UIView animateWithDuration:1 animations:^{
|
||||||
|
self.createPasswordTipView.alpha = 0;
|
||||||
|
}];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lay out user targeting.
|
||||||
MPUserEntity *targetedUser = self.selectedUser;
|
MPUserEntity *targetedUser = self.selectedUser;
|
||||||
UIButton *selectedAvatar = [self avatarForUser:self.selectedUser];
|
UIButton *selectedAvatar = [self avatarForUser:self.selectedUser];
|
||||||
UIButton *targetedAvatar = selectedAvatar;
|
UIButton *targetedAvatar = selectedAvatar;
|
||||||
@ -382,7 +439,7 @@
|
|||||||
avatar.alpha = isTargeted? 1: self.selectedUser? 0.1: 0.4;
|
avatar.alpha = isTargeted? 1: self.selectedUser? 0.1: 0.4;
|
||||||
|
|
||||||
[self updateAvatarShadowColor:avatar isTargeted:isTargeted];
|
[self updateAvatarShadowColor:avatar isTargeted:isTargeted];
|
||||||
} recurse:NO];
|
} recurse:NO];
|
||||||
|
|
||||||
if (allowScroll) {
|
if (allowScroll) {
|
||||||
CGPoint targetContentOffset = CGPointMake(MAX(0, targetedAvatar.center.x - self.avatarsView.bounds.size.width / 2),
|
CGPoint targetContentOffset = CGPointMake(MAX(0, targetedAvatar.center.x - self.avatarsView.bounds.size.width / 2),
|
||||||
@ -391,6 +448,7 @@
|
|||||||
[self.avatarsView setContentOffset:targetContentOffset animated:animated];
|
[self.avatarsView setContentOffset:targetContentOffset animated:animated];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Lay out user name label.
|
||||||
self.nameLabel.text = targetedUser? targetedUser.name: @"New User";
|
self.nameLabel.text = targetedUser? targetedUser.name: @"New User";
|
||||||
self.nameLabel.bounds = CGRectSetHeight(self.nameLabel.bounds,
|
self.nameLabel.bounds = CGRectSetHeight(self.nameLabel.bounds,
|
||||||
[self.nameLabel.text sizeWithFont:self.nameLabel.font
|
[self.nameLabel.text sizeWithFont:self.nameLabel.font
|
||||||
@ -401,6 +459,36 @@
|
|||||||
completion(YES);
|
completion(YES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)beginWordWallAnimation {
|
||||||
|
|
||||||
|
[self.wordWall enumerateSubviews:^(UIView *subview, BOOL *stop, BOOL *recurse) {
|
||||||
|
UILabel *wordLabel = (UILabel *)subview;
|
||||||
|
|
||||||
|
if (wordLabel.frame.origin.x < -self.wordWall.frame.size.width / 3) {
|
||||||
|
wordLabel.frame = CGRectSetX(wordLabel.frame, wordLabel.frame.origin.x + self.wordWall.frame.size.width);
|
||||||
|
[self initializeWordLabel:wordLabel];
|
||||||
|
}
|
||||||
|
} recurse:NO];
|
||||||
|
|
||||||
|
if (self.wordWallAnimating)
|
||||||
|
[UIView animateWithDuration:15 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
|
||||||
|
[self.wordWall enumerateSubviews:^(UIView *subview, BOOL *stop, BOOL *recurse) {
|
||||||
|
UILabel *wordLabel = (UILabel *)subview;
|
||||||
|
|
||||||
|
wordLabel.frame = CGRectSetX(wordLabel.frame, wordLabel.frame.origin.x - self.wordWall.frame.size.width / 3);
|
||||||
|
} recurse:NO];
|
||||||
|
} completion:^(BOOL finished) {
|
||||||
|
if (finished)
|
||||||
|
[self beginWordWallAnimation];
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)initializeWordLabel:(UILabel *)wordLabel {
|
||||||
|
|
||||||
|
wordLabel.alpha = 0.05 + (random() % 35) / 100.0F;
|
||||||
|
wordLabel.text = [self.wordList objectAtIndex:(NSUInteger)random() % [self.wordList count]];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)setPasswordTip:(NSString *)string {
|
- (void)setPasswordTip:(NSString *)string {
|
||||||
|
|
||||||
if (string.length)
|
if (string.length)
|
||||||
@ -421,7 +509,7 @@
|
|||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
if (unlocked)
|
if (unlocked)
|
||||||
[self dismissViewControllerAnimated:YES completion:nil];
|
[self dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
|
||||||
else {
|
else {
|
||||||
if (self.passwordField.text.length)
|
if (self.passwordField.text.length)
|
||||||
[self setPasswordTip:@"Incorrect password."];
|
[self setPasswordTip:@"Incorrect password."];
|
||||||
@ -510,7 +598,8 @@
|
|||||||
pulseShadowOpacityAnimation.repeatCount = MAXFLOAT;
|
pulseShadowOpacityAnimation.repeatCount = MAXFLOAT;
|
||||||
|
|
||||||
CAAnimationGroup *group = [[CAAnimationGroup alloc] init];
|
CAAnimationGroup *group = [[CAAnimationGroup alloc] init];
|
||||||
group.animations = [NSArray arrayWithObjects:toShadowColorAnimation, toShadowOpacityAnimation, pulseShadowOpacityAnimation, nil];
|
group.animations = [NSArray arrayWithObjects:toShadowColorAnimation, toShadowOpacityAnimation, pulseShadowOpacityAnimation,
|
||||||
|
nil];
|
||||||
group.duration = MAXFLOAT;
|
group.duration = MAXFLOAT;
|
||||||
|
|
||||||
[avatar.layer removeAnimationForKey:@"inactiveShadow"];
|
[avatar.layer removeAnimationForKey:@"inactiveShadow"];
|
||||||
@ -575,8 +664,8 @@
|
|||||||
|
|
||||||
[self tryMasterPassword];
|
[self tryMasterPassword];
|
||||||
}
|
}
|
||||||
cancelTitle:[PearlStrings get].commonButtonCancel
|
cancelTitle:[PearlStrings get].commonButtonCancel
|
||||||
otherTitles:[PearlStrings get].commonButtonContinue, nil];
|
otherTitles:[PearlStrings get].commonButtonContinue, nil];
|
||||||
|
|
||||||
|
|
||||||
return YES;
|
return YES;
|
||||||
@ -631,9 +720,11 @@
|
|||||||
[self updateUsers];
|
[self updateUsers];
|
||||||
} else
|
} else
|
||||||
if (buttonIndex == [sheet firstOtherButtonIndex]) {
|
if (buttonIndex == [sheet firstOtherButtonIndex]) {
|
||||||
[[MPAppDelegate get] changeMasterPasswordFor:targetedUser];
|
[[MPAppDelegate get] changeMasterPasswordFor:targetedUser didResetBlock:^{
|
||||||
[[self avatarForUser:targetedUser] setSelected:YES];
|
[[self avatarForUser:targetedUser] setSelected:YES];
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
} cancelTitle:[PearlStrings get].commonButtonCancel destructiveTitle:@"Delete User" otherTitles:@"Reset Password", nil];
|
} cancelTitle:[PearlStrings get].commonButtonCancel destructiveTitle:@"Delete User" otherTitles:@"Reset Password",
|
||||||
|
nil];
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.1" toolsVersion="2182" systemVersion="11E53" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="KZF-fe-y9n">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="2549" systemVersion="12A269" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="KZF-fe-y9n">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment defaultVersion="1296" identifier="iOS"/>
|
<deployment defaultVersion="1296" identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="1181"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="1498"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
<!--Type View Controller - Type-->
|
<!--Type View Controller - Type-->
|
||||||
@ -617,6 +617,136 @@ Your passwords will be AES-encrypted with your master password.</string>
|
|||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" cocoaTouchSystemColor="scrollViewTexturedBackgroundColor"/>
|
<color key="backgroundColor" cocoaTouchSystemColor="scrollViewTexturedBackgroundColor"/>
|
||||||
</view>
|
</view>
|
||||||
|
<searchBar contentMode="redraw" barStyle="blackOpaque" placeholder="Site name" showsSearchResultsButton="YES" id="qeo-n2-WVh">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||||
|
<gestureRecognizers/>
|
||||||
|
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="URL"/>
|
||||||
|
<scopeButtonTitles>
|
||||||
|
<string>All</string>
|
||||||
|
<string>Outdated</string>
|
||||||
|
</scopeButtonTitles>
|
||||||
|
</searchBar>
|
||||||
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="zOR-Du-qRL" userLabel="View - Search Tip">
|
||||||
|
<rect key="frame" x="10" y="15" width="300" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_top.png" id="ORD-Xv-bOQ">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="300" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<rect key="contentStretch" x="0.15000000000000002" y="0.15000000000000002" width="0.69999999999999973" height="0.69999999999999973"/>
|
||||||
|
</imageView>
|
||||||
|
<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="26" width="340" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
</view>
|
||||||
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="foz-tW-xGw" userLabel="View - Action Tip">
|
||||||
|
<rect key="frame" x="10" y="0.0" width="300" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_top_right.png" id="4T8-Xf-5E2">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="300" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<rect key="contentStretch" x="0.15000000000000002" y="0.15000000000000002" width="0.69999999999999973" height="0.69999999999999973"/>
|
||||||
|
</imageView>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap for actions or sending feedback." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="aSg-lm-MVe">
|
||||||
|
<rect key="frame" x="-20" y="20" width="340" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_action.png" id="shE-7F-5So">
|
||||||
|
<rect key="frame" x="50" y="18" width="24" height="24"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
</imageView>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
</view>
|
||||||
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="UM8-56-kAO" userLabel="View - Tool Tip">
|
||||||
|
<rect key="frame" x="10" y="15" width="266" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_bottom_right.png" id="LqX-rO-rep">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="266" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<rect key="contentStretch" x="0.15000000000000002" y="0.15000000000000002" width="0.69999999999999973" height="0.69999999999999973"/>
|
||||||
|
</imageView>
|
||||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_edit.png" id="KEn-n3-qhX">
|
||||||
|
<rect key="frame" x="77" y="9" width="24" height="24"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
</imageView>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap to set a password." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="MtZ-N7-CYD">
|
||||||
|
<rect key="frame" x="-20" y="9" width="306" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
</view>
|
||||||
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="g55-0m-WjS" userLabel="View - Type Tip">
|
||||||
|
<rect key="frame" x="10" y="228" width="300" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_top.png" id="ZR6-xT-bv8">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="300" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<rect key="contentStretch" x="0.15000000000000002" y="0.15000000000000002" width="0.69999999999999973" height="0.69999999999999973"/>
|
||||||
|
</imageView>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap if you need another kind of password." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="2Iw-KQ-O8t">
|
||||||
|
<rect key="frame" x="-20" y="26" width="340" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
</view>
|
||||||
|
<view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" id="v2m-Gf-pEV" userLabel="View - Content Tip">
|
||||||
|
<rect key="frame" x="55" y="50" width="210" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="fdm-NG-GFC">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="210" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
</imageView>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Copied!" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="ieN-QQ-PyR">
|
||||||
|
<rect key="frame" x="19" y="9" width="171" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
</view>
|
||||||
|
<view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" id="b9W-aA-93r" userLabel="View - User Name Tip">
|
||||||
|
<rect key="frame" x="55" y="110" width="210" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="BQk-Kb-98d">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="210" height="60"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
</imageView>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Copied!" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="coX-1P-dqm">
|
||||||
|
<rect key="frame" x="19" y="9" width="171" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
</view>
|
||||||
<view alpha="0.0" contentMode="scaleToFill" id="yRY-qt-gz8" userLabel="View - Alert">
|
<view alpha="0.0" contentMode="scaleToFill" id="yRY-qt-gz8" userLabel="View - Alert">
|
||||||
<rect key="frame" x="10" y="230" width="300" height="180"/>
|
<rect key="frame" x="10" y="230" width="300" height="180"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
@ -726,136 +856,6 @@ You should upgrade these sites and update their account's passwords as soon as c
|
|||||||
</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 name" showsSearchResultsButton="YES" id="qeo-n2-WVh">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
|
||||||
<gestureRecognizers/>
|
|
||||||
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="URL"/>
|
|
||||||
<scopeButtonTitles>
|
|
||||||
<string>All</string>
|
|
||||||
<string>Outdated</string>
|
|
||||||
</scopeButtonTitles>
|
|
||||||
</searchBar>
|
|
||||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="zOR-Du-qRL" userLabel="View - Search Tip">
|
|
||||||
<rect key="frame" x="10" y="15" width="300" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_top.png" id="ORD-Xv-bOQ">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="300" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<rect key="contentStretch" x="0.15000000000000002" y="0.15000000000000002" width="0.69999999999999973" height="0.69999999999999973"/>
|
|
||||||
</imageView>
|
|
||||||
<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="26" width="340" height="21"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
</view>
|
|
||||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="foz-tW-xGw" userLabel="View - Action Tip">
|
|
||||||
<rect key="frame" x="10" y="0.0" width="300" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_top_right.png" id="4T8-Xf-5E2">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="300" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<rect key="contentStretch" x="0.15000000000000002" y="0.15000000000000002" width="0.69999999999999973" height="0.69999999999999973"/>
|
|
||||||
</imageView>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap for actions or sending feedback." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="aSg-lm-MVe">
|
|
||||||
<rect key="frame" x="-20" y="20" width="340" height="21"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_action.png" id="shE-7F-5So">
|
|
||||||
<rect key="frame" x="50" y="18" width="24" height="24"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
|
||||||
</imageView>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
</view>
|
|
||||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="UM8-56-kAO" userLabel="View - Tool Tip">
|
|
||||||
<rect key="frame" x="10" y="15" width="266" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_bottom_right.png" id="LqX-rO-rep">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="266" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<rect key="contentStretch" x="0.15000000000000002" y="0.15000000000000002" width="0.69999999999999973" height="0.69999999999999973"/>
|
|
||||||
</imageView>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_edit.png" id="KEn-n3-qhX">
|
|
||||||
<rect key="frame" x="78" y="9" width="24" height="24"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
|
||||||
</imageView>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap to set a password." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="MtZ-N7-CYD">
|
|
||||||
<rect key="frame" x="-20" y="9" width="306" height="21"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
</view>
|
|
||||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="g55-0m-WjS" userLabel="View - Type Tip">
|
|
||||||
<rect key="frame" x="10" y="228" width="300" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_top.png" id="ZR6-xT-bv8">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="300" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<rect key="contentStretch" x="0.15000000000000002" y="0.15000000000000002" width="0.69999999999999973" height="0.69999999999999973"/>
|
|
||||||
</imageView>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap if you need another kind of password." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="2Iw-KQ-O8t">
|
|
||||||
<rect key="frame" x="-20" y="26" width="340" height="21"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
</view>
|
|
||||||
<view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" id="v2m-Gf-pEV" userLabel="View - Content Tip">
|
|
||||||
<rect key="frame" x="55" y="50" width="210" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="fdm-NG-GFC">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="210" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
</imageView>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Copied!" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="ieN-QQ-PyR">
|
|
||||||
<rect key="frame" x="19" y="9" width="171" height="21"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
</view>
|
|
||||||
<view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" id="b9W-aA-93r" userLabel="View - User Name Tip">
|
|
||||||
<rect key="frame" x="55" y="110" width="210" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="BQk-Kb-98d">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="210" height="60"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
</imageView>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Copied!" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="coX-1P-dqm">
|
|
||||||
<rect key="frame" x="19" y="9" width="171" height="21"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
</view>
|
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" red="0.14901960784313725" green="0.16470588235294117" blue="0.1803921568627451" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="0.14901960784313725" green="0.16470588235294117" blue="0.1803921568627451" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
</view>
|
</view>
|
||||||
@ -924,7 +924,7 @@ You should upgrade these sites and update their account's passwords as soon as c
|
|||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<view contentMode="scaleToFill" id="97c-0y-Gcd">
|
<view contentMode="scaleToFill" id="97c-0y-Gcd">
|
||||||
<rect key="frame" x="-1920" y="0.0" width="2240" height="480"/>
|
<rect key="frame" x="0.0" y="0.0" width="2240" height="480"/>
|
||||||
<autoresizingMask key="autoresizingMask" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_0.png" id="Sth-tH-klC">
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="bottom" image="guide_page_0.png" id="Sth-tH-klC">
|
||||||
@ -1097,7 +1097,7 @@ Pink fluffy door frame.</string>
|
|||||||
<outlet property="delegate" destination="qz3-eG-aEi" id="nGi-wL-vBc"/>
|
<outlet property="delegate" destination="qz3-eG-aEi" id="nGi-wL-vBc"/>
|
||||||
</connections>
|
</connections>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
<pageControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" numberOfPages="6" id="wdw-50-FUU">
|
<pageControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" numberOfPages="7" id="wdw-50-FUU">
|
||||||
<rect key="frame" x="141" y="444" width="38" height="36"/>
|
<rect key="frame" x="141" y="444" width="38" height="36"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
</pageControl>
|
</pageControl>
|
||||||
@ -1130,6 +1130,165 @@ Pink fluffy door frame.</string>
|
|||||||
<rect key="frame" x="105" y="30" width="110" height="110"/>
|
<rect key="frame" x="105" y="30" width="110" height="110"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
|
<view contentMode="scaleToFill" id="JTj-nh-BWs" userLabel="Word Wall">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="960" height="200"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="artist" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="N3f-1F-8HL">
|
||||||
|
<rect key="frame" x="20" y="10" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="fried" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="5Xl-Wu-xcw">
|
||||||
|
<rect key="frame" x="250" y="50" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="aerodrome" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="MYf-Mu-Oal">
|
||||||
|
<rect key="frame" x="70" y="80" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="blackmail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="gVJ-n6-bb6">
|
||||||
|
<rect key="frame" x="180" y="110" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="porthole" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="FlX-l9-Jqx">
|
||||||
|
<rect key="frame" x="-20" y="140" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="victual" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="mZu-Mg-WHM">
|
||||||
|
<rect key="frame" x="220" y="180" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="artist" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="K0A-gc-k9n">
|
||||||
|
<rect key="frame" x="500" y="10" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="fried" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="ByX-UQ-PWP">
|
||||||
|
<rect key="frame" x="350" y="30" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="aerodrome" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="WRL-vs-tmT">
|
||||||
|
<rect key="frame" x="360" y="80" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="blackmail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="Jex-Kw-Plq">
|
||||||
|
<rect key="frame" x="450" y="140" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="porthole" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="MnE-4j-9CP">
|
||||||
|
<rect key="frame" x="520" y="110" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="victual" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="S4t-FF-hgt">
|
||||||
|
<rect key="frame" x="350" y="183" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="artist" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="XoL-h8-dyb">
|
||||||
|
<rect key="frame" x="700" y="15" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="aerodrome" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="YfK-gU-1g3">
|
||||||
|
<rect key="frame" x="650" y="40" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="blackmail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="NhB-hP-Sfl">
|
||||||
|
<rect key="frame" x="800" y="100" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="porthole" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="Acu-NC-64u">
|
||||||
|
<rect key="frame" x="640" y="120" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="fried" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="bNC-2J-H2d">
|
||||||
|
<rect key="frame" x="870" y="150" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="victual" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" enabled="NO" adjustsFontSizeToFit="NO" id="Dbx-W3-Xra">
|
||||||
|
<rect key="frame" x="920" y="170" width="320" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-Medium" family="Futura" pointSize="17"/>
|
||||||
|
<color key="textColor" cocoaTouchSystemColor="lightTextColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
</view>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.5" contentMode="left" text="Tap and hold to delete or reset." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="DBJ-Qi-ZcF">
|
||||||
|
<rect key="frame" x="20" y="460" width="280" height="20"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" name="Copperplate" family="Copperplate" pointSize="12"/>
|
||||||
|
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" indicatorStyle="white" delaysContentTouches="NO" id="Blg-F1-9NA">
|
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" indicatorStyle="white" delaysContentTouches="NO" id="Blg-F1-9NA">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="320" height="340"/>
|
<rect key="frame" x="0.0" y="0.0" width="320" height="340"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
@ -1154,6 +1313,44 @@ Pink fluffy door frame.</string>
|
|||||||
<outletCollection property="gestureRecognizers" destination="9WS-yS-aqQ" appends="YES" id="B9k-bg-gqA"/>
|
<outletCollection property="gestureRecognizers" destination="9WS-yS-aqQ" appends="YES" id="B9k-bg-gqA"/>
|
||||||
</connections>
|
</connections>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.0" contentMode="left" text="Maarten Billemont" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="10" id="8s0-nT-Aoq">
|
||||||
|
<rect key="frame" x="90" y="289" width="140" height="15"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-CondensedExtraBold" family="Futura" pointSize="13"/>
|
||||||
|
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Maarten Billemont" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="10" id="0NM-NI-7UR">
|
||||||
|
<rect key="frame" x="90" y="77" width="140" height="15"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
<fontDescription key="fontDescription" name="Futura-CondensedExtraBold" family="Futura" pointSize="13"/>
|
||||||
|
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="xWL-xQ-KjX">
|
||||||
|
<rect key="frame" x="20" y="60" width="280" height="100"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="Xrk-S4-ZN5">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="280" height="100"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<rect key="contentStretch" x="0.20000000000000001" y="0.20000000000000001" width="0.59999999999999964" height="0.20000000000000001"/>
|
||||||
|
</imageView>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="10" id="QBM-XG-Tdb">
|
||||||
|
<rect key="frame" x="15" y="0.0" width="250" height="80"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<string key="text">Short phrases make good passwords.
|
||||||
|
You could use the word wall for inspiration in finding a memorable master password.</string>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
|
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
</view>
|
||||||
<view contentMode="scaleToFill" id="7cc-yu-i0m">
|
<view contentMode="scaleToFill" id="7cc-yu-i0m">
|
||||||
<rect key="frame" x="20" y="168" width="280" height="88"/>
|
<rect key="frame" x="20" y="168" width="280" height="88"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||||
@ -1202,30 +1399,6 @@ Pink fluffy door frame.</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>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.0" contentMode="left" text="Maarten Billemont" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="10" id="8s0-nT-Aoq">
|
|
||||||
<rect key="frame" x="90" y="289" width="140" height="15"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
<fontDescription key="fontDescription" name="Futura-CondensedExtraBold" family="Futura" pointSize="13"/>
|
|
||||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Maarten Billemont" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumFontSize="10" id="0NM-NI-7UR">
|
|
||||||
<rect key="frame" x="90" y="76.5" width="140" height="15"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
<fontDescription key="fontDescription" name="Futura-CondensedExtraBold" family="Futura" pointSize="13"/>
|
|
||||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.5" contentMode="left" text="Tap and hold to delete or reset." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="DBJ-Qi-ZcF">
|
|
||||||
<rect key="frame" x="20" y="460" width="280" height="20"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
|
||||||
<fontDescription key="fontDescription" name="Copperplate" family="Copperplate" pointSize="12"/>
|
|
||||||
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
@ -1233,15 +1406,18 @@ Pink fluffy door frame.</string>
|
|||||||
<connections>
|
<connections>
|
||||||
<outlet property="avatarTemplate" destination="Ten-ig-gog" id="0ZZ-z5-d5m"/>
|
<outlet property="avatarTemplate" destination="Ten-ig-gog" id="0ZZ-z5-d5m"/>
|
||||||
<outlet property="avatarsView" destination="Blg-F1-9NA" id="2NL-jU-IMI"/>
|
<outlet property="avatarsView" destination="Blg-F1-9NA" id="2NL-jU-IMI"/>
|
||||||
|
<outlet property="createPasswordTipView" destination="xWL-xQ-KjX" id="Pa1-Bk-pW2"/>
|
||||||
<outlet property="deleteTip" destination="DBJ-Qi-ZcF" id="VXD-Zc-UYi"/>
|
<outlet property="deleteTip" destination="DBJ-Qi-ZcF" id="VXD-Zc-UYi"/>
|
||||||
<outlet property="nameLabel" destination="0NM-NI-7UR" id="GBg-Ry-sqj"/>
|
<outlet property="nameLabel" destination="0NM-NI-7UR" id="GBg-Ry-sqj"/>
|
||||||
<outlet property="oldNameLabel" destination="8s0-nT-Aoq" id="plu-1H-MVc"/>
|
<outlet property="oldNameLabel" destination="8s0-nT-Aoq" id="plu-1H-MVc"/>
|
||||||
<outlet property="passwordField" destination="rTR-7Q-X8o" id="Vsn-uO-4lO"/>
|
<outlet property="passwordField" destination="rTR-7Q-X8o" id="Vsn-uO-4lO"/>
|
||||||
|
<outlet property="passwordFieldLabel" destination="RhX-bA-EhC" id="8Wq-OV-OlS"/>
|
||||||
<outlet property="passwordTipLabel" destination="gQ2-mB-BP4" id="aHU-tn-duI"/>
|
<outlet property="passwordTipLabel" destination="gQ2-mB-BP4" id="aHU-tn-duI"/>
|
||||||
<outlet property="passwordTipView" destination="NvG-0R-eTZ" id="4Mx-TL-yfu"/>
|
<outlet property="passwordTipView" destination="NvG-0R-eTZ" id="4Mx-TL-yfu"/>
|
||||||
<outlet property="passwordView" destination="7cc-yu-i0m" id="WoF-Ab-PPC"/>
|
<outlet property="passwordView" destination="7cc-yu-i0m" id="WoF-Ab-PPC"/>
|
||||||
<outlet property="spinner" destination="27q-lX-0vy" id="CGK-G9-PRI"/>
|
<outlet property="spinner" destination="27q-lX-0vy" id="CGK-G9-PRI"/>
|
||||||
<outlet property="targetedUserActionGesture" destination="9WS-yS-aqQ" id="y74-cg-eat"/>
|
<outlet property="targetedUserActionGesture" destination="9WS-yS-aqQ" id="y74-cg-eat"/>
|
||||||
|
<outlet property="wordWall" destination="JTj-nh-BWs" id="Mdy-OW-ouS"/>
|
||||||
</connections>
|
</connections>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="OGA-5j-IcQ" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="OGA-5j-IcQ" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
@ -1657,11 +1833,13 @@ Pink fluffy door frame.</string>
|
|||||||
<relationship kind="action" name="closeAlert"/>
|
<relationship kind="action" name="closeAlert"/>
|
||||||
<relationship kind="action" name="closeOutdatedAlert"/>
|
<relationship kind="action" name="closeOutdatedAlert"/>
|
||||||
<relationship kind="action" name="copyContent"/>
|
<relationship kind="action" name="copyContent"/>
|
||||||
|
<relationship kind="action" name="copyUserName:" candidateClass="UITapGestureRecognizer"/>
|
||||||
<relationship kind="action" name="editPassword"/>
|
<relationship kind="action" name="editPassword"/>
|
||||||
<relationship kind="action" name="editUserName:" candidateClass="UILongPressGestureRecognizer"/>
|
<relationship kind="action" name="editUserName:" candidateClass="UILongPressGestureRecognizer"/>
|
||||||
<relationship kind="action" name="incrementPasswordCounter"/>
|
<relationship kind="action" name="incrementPasswordCounter"/>
|
||||||
<relationship kind="action" name="infoOutdatedAlert"/>
|
<relationship kind="action" name="infoOutdatedAlert"/>
|
||||||
<relationship kind="action" name="resetPasswordCounter:" candidateClass="UILongPressGestureRecognizer"/>
|
<relationship kind="action" name="resetPasswordCounter:" candidateClass="UILongPressGestureRecognizer"/>
|
||||||
|
<relationship kind="action" name="searchOutdatedElements:" candidateClass="UITapGestureRecognizer"/>
|
||||||
<relationship kind="action" name="toggleUser"/>
|
<relationship kind="action" name="toggleUser"/>
|
||||||
<relationship kind="action" name="upgradePassword"/>
|
<relationship kind="action" name="upgradePassword"/>
|
||||||
<relationship kind="outlet" name="actionsTipContainer" candidateClass="UIView"/>
|
<relationship kind="outlet" name="actionsTipContainer" candidateClass="UIView"/>
|
||||||
@ -1730,15 +1908,18 @@ Pink fluffy door frame.</string>
|
|||||||
<relationship kind="action" name="targetedUserAction:" candidateClass="UILongPressGestureRecognizer"/>
|
<relationship kind="action" name="targetedUserAction:" candidateClass="UILongPressGestureRecognizer"/>
|
||||||
<relationship kind="outlet" name="avatarTemplate" candidateClass="UIButton"/>
|
<relationship kind="outlet" name="avatarTemplate" candidateClass="UIButton"/>
|
||||||
<relationship kind="outlet" name="avatarsView" candidateClass="UIScrollView"/>
|
<relationship kind="outlet" name="avatarsView" candidateClass="UIScrollView"/>
|
||||||
|
<relationship kind="outlet" name="createPasswordTipView" candidateClass="UIView"/>
|
||||||
<relationship kind="outlet" name="deleteTip" candidateClass="UILabel"/>
|
<relationship kind="outlet" name="deleteTip" candidateClass="UILabel"/>
|
||||||
<relationship kind="outlet" name="nameLabel" candidateClass="UILabel"/>
|
<relationship kind="outlet" name="nameLabel" candidateClass="UILabel"/>
|
||||||
<relationship kind="outlet" name="oldNameLabel" candidateClass="UILabel"/>
|
<relationship kind="outlet" name="oldNameLabel" candidateClass="UILabel"/>
|
||||||
<relationship kind="outlet" name="passwordField" candidateClass="UITextField"/>
|
<relationship kind="outlet" name="passwordField" candidateClass="UITextField"/>
|
||||||
|
<relationship kind="outlet" name="passwordFieldLabel" candidateClass="UILabel"/>
|
||||||
<relationship kind="outlet" name="passwordTipLabel" candidateClass="UILabel"/>
|
<relationship kind="outlet" name="passwordTipLabel" candidateClass="UILabel"/>
|
||||||
<relationship kind="outlet" name="passwordTipView" candidateClass="UIView"/>
|
<relationship kind="outlet" name="passwordTipView" candidateClass="UIView"/>
|
||||||
<relationship kind="outlet" name="passwordView" candidateClass="UIView"/>
|
<relationship kind="outlet" name="passwordView" candidateClass="UIView"/>
|
||||||
<relationship kind="outlet" name="spinner" candidateClass="UIImageView"/>
|
<relationship kind="outlet" name="spinner" candidateClass="UIImageView"/>
|
||||||
<relationship kind="outlet" name="targetedUserActionGesture" candidateClass="UILongPressGestureRecognizer"/>
|
<relationship kind="outlet" name="targetedUserActionGesture" candidateClass="UILongPressGestureRecognizer"/>
|
||||||
|
<relationship kind="outlet" name="wordWall" candidateClass="UIView"/>
|
||||||
</relationships>
|
</relationships>
|
||||||
</class>
|
</class>
|
||||||
</classes>
|
</classes>
|
||||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 157 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 141 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |