Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8eeba2e005 | ||
|
|
fd6cbaa9a5 | ||
|
|
1651e9ad4a | ||
|
|
02c1e2af46 | ||
|
|
b275286b2d | ||
|
|
7818feaf0b | ||
|
|
3970cd2eac | ||
|
|
21b0053ccb | ||
|
|
6dd8790404 | ||
|
|
508abec94e | ||
|
|
b010432796 | ||
|
|
a91e65f72f | ||
|
|
4b5c696241 | ||
|
|
128c3dcf87 | ||
|
|
8e15be21ab | ||
|
|
c62ff63718 | ||
|
|
d564afe3ec |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,6 +1,7 @@
|
|||||||
# OS-Specific junk.
|
# OS-Specific junk.
|
||||||
.DS_Store
|
.DS_Store
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
*~
|
||||||
|
|
||||||
# IntelliJ
|
# IntelliJ
|
||||||
.idea
|
.idea
|
||||||
|
|||||||
2
platform-darwin/External/Pearl
vendored
2
platform-darwin/External/Pearl
vendored
Submodule platform-darwin/External/Pearl updated: 3480897054...b9da35c5ef
@@ -3370,8 +3370,6 @@
|
|||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Source/Mac/MasterPassword.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Source/Mac/MasterPassword.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
|
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
GCC_PREFIX_HEADER = "Source/MasterPassword-Prefix.pch";
|
GCC_PREFIX_HEADER = "Source/MasterPassword-Prefix.pch";
|
||||||
@@ -3410,8 +3408,6 @@
|
|||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Source/Mac/MasterPassword.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Source/Mac/MasterPassword.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Mac Developer";
|
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Apple Development";
|
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
GCC_PREFIX_HEADER = "Source/MasterPassword-Prefix.pch";
|
GCC_PREFIX_HEADER = "Source/MasterPassword-Prefix.pch";
|
||||||
|
|||||||
50
platform-darwin/Resources/Media/Images.xcassets/tip_alert_black.imageset/Contents.json
vendored
Normal file
50
platform-darwin/Resources/Media/Images.xcassets/tip_alert_black.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"resizing" : {
|
||||||
|
"mode" : "9-part",
|
||||||
|
"center" : {
|
||||||
|
"mode" : "tile",
|
||||||
|
"width" : 1,
|
||||||
|
"height" : 58
|
||||||
|
},
|
||||||
|
"cap-insets" : {
|
||||||
|
"bottom" : 15,
|
||||||
|
"top" : 7,
|
||||||
|
"right" : 11,
|
||||||
|
"left" : 72
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "tip_alert_black.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resizing" : {
|
||||||
|
"mode" : "9-part",
|
||||||
|
"center" : {
|
||||||
|
"mode" : "stretch",
|
||||||
|
"width" : 1,
|
||||||
|
"height" : 1
|
||||||
|
},
|
||||||
|
"cap-insets" : {
|
||||||
|
"bottom" : 29,
|
||||||
|
"top" : 132,
|
||||||
|
"right" : 22,
|
||||||
|
"left" : 144
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "tip_alert_black@2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
platform-darwin/Resources/Media/Images.xcassets/tip_alert_black.imageset/tip_alert_black.png
vendored
Normal file
BIN
platform-darwin/Resources/Media/Images.xcassets/tip_alert_black.imageset/tip_alert_black.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
BIN
platform-darwin/Resources/Media/Images.xcassets/tip_alert_black.imageset/tip_alert_black@2x.png
vendored
Normal file
BIN
platform-darwin/Resources/Media/Images.xcassets/tip_alert_black.imageset/tip_alert_black@2x.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.4 KiB |
@@ -31,6 +31,35 @@
|
|||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
MPLogSink mpw_log_sink_pearl;
|
||||||
|
void mpw_log_sink_pearl(const MPLogEvent *record) {
|
||||||
|
|
||||||
|
PearlLogLevel level = PearlLogLevelInfo;
|
||||||
|
switch (record->level) {
|
||||||
|
case LogLevelTrace:
|
||||||
|
level = PearlLogLevelTrace;
|
||||||
|
break;
|
||||||
|
case LogLevelDebug:
|
||||||
|
level = PearlLogLevelDebug;
|
||||||
|
break;
|
||||||
|
case LogLevelInfo:
|
||||||
|
level = PearlLogLevelInfo;
|
||||||
|
break;
|
||||||
|
case LogLevelWarning:
|
||||||
|
level = PearlLogLevelWarn;
|
||||||
|
break;
|
||||||
|
case LogLevelError:
|
||||||
|
level = PearlLogLevelError;
|
||||||
|
break;
|
||||||
|
case LogLevelFatal:
|
||||||
|
level = PearlLogLevelFatal;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
[[PearlLogger get] inFile:[@(record->file) lastPathComponent] atLine:record->line fromFunction:@(record->function)
|
||||||
|
withLevel:level text:@(record->message)];
|
||||||
|
}
|
||||||
|
|
||||||
@implementation MPAppDelegate_Shared
|
@implementation MPAppDelegate_Shared
|
||||||
|
|
||||||
static MPAppDelegate_Shared *instance;
|
static MPAppDelegate_Shared *instance;
|
||||||
@@ -45,6 +74,16 @@ static MPAppDelegate_Shared *instance;
|
|||||||
if (!(self = instance = [super init]))
|
if (!(self = instance = [super init]))
|
||||||
return nil;
|
return nil;
|
||||||
|
|
||||||
|
[PearlLogger get].historyLevel = PearlLogLevelInfo;
|
||||||
|
#ifdef DEBUG
|
||||||
|
[PearlLogger get].printLevel = PearlLogLevelDebug;
|
||||||
|
#else
|
||||||
|
[PearlLogger get].printLevel = PearlLogLevelInfo;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
mpw_verbosity = LogLevelTrace;
|
||||||
|
mpw_log_sink_register( &mpw_log_sink_pearl );
|
||||||
|
|
||||||
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];
|
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];
|
||||||
[model kc_generateOrderedSetAccessors];
|
[model kc_generateOrderedSetAccessors];
|
||||||
self.storeCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
|
self.storeCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12118" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="16096" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="macosx"/>
|
<deployment identifier="macosx"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12118"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="16096"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||||
@@ -12,11 +12,14 @@
|
|||||||
</customObject>
|
</customObject>
|
||||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
<menu title="AMainMenu" systemMenu="main" id="29"/>
|
<menu title="AMainMenu" systemMenu="main" id="29">
|
||||||
|
<point key="canvasLocation" x="139" y="155"/>
|
||||||
|
</menu>
|
||||||
<customObject id="494" customClass="MPMacAppDelegate">
|
<customObject id="494" customClass="MPMacAppDelegate">
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="createUserItem" destination="757" id="763"/>
|
<outlet property="createUserItem" destination="757" id="763"/>
|
||||||
<outlet property="deleteUserItem" destination="ZgZ-p2-463" id="smU-PF-mKA"/>
|
<outlet property="deleteUserItem" destination="ZgZ-p2-463" id="smU-PF-mKA"/>
|
||||||
|
<outlet property="diagnosticsItem" destination="GSN-f0-q7s" id="kns-3O-fu0"/>
|
||||||
<outlet property="hidePasswordsItem" destination="9G7-17-PzY" id="qPX-VT-jVx"/>
|
<outlet property="hidePasswordsItem" destination="9G7-17-PzY" id="qPX-VT-jVx"/>
|
||||||
<outlet property="lockItem" destination="720" id="726"/>
|
<outlet property="lockItem" destination="720" id="726"/>
|
||||||
<outlet property="openAtLoginItem" destination="785" id="788"/>
|
<outlet property="openAtLoginItem" destination="785" id="788"/>
|
||||||
@@ -33,7 +36,7 @@
|
|||||||
<items>
|
<items>
|
||||||
<menuItem title="Users" id="755">
|
<menuItem title="Users" id="755">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<menu key="submenu" title="Users" id="756">
|
<menu key="submenu" title="Users" autoenablesItems="NO" id="756">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="New User" enabled="NO" toolTip="Creating users is not yet supported. Please use the iOS app with iCloud enabled to create users and sites." id="757">
|
<menuItem title="New User" enabled="NO" toolTip="Creating users is not yet supported. Please use the iOS app with iCloud enabled to create users and sites." id="757">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
@@ -47,6 +50,53 @@
|
|||||||
<action selector="deleteUser:" target="494" id="eia-X5-QMc"/>
|
<action selector="deleteUser:" target="494" id="eia-X5-QMc"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
|
<menuItem title="Import User..." id="EFK-zt-EvJ">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="importSites:" target="494" id="CNv-4j-036"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Export User" id="r1P-hr-mh5">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<menu key="submenu" title="Export User" id="fnk-gK-yCi">
|
||||||
|
<items>
|
||||||
|
<menuItem title="Secure Export (recommended)" id="06i-og-eLt">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="exportSitesSecure:" target="494" id="LVH-es-imA"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Your passwords are hidden." enabled="NO" id="ybY-P3-eao">
|
||||||
|
<attributedString key="attributedTitle">
|
||||||
|
<fragment content="Your passwords are not visible.">
|
||||||
|
<attributes>
|
||||||
|
<font key="NSFont" metaFont="user"/>
|
||||||
|
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
|
||||||
|
</attributes>
|
||||||
|
</fragment>
|
||||||
|
</attributedString>
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Reveal Passwords" id="fMG-TT-bTn">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="exportSitesReveal:" target="494" id="1IW-VT-Oeu"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Handy for backups - keep it in a safe location!" enabled="NO" id="cQu-oR-SUa">
|
||||||
|
<attributedString key="attributedTitle">
|
||||||
|
<fragment content="Keep this file secure or delete it when you're done with it!">
|
||||||
|
<attributes>
|
||||||
|
<font key="NSFont" metaFont="user"/>
|
||||||
|
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
|
||||||
|
</attributes>
|
||||||
|
</fragment>
|
||||||
|
</attributedString>
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
</menuItem>
|
||||||
|
</items>
|
||||||
|
</menu>
|
||||||
|
</menuItem>
|
||||||
<menuItem isSeparatorItem="YES" id="759"/>
|
<menuItem isSeparatorItem="YES" id="759"/>
|
||||||
</items>
|
</items>
|
||||||
</menu>
|
</menu>
|
||||||
@@ -152,53 +202,23 @@
|
|||||||
</attributedString>
|
</attributedString>
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
<menuItem title="Export Sites" id="r1P-hr-mh5">
|
<menuItem title="Diagnostics" id="GSN-f0-q7s">
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<menu key="submenu" title="Export Sites" id="fnk-gK-yCi">
|
|
||||||
<items>
|
|
||||||
<menuItem title="Secure Export" id="06i-og-eLt">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="exportSitesSecure:" target="494" id="LVH-es-imA"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Your passwords are not visible." enabled="NO" id="ybY-P3-eao">
|
|
||||||
<attributedString key="attributedTitle">
|
|
||||||
<fragment content="Your passwords are not visible.">
|
|
||||||
<attributes>
|
|
||||||
<font key="NSFont" size="12" name="Helvetica"/>
|
|
||||||
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
|
|
||||||
</attributes>
|
|
||||||
</fragment>
|
|
||||||
</attributedString>
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Reveal Passwords" id="fMG-TT-bTn">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
<connections>
|
|
||||||
<action selector="exportSitesReveal:" target="494" id="1IW-VT-Oeu"/>
|
|
||||||
</connections>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Keep this file secure or delete it when you're done with it!" enabled="NO" id="cQu-oR-SUa">
|
|
||||||
<attributedString key="attributedTitle">
|
|
||||||
<fragment content="Keep this file secure or delete it when you're done with it!">
|
|
||||||
<attributes>
|
|
||||||
<font key="NSFont" size="12" name="Helvetica"/>
|
|
||||||
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural"/>
|
|
||||||
</attributes>
|
|
||||||
</fragment>
|
|
||||||
</attributedString>
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
|
||||||
</menuItem>
|
|
||||||
</items>
|
|
||||||
</menu>
|
|
||||||
</menuItem>
|
|
||||||
<menuItem title="Import Sites..." id="EFK-zt-EvJ">
|
|
||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="importSites:" target="494" id="CNv-4j-036"/>
|
<action selector="togglePreference:" target="494" id="ZNq-yf-fxg"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
|
<menuItem title="Crash and usage information is anonymized and sent to development." enabled="NO" id="WfD-lX-C93">
|
||||||
|
<attributedString key="attributedTitle">
|
||||||
|
<fragment content="Save the password in your keychain so you don't need to enter it again.">
|
||||||
|
<attributes>
|
||||||
|
<font key="NSFont" size="11" name="Helvetica"/>
|
||||||
|
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" firstLineHeadIndent="8"/>
|
||||||
|
</attributes>
|
||||||
|
</fragment>
|
||||||
|
</attributedString>
|
||||||
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
|
</menuItem>
|
||||||
</items>
|
</items>
|
||||||
</menu>
|
</menu>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
@@ -221,6 +241,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
</items>
|
</items>
|
||||||
|
<point key="canvasLocation" x="140" y="23"/>
|
||||||
</menu>
|
</menu>
|
||||||
</objects>
|
</objects>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
@property(nonatomic, weak) IBOutlet NSMenuItem *openAtLoginItem;
|
@property(nonatomic, weak) IBOutlet NSMenuItem *openAtLoginItem;
|
||||||
@property(nonatomic, weak) IBOutlet NSMenuItem *showFullScreenItem;
|
@property(nonatomic, weak) IBOutlet NSMenuItem *showFullScreenItem;
|
||||||
@property(nonatomic, weak) IBOutlet NSMenuItem *savePasswordItem;
|
@property(nonatomic, weak) IBOutlet NSMenuItem *savePasswordItem;
|
||||||
|
@property(nonatomic, weak) IBOutlet NSMenuItem *diagnosticsItem;
|
||||||
@property(nonatomic, weak) IBOutlet NSMenuItem *createUserItem;
|
@property(nonatomic, weak) IBOutlet NSMenuItem *createUserItem;
|
||||||
@property(nonatomic, weak) IBOutlet NSMenuItem *deleteUserItem;
|
@property(nonatomic, weak) IBOutlet NSMenuItem *deleteUserItem;
|
||||||
@property(nonatomic, weak) IBOutlet NSMenuItem *usersItem;
|
@property(nonatomic, weak) IBOutlet NSMenuItem *usersItem;
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
#define LOGIN_HELPER_BUNDLE_ID @"com.lyndir.lhunath.MasterPassword.Mac.LoginHelper"
|
#define LOGIN_HELPER_BUNDLE_ID @"com.lyndir.lhunath.MasterPassword.Mac.LoginHelper"
|
||||||
|
|
||||||
|
|
||||||
@implementation MPMacAppDelegate
|
@implementation MPMacAppDelegate
|
||||||
|
|
||||||
#pragma clang diagnostic push
|
#pragma clang diagnostic push
|
||||||
@@ -39,14 +40,7 @@ static EventHotKeyID MPLockHotKey = { .signature = 'lock', .id = 1 };
|
|||||||
|
|
||||||
+ (void)initialize {
|
+ (void)initialize {
|
||||||
|
|
||||||
static dispatch_once_t once = 0;
|
[MPMacConfig get];
|
||||||
dispatch_once( &once, ^{
|
|
||||||
[MPMacConfig get];
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
[PearlLogger get].printLevel = PearlLogLevelDebug; //Trace;
|
|
||||||
#endif
|
|
||||||
} );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEvent, void *userData) {
|
static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEvent, void *userData) {
|
||||||
@@ -76,7 +70,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
@try {
|
@try {
|
||||||
// Sentry
|
// Sentry
|
||||||
[SentrySDK initWithOptions:@{
|
[SentrySDK initWithOptions:@{
|
||||||
@"dsn" : decrypt( sentryDSN ),
|
@"dsn" : NilToNSNull( decrypt( sentryDSN ) ),
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@"debug" : @(YES),
|
@"debug" : @(YES),
|
||||||
@"environment": @"Development",
|
@"environment": @"Development",
|
||||||
@@ -98,7 +92,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
SentryLevel sentryLevel = kSentryLevelInfo;
|
SentryLevel sentryLevel = kSentryLevelInfo;
|
||||||
switch (message.level) {
|
switch (message.level) {
|
||||||
case PearlLogLevelTrace:
|
case PearlLogLevelTrace:
|
||||||
sentryLevel = kSentryLevelDebug;
|
sentryLevel = kSentryLevelNone;
|
||||||
break;
|
break;
|
||||||
case PearlLogLevelDebug:
|
case PearlLogLevelDebug:
|
||||||
sentryLevel = kSentryLevelDebug;
|
sentryLevel = kSentryLevelDebug;
|
||||||
@@ -133,15 +127,16 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
countlyConfig.appKey = decrypt( countlyKey );
|
countlyConfig.appKey = decrypt( countlyKey );
|
||||||
countlyConfig.features = @[ CLYPushNotifications ];
|
countlyConfig.features = @[ CLYPushNotifications ];
|
||||||
countlyConfig.requiresConsent = YES;
|
countlyConfig.requiresConsent = YES;
|
||||||
#if DEBUG
|
|
||||||
countlyConfig.pushTestMode = CLYPushTestModeDevelopment;
|
|
||||||
#elif ! PUBLIC
|
|
||||||
countlyConfig.pushTestMode = CLYPushTestModeTestFlightOrAdHoc;
|
|
||||||
#endif
|
|
||||||
countlyConfig.alwaysUsePOST = YES;
|
countlyConfig.alwaysUsePOST = YES;
|
||||||
countlyConfig.deviceID = [PearlKeyChain deviceIdentifier];
|
countlyConfig.deviceID = [PearlKeyChain deviceIdentifier];
|
||||||
countlyConfig.secretSalt = decrypt( countlySalt );
|
countlyConfig.secretSalt = decrypt( countlySalt );
|
||||||
|
#if DEBUG
|
||||||
|
countlyConfig.pushTestMode = CLYPushTestModeDevelopment;
|
||||||
countlyConfig.enableDebug = YES;
|
countlyConfig.enableDebug = YES;
|
||||||
|
#elif ! PUBLIC
|
||||||
|
countlyConfig.pushTestMode = CLYPushTestModeTestFlightOrAdHoc;
|
||||||
|
countlyConfig.enableDebug = NO;
|
||||||
|
#endif
|
||||||
[Countly.sharedInstance startWithConfig:countlyConfig];
|
[Countly.sharedInstance startWithConfig:countlyConfig];
|
||||||
}
|
}
|
||||||
@catch (id exception) {
|
@catch (id exception) {
|
||||||
@@ -184,13 +179,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
} );
|
} );
|
||||||
PearlAddNotificationObserver( MPCheckConfigNotification, nil, nil,
|
PearlAddNotificationObserver( MPCheckConfigNotification, nil, nil,
|
||||||
^(MPMacAppDelegate *self, NSNotification *note) {
|
^(MPMacAppDelegate *self, NSNotification *note) {
|
||||||
PearlMainQueue( ^{
|
[self updateConfigKey:note.object];
|
||||||
NSString *key = note.object;
|
|
||||||
if (!key || [key isEqualToString:NSStringFromSelector( @selector( hidePasswords ) )])
|
|
||||||
self.hidePasswordsItem.state = [[MPConfig get].hidePasswords boolValue]? NSOnState: NSOffState;
|
|
||||||
if (!key || [key isEqualToString:NSStringFromSelector( @selector( rememberLogin ) )])
|
|
||||||
self.rememberPasswordItem.state = [[MPConfig get].rememberLogin boolValue]? NSOnState: NSOffState;
|
|
||||||
} );
|
|
||||||
} );
|
} );
|
||||||
[self updateUsers];
|
[self updateUsers];
|
||||||
|
|
||||||
@@ -381,6 +370,8 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
|
|
||||||
- (IBAction)togglePreference:(id)sender {
|
- (IBAction)togglePreference:(id)sender {
|
||||||
|
|
||||||
|
if (sender == self.diagnosticsItem)
|
||||||
|
[MPConfig get].sendInfo = @(self.diagnosticsItem.state != NSOnState);
|
||||||
if (sender == self.hidePasswordsItem)
|
if (sender == self.hidePasswordsItem)
|
||||||
[MPConfig get].hidePasswords = @(self.hidePasswordsItem.state != NSOnState);
|
[MPConfig get].hidePasswords = @(self.hidePasswordsItem.state != NSOnState);
|
||||||
if (sender == self.rememberPasswordItem)
|
if (sender == self.rememberPasswordItem)
|
||||||
@@ -591,10 +582,13 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
|
|
||||||
- (void)updateUsers {
|
- (void)updateUsers {
|
||||||
|
|
||||||
[[[self.usersItem submenu] itemArray] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
|
BOOL foundSeparator = NO;
|
||||||
if (idx > 2)
|
for (NSMenuItem *item in [[self.usersItem submenu] itemArray]) {
|
||||||
[[self.usersItem submenu] removeItem:obj];
|
if (foundSeparator)
|
||||||
}];
|
[[self.usersItem submenu] removeItem:item];
|
||||||
|
else if (item.isSeparatorItem)
|
||||||
|
foundSeparator = YES;
|
||||||
|
}
|
||||||
|
|
||||||
NSManagedObjectContext *mainContext = [MPMacAppDelegate managedObjectContextForMainThreadIfReady];
|
NSManagedObjectContext *mainContext = [MPMacAppDelegate managedObjectContextForMainThreadIfReady];
|
||||||
if (!mainContext) {
|
if (!mainContext) {
|
||||||
@@ -721,4 +715,52 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
[[NSNotificationCenter defaultCenter] postNotificationName:MPCheckConfigNotification object:NSStringFromSelector( configKey )];
|
[[NSNotificationCenter defaultCenter] postNotificationName:MPCheckConfigNotification object:NSStringFromSelector( configKey )];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)updateConfigKey:(NSString *)key {
|
||||||
|
|
||||||
|
PearlMainQueue( ^{
|
||||||
|
if (!key || [key isEqualToString:NSStringFromSelector( @selector( sendInfo ) )])
|
||||||
|
self.diagnosticsItem.state = [[MPConfig get].sendInfo boolValue]? NSOnState: NSOffState;
|
||||||
|
if (!key || [key isEqualToString:NSStringFromSelector( @selector( hidePasswords ) )])
|
||||||
|
self.hidePasswordsItem.state = [[MPConfig get].hidePasswords boolValue]? NSOnState: NSOffState;
|
||||||
|
if (!key || [key isEqualToString:NSStringFromSelector( @selector( rememberLogin ) )])
|
||||||
|
self.rememberPasswordItem.state = [[MPConfig get].rememberLogin boolValue]? NSOnState: NSOffState;
|
||||||
|
} );
|
||||||
|
|
||||||
|
// Send info
|
||||||
|
if ([[MPConfig get].sendInfo boolValue]) {
|
||||||
|
PearlMainQueue( ^{
|
||||||
|
[Countly.sharedInstance giveConsentForAllFeatures];
|
||||||
|
[Countly.sharedInstance askForNotificationPermission];
|
||||||
|
});
|
||||||
|
|
||||||
|
if ([PearlLogger get].printLevel > PearlLogLevelInfo)
|
||||||
|
[PearlLogger get].printLevel = PearlLogLevelInfo;
|
||||||
|
|
||||||
|
NSMutableDictionary *prefs = [NSMutableDictionary new];
|
||||||
|
prefs[@"rememberLogin"] = [MPConfig get].rememberLogin;
|
||||||
|
prefs[@"sendInfo"] = [MPConfig get].sendInfo;
|
||||||
|
prefs[@"fullScreen"] = [MPMacConfig get].fullScreen;
|
||||||
|
prefs[@"firstRun"] = [PearlConfig get].firstRun;
|
||||||
|
prefs[@"launchCount"] = [PearlConfig get].launchCount;
|
||||||
|
prefs[@"askForReviews"] = [PearlConfig get].askForReviews;
|
||||||
|
prefs[@"reviewAfterLaunches"] = [PearlConfig get].reviewAfterLaunches;
|
||||||
|
prefs[@"reviewedVersion"] = [PearlConfig get].reviewedVersion;
|
||||||
|
prefs[@"simulator"] = @([PearlDeviceUtils isSimulator]);
|
||||||
|
prefs[@"encrypted"] = @([PearlDeviceUtils isAppEncrypted]);
|
||||||
|
prefs[@"platform"] = [PearlDeviceUtils platform];
|
||||||
|
|
||||||
|
[SentrySDK.currentHub getClient].options.enabled = @YES;
|
||||||
|
[SentrySDK configureScope:^(SentryScope *scope) {
|
||||||
|
for (NSString *pref in prefs.allKeys)
|
||||||
|
[scope setExtraValue:prefs[pref] forKey:pref];
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[SentrySDK.currentHub getClient].options.enabled = @NO;
|
||||||
|
PearlMainQueue( ^{
|
||||||
|
[Countly.sharedInstance cancelConsentForAllFeatures];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -270,7 +270,9 @@
|
|||||||
|
|
||||||
PearlMainQueue( ^{
|
PearlMainQueue( ^{
|
||||||
self.content = result;
|
self.content = result;
|
||||||
self.displayedContent = displayResult;
|
|
||||||
|
if (!([NSEvent modifierFlags] & NSShiftKeyMask))
|
||||||
|
self.displayedContent = displayResult;
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -278,6 +280,9 @@
|
|||||||
|
|
||||||
PearlMainQueue( ^{
|
PearlMainQueue( ^{
|
||||||
self.loginName = loginName;
|
self.loginName = loginName;
|
||||||
|
|
||||||
|
if ([NSEvent modifierFlags] & NSShiftKeyMask)
|
||||||
|
self.displayedContent = loginName;
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
[self updateUser];
|
[self updateUser];
|
||||||
} );
|
} );
|
||||||
[self observeKeyPath:@"sitesController.selection" withBlock:^(id from, id to, NSKeyValueChange cause, id self) {
|
[self observeKeyPath:@"sitesController.selection" withBlock:^(id from, id to, NSKeyValueChange cause, id self) {
|
||||||
[self updateSelection];
|
[self updateTable];
|
||||||
}];
|
}];
|
||||||
prof_rewind( @"observers" );
|
prof_rewind( @"observers" );
|
||||||
|
|
||||||
@@ -105,14 +105,18 @@
|
|||||||
- (void)flagsChanged:(NSEvent *)theEvent {
|
- (void)flagsChanged:(NSEvent *)theEvent {
|
||||||
|
|
||||||
BOOL shiftPressed = (theEvent.modifierFlags & NSShiftKeyMask) != 0;
|
BOOL shiftPressed = (theEvent.modifierFlags & NSShiftKeyMask) != 0;
|
||||||
if (shiftPressed != self.shiftPressed)
|
if (shiftPressed != self.shiftPressed) {
|
||||||
self.shiftPressed = shiftPressed;
|
self.shiftPressed = shiftPressed;
|
||||||
|
[self.selectedSite updateContent];
|
||||||
|
[self updateSelection];
|
||||||
|
}
|
||||||
|
|
||||||
BOOL alternatePressed = (theEvent.modifierFlags & NSAlternateKeyMask) != 0;
|
BOOL alternatePressed = (theEvent.modifierFlags & NSAlternateKeyMask) != 0;
|
||||||
if (alternatePressed != self.alternatePressed) {
|
if (alternatePressed != self.alternatePressed) {
|
||||||
self.alternatePressed = alternatePressed;
|
self.alternatePressed = alternatePressed;
|
||||||
self.showVersionContainer = self.alternatePressed || self.selectedSite.outdated;
|
self.showVersionContainer = self.alternatePressed || self.selectedSite.outdated;
|
||||||
[self.selectedSite updateContent];
|
[self.selectedSite updateContent];
|
||||||
|
[self updateSelection];
|
||||||
|
|
||||||
if (self.locked) {
|
if (self.locked) {
|
||||||
NSTextField *passwordField = self.securePasswordField;
|
NSTextField *passwordField = self.securePasswordField;
|
||||||
@@ -261,6 +265,9 @@
|
|||||||
[alert setInformativeText:strf( @"Your login name for: %@", self.selectedSite.name )];
|
[alert setInformativeText:strf( @"Your login name for: %@", self.selectedSite.name )];
|
||||||
NSTextField *loginField = [NSTextField new];
|
NSTextField *loginField = [NSTextField new];
|
||||||
[loginField bind:@"value" toObject:self.selectedSite withKeyPath:@"loginName" options:nil];
|
[loginField bind:@"value" toObject:self.selectedSite withKeyPath:@"loginName" options:nil];
|
||||||
|
[loginField bind:@"enabled" toObject:self.selectedSite withKeyPath:@"loginGenerated" options:@{
|
||||||
|
NSValueTransformerNameBindingOption: NSNegateBooleanTransformerName
|
||||||
|
}];
|
||||||
NSButton *generatedField = [NSButton new];
|
NSButton *generatedField = [NSButton new];
|
||||||
[generatedField setButtonType:NSSwitchButton];
|
[generatedField setButtonType:NSSwitchButton];
|
||||||
[generatedField bind:@"value" toObject:self.selectedSite withKeyPath:@"loginGenerated" options:nil];
|
[generatedField bind:@"value" toObject:self.selectedSite withKeyPath:@"loginGenerated" options:nil];
|
||||||
@@ -477,7 +484,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Performing action while content is available. Copy it.
|
// Performing action while content is available. Copy it.
|
||||||
[self copyContent:self.shiftPressed? selectedSite.answer: selectedSite.content];
|
[self copyContent:self.shiftPressed? selectedSite.loginName: selectedSite.content];
|
||||||
[NSApp hide:nil];
|
[NSApp hide:nil];
|
||||||
|
|
||||||
NSUserNotification *notification = [NSUserNotification new];
|
NSUserNotification *notification = [NSUserNotification new];
|
||||||
@@ -582,7 +589,7 @@
|
|||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateSelection {
|
- (void)updateTable {
|
||||||
|
|
||||||
[self.siteTable scrollRowToVisible:(NSInteger)self.sitesController.selectionIndex];
|
[self.siteTable scrollRowToVisible:(NSInteger)self.sitesController.selectionIndex];
|
||||||
|
|
||||||
@@ -596,8 +603,13 @@
|
|||||||
(__bridge id)[NSColor colorWithDeviceWhite:1 alpha:gradientOpacity].CGColor
|
(__bridge id)[NSColor colorWithDeviceWhite:1 alpha:gradientOpacity].CGColor
|
||||||
];
|
];
|
||||||
|
|
||||||
|
[self updateSelection];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)updateSelection {
|
||||||
self.showVersionContainer = self.alternatePressed || self.selectedSite.outdated;
|
self.showVersionContainer = self.alternatePressed || self.selectedSite.outdated;
|
||||||
[self.sitePasswordTipField setAttributedStringValue:straf( @"Your password for %@:", self.selectedSite.displayedName )];
|
[self.sitePasswordTipField setAttributedStringValue:
|
||||||
|
straf( @"Your %@ for %@:", self.shiftPressed? @"login": @"password", self.selectedSite.displayedName, nil )];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)createNewSite:(NSString *)siteName {
|
- (void)createNewSite:(NSString *)siteName {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
<rect key="frame" x="0.0" y="0.0" width="640" height="557"/>
|
<rect key="frame" x="0.0" y="0.0" width="640" height="557"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<visualEffectView blendingMode="behindWindow" material="fullScreenUI" state="followsWindowActiveState" translatesAutoresizingMaskIntoConstraints="NO" id="eRe-Ef-AZx">
|
<visualEffectView blendingMode="behindWindow" material="popover" state="followsWindowActiveState" translatesAutoresizingMaskIntoConstraints="NO" id="eRe-Ef-AZx">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="640" height="557"/>
|
<rect key="frame" x="0.0" y="0.0" width="640" height="557"/>
|
||||||
</visualEffectView>
|
</visualEffectView>
|
||||||
<progressIndicator hidden="YES" wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="oSh-Ec-8Nf" userLabel="Progress Spinner">
|
<progressIndicator hidden="YES" wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="oSh-Ec-8Nf" userLabel="Progress Spinner">
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>com.apple.developer.aps-environment</key>
|
||||||
|
<string>development</string>
|
||||||
<key>com.apple.security.app-sandbox</key>
|
<key>com.apple.security.app-sandbox</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>com.apple.security.application-groups</key>
|
<key>com.apple.security.application-groups</key>
|
||||||
|
|||||||
@@ -699,8 +699,10 @@ referenceSizeForFooterInSection:(NSInteger)section {
|
|||||||
} );
|
} );
|
||||||
PearlAddNotificationObserver( NSPersistentStoreCoordinatorStoresDidChangeNotification, [MPiOSAppDelegate get].storeCoordinator, nil,
|
PearlAddNotificationObserver( NSPersistentStoreCoordinatorStoresDidChangeNotification, [MPiOSAppDelegate get].storeCoordinator, nil,
|
||||||
^(MPUsersViewController *self, NSNotification *note) {
|
^(MPUsersViewController *self, NSNotification *note) {
|
||||||
[self registerObservers];
|
PearlMainQueue( ^{
|
||||||
[self reloadUsers];
|
[self registerObservers];
|
||||||
|
[self reloadUsers];
|
||||||
|
} );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,50 +33,11 @@
|
|||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
MPLogSink mpw_log_sink_pearl;
|
|
||||||
void mpw_log_sink_pearl(const MPLogEvent *record) {
|
|
||||||
|
|
||||||
PearlLogLevel level = PearlLogLevelInfo;
|
|
||||||
switch (record->level) {
|
|
||||||
case LogLevelTrace:
|
|
||||||
level = PearlLogLevelDebug;
|
|
||||||
break;
|
|
||||||
case LogLevelDebug:
|
|
||||||
level = PearlLogLevelDebug;
|
|
||||||
break;
|
|
||||||
case LogLevelInfo:
|
|
||||||
level = PearlLogLevelInfo;
|
|
||||||
break;
|
|
||||||
case LogLevelWarning:
|
|
||||||
level = PearlLogLevelWarn;
|
|
||||||
break;
|
|
||||||
case LogLevelError:
|
|
||||||
level = PearlLogLevelError;
|
|
||||||
break;
|
|
||||||
case LogLevelFatal:
|
|
||||||
level = PearlLogLevelFatal;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
[[PearlLogger get] inFile:[@(record->file) lastPathComponent] atLine:record->line fromFunction:@(record->function)
|
|
||||||
withLevel:level text:@(record->message)];
|
|
||||||
}
|
|
||||||
|
|
||||||
@implementation MPiOSAppDelegate
|
@implementation MPiOSAppDelegate
|
||||||
|
|
||||||
+ (void)initialize {
|
+ (void)initialize {
|
||||||
|
|
||||||
static dispatch_once_t once = 0;
|
[MPiOSConfig get];
|
||||||
dispatch_once( &once, ^{
|
|
||||||
[PearlLogger get].printLevel = [[MPiOSConfig get].traceMode boolValue]? PearlLogLevelDebug: PearlLogLevelInfo;
|
|
||||||
[PearlLogger get].historyLevel = [[MPiOSConfig get].traceMode boolValue]? PearlLogLevelTrace: PearlLogLevelInfo;
|
|
||||||
#ifdef DEBUG
|
|
||||||
[PearlLogger get].printLevel = PearlLogLevelDebug;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mpw_verbosity = LogLevelTrace;
|
|
||||||
mpw_log_sink_register( &mpw_log_sink_pearl );
|
|
||||||
} );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||||
@@ -84,7 +45,7 @@ void mpw_log_sink_pearl(const MPLogEvent *record) {
|
|||||||
@try {
|
@try {
|
||||||
// Sentry
|
// Sentry
|
||||||
[SentrySDK initWithOptions:@{
|
[SentrySDK initWithOptions:@{
|
||||||
@"dsn" : decrypt( sentryDSN ),
|
@"dsn" : NilToNSNull( decrypt( sentryDSN ) ),
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@"debug" : @(YES),
|
@"debug" : @(YES),
|
||||||
@"environment": @"Development",
|
@"environment": @"Development",
|
||||||
@@ -720,12 +681,14 @@ void mpw_log_sink_pearl(const MPLogEvent *record) {
|
|||||||
prefs[@"reviewedVersion"] = @(YES);
|
prefs[@"reviewedVersion"] = @(YES);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
[SentrySDK.currentHub getClient].options.enabled = @YES;
|
||||||
[SentrySDK configureScope:^(SentryScope *scope) {
|
[SentrySDK configureScope:^(SentryScope *scope) {
|
||||||
for (NSString *pref in prefs.allKeys)
|
for (NSString *pref in prefs.allKeys)
|
||||||
[scope setExtraValue:prefs[pref] forKey:pref];
|
[scope setExtraValue:prefs[pref] forKey:pref];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
[SentrySDK.currentHub getClient].options.enabled = @NO;
|
||||||
[Countly.sharedInstance cancelConsentForAllFeatures];
|
[Countly.sharedInstance cancelConsentForAllFeatures];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="Q1S-vU-GGO">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="Q1S-vU-GGO">
|
||||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15706"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<customFonts key="customFonts">
|
<customFonts key="customFonts">
|
||||||
@@ -191,7 +191,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qp1-nX-o4i" userLabel="Entry">
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qp1-nX-o4i" userLabel="Entry">
|
||||||
<rect key="frame" x="0.0" y="530" width="414" height="96"/>
|
<rect key="frame" x="0.0" y="556" width="414" height="70"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Enter your full name:" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="5fe-rt-zFa" userLabel="Entry Label">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Enter your full name:" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="5fe-rt-zFa" userLabel="Entry Label">
|
||||||
<rect key="frame" x="20" y="0.0" width="374" height="20"/>
|
<rect key="frame" x="20" y="0.0" width="374" height="20"/>
|
||||||
@@ -200,11 +200,11 @@
|
|||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ui_textfield.png" translatesAutoresizingMaskIntoConstraints="NO" id="UfK-na-vOU" userLabel="Field Background">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ui_textfield.png" translatesAutoresizingMaskIntoConstraints="NO" id="UfK-na-vOU" userLabel="Field Background">
|
||||||
<rect key="frame" x="20" y="28" width="374" height="68"/>
|
<rect key="frame" x="20" y="28" width="374" height="42"/>
|
||||||
<rect key="contentStretch" x="0.25" y="0.25" width="0.49999999999999961" height="0.49999999999999961"/>
|
<rect key="contentStretch" x="0.25" y="0.25" width="0.49999999999999961" height="0.49999999999999961"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="MyMasterPassword" textAlignment="center" clearsOnBeginEditing="YES" minimumFontSize="14" translatesAutoresizingMaskIntoConstraints="NO" id="z3Z-AB-fG2" userLabel="Entry Field">
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="MyMasterPassword" textAlignment="center" clearsOnBeginEditing="YES" minimumFontSize="14" translatesAutoresizingMaskIntoConstraints="NO" id="z3Z-AB-fG2" userLabel="Entry Field">
|
||||||
<rect key="frame" x="30" y="32" width="354" height="60"/>
|
<rect key="frame" x="30" y="32" width="354" height="34"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="28"/>
|
<fontDescription key="fontDescription" type="system" pointSize="28"/>
|
||||||
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardAppearance="alert" enablesReturnKeyAutomatically="YES" secureTextEntry="YES"/>
|
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardAppearance="alert" enablesReturnKeyAutomatically="YES" secureTextEntry="YES"/>
|
||||||
@@ -213,20 +213,20 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</textField>
|
</textField>
|
||||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fdS-zb-K9I" userLabel="Entry Tip">
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fdS-zb-K9I" userLabel="Entry Tip">
|
||||||
<rect key="frame" x="0.0" y="-58" width="414" height="120"/>
|
<rect key="frame" x="90" y="-33.5" width="234.5" height="82.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="g2g-5i-er4">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="g2g-5i-er4">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="120"/>
|
<rect key="frame" x="0.0" y="0.0" width="234.5" height="82.5"/>
|
||||||
<rect key="contentStretch" x="0.15000000000000002" y="0.14999999999999999" width="0.69999999999999973" height="0.44999999999999996"/>
|
<rect key="contentStretch" x="0.15000000000000002" y="0.14999999999999999" width="0.69999999999999973" height="0.44999999999999996"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="Looks like a typo!" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="ZI7-qg-7OW">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="Looks like a typo!" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="ZI7-qg-7OW">
|
||||||
<rect key="frame" x="20" y="12" width="374" height="17"/>
|
<rect key="frame" x="20" y="12" width="194.5" height="17"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Try again; the password was wrong." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KhE-Yj-Kvm">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Try again; the password was wrong." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KhE-Yj-Kvm">
|
||||||
<rect key="frame" x="20" y="37" width="374" height="52"/>
|
<rect key="frame" x="20" y="37" width="194.5" height="14.5"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="12"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="12"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
@@ -274,10 +274,10 @@
|
|||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
</view>
|
</view>
|
||||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XEP-O3-ayG" userLabel="Footer">
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XEP-O3-ayG" userLabel="Footer">
|
||||||
<rect key="frame" x="0.0" y="764" width="414" height="132"/>
|
<rect key="frame" x="0.0" y="824" width="414" height="72"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<button opaque="NO" alpha="0.5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4md-Gp-SLG">
|
<button opaque="NO" alpha="0.5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4md-Gp-SLG">
|
||||||
<rect key="frame" x="20" y="108" width="374" height="24"/>
|
<rect key="frame" x="20" y="48" width="374" height="24"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="10"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="10"/>
|
||||||
<state key="normal" title="Thanks, lhunath ➚">
|
<state key="normal" title="Thanks, lhunath ➚">
|
||||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
@@ -288,14 +288,14 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="069-Pu-yXe" userLabel="Thanks Tip">
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="069-Pu-yXe" userLabel="Thanks Tip">
|
||||||
<rect key="frame" x="-3" y="0.0" width="420" height="120"/>
|
<rect key="frame" x="91" y="0.0" width="232.5" height="60"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="Z8P-ZK-aS0">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="Z8P-ZK-aS0">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="420" height="120"/>
|
<rect key="frame" x="0.0" y="0.0" width="232.5" height="60"/>
|
||||||
<rect key="contentStretch" x="0.15000000000000002" y="0.0" width="0.69999999999999973" height="1"/>
|
<rect key="contentStretch" x="0.15000000000000002" y="0.0" width="0.69999999999999973" height="1"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Why is Master Password free?" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="BLV-3x-Q0z">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Why is Master Password free?" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="BLV-3x-Q0z">
|
||||||
<rect key="frame" x="20" y="11.5" width="380" height="17"/>
|
<rect key="frame" x="20" y="11.5" width="192.5" height="17"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
@@ -329,14 +329,14 @@
|
|||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
</view>
|
</view>
|
||||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cF4-TE-GEj" userLabel="Avatar Tip">
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cF4-TE-GEj" userLabel="Avatar Tip">
|
||||||
<rect key="frame" x="-3" y="319.5" width="420" height="120"/>
|
<rect key="frame" x="69" y="379.5" width="276" height="60"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="V4W-bK-age">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="V4W-bK-age">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="420" height="120"/>
|
<rect key="frame" x="0.0" y="0.0" width="276" height="60"/>
|
||||||
<rect key="contentStretch" x="0.15000000000000002" y="0.0" width="0.69999999999999973" height="1"/>
|
<rect key="contentStretch" x="0.15000000000000002" y="0.0" width="0.69999999999999973" height="1"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Change your avatar using the arrows." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="MoM-8d-jlm">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Change your avatar using the arrows." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="MoM-8d-jlm">
|
||||||
<rect key="frame" x="20" y="11.5" width="380" height="17"/>
|
<rect key="frame" x="20" y="11.5" width="236" height="17"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
@@ -357,14 +357,14 @@
|
|||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
</view>
|
</view>
|
||||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0Um-Ot-hI6" userLabel="Preferences Tip">
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0Um-Ot-hI6" userLabel="Preferences Tip">
|
||||||
<rect key="frame" x="-3" y="66" width="420" height="120"/>
|
<rect key="frame" x="92" y="66" width="230" height="60"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_top.png" translatesAutoresizingMaskIntoConstraints="NO" id="5H0-ml-Uso">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_top.png" translatesAutoresizingMaskIntoConstraints="NO" id="5H0-ml-Uso">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="420" height="120"/>
|
<rect key="frame" x="0.0" y="0.0" width="230" height="60"/>
|
||||||
<rect key="contentStretch" x="0.15000000000000002" y="0.0" width="0.69999999999999973" height="1"/>
|
<rect key="contentStretch" x="0.15000000000000002" y="0.0" width="0.69999999999999973" height="1"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap for preferences and more." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="Er5-X1-ejQ">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap for preferences and more." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="Er5-X1-ejQ">
|
||||||
<rect key="frame" x="20" y="91.5" width="380" height="17"/>
|
<rect key="frame" x="20" y="31.5" width="190" height="17"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
@@ -565,7 +565,7 @@
|
|||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="center" image="background.png" translatesAutoresizingMaskIntoConstraints="NO" id="Lkg-xn-bce" userLabel="Background">
|
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" image="background.png" translatesAutoresizingMaskIntoConstraints="NO" id="Lkg-xn-bce" userLabel="Background">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -1618,14 +1618,14 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</searchBar>
|
</searchBar>
|
||||||
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LEX-BK-PdS" userLabel="Bad Name Tip">
|
<view hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LEX-BK-PdS" userLabel="Bad Name Tip">
|
||||||
<rect key="frame" x="-3" y="116" width="420" height="120"/>
|
<rect key="frame" x="57" y="116" width="300.5" height="75.5"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_top.png" translatesAutoresizingMaskIntoConstraints="NO" id="Rt5-v4-I0R">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black_top.png" translatesAutoresizingMaskIntoConstraints="NO" id="Rt5-v4-I0R">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="420" height="120"/>
|
<rect key="frame" x="0.0" y="0.0" width="300.5" height="75.5"/>
|
||||||
<rect key="contentStretch" x="0.050000000000000003" y="0.49999999999999994" width="0.90000000000000002" height="0.20000000000000001"/>
|
<rect key="contentStretch" x="0.050000000000000003" y="0.49999999999999994" width="0.90000000000000002" height="0.20000000000000001"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" verticalCompressionResistancePriority="1000" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="Eie-8u-hV2">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" verticalCompressionResistancePriority="1000" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="Eie-8u-hV2">
|
||||||
<rect key="frame" x="20" y="26" width="380" height="88"/>
|
<rect key="frame" x="20" y="26" width="260.5" height="43.5"/>
|
||||||
<string key="text">Try using exclusively bare domain names.
|
<string key="text">Try using exclusively bare domain names.
|
||||||
Avoid capitals and use @ to include a user name.
|
Avoid capitals and use @ to include a user name.
|
||||||
eg. apple.com, rmitchell@twitter.com</string>
|
eg. apple.com, rmitchell@twitter.com</string>
|
||||||
@@ -1972,13 +1972,13 @@ This app is now out of maintenance.</string>
|
|||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="beo-cJ-jIn" userLabel="View - Content Tip">
|
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="beo-cJ-jIn" userLabel="View - Content Tip">
|
||||||
<rect key="frame" x="82" y="250.5" width="210" height="120"/>
|
<rect key="frame" x="82" y="310.5" width="210" height="60"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="nyL-cO-aPa">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="nyL-cO-aPa">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="210" height="120"/>
|
<rect key="frame" x="0.0" y="0.0" width="210" height="60"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Copied!" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="rtA-NK-3HP">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Copied!" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="rtA-NK-3HP">
|
||||||
<rect key="frame" x="20" y="41" width="170" height="17"/>
|
<rect key="frame" x="20" y="11" width="170" height="17"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
@@ -2384,10 +2384,10 @@ Suspendisse potenti. Etiam ut nisi id augue tempor ultrices et sit amet sapien.
|
|||||||
<rect key="frame" x="0.0" y="56" width="414" height="752"/>
|
<rect key="frame" x="0.0" y="56" width="414" height="752"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="top" image="unlocked.png" translatesAutoresizingMaskIntoConstraints="NO" id="Cih-B6-Sfd">
|
<imageView userInteractionEnabled="NO" contentMode="top" image="unlocked.png" translatesAutoresizingMaskIntoConstraints="NO" id="Cih-B6-Sfd">
|
||||||
<rect key="frame" x="20" y="20" width="374" height="159"/>
|
<rect key="frame" x="20" y="20" width="374" height="79.5"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Stay Logged In?" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5X1-J4-TbH">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Stay Logged In?" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5X1-J4-TbH">
|
||||||
<rect key="frame" x="20" y="187" width="374" height="20"/>
|
<rect key="frame" x="20" y="107.5" width="374" height="20"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
@@ -2397,7 +2397,7 @@ Suspendisse potenti. Etiam ut nisi id augue tempor ultrices et sit amet sapien.
|
|||||||
<color key="onTintColor" red="0.37254901959999998" green="0.3921568627" blue="0.42745098040000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="onTintColor" red="0.37254901959999998" green="0.3921568627" blue="0.42745098040000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
</switch>
|
</switch>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e80-98-V6D">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e80-98-V6D">
|
||||||
<rect key="frame" x="20" y="215" width="374" height="151.5"/>
|
<rect key="frame" x="20" y="135.5" width="374" height="151.5"/>
|
||||||
<string key="text">The right balance between security and convenience is often very personal.
|
<string key="text">The right balance between security and convenience is often very personal.
|
||||||
|
|
||||||
To make getting to your passwords faster, you can remain logged in after you close Master Password. This allows you to skip having to log in the next time.
|
To make getting to your passwords faster, you can remain logged in after you close Master Password. This allows you to skip having to log in the next time.
|
||||||
@@ -2472,16 +2472,16 @@ However, it means that anyone who finds your device unlocked can do the same.</s
|
|||||||
<rect key="frame" x="0.0" y="56" width="414" height="752"/>
|
<rect key="frame" x="0.0" y="56" width="414" height="752"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="top" image="identity.png" translatesAutoresizingMaskIntoConstraints="NO" id="4zk-d2-jJC">
|
<imageView userInteractionEnabled="NO" contentMode="top" image="identity.png" translatesAutoresizingMaskIntoConstraints="NO" id="4zk-d2-jJC">
|
||||||
<rect key="frame" x="20" y="20" width="374" height="159"/>
|
<rect key="frame" x="20" y="20" width="374" height="79.5"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Getting Started" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0UA-Nw-PXP">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Getting Started" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0UA-Nw-PXP">
|
||||||
<rect key="frame" x="20" y="187" width="374" height="20"/>
|
<rect key="frame" x="20" y="107.5" width="374" height="20"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="J90-SQ-ljR">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="J90-SQ-ljR">
|
||||||
<rect key="frame" x="20" y="215" width="374" height="473"/>
|
<rect key="frame" x="20" y="135.5" width="374" height="473"/>
|
||||||
<attributedString key="attributedText">
|
<attributedString key="attributedText">
|
||||||
<fragment content="The passwords generated by this app are not stored but ">
|
<fragment content="The passwords generated by this app are not stored but ">
|
||||||
<attributes>
|
<attributes>
|
||||||
@@ -2639,32 +2639,32 @@ See </string>
|
|||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="Negare non possum" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Pax-1J-IZi">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="Negare non possum" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Pax-1J-IZi">
|
||||||
<rect key="frame" x="20" y="332" width="330" height="20"/>
|
<rect key="frame" x="20" y="226" width="330" height="20"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="left" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ra0-yS-99P">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="left" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ra0-yS-99P">
|
||||||
<rect key="frame" x="20" y="360" width="374" height="0.0"/>
|
<rect key="frame" x="20" y="254" width="374" height="106"/>
|
||||||
<string key="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. At multis se probavit. Sic consequentibus vestris sublatis prima tolluntur. Nescio quo modo praetervolavit oratio. Reguli reiciendam; Theophrastus mediocriterne delectat, cum tractat locos ab Aristotele ante tractatos? Duo Reges: constructio interrete.</string>
|
<string key="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. At multis se probavit. Sic consequentibus vestris sublatis prima tolluntur. Nescio quo modo praetervolavit oratio. Reguli reiciendam; Theophrastus mediocriterne delectat, cum tractat locos ab Aristotele ante tractatos? Duo Reges: constructio interrete.</string>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="12"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="12"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="thumb_generated_answers.png" translatesAutoresizingMaskIntoConstraints="NO" id="DMJ-sd-eNJ">
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="thumb_generated_answers.png" translatesAutoresizingMaskIntoConstraints="NO" id="DMJ-sd-eNJ">
|
||||||
<rect key="frame" x="9" y="20" width="396" height="304"/>
|
<rect key="frame" x="108" y="20" width="198" height="198"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<activityIndicatorView hidden="YES" opaque="NO" tag="2" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="cef-sc-aph">
|
<activityIndicatorView hidden="YES" opaque="NO" tag="2" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="cef-sc-aph">
|
||||||
<rect key="frame" x="188.5" y="153.5" width="37" height="37"/>
|
<rect key="frame" x="188.5" y="100.5" width="37" height="37"/>
|
||||||
</activityIndicatorView>
|
</activityIndicatorView>
|
||||||
<label opaque="NO" userInteractionEnabled="NO" tag="3" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="✔︎" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FWu-V6-mLT">
|
<label opaque="NO" userInteractionEnabled="NO" tag="3" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="✔︎" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FWu-V6-mLT">
|
||||||
<rect key="frame" x="318.5" y="-6" width="93" height="132"/>
|
<rect key="frame" x="219.5" y="-6" width="93" height="132"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="110"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="110"/>
|
||||||
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="1" contentMode="left" horizontalHuggingPriority="750" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="$0.95" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="68f-wn-UlS">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="1" contentMode="left" horizontalHuggingPriority="750" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="$0.95" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="68f-wn-UlS">
|
||||||
<rect key="frame" x="358" y="332" width="36" height="20"/>
|
<rect key="frame" x="358" y="226" width="36" height="20"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
||||||
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
@@ -2707,38 +2707,38 @@ See </string>
|
|||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="Fuel Top-Up" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Jnv-uN-xeg">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="Fuel Top-Up" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="12" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Jnv-uN-xeg">
|
||||||
<rect key="frame" x="20" y="332" width="331" height="20"/>
|
<rect key="frame" x="20" y="226" width="331" height="20"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Bold" family="Exo 2.0" pointSize="17"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="left" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fz2-AO-aGW">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.69999999999999996" contentMode="left" horizontalHuggingPriority="251" verticalCompressionResistancePriority="749" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fz2-AO-aGW">
|
||||||
<rect key="frame" x="20" y="360" width="374" height="0.0"/>
|
<rect key="frame" x="20" y="254" width="374" height="106"/>
|
||||||
<string key="text">You really love Master Password and how it's solving your password problems. You're eager to encourage the maintenance, technical support and development of new features. I am a one-man shop, fuel enables me to allocate more work hours to Master Password.</string>
|
<string key="text">You really love Master Password and how it's solving your password problems. You're eager to encourage the maintenance, technical support and development of new features. I am a one-man shop, fuel enables me to allocate more work hours to Master Password.</string>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="12"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="12"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="thumb_fuel.png" translatesAutoresizingMaskIntoConstraints="NO" id="PnG-hP-syh">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="thumb_fuel.png" translatesAutoresizingMaskIntoConstraints="NO" id="PnG-hP-syh">
|
||||||
<rect key="frame" x="9" y="20" width="396" height="304"/>
|
<rect key="frame" x="108" y="20" width="198" height="198"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
<activityIndicatorView hidden="YES" opaque="NO" tag="2" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="eS4-59-Xny">
|
<activityIndicatorView hidden="YES" opaque="NO" tag="2" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="eS4-59-Xny">
|
||||||
<rect key="frame" x="188.5" y="153.5" width="37" height="37"/>
|
<rect key="frame" x="188.5" y="100.5" width="37" height="37"/>
|
||||||
</activityIndicatorView>
|
</activityIndicatorView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="1" contentMode="left" horizontalHuggingPriority="750" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="$2.95" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EbU-DV-fKF">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" tag="1" contentMode="left" horizontalHuggingPriority="750" verticalHuggingPriority="251" horizontalCompressionResistancePriority="751" verticalCompressionResistancePriority="751" text="$2.95" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EbU-DV-fKF">
|
||||||
<rect key="frame" x="359" y="332" width="35" height="20"/>
|
<rect key="frame" x="359" y="226" width="35" height="20"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="14"/>
|
||||||
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="▲" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aGb-QC-A92">
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="▲" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aGb-QC-A92">
|
||||||
<rect key="frame" x="281.5" y="307" width="11" height="17"/>
|
<rect key="frame" x="281.5" y="201" width="11" height="17"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<nil key="highlightedColor"/>
|
<nil key="highlightedColor"/>
|
||||||
</label>
|
</label>
|
||||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dsR-fr-dY4">
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dsR-fr-dY4">
|
||||||
<rect key="frame" x="20" y="20" width="143" height="44"/>
|
<rect key="frame" x="20" y="20" width="111" height="44"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstAttribute="height" constant="44" id="W6p-kB-VBX"/>
|
<constraint firstAttribute="height" constant="44" id="W6p-kB-VBX"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
@@ -3005,7 +3005,7 @@ Invested: 3.7 work hours</string>
|
|||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="mother" textAlignment="center" minimumFontSize="14" clearButtonMode="unlessEditing" translatesAutoresizingMaskIntoConstraints="NO" id="T2F-PD-Nw8" userLabel="Question Field">
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="mother" textAlignment="center" minimumFontSize="14" clearButtonMode="unlessEditing" translatesAutoresizingMaskIntoConstraints="NO" id="T2F-PD-Nw8" userLabel="Question Field">
|
||||||
<rect key="frame" x="8" y="5.5" width="398" height="42"/>
|
<rect key="frame" x="8" y="4" width="398" height="43.5"/>
|
||||||
<color key="backgroundColor" red="0.37254901959999998" green="0.3921568627" blue="0.42745098040000001" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" red="0.37254901959999998" green="0.3921568627" blue="0.42745098040000001" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="28"/>
|
<fontDescription key="fontDescription" name="Exo2.0-Regular" family="Exo 2.0" pointSize="28"/>
|
||||||
@@ -3320,6 +3320,11 @@ Ut in geometria, prima si dederis, danda sunt omnia. Nonne igitur tibi videntur,
|
|||||||
<point key="canvasLocation" x="2039" y="2377"/>
|
<point key="canvasLocation" x="2039" y="2377"/>
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
|
<inferredMetricsTieBreakers>
|
||||||
|
<segue reference="Ql4-wf-T8u"/>
|
||||||
|
<segue reference="GZk-I4-JyH"/>
|
||||||
|
</inferredMetricsTieBreakers>
|
||||||
|
<color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="avatar-0.png" width="110" height="110"/>
|
<image name="avatar-0.png" width="110" height="110"/>
|
||||||
<image name="background.png" width="736" height="736"/>
|
<image name="background.png" width="736" height="736"/>
|
||||||
@@ -3349,9 +3354,4 @@ Ut in geometria, prima si dederis, danda sunt omnia. Nonne igitur tibi videntur,
|
|||||||
<image name="ui_textfield.png" width="158" height="34"/>
|
<image name="ui_textfield.png" width="158" height="34"/>
|
||||||
<image name="unlocked.png" width="84" height="79.5"/>
|
<image name="unlocked.png" width="84" height="79.5"/>
|
||||||
</resources>
|
</resources>
|
||||||
<inferredMetricsTieBreakers>
|
|
||||||
<segue reference="k2G-nL-x3l"/>
|
|
||||||
<segue reference="GZk-I4-JyH"/>
|
|
||||||
</inferredMetricsTieBreakers>
|
|
||||||
<color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@@ -122,7 +122,6 @@ const char *mpw_site_result(
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *sitePassword = NULL;
|
|
||||||
if (resultType & MPResultTypeClassTemplate) {
|
if (resultType & MPResultTypeClassTemplate) {
|
||||||
switch (algorithmVersion) {
|
switch (algorithmVersion) {
|
||||||
case MPAlgorithmVersionV0:
|
case MPAlgorithmVersionV0:
|
||||||
@@ -172,7 +171,7 @@ const char *mpw_site_result(
|
|||||||
err( "Unsupported password type: %d", resultType );
|
err( "Unsupported password type: %d", resultType );
|
||||||
}
|
}
|
||||||
|
|
||||||
return sitePassword;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *mpw_site_state(
|
const char *mpw_site_state(
|
||||||
|
|||||||
Reference in New Issue
Block a user