Merge branch 'master' of github.com:Lyndir/MasterPassword
This commit is contained in:
commit
7e96496614
Binary file not shown.
@ -15,13 +15,13 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.1.6</string>
|
||||
<string>2.1.7</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>iPhoneOS</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>21</string>
|
||||
<string>26</string>
|
||||
<key>DTPlatformName</key>
|
||||
<string>iphoneos</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
|
BIN
External/Crashlytics.framework/run
vendored
BIN
External/Crashlytics.framework/run
vendored
Binary file not shown.
2
External/LoveLyndir
vendored
2
External/LoveLyndir
vendored
@ -1 +1 @@
|
||||
Subproject commit adab69df05840d94a3f2f883251869d6cb352b0e
|
||||
Subproject commit 97eafd9b59f84bd9e3fc3cb4313df8b3c034e766
|
2
External/Pearl
vendored
2
External/Pearl
vendored
@ -1 +1 @@
|
||||
Subproject commit 081c2dec20b3638694a5ad20cd2fddccdb298447
|
||||
Subproject commit 9e41cebeba085fce2bbae2592d52bbfd740f9ffb
|
@ -205,6 +205,8 @@
|
||||
MPElementEntity *element = [self.representedObject entityInContext:context];
|
||||
[context deleteObject:element];
|
||||
[context saveToStore];
|
||||
|
||||
[((MPPasswordWindowController *)self.collectionView.window.windowController) updateElements];
|
||||
}];
|
||||
break;
|
||||
}
|
||||
|
@ -18,4 +18,6 @@
|
||||
@property(nonatomic, weak) IBOutlet NSTextField *userLabel;
|
||||
@property(nonatomic, weak) IBOutlet NSCollectionView *siteCollectionView;
|
||||
|
||||
- (void)updateElements;
|
||||
|
||||
@end
|
||||
|
@ -178,14 +178,17 @@
|
||||
}
|
||||
if (contextInfo == MPAlertCreateSite) {
|
||||
switch (returnCode) {
|
||||
case NSAlertDefaultReturn: {
|
||||
case NSAlertFirstButtonReturn: {
|
||||
// "Create" button.
|
||||
[[MPMacAppDelegate get] addElementNamed:[self.siteField stringValue] completion:^(MPElementEntity *element) {
|
||||
if (element) {
|
||||
if (element)
|
||||
[self updateElements];
|
||||
}
|
||||
}];
|
||||
break;
|
||||
}
|
||||
case NSAlertThirdButtonReturn:
|
||||
// "Cancel" button.
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -345,23 +348,35 @@
|
||||
|
||||
NSError *error = nil;
|
||||
NSArray *siteResults = [context executeFetchRequest:fetchRequest error:&error];
|
||||
if (!siteResults)
|
||||
if (!siteResults) {
|
||||
err(@"While fetching elements for completion: %@", error);
|
||||
else if ([siteResults count]) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSMutableArray *newElements = [NSMutableArray arrayWithCapacity:[siteResults count]];
|
||||
for (MPElementEntity *element in siteResults)
|
||||
[newElements addObject:[[MPElementModel alloc] initWithEntity:element]];
|
||||
self.elements = newElements;
|
||||
if (!self.selectedElement && [newElements count])
|
||||
self.elementSelectionIndexes = [NSIndexSet indexSetWithIndex:0];
|
||||
}
|
||||
if (!self.selectedElement)
|
||||
self.elementSelectionIndexes = [newElements count]? [NSIndexSet indexSetWithIndex:0]: nil;
|
||||
}];
|
||||
}
|
||||
|
||||
- (NSUInteger)selectedIndex {
|
||||
|
||||
if (!self.elementSelectionIndexes)
|
||||
return NSNotFound;
|
||||
NSUInteger selectedIndex = self.elementSelectionIndexes.firstIndex;
|
||||
if (selectedIndex >= self.elements.count)
|
||||
return NSNotFound;
|
||||
|
||||
return selectedIndex;
|
||||
}
|
||||
|
||||
- (NSBox *)selectedView {
|
||||
|
||||
NSUInteger selectedIndex = self.elementSelectionIndexes.firstIndex;
|
||||
if (selectedIndex == NSNotFound || selectedIndex >= self.elements.count)
|
||||
NSUInteger selectedIndex = [self selectedIndex];
|
||||
if (selectedIndex == NSNotFound)
|
||||
return nil;
|
||||
|
||||
return (NSBox *)[self.siteCollectionView itemAtIndex:selectedIndex].view;
|
||||
@ -369,10 +384,11 @@
|
||||
|
||||
- (MPElementModel *)selectedElement {
|
||||
|
||||
if (!self.elementSelectionIndexes.count)
|
||||
NSUInteger selectedIndex = [self selectedIndex];
|
||||
if (selectedIndex == NSNotFound)
|
||||
return nil;
|
||||
|
||||
return (MPElementModel *)self.elements[self.elementSelectionIndexes.firstIndex];
|
||||
return (MPElementModel *)self.elements[selectedIndex];
|
||||
}
|
||||
|
||||
- (void)setSelectedElement:(MPElementModel *)element {
|
||||
|
@ -1894,7 +1894,7 @@
|
||||
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
|
||||
CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application";
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
@ -1960,12 +1960,9 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = MasterPassword.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer: Maarten Billemont (DWGU95U4ZD)";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
|
||||
INFOPLIST_FILE = "MasterPassword-Info.plist";
|
||||
PROVISIONING_PROFILE = "9AEC6040-D157-4526-8CA9-FF0254B3A4A5";
|
||||
SKIP_INSTALL = NO;
|
||||
WRAPPER_NAME = "Master Password.${WRAPPER_EXTENSION}";
|
||||
};
|
||||
@ -1977,12 +1974,9 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = MasterPassword.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
|
||||
INFOPLIST_FILE = "MasterPassword-Info.plist";
|
||||
PROVISIONING_PROFILE = "2A46D0C9-E5F0-4C52-BCC6-96434A0D1C1B";
|
||||
SKIP_INSTALL = NO;
|
||||
WRAPPER_NAME = "Master Password.${WRAPPER_EXTENSION}";
|
||||
};
|
||||
@ -2009,7 +2003,7 @@
|
||||
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CLANG_WARN__EXIT_TIME_DESTRUCTORS = YES;
|
||||
CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application";
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
@ -2075,12 +2069,9 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = MasterPassword.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application: Maarten Billemont (HL3Q45LX9N)";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PREFIX_HEADER = "MasterPassword-Prefix.pch";
|
||||
INFOPLIST_FILE = "MasterPassword-Info.plist";
|
||||
PROVISIONING_PROFILE = "170D83FD-18FE-4A05-B13C-8D16876480C6";
|
||||
SKIP_INSTALL = NO;
|
||||
WRAPPER_NAME = "Master Password.${WRAPPER_EXTENSION}";
|
||||
};
|
||||
|
@ -4,11 +4,11 @@
|
||||
<dict>
|
||||
<key>com.apple.developer.ubiquity-container-identifiers</key>
|
||||
<array>
|
||||
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword.Mac</string>
|
||||
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword.shared</string>
|
||||
<string>HL3Q45LX9N.com.lyndir.lhunath.MasterPassword.Mac</string>
|
||||
<string>HL3Q45LX9N.com.lyndir.lhunath.MasterPassword.shared</string>
|
||||
</array>
|
||||
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
|
||||
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword.shared</string>
|
||||
<string>HL3Q45LX9N.com.lyndir.lhunath.MasterPassword.shared</string>
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
@interface MPGuideViewController : UIViewController<UIScrollViewDelegate>
|
||||
|
||||
@property(weak, nonatomic) IBOutlet UISearchBar *searchBar;
|
||||
@property(weak, nonatomic) IBOutlet UIView *siteNameTip;
|
||||
@property(weak, nonatomic) IBOutlet UIView *contentTip;
|
||||
@property(weak, nonatomic) IBOutlet UILabel *contentTipText;
|
||||
|
@ -64,6 +64,7 @@
|
||||
// Via setup
|
||||
self.smallPlayButton.hidden = YES;
|
||||
|
||||
self.searchBar.text = nil;
|
||||
self.siteNameTip.alpha = 0;
|
||||
self.content.alpha = 0;
|
||||
self.content.frame = CGRectSetHeight( self.content.frame, 180 );
|
||||
@ -81,6 +82,7 @@
|
||||
// Via segue
|
||||
self.largePlayButton.hidden = YES;
|
||||
|
||||
self.searchBar.text = @"gmail.com";
|
||||
self.siteNameTip.alpha = 1;
|
||||
self.content.alpha = 1;
|
||||
self.content.frame = CGRectSetHeight( self.content.frame, 231 );
|
||||
@ -147,6 +149,7 @@
|
||||
|
||||
if (self.currentTick < 5) {
|
||||
[UIView animateWithDuration:0.5 animations:^{
|
||||
self.searchBar.text = nil;
|
||||
self.siteNameTip.alpha = 1;
|
||||
self.content.alpha = 0;
|
||||
self.content.frame = CGRectSetHeight( self.content.frame, 180 );
|
||||
@ -159,6 +162,7 @@
|
||||
}
|
||||
else if (self.currentTick < 10) {
|
||||
[UIView animateWithDuration:0.5 animations:^{
|
||||
self.searchBar.text = @"gmail.com";
|
||||
self.siteNameTip.alpha = 0;
|
||||
self.content.alpha = 1;
|
||||
self.contentTip.alpha = 1;
|
||||
@ -171,6 +175,7 @@
|
||||
}
|
||||
else if (self.currentTick < 15) {
|
||||
[UIView animateWithDuration:0.5 animations:^{
|
||||
self.searchBar.text = @"gmail.com";
|
||||
self.siteNameTip.alpha = 0;
|
||||
self.content.alpha = 1;
|
||||
self.contentTip.alpha = 1;
|
||||
@ -185,6 +190,7 @@
|
||||
}
|
||||
else if (self.currentTick < 20) {
|
||||
[UIView animateWithDuration:0.5 animations:^{
|
||||
self.searchBar.text = @"gmail.com";
|
||||
self.siteNameTip.alpha = 0;
|
||||
self.content.alpha = 1;
|
||||
self.content.frame = CGRectSetHeight( self.content.frame, 231 );
|
||||
@ -199,6 +205,7 @@
|
||||
}
|
||||
else if (self.currentTick < 25) {
|
||||
[UIView animateWithDuration:0.5 animations:^{
|
||||
self.searchBar.text = @"gmail.com";
|
||||
self.siteNameTip.alpha = 0;
|
||||
self.content.alpha = 1;
|
||||
self.contentTip.alpha = 0;
|
||||
@ -212,6 +219,7 @@
|
||||
}
|
||||
else if (self.currentTick < 30) {
|
||||
[UIView animateWithDuration:0.5 animations:^{
|
||||
self.searchBar.text = @"gmail.com";
|
||||
self.siteNameTip.alpha = 0;
|
||||
self.content.alpha = 1;
|
||||
self.contentTip.alpha = 0;
|
||||
@ -230,6 +238,7 @@
|
||||
self.currentTick = 0;
|
||||
[UIView animateWithDuration:0.5 animations:^{
|
||||
[self.smallPlayButton setImage:[UIImage imageNamed:@"icon_play"] forState:UIControlStateNormal];
|
||||
self.searchBar.text = @"gmail.com";
|
||||
self.siteNameTip.alpha = 1;
|
||||
self.content.alpha = 1;
|
||||
self.contentTip.alpha = 1;
|
||||
|
@ -7,6 +7,7 @@
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "LLGitTip.h"
|
||||
|
||||
@interface MPUnlockViewController : UIViewController<UITextFieldDelegate, UIScrollViewDelegate, UIWebViewDelegate>
|
||||
|
||||
@ -26,6 +27,8 @@
|
||||
@property(strong, nonatomic) IBOutlet UILongPressGestureRecognizer *targetedUserActionGesture;
|
||||
@property(weak, nonatomic) IBOutlet UIView *uiContainer;
|
||||
@property(weak, nonatomic) IBOutlet UIView *shareContainer;
|
||||
@property(weak, nonatomic) IBOutlet UIView *tipsTipContainer;
|
||||
@property(weak, nonatomic) IBOutlet LLGitTip *gitTipButton;
|
||||
@property(weak, nonatomic) IBOutlet UIWebView *newsView;
|
||||
@property(weak, nonatomic) IBOutlet UIView *emergencyGeneratorContainer;
|
||||
@property(weak, nonatomic) IBOutlet UITextField *emergencyName;
|
||||
|
@ -12,6 +12,7 @@
|
||||
#import "MPiOSAppDelegate.h"
|
||||
#import "MPAppDelegate_Key.h"
|
||||
#import "MPAppDelegate_Store.h"
|
||||
#import "LLGitTip.h"
|
||||
|
||||
@interface MPUnlockViewController()
|
||||
|
||||
@ -127,6 +128,7 @@
|
||||
|
||||
- (void)viewDidLoad {
|
||||
|
||||
self.gitTipButton.iTunesID = [MPConfig get].iTunesID;
|
||||
self.avatarToUserOID = [NSMutableDictionary dictionaryWithCapacity:3];
|
||||
|
||||
[self.avatarsView addGestureRecognizer:self.targetedUserActionGesture];
|
||||
@ -230,6 +232,7 @@
|
||||
self.uiContainer.alpha = 0;
|
||||
self.shareContainer.alpha = 0;
|
||||
self.spinner.alpha = 0;
|
||||
self.tipsTipContainer.alpha = 0;
|
||||
|
||||
[super viewWillAppear:animated];
|
||||
}
|
||||
@ -249,6 +252,8 @@
|
||||
if (finished)
|
||||
[UIView animateWithDuration:1 animations:^{
|
||||
self.shareContainer.alpha = 1;
|
||||
if ([MPConfig get].firstVersionRun)
|
||||
self.tipsTipContainer.alpha = 1;
|
||||
}];
|
||||
}];
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4514" systemVersion="13B3116" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="KZF-fe-y9n">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4514" systemVersion="13C64" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="KZF-fe-y9n">
|
||||
<dependencies>
|
||||
<deployment defaultVersion="1536" identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3747"/>
|
||||
@ -470,15 +470,15 @@ Your passwords will be AES-encrypted with your master password.</string>
|
||||
<objects>
|
||||
<viewController id="Tx0-mM-kHk" customClass="MPLogsViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="3oc-v8-YGP">
|
||||
<rect key="frame" x="0.0" y="64" width="320" height="504"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="center" image="background.png" id="mtJ-9r-6yT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="504"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
</imageView>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" id="ojc-Tn-DM1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="460"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="524"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<string key="text">119-20:51:52 MPiOSAppDelegate.m:36 | INFO : Initializing TestFlight
|
||||
@ -508,7 +508,7 @@ Your passwords will be AES-encrypted with your master password.</string>
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||
</textView>
|
||||
<toolbar contentMode="scaleToFill" barStyle="black" translucent="NO" id="QPO-l8-Opz">
|
||||
<rect key="frame" x="0.0" y="460" width="320" height="44"/>
|
||||
<rect key="frame" x="0.0" y="524" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<items>
|
||||
<barButtonItem systemItem="compose" id="Yvq-If-VqG">
|
||||
@ -524,7 +524,7 @@ Your passwords will be AES-encrypted with your master password.</string>
|
||||
<barButtonItem systemItem="flexibleSpace" id="GcH-O1-v3J"/>
|
||||
<barButtonItem style="plain" id="yi1-I8-uzn">
|
||||
<segmentedControl key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="lzO-Kl-IPf">
|
||||
<rect key="frame" x="191" y="7" width="123" height="30"/>
|
||||
<rect key="frame" x="181" y="7" width="123" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<segments>
|
||||
<segment title="Normal"/>
|
||||
@ -1575,18 +1575,76 @@ You can use the words in the background for inspiration in finding a memorable m
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="uow-B8-taR" customClass="LLGitTip">
|
||||
<rect key="frame" x="115.5" y="519" width="89" height="18"/>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="uow-B8-taR" userLabel="Tips" customClass="LLGitTip">
|
||||
<rect key="frame" x="115" y="519" width="89" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<state key="normal" image="gittip.png">
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
</button>
|
||||
<view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" id="c8h-Zm-5dO" userLabel="View - Tips Tip">
|
||||
<rect key="frame" x="45" y="473" width="230" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="Kan-Wf-gPL">
|
||||
<rect key="frame" x="0.0" y="0.0" width="230" height="60"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<rect key="contentStretch" x="0.15000000000000002" y="0.0" width="0.69999999999999973" height="1"/>
|
||||
</imageView>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Why is Master Password free?" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="86C-RP-AcD">
|
||||
<rect key="frame" x="19" y="9" width="191" 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>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" id="dU2-XK-yUQ">
|
||||
<barButtonItem key="backBarButtonItem" title="Log Out" id="A5d-ER-NUM"/>
|
||||
</navigationItem>
|
||||
<connections>
|
||||
<outlet property="avatarTemplate" destination="Ten-ig-gog" id="0ZZ-z5-d5m"/>
|
||||
<outlet property="avatarsView" destination="Blg-F1-9NA" id="2NL-jU-IMI"/>
|
||||
<outlet property="createPasswordTipView" destination="xWL-xQ-KjX" id="Pa1-Bk-pW2"/>
|
||||
<outlet property="emergencyActivity" destination="3Ax-91-gVM" id="UfN-vk-k0Z"/>
|
||||
<outlet property="emergencyContentTipContainer" destination="sD9-hR-UAI" id="RiP-k1-7dk"/>
|
||||
<outlet property="emergencyCounter" destination="TJC-xD-fjQ" id="jrf-nb-soB"/>
|
||||
<outlet property="emergencyCounterStepper" destination="D49-fo-7FA" id="hj2-CL-zxq"/>
|
||||
<outlet property="emergencyGeneratorContainer" destination="KNa-Xb-RuE" id="6jt-vU-L2Q"/>
|
||||
<outlet property="emergencyMasterPassword" destination="Yvd-Hm-fuw" id="pnx-sH-P8R"/>
|
||||
<outlet property="emergencyName" destination="esC-1q-bE7" id="ifH-bh-MhW"/>
|
||||
<outlet property="emergencyPassword" destination="r9J-C9-Bt1" id="yt0-hH-0yT"/>
|
||||
<outlet property="emergencySite" destination="YeH-3J-oY4" id="h0w-om-4vd"/>
|
||||
<outlet property="emergencyTypeControl" destination="LfH-XT-9Vt" id="pku-x3-i9h"/>
|
||||
<outlet property="gitTipButton" destination="uow-B8-taR" id="Bt9-a3-SZo"/>
|
||||
<outlet property="nameLabel" destination="0NM-NI-7UR" id="GBg-Ry-sqj"/>
|
||||
<outlet property="oldNameLabel" destination="8s0-nT-Aoq" id="plu-1H-MVc"/>
|
||||
<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="passwordTipView" destination="NvG-0R-eTZ" id="4Mx-TL-yfu"/>
|
||||
<outlet property="passwordView" destination="7cc-yu-i0m" id="WoF-Ab-PPC"/>
|
||||
<outlet property="shareContainer" destination="870-GQ-iOh" id="6X3-jY-Y9R"/>
|
||||
<outlet property="spinner" destination="27q-lX-0vy" id="CGK-G9-PRI"/>
|
||||
<outlet property="targetedUserActionGesture" destination="9WS-yS-aqQ" id="y74-cg-eat"/>
|
||||
<outlet property="tip" destination="DBJ-Qi-ZcF" id="VXD-Zc-UYi"/>
|
||||
<outlet property="tipsTipContainer" destination="c8h-Zm-5dO" id="nzn-dZ-hnI"/>
|
||||
<outlet property="uiContainer" destination="PHH-XC-9QQ" id="ogr-ak-h1V"/>
|
||||
<outlet property="wordWall" destination="JTj-nh-BWs" id="Mdy-OW-ouS"/>
|
||||
<segue destination="PQa-Xl-A3x" kind="push" identifier="MP_Unlock" id="wiY-Sg-Ba4"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="OGA-5j-IcQ" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
<view hidden="YES" alpha="0.30000000000000016" contentMode="scaleToFill" id="KNa-Xb-RuE" userLabel="View - Emergency Generator">
|
||||
<rect key="frame" x="-100" y="0.0" width="520" height="568"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="520" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" id="vdf-Kn-Sle">
|
||||
@ -1752,43 +1810,6 @@ You can use the words in the background for inspiration in finding a memorable m
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.5" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" id="dU2-XK-yUQ">
|
||||
<barButtonItem key="backBarButtonItem" title="Log Out" id="A5d-ER-NUM"/>
|
||||
</navigationItem>
|
||||
<connections>
|
||||
<outlet property="avatarTemplate" destination="Ten-ig-gog" id="0ZZ-z5-d5m"/>
|
||||
<outlet property="avatarsView" destination="Blg-F1-9NA" id="2NL-jU-IMI"/>
|
||||
<outlet property="createPasswordTipView" destination="xWL-xQ-KjX" id="Pa1-Bk-pW2"/>
|
||||
<outlet property="emergencyActivity" destination="3Ax-91-gVM" id="UfN-vk-k0Z"/>
|
||||
<outlet property="emergencyContentTipContainer" destination="sD9-hR-UAI" id="RiP-k1-7dk"/>
|
||||
<outlet property="emergencyCounter" destination="TJC-xD-fjQ" id="jrf-nb-soB"/>
|
||||
<outlet property="emergencyCounterStepper" destination="D49-fo-7FA" id="hj2-CL-zxq"/>
|
||||
<outlet property="emergencyGeneratorContainer" destination="KNa-Xb-RuE" id="6jt-vU-L2Q"/>
|
||||
<outlet property="emergencyMasterPassword" destination="Yvd-Hm-fuw" id="pnx-sH-P8R"/>
|
||||
<outlet property="emergencyName" destination="esC-1q-bE7" id="ifH-bh-MhW"/>
|
||||
<outlet property="emergencyPassword" destination="r9J-C9-Bt1" id="yt0-hH-0yT"/>
|
||||
<outlet property="emergencySite" destination="YeH-3J-oY4" id="h0w-om-4vd"/>
|
||||
<outlet property="emergencyTypeControl" destination="LfH-XT-9Vt" id="pku-x3-i9h"/>
|
||||
<outlet property="nameLabel" destination="0NM-NI-7UR" id="GBg-Ry-sqj"/>
|
||||
<outlet property="oldNameLabel" destination="8s0-nT-Aoq" id="plu-1H-MVc"/>
|
||||
<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="passwordTipView" destination="NvG-0R-eTZ" id="4Mx-TL-yfu"/>
|
||||
<outlet property="passwordView" destination="7cc-yu-i0m" id="WoF-Ab-PPC"/>
|
||||
<outlet property="shareContainer" destination="870-GQ-iOh" id="6X3-jY-Y9R"/>
|
||||
<outlet property="spinner" destination="27q-lX-0vy" id="CGK-G9-PRI"/>
|
||||
<outlet property="targetedUserActionGesture" destination="9WS-yS-aqQ" id="y74-cg-eat"/>
|
||||
<outlet property="tip" destination="DBJ-Qi-ZcF" id="VXD-Zc-UYi"/>
|
||||
<outlet property="uiContainer" destination="PHH-XC-9QQ" id="ogr-ak-h1V"/>
|
||||
<outlet property="wordWall" destination="JTj-nh-BWs" id="Mdy-OW-ouS"/>
|
||||
<segue destination="PQa-Xl-A3x" kind="push" identifier="MP_Unlock" id="wiY-Sg-Ba4"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="OGA-5j-IcQ" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
<pongPressGestureRecognizer allowableMovement="10" minimumPressDuration="0.5" id="9WS-yS-aqQ">
|
||||
<connections>
|
||||
<action selector="targetedUserAction:" destination="Nbn-Rv-sP1" id="mgC-0X-heO"/>
|
||||
@ -1831,7 +1852,7 @@ You can use the words in the background for inspiration in finding a memorable m
|
||||
<viewController id="Q4b-t4-pwH" customClass="MPSetupViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="FnB-rI-puV">
|
||||
<rect key="frame" x="0.0" y="64" width="320" height="504"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="center" image="background.png" id="RjU-5e-mti">
|
||||
<rect key="frame" x="0.0" y="-64" width="320" height="656"/>
|
||||
@ -1849,20 +1870,21 @@ You can use the words in the background for inspiration in finding a memorable m
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="ToN-ll-G0q">
|
||||
<rect key="frame" x="20" y="137" width="280" height="200"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="20" y="137" width="280" height="288"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<string key="text">Enabling iCloud will keep all your iPhones, iPads and Macs nicely in-sync. Any site you add on this device will automatically appear on all your others as well.
|
||||
<mutableString key="text">Enabling iCloud will keep all your iPhones, iPads and Macs nicely in-sync. Any site you add on this device will automatically appear on all your others as well.
|
||||
|
||||
Thanks to the special way Master Password works, your site passwords don't need to be sent to Apple.
|
||||
If you set a custom password, it will be encrypted before it is saved to the cloud.</string>
|
||||
Note that even without iCloud syncing, you can make your passwords available from any device by simply creating the same user on all your devices. Enabling iCloud is mainly benefitial to keep the list of sites you use in sync on all your devices.
|
||||
|
||||
Only site names and custom passwords are sent to iCloud. Passwords are encrypted with your master password and illegible by Apple or any interceptor.</mutableString>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||
</textView>
|
||||
<switch opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="M0m-G9-hH0">
|
||||
<rect key="frame" x="136" y="345" width="51" height="31"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="136" y="433" width="51" height="31"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<color key="onTintColor" red="0.37254901959999998" green="0.3921568627" blue="0.42745098040000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</switch>
|
||||
</subviews>
|
||||
@ -2428,7 +2450,7 @@ If you set a custom password, it will be encrypted before it is saved to the clo
|
||||
<viewController id="ZgN-2j-05b" customClass="MPSetupViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="QIH-dS-sqD">
|
||||
<rect key="frame" x="0.0" y="64" width="320" height="504"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="center" image="background.png" id="FTf-06-1Pg">
|
||||
<rect key="frame" x="0.0" y="-64" width="320" height="656"/>
|
||||
@ -2701,7 +2723,7 @@ You can make passwords for anything, like email addresses, sites or real-world t
|
||||
<items/>
|
||||
<color key="barTintColor" red="0.12549020350000001" green="0.1411764771" blue="0.14901961389999999" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</toolbar>
|
||||
<searchBar contentMode="redraw" searchBarStyle="minimal" placeholder="Site name" showsBookmarkButton="YES" id="IJX-hq-SkG">
|
||||
<searchBar contentMode="redraw" barStyle="black" searchBarStyle="minimal" placeholder="Site name" showsBookmarkButton="YES" id="IJX-hq-SkG">
|
||||
<rect key="frame" x="0.0" y="44" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<gestureRecognizers/>
|
||||
@ -2883,7 +2905,7 @@ You can make passwords for anything, like email addresses, sites or real-world t
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<string key="text"> • Use the short site name (eg. apple.com), don't include the prefix (eg. www).
|
||||
• Use generated passwords. If you ever lose your user or phone, recreating the user will resurrect them from thin air.</string>
|
||||
• Use generated passwords, avoid custom passwords. If you ever lose your user or phone, recreating the user will resurrect them from thin air.</string>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||
@ -2910,6 +2932,7 @@ You can make passwords for anything, like email addresses, sites or real-world t
|
||||
<outlet property="contentTipText" destination="nGi-CK-Dng" id="T7O-aC-li6"/>
|
||||
<outlet property="largePlayButton" destination="jDS-Vh-ETL" id="LIU-jq-0Oo"/>
|
||||
<outlet property="progress" destination="nf7-oM-7dh" id="dFy-br-0OQ"/>
|
||||
<outlet property="searchBar" destination="IJX-hq-SkG" id="KuO-av-R2u"/>
|
||||
<outlet property="siteNameTip" destination="cUZ-lb-h7x" id="3cq-3F-Cwd"/>
|
||||
<outlet property="smallPlayButton" destination="UHf-cp-97W" id="K6U-Nf-F2p"/>
|
||||
<outlet property="toolButton" destination="yxo-kW-iLM" id="yuh-5h-1Nj"/>
|
||||
@ -2937,7 +2960,7 @@ You can make passwords for anything, like email addresses, sites or real-world t
|
||||
<viewController id="kSj-yX-DmT" customClass="MPSetupViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="sT4-Jb-e5D">
|
||||
<rect key="frame" x="0.0" y="64" width="320" height="504"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="center" image="background.png" id="Eqt-R0-LTj">
|
||||
<rect key="frame" x="0.0" y="-64" width="320" height="656"/>
|
||||
@ -2955,8 +2978,8 @@ You can make passwords for anything, like email addresses, sites or real-world t
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="k4g-1Z-Hfw">
|
||||
<rect key="frame" x="20" y="137" width="280" height="196"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="20" y="137" width="280" height="284"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<string key="text">The right balance between security and convenience is often very personal.
|
||||
|
||||
@ -2968,8 +2991,8 @@ However, it means that anyone who finds your device unlocked can do the same.</s
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||
</textView>
|
||||
<switch opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="xmc-hs-riu">
|
||||
<rect key="frame" x="136" y="341" width="51" height="31"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="136" y="429" width="51" height="31"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<color key="onTintColor" red="0.37254901959999998" green="0.3921568627" blue="0.42745098040000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</switch>
|
||||
</subviews>
|
||||
@ -3038,9 +3061,9 @@ However, it means that anyone who finds your device unlocked can do the same.</s
|
||||
<simulatedScreenMetrics key="destination" type="retina4"/>
|
||||
</simulatedMetricsContainer>
|
||||
<inferredMetricsTieBreakers>
|
||||
<segue reference="swi-5o-hfK"/>
|
||||
<segue reference="jgo-j3-gbW"/>
|
||||
<segue reference="hxY-aA-ngI"/>
|
||||
<segue reference="5Im-dm-qfS"/>
|
||||
<segue reference="9Bs-cD-ddF"/>
|
||||
<segue reference="5Im-dm-qfS"/>
|
||||
</inferredMetricsTieBreakers>
|
||||
</document>
|
Loading…
Reference in New Issue
Block a user