diff --git a/External/UbiquityStoreManager b/External/UbiquityStoreManager index 75d59bda..da3e69ad 160000 --- a/External/UbiquityStoreManager +++ b/External/UbiquityStoreManager @@ -1 +1 @@ -Subproject commit 75d59bdac65a08a0bf415dcaf5aca9f809909040 +Subproject commit da3e69adf5e861dab59bf936e6582c08e43c26c9 diff --git a/MasterPassword/ObjC/Mac/MPAppsViewController.xib b/MasterPassword/ObjC/Mac/MPAppsViewController.xib new file mode 100644 index 00000000..085316eb --- /dev/null +++ b/MasterPassword/ObjC/Mac/MPAppsViewController.xib @@ -0,0 +1,121 @@ + + + + 1070 + 11C42 + 1938 + 1138.17 + 567.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 1938 + + + NSWindowTemplate + NSView + NSCustomObject + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSObject + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{196, 240}, {480, 270}} + 544735232 + Window + NSWindow + + + + + 256 + {480, 270} + + + + {{0, 0}, {1680, 1028}} + {10000000000000, 10000000000000} + YES + + + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + + + + + + 2 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{357, 418}, {480, 270}} + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 2 + + + 0 + IBCocoaFramework + YES + 3 + YES + + diff --git a/MasterPassword/ObjC/Mac/MPAppsWindow.xib b/MasterPassword/ObjC/Mac/MPAppsWindow.xib new file mode 100644 index 00000000..8163ac7d --- /dev/null +++ b/MasterPassword/ObjC/Mac/MPAppsWindow.xib @@ -0,0 +1,977 @@ + + + + 1080 + 12D78 + 3084 + 1187.37 + 626.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 3084 + + + IBNSLayoutConstraint + NSButton + NSButtonCell + NSCustomObject + NSImageCell + NSImageView + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + MPMacAppDelegate + + + FirstResponder + + + NSApplication + + + 3 + 2 + {{196, 240}, {1000, 600}} + 544735232 + + NSWindow + + + {1000, 600} + {1000, 600} + + + 256 + + + + 268 + + + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + {1000, 600} + + + + _NS:9 + YES + + 134217728 + 33554432 + + NSImage + shot-laptop-leaning-iphone + + _NS:9 + 0 + 0 + 0 + NO + + NO + YES + + + + 268 + + {{18, 18}, {964, 18}} + + + _NS:9 + YES + + -2080374784 + 0 + Don't Show Again + + LucidaGrande + 13 + 1044 + + _NS:9 + + 1211912448 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + NO + + + + 268 + + {{425, 42}, {150, 44}} + + + _NS:9 + YES + + 67108864 + 0 + + + _NS:9 + + -2039201792 + 6 + + NSImage + appstore + + + + 200 + 25 + + NO + + + + 268 + {{17, 508}, {966, 72}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + QWNjZXNzIHlvdXIgcGFzc3dvcmRzCmZyb20gYW55d2hlcmUuA + + MyriadPro-Bold + 36 + 16 + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 1 + MSAxIDEAA + + + NO + + + + 268 + {{357, 94}, {286, 24}} + + + + _NS:1535 + YES + + 68157504 + 138413056 + Master Password for iPhone + + MyriadPro-Regular + 24 + 16 + + _NS:1535 + + + + + NO + + + {1000, 600} + + + + + {{0, 0}, {1920, 1058}} + {1000, 622} + {1000, 622} + YES + + + + + + + iphoneAppStore: + + + + 206 + + + + appWindowDontShow + + + + 207 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + + + + + + 2 + + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 9 + 40 + 2 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 0.0 + + 1000 + + 9 + 40 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 9 + 40 + 3 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 9 + 40 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 9 + 40 + 3 + + + + 3 + 0 + + 3 + 1 + + 0.0 + + 1000 + + 9 + 40 + 3 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 9 + 40 + 2 + + + + + + + + + Container + + + 3 + + + + + + 8 + 0 + + 0 + 1 + + 600 + + 1000 + + 9 + 40 + 1 + + + + 7 + 0 + + 0 + 1 + + 1000 + + 1000 + + 9 + 40 + 1 + + + + Image + + + 4 + + + + + 59 + + + + + + 8 + 0 + + 0 + 1 + + 14 + + 1000 + + 9 + 40 + 1 + + + + Check + + + 60 + + + + + 77 + + + + + 149 + + + + + 173 + + + + + + Store + + + 174 + + + + + 219 + + + + + 220 + + + + + 226 + + + + + 227 + + + + + 268 + + + + + + + + 269 + + + + + 280 + + + + + 281 + + + + + 283 + + + + + + + + 284 + + + + + 231 + + + + + 298 + + + + + 299 + + + + + 230 + + + + + 265 + + + + + 266 + + + + + 229 + + + + + 267 + + + + + 264 + + + + + 260 + + + + + 291 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + {{357, 418}, {480, 270}} + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 337 + + + + + MPAppDelegate_Shared + PearlAppDelegate + + IBProjectSource + ./Classes/MPAppDelegate_Shared.h + + + + MPMacAppDelegate + MPAppDelegate_Shared + + id + id + NSMenuItem + id + id + id + NSMenuItem + + + + iphoneAppStore: + id + + + lock: + id + + + newUser: + NSMenuItem + + + rebuildCloud: + id + + + showPasswordWindow: + id + + + terminate: + id + + + togglePreference: + NSMenuItem + + + + NSButton + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenu + NSMenuItem + NSMenuItem + + + + appWindowDontShow + NSButton + + + createUserItem + NSMenuItem + + + dialogStyleHUD + NSMenuItem + + + dialogStyleRegular + NSMenuItem + + + lockItem + NSMenuItem + + + rememberPasswordItem + NSMenuItem + + + savePasswordItem + NSMenuItem + + + showItem + NSMenuItem + + + statusMenu + NSMenu + + + useICloudItem + NSMenuItem + + + usersItem + NSMenuItem + + + + IBProjectSource + ./Classes/MPMacAppDelegate.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {15, 15} + {150, 44} + {1000, 600} + + YES + + diff --git a/MasterPassword/ObjC/Mac/MPMacAppDelegate.h b/MasterPassword/ObjC/Mac/MPMacAppDelegate.h index 7dd2d338..34bf5e28 100644 --- a/MasterPassword/ObjC/Mac/MPMacAppDelegate.h +++ b/MasterPassword/ObjC/Mac/MPMacAppDelegate.h @@ -24,11 +24,14 @@ @property(nonatomic, weak) IBOutlet NSMenuItem *usersItem; @property(nonatomic, weak) IBOutlet NSMenuItem *dialogStyleRegular; @property(nonatomic, weak) IBOutlet NSMenuItem *dialogStyleHUD; +@property(nonatomic, weak) IBOutlet NSButton *appWindowDontShow; - (IBAction)showPasswordWindow:(id)sender; - (IBAction)togglePreference:(NSMenuItem *)sender; - (IBAction)newUser:(NSMenuItem *)sender; - (IBAction)lock:(id)sender; - (IBAction)rebuildCloud:(id)sender; +- (IBAction)terminate:(id)sender; +- (IBAction)iphoneAppStore:(id)sender; @end diff --git a/MasterPassword/ObjC/Mac/MPMacAppDelegate.m b/MasterPassword/ObjC/Mac/MPMacAppDelegate.m index f1e49940..db1856b5 100644 --- a/MasterPassword/ObjC/Mac/MPMacAppDelegate.m +++ b/MasterPassword/ObjC/Mac/MPMacAppDelegate.m @@ -11,6 +11,11 @@ #import "MPAppDelegate_Store.h" #import +@interface MPMacAppDelegate() + +@property(nonatomic, strong) NSWindowController *appsWindow; +@end + @implementation MPMacAppDelegate #pragma clang diagnostic push @@ -188,6 +193,22 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven [self.storeManager rebuildCloudContentFromCloudStoreOrLocalStore:NO]; } +- (IBAction)terminate:(id)sender { + + [self.passwordWindow close]; + self.passwordWindow = nil; + + [NSApp terminate:nil]; +} + +- (IBAction)iphoneAppStore:(id)sender { + + [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://itunes.apple.com/app/id510296984"]]; + + [self.appWindowDontShow.window close]; + self.appWindowDontShow = nil; +} + - (void)didUpdateConfigForKey:(SEL)configKey fromValue:(id)oldValue { [[NSNotificationCenter defaultCenter] @@ -198,7 +219,6 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { - [[NSUbiquitousKeyValueStore defaultStore] setString:@"0B3CA2DF-5796-44DF-B5E0-121EC3846464" forKey:@"USMStoreUUIDKey"]; // Setup delegates and listeners. [MPConfig get].delegate = self; __weak id weakSelf = self; @@ -248,8 +268,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven EventHotKeyRef hotKeyRef; EventTypeSpec hotKeyEvents[1] = { { .eventClass = kEventClassKeyboard, .eventKind = kEventHotKeyPressed } }; OSStatus status = InstallApplicationEventHandler(NewEventHandlerUPP( MPHotKeyHander ), GetEventTypeCount( hotKeyEvents ), - hotKeyEvents, - (__bridge void *)self, NULL); + hotKeyEvents, (__bridge void *)self, NULL); if (status != noErr) err(@"Error installing application event handler: %d", status); status = RegisterEventHotKey( 35 /* p */, controlKey + cmdKey, MPShowHotKey, GetApplicationEventTarget(), 0, &hotKeyRef ); @@ -258,6 +277,15 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven status = RegisterEventHotKey( 35 /* p */, controlKey + optionKey + cmdKey, MPLockHotKey, GetApplicationEventTarget(), 0, &hotKeyRef ); if (status != noErr) err(@"Error registering 'lock' hotkey: %d", status); + + // iOS App window + if ([[MPMacConfig get].showAppWindow boolValue]) { + [self.appsWindow = [[NSWindowController alloc] initWithWindowNibName:@"MPAppsWindow" owner:self] showWindow:self]; + [[NSNotificationCenter defaultCenter] addObserverForName:NSWindowWillCloseNotification object:self.appsWindow.window queue:nil + usingBlock:^(NSNotification *note) { + [MPMacConfig get].showAppWindow = @(self.appWindowDontShow.state == NSOffState); + }]; + } } - (void)setActiveUser:(MPUserEntity *)activeUser { @@ -341,11 +369,6 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven } } -- (void)applicationDidBecomeActive:(NSNotification *)notification { - -// [self showPasswordWindow]; -} - - (IBAction)showPasswordWindow:(id)sender { // If no user, can't activate. diff --git a/MasterPassword/ObjC/Mac/MPMacConfig.h b/MasterPassword/ObjC/Mac/MPMacConfig.h index 9540e648..a2e1c58e 100644 --- a/MasterPassword/ObjC/Mac/MPMacConfig.h +++ b/MasterPassword/ObjC/Mac/MPMacConfig.h @@ -12,5 +12,6 @@ @property(nonatomic, retain) NSString *usedUserName; @property(nonatomic, retain) NSNumber *dialogStyleHUD; +@property(nonatomic, strong) NSNumber *showAppWindow; @end diff --git a/MasterPassword/ObjC/Mac/MPMacConfig.m b/MasterPassword/ObjC/Mac/MPMacConfig.m index 6e1e0e20..a6aad9f0 100644 --- a/MasterPassword/ObjC/Mac/MPMacConfig.m +++ b/MasterPassword/ObjC/Mac/MPMacConfig.m @@ -10,6 +10,7 @@ @dynamic usedUserName; @dynamic dialogStyleHUD; +@dynamic showAppWindow; - (id)init { @@ -18,7 +19,8 @@ [self.defaults registerDefaults:@{ NSStringFromSelector( @selector(iTunesID) ) : @"510296984", - NSStringFromSelector( @selector(dialogStyleHUD) ) : @NO + NSStringFromSelector( @selector(dialogStyleHUD) ) : @NO, + NSStringFromSelector( @selector(showAppWindow) ) : @YES }]; return self; diff --git a/MasterPassword/ObjC/Mac/MPPasswordWindowController.m b/MasterPassword/ObjC/Mac/MPPasswordWindowController.m index 338e3bd5..7cff0432 100644 --- a/MasterPassword/ObjC/Mac/MPPasswordWindowController.m +++ b/MasterPassword/ObjC/Mac/MPPasswordWindowController.m @@ -60,6 +60,7 @@ }]; [[NSNotificationCenter defaultCenter] addObserverForName:NSWindowWillCloseNotification object:self.window queue:nil usingBlock:^(NSNotification *note) { + [NSApp endSheet:[self.window attachedSheet]]; [[NSApplication sharedApplication] hide:nil]; }]; [[NSNotificationCenter defaultCenter] diff --git a/MasterPassword/ObjC/Mac/MPPasswordWindowController.xib b/MasterPassword/ObjC/Mac/MPPasswordWindowController.xib index 5726caf1..f871f799 100644 --- a/MasterPassword/ObjC/Mac/MPPasswordWindowController.xib +++ b/MasterPassword/ObjC/Mac/MPPasswordWindowController.xib @@ -12,8 +12,6 @@ IBNSLayoutConstraint - NSButton - NSButtonCell NSCustomObject NSCustomView NSProgressIndicator @@ -48,8 +46,8 @@ NSPanel - {480, 320} - {480, 134} + {480, 200} + {480, 199} 256 @@ -58,35 +56,6 @@ 268 - - - 268 - - {{10, 134}, {122, 19}} - - - _NS:9 - YES - - -2080374784 - 134217728 - Round Rect Button - - LucidaGrande - 12 - 16 - - _NS:9 - - -2038153216 - 164 - - - 400 - 75 - - NO - 268 @@ -97,9 +66,9 @@ 1 1 - + 3 - MCAwLjYAA + MCAwLjkAA _NS:1535 @@ -124,7 +93,7 @@ MC42NjY2NjY2NjY3AA - + 1 MSAxIDEAA @@ -137,13 +106,13 @@ {{17, 20}, {446, 17}} - + 1 1 - + 3 - MCAwLjYAA + MCAwLjkAA _NS:1505 @@ -160,15 +129,7 @@ _NS:1505 - - 6 - System - controlLightHighlightColor - - 3 - MQA - - + NO @@ -198,7 +159,10 @@ 6 System textBackgroundColor - + + 3 + MQA + 6 @@ -218,7 +182,7 @@ {{17, 45}, {446, 80}} - + 1 1 @@ -234,7 +198,7 @@ - + YES @@ -261,6 +225,17 @@ NO + + + 268 + {{224, 84}, {32, 32}} + + + + _NS:945 + 28682 + 100 + {480, 200} @@ -269,16 +244,6 @@ _NS:9 NSView - - - 268 - {{224, 84}, {32, 32}} - - - _NS:945 - 28682 - 100 - {480, 200} @@ -288,8 +253,8 @@ _NS:21 {{0, 0}, {1920, 1058}} - {480, 156} - {480, 342} + {480, 221} + {480, 222} YES @@ -311,14 +276,6 @@ 214 - - - progressView - - - - 215 - userLabel @@ -352,12 +309,12 @@ 226 - - reload: + + progressView - + - 236 + 215 @@ -414,38 +371,6 @@ 23 - - - 9 - 0 - - 9 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - - - 10 - 0 - - 10 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - 3 @@ -510,21 +435,62 @@ 29 3 - - - 96 - - - - 143 + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 5 + 22 + 2 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + 4 @@ -573,22 +539,6 @@ 29 3 - - - 5 - 0 - - 6 - 1 - - 8 - - 1000 - - 6 - 24 - 3 - 3 @@ -605,22 +555,6 @@ 24 3 - - - 9 - 0 - - 9 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - 9 @@ -701,27 +635,11 @@ 29 3 - - - 10 - 0 - - 10 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - + @@ -841,16 +759,6 @@ - - 207 - - - - - 208 - - - 209 @@ -889,37 +797,29 @@ - - 210 - - - 231 - 232 - - - - + 96 + - 233 - - - - - 234 - + 237 + - 235 - + 238 + + + + + 239 + @@ -928,19 +828,19 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - + - - + + + com.apple.InterfaceBuilder.CocoaPlugin @@ -969,7 +869,7 @@ com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin @@ -980,14 +880,11 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin @@ -999,21 +896,17 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + - - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1021,7 +914,7 @@ - 236 + 239 diff --git a/MasterPassword/ObjC/Mac/MasterPassword-Info.plist b/MasterPassword/ObjC/Mac/MasterPassword-Info.plist index 02a9d3af..efc860f3 100644 --- a/MasterPassword/ObjC/Mac/MasterPassword-Info.plist +++ b/MasterPassword/ObjC/Mac/MasterPassword-Info.plist @@ -34,5 +34,7 @@ MainMenu NSPrincipalClass NSApplication + ATSApplicationFontsPath + . diff --git a/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj b/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj index 3146ea3d..2ab7fd05 100644 --- a/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj +++ b/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/project.pbxproj @@ -11,6 +11,9 @@ 93D395F08A087F8A24689347 /* NSArray+Indexing.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D39067C0AFDC581794E2B8 /* NSArray+Indexing.m */; }; 93D39C34FE35830EF5BE1D2A /* NSArray+Indexing.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D396D04E57792A54D437AC /* NSArray+Indexing.h */; }; 93D39E281E3658B30550CB55 /* NSDictionary+Indexing.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D39AA1EE2E1E7B81372240 /* NSDictionary+Indexing.m */; }; + DA0933CA1747A56A00DE1CEF /* MPAppsWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA0933C91747A56A00DE1CEF /* MPAppsWindow.xib */; }; + DA0933CC1747AD2D00DE1CEF /* shot-laptop-leaning-iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0933CB1747AD2D00DE1CEF /* shot-laptop-leaning-iphone.png */; }; + DA0933D01747B91B00DE1CEF /* appstore.png in Resources */ = {isa = PBXBuildFile; fileRef = DA0933CF1747B91B00DE1CEF /* appstore.png */; }; DA16B33F170661D4000A0EAB /* libUbiquityStoreManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */; }; DA16B341170661DB000A0EAB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA16B340170661DB000A0EAB /* Carbon.framework */; }; DA16B342170661E0000A0EAB /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC632871486D95D0075AEA5 /* Security.framework */; }; @@ -30,6 +33,8 @@ DA4C45F4173B57B700745CC5 /* NSURL+UbiquityStoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DA4C45F2173B57B700745CC5 /* NSURL+UbiquityStoreManager.h */; }; DA4C45F5173B57B700745CC5 /* NSURL+UbiquityStoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4C45F3173B57B700745CC5 /* NSURL+UbiquityStoreManager.m */; }; DA4DA1D91564471A00F6F596 /* libjrswizzle.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC6326C148680650075AEA5 /* libjrswizzle.a */; }; + DA531D051748610100121B83 /* video.png in Resources */ = {isa = PBXBuildFile; fileRef = DA531D031748610000121B83 /* video.png */; }; + DA531D061748610100121B83 /* video@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA531D041748610100121B83 /* video@2x.png */; }; DA5E5C8817248AA1003798D8 /* crypto_aesctr.h in Headers */ = {isa = PBXBuildFile; fileRef = DA5E5C7B17248AA1003798D8 /* crypto_aesctr.h */; }; DA5E5C8917248AA1003798D8 /* crypto_scrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = DA5E5C7C17248AA1003798D8 /* crypto_scrypt.h */; }; DA5E5C8A17248AA1003798D8 /* memlimit.h in Headers */ = {isa = PBXBuildFile; fileRef = DA5E5C7D17248AA1003798D8 /* memlimit.h */; }; @@ -190,6 +195,9 @@ 93D393B97158D7BE9332EA53 /* NSDictionary+Indexing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Indexing.h"; sourceTree = ""; }; 93D396D04E57792A54D437AC /* NSArray+Indexing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Indexing.h"; sourceTree = ""; }; 93D39AA1EE2E1E7B81372240 /* NSDictionary+Indexing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Indexing.m"; sourceTree = ""; }; + DA0933C91747A56A00DE1CEF /* MPAppsWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MPAppsWindow.xib; sourceTree = ""; }; + DA0933CB1747AD2D00DE1CEF /* shot-laptop-leaning-iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "shot-laptop-leaning-iphone.png"; sourceTree = ""; }; + DA0933CF1747B91B00DE1CEF /* appstore.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = appstore.png; sourceTree = ""; }; DA16B340170661DB000A0EAB /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; DA16B343170661EE000A0EAB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; DA30E9CB15722ECA00A68B4C /* NSBundle+PearlMutableInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle+PearlMutableInfo.h"; sourceTree = ""; }; @@ -205,7 +213,9 @@ DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libUbiquityStoreManager.a; sourceTree = BUILT_PRODUCTS_DIR; }; DA4C45F2173B57B700745CC5 /* NSURL+UbiquityStoreManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSURL+UbiquityStoreManager.h"; sourceTree = ""; }; DA4C45F3173B57B700745CC5 /* NSURL+UbiquityStoreManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURL+UbiquityStoreManager.m"; sourceTree = ""; }; - DA5BFA44147E415C00F98B1E /* MasterPassword.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MasterPassword.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DA531D031748610000121B83 /* video.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = video.png; sourceTree = ""; }; + DA531D041748610100121B83 /* video@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "video@2x.png"; sourceTree = ""; }; + DA5BFA44147E415C00F98B1E /* Master Password.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Master Password.app"; sourceTree = BUILT_PRODUCTS_DIR; }; DA5BFA4A147E415C00F98B1E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; DA5BFA4C147E415C00F98B1E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; DA5BFA4E147E415C00F98B1E /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; @@ -444,7 +454,7 @@ DA5BFA45147E415C00F98B1E /* Products */ = { isa = PBXGroup; children = ( - DA5BFA44147E415C00F98B1E /* MasterPassword.app */, + DA5BFA44147E415C00F98B1E /* Master Password.app */, DAC77CAD148291A600BCF976 /* libPearl.a */, DAC6326C148680650075AEA5 /* libjrswizzle.a */, DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */, @@ -552,6 +562,7 @@ DA5E5CC21724A667003798D8 /* InfoPlist.strings */, DA5E5CC41724A667003798D8 /* MainMenu.xib */, DA5E5CC61724A667003798D8 /* main.m */, + DA0933C91747A56A00DE1CEF /* MPAppsWindow.xib */, ); path = Mac; sourceTree = ""; @@ -607,6 +618,10 @@ DACA23B51705DF7D002C6C22 /* Media */ = { isa = PBXGroup; children = ( + DA531D031748610000121B83 /* video.png */, + DA531D041748610100121B83 /* video@2x.png */, + DA0933CF1747B91B00DE1CEF /* appstore.png */, + DA0933CB1747AD2D00DE1CEF /* shot-laptop-leaning-iphone.png */, DA5E5D541724F9C8003798D8 /* MasterPassword.iconset */, DACA24161705DF7D002C6C22 /* Background */, DACA24311705DF7D002C6C22 /* Avatars */, @@ -900,9 +915,9 @@ productReference = DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */; productType = "com.apple.product-type.library.static"; }; - DA5BFA43147E415C00F98B1E /* MasterPassword */ = { + DA5BFA43147E415C00F98B1E /* Master Password */ = { isa = PBXNativeTarget; - buildConfigurationList = DA5BFA6D147E415C00F98B1E /* Build configuration list for PBXNativeTarget "MasterPassword" */; + buildConfigurationList = DA5BFA6D147E415C00F98B1E /* Build configuration list for PBXNativeTarget "Master Password" */; buildPhases = ( DA5BFA40147E415C00F98B1E /* Sources */, DA5BFA41147E415C00F98B1E /* Frameworks */, @@ -914,9 +929,9 @@ ); dependencies = ( ); - name = MasterPassword; + name = "Master Password"; productName = MasterPassword; - productReference = DA5BFA44147E415C00F98B1E /* MasterPassword.app */; + productReference = DA5BFA44147E415C00F98B1E /* Master Password.app */; productType = "com.apple.product-type.application"; }; DAC6326B148680650075AEA5 /* jrswizzle */ = { @@ -978,7 +993,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - DA5BFA43147E415C00F98B1E /* MasterPassword */, + DA5BFA43147E415C00F98B1E /* Master Password */, DAC77CAC148291A600BCF976 /* Pearl */, DAC6326B148680650075AEA5 /* jrswizzle */, DA4425CA1557BED40052177D /* UbiquityStoreManager */, @@ -1058,6 +1073,11 @@ DA5E5D0A1724A667003798D8 /* InfoPlist.strings in Resources */, DA5E5D0B1724A667003798D8 /* MainMenu.xib in Resources */, DA5E5D551724F9C8003798D8 /* MasterPassword.iconset in Resources */, + DA0933CA1747A56A00DE1CEF /* MPAppsWindow.xib in Resources */, + DA0933CC1747AD2D00DE1CEF /* shot-laptop-leaning-iphone.png in Resources */, + DA0933D01747B91B00DE1CEF /* appstore.png in Resources */, + DA531D051748610100121B83 /* video.png in Resources */, + DA531D061748610100121B83 /* video@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1198,7 +1218,7 @@ /* Begin PBXTargetDependency section */ DA3EF19E15A47AEB003ABF4E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = DA5BFA43147E415C00F98B1E /* MasterPassword */; + target = DA5BFA43147E415C00F98B1E /* Master Password */; targetProxy = DA3EF19D15A47AEB003ABF4E /* PBXContainerItemProxy */; }; DAC63286148681200075AEA5 /* PBXTargetDependency */ = { @@ -1725,7 +1745,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = "AdHoc-Mac"; }; - DA5BFA6D147E415C00F98B1E /* Build configuration list for PBXNativeTarget "MasterPassword" */ = { + DA5BFA6D147E415C00F98B1E /* Build configuration list for PBXNativeTarget "Master Password" */ = { isa = XCConfigurationList; buildConfigurations = ( DA5BFA6E147E415C00F98B1E /* Debug-Mac */, diff --git a/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/xcshareddata/xcschemes/MasterPassword Mac (App Store).xcscheme b/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/xcshareddata/xcschemes/MasterPassword Mac (App Store).xcscheme index be135976..52a0ed1d 100644 --- a/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/xcshareddata/xcschemes/MasterPassword Mac (App Store).xcscheme +++ b/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/xcshareddata/xcschemes/MasterPassword Mac (App Store).xcscheme @@ -15,8 +15,8 @@ @@ -43,8 +43,8 @@ @@ -61,8 +61,8 @@ diff --git a/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/xcshareddata/xcschemes/MasterPassword Mac (Development).xcscheme b/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/xcshareddata/xcschemes/MasterPassword Mac (Development).xcscheme index 9c5719a9..dcf4dc80 100644 --- a/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/xcshareddata/xcschemes/MasterPassword Mac (Development).xcscheme +++ b/MasterPassword/ObjC/Mac/MasterPassword-Mac.xcodeproj/xcshareddata/xcschemes/MasterPassword Mac (Development).xcscheme @@ -15,8 +15,8 @@ @@ -43,11 +43,17 @@ + + + + diff --git a/MasterPassword/ObjC/Mac/en.lproj/MainMenu.xib b/MasterPassword/ObjC/Mac/en.lproj/MainMenu.xib index e94c1898..beaa3894 100644 --- a/MasterPassword/ObjC/Mac/en.lproj/MainMenu.xib +++ b/MasterPassword/ObjC/Mac/en.lproj/MainMenu.xib @@ -284,14 +284,6 @@ - - - terminate: - - - - 734 - delegate @@ -452,6 +444,14 @@ 783 + + + terminate: + + + + 784 + @@ -709,7 +709,7 @@ - 783 + 784 @@ -729,6 +729,7 @@ NSMenuItem id id + id NSMenuItem @@ -748,6 +749,10 @@ showPasswordWindow: id + + terminate: + id + togglePreference: NSMenuItem diff --git a/MasterPassword/Resources/Media/appstore.png b/MasterPassword/Resources/Media/appstore.png new file mode 100644 index 00000000..1f946e8e Binary files /dev/null and b/MasterPassword/Resources/Media/appstore.png differ diff --git a/MasterPassword/Resources/Media/appstore.svg b/MasterPassword/Resources/Media/appstore.svg new file mode 100644 index 00000000..ad9cff93 --- /dev/null +++ b/MasterPassword/Resources/Media/appstore.svg @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MasterPassword/Resources/Media/shot-laptop-leaning-iphone.png b/MasterPassword/Resources/Media/shot-laptop-leaning-iphone.png new file mode 100644 index 00000000..b1778a3e Binary files /dev/null and b/MasterPassword/Resources/Media/shot-laptop-leaning-iphone.png differ