Menu and first-launch improvements.
[ADDED] On first start, show the status item by highlighting and opening it. [UPDATED] Using RHStatusItemView for status item so we can highlight it programmatically. [FIXED] Activate app on startup so apps window shows. [ADDED] NSAlert when trying to open password window with no user selected. [UPDATED] Crisper menu icon.
This commit is contained in:
parent
f3248f446c
commit
195f70db53
1
External/RHStatusItemView
vendored
Submodule
1
External/RHStatusItemView
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit eb8b21e117bfa5747d67394f06df400ac4c94279
|
@ -6,6 +6,7 @@
|
|||||||
// Copyright (c) 2012 Lyndir. All rights reserved.
|
// Copyright (c) 2012 Lyndir. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#import "MPConfig.h"
|
||||||
#import "MPAppDelegate_Shared.h"
|
#import "MPAppDelegate_Shared.h"
|
||||||
|
|
||||||
@implementation MPConfig
|
@implementation MPConfig
|
||||||
|
@ -763,7 +763,7 @@
|
|||||||
<boolean value="YES" key="1.IBNSWindowAutoPositionCentersVertical"/>
|
<boolean value="YES" key="1.IBNSWindowAutoPositionCentersVertical"/>
|
||||||
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<string key="1.IBWindowTemplateEditedContentRect">{{357, 418}, {480, 270}}</string>
|
<string key="1.IBWindowTemplateEditedContentRect">{{357, 418}, {480, 270}}</string>
|
||||||
<integer value="1" key="1.NSWindowTemplate.visibleAtLaunch"/>
|
<boolean value="YES" key="1.NSWindowTemplate.visibleAtLaunch"/>
|
||||||
<string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
<boolean value="NO" key="173.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
<boolean value="NO" key="173.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
|
||||||
<string key="173.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
<string key="173.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
@ -831,132 +831,7 @@
|
|||||||
<nil key="sourceID"/>
|
<nil key="sourceID"/>
|
||||||
<int key="maxID">337</int>
|
<int key="maxID">337</int>
|
||||||
</object>
|
</object>
|
||||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
<object class="IBClassDescriber" key="IBDocument.Classes"/>
|
||||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
|
||||||
<object class="IBPartialClassDescription">
|
|
||||||
<string key="className">MPAppDelegate_Shared</string>
|
|
||||||
<string key="superclassName">PearlAppDelegate</string>
|
|
||||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
|
||||||
<string key="majorKey">IBProjectSource</string>
|
|
||||||
<string key="minorKey">./Classes/MPAppDelegate_Shared.h</string>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="IBPartialClassDescription">
|
|
||||||
<string key="className">MPMacAppDelegate</string>
|
|
||||||
<string key="superclassName">MPAppDelegate_Shared</string>
|
|
||||||
<dictionary class="NSMutableDictionary" key="actions">
|
|
||||||
<string key="iphoneAppStore:">id</string>
|
|
||||||
<string key="lock:">id</string>
|
|
||||||
<string key="newUser:">NSMenuItem</string>
|
|
||||||
<string key="rebuildCloud:">id</string>
|
|
||||||
<string key="showPasswordWindow:">id</string>
|
|
||||||
<string key="terminate:">id</string>
|
|
||||||
<string key="togglePreference:">NSMenuItem</string>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
|
||||||
<object class="IBActionInfo" key="iphoneAppStore:">
|
|
||||||
<string key="name">iphoneAppStore:</string>
|
|
||||||
<string key="candidateClassName">id</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBActionInfo" key="lock:">
|
|
||||||
<string key="name">lock:</string>
|
|
||||||
<string key="candidateClassName">id</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBActionInfo" key="newUser:">
|
|
||||||
<string key="name">newUser:</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBActionInfo" key="rebuildCloud:">
|
|
||||||
<string key="name">rebuildCloud:</string>
|
|
||||||
<string key="candidateClassName">id</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBActionInfo" key="showPasswordWindow:">
|
|
||||||
<string key="name">showPasswordWindow:</string>
|
|
||||||
<string key="candidateClassName">id</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBActionInfo" key="terminate:">
|
|
||||||
<string key="name">terminate:</string>
|
|
||||||
<string key="candidateClassName">id</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBActionInfo" key="togglePreference:">
|
|
||||||
<string key="name">togglePreference:</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary class="NSMutableDictionary" key="outlets">
|
|
||||||
<string key="appWindowDontShow">NSButton</string>
|
|
||||||
<string key="createUserItem">NSMenuItem</string>
|
|
||||||
<string key="dialogStyleHUD">NSMenuItem</string>
|
|
||||||
<string key="dialogStyleRegular">NSMenuItem</string>
|
|
||||||
<string key="lockItem">NSMenuItem</string>
|
|
||||||
<string key="rememberPasswordItem">NSMenuItem</string>
|
|
||||||
<string key="savePasswordItem">NSMenuItem</string>
|
|
||||||
<string key="showItem">NSMenuItem</string>
|
|
||||||
<string key="statusMenu">NSMenu</string>
|
|
||||||
<string key="useICloudItem">NSMenuItem</string>
|
|
||||||
<string key="usersItem">NSMenuItem</string>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
|
|
||||||
<object class="IBToOneOutletInfo" key="appWindowDontShow">
|
|
||||||
<string key="name">appWindowDontShow</string>
|
|
||||||
<string key="candidateClassName">NSButton</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="createUserItem">
|
|
||||||
<string key="name">createUserItem</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="dialogStyleHUD">
|
|
||||||
<string key="name">dialogStyleHUD</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="dialogStyleRegular">
|
|
||||||
<string key="name">dialogStyleRegular</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="lockItem">
|
|
||||||
<string key="name">lockItem</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="rememberPasswordItem">
|
|
||||||
<string key="name">rememberPasswordItem</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="savePasswordItem">
|
|
||||||
<string key="name">savePasswordItem</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="showItem">
|
|
||||||
<string key="name">showItem</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="statusMenu">
|
|
||||||
<string key="name">statusMenu</string>
|
|
||||||
<string key="candidateClassName">NSMenu</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="useICloudItem">
|
|
||||||
<string key="name">useICloudItem</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
<object class="IBToOneOutletInfo" key="usersItem">
|
|
||||||
<string key="name">usersItem</string>
|
|
||||||
<string key="candidateClassName">NSMenuItem</string>
|
|
||||||
</object>
|
|
||||||
</dictionary>
|
|
||||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
|
||||||
<string key="majorKey">IBProjectSource</string>
|
|
||||||
<string key="minorKey">./Classes/MPMacAppDelegate.h</string>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="IBPartialClassDescription">
|
|
||||||
<string key="className">NSLayoutConstraint</string>
|
|
||||||
<string key="superclassName">NSObject</string>
|
|
||||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
|
||||||
<string key="majorKey">IBProjectSource</string>
|
|
||||||
<string key="minorKey">./Classes/NSLayoutConstraint.h</string>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
</array>
|
|
||||||
</object>
|
|
||||||
<int key="IBDocument.localizationMode">0</int>
|
<int key="IBDocument.localizationMode">0</int>
|
||||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||||
|
@ -9,10 +9,11 @@
|
|||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
#import "MPAppDelegate_Shared.h"
|
#import "MPAppDelegate_Shared.h"
|
||||||
#import "MPPasswordWindowController.h"
|
#import "MPPasswordWindowController.h"
|
||||||
|
#import "RHStatusItemView.h"
|
||||||
|
|
||||||
@interface MPMacAppDelegate : MPAppDelegate_Shared<NSApplicationDelegate>
|
@interface MPMacAppDelegate : MPAppDelegate_Shared<NSApplicationDelegate>
|
||||||
|
|
||||||
@property(nonatomic, strong) NSStatusItem *statusItem;
|
@property(nonatomic, strong) RHStatusItemView *statusView;
|
||||||
@property(nonatomic, strong) MPPasswordWindowController *passwordWindow;
|
@property(nonatomic, strong) MPPasswordWindowController *passwordWindow;
|
||||||
@property(nonatomic, weak) IBOutlet NSMenuItem *lockItem;
|
@property(nonatomic, weak) IBOutlet NSMenuItem *lockItem;
|
||||||
@property(nonatomic, weak) IBOutlet NSMenuItem *showItem;
|
@property(nonatomic, weak) IBOutlet NSMenuItem *showItem;
|
||||||
|
@ -121,7 +121,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
|
|
||||||
[self updateMenuItems];
|
[self updateMenuItems];
|
||||||
|
|
||||||
[self.statusItem popUpStatusItemMenu:self.statusMenu];
|
[self.statusView popUpMenu];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)togglePreference:(NSMenuItem *)sender {
|
- (IBAction)togglePreference:(NSMenuItem *)sender {
|
||||||
@ -195,6 +195,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
|
|
||||||
- (IBAction)terminate:(id)sender {
|
- (IBAction)terminate:(id)sender {
|
||||||
|
|
||||||
|
NSLog(@"Closing: Terminating");
|
||||||
[self.passwordWindow close];
|
[self.passwordWindow close];
|
||||||
self.passwordWindow = nil;
|
self.passwordWindow = nil;
|
||||||
|
|
||||||
@ -205,6 +206,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
|
|
||||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://itunes.apple.com/app/id510296984"]];
|
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://itunes.apple.com/app/id510296984"]];
|
||||||
|
|
||||||
|
NSLog(@"Closing: App Store");
|
||||||
[self.appWindowDontShow.window close];
|
[self.appWindowDontShow.window close];
|
||||||
self.appWindowDontShow = nil;
|
self.appWindowDontShow = nil;
|
||||||
}
|
}
|
||||||
@ -233,11 +235,12 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
} forKeyPath:@"storeManager.cloudAvailable" options:0 context:nil];
|
} forKeyPath:@"storeManager.cloudAvailable" options:0 context:nil];
|
||||||
|
|
||||||
// Status item.
|
// Status item.
|
||||||
self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];
|
self.statusView = [[RHStatusItemView alloc] initWithStatusBarItem:
|
||||||
self.statusItem.image = [NSImage imageNamed:@"menu-icon"];
|
[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength]];
|
||||||
self.statusItem.highlightMode = YES;
|
self.statusView.image = [NSImage imageNamed:@"menu-icon"];
|
||||||
self.statusItem.target = self;
|
self.statusView.menu = self.statusMenu;
|
||||||
self.statusItem.action = @selector(showMenu);
|
self.statusView.target = self;
|
||||||
|
self.statusView.action = @selector(showMenu);
|
||||||
|
|
||||||
[[NSNotificationCenter defaultCenter] addObserverForName:USMStoreDidChangeNotification object:nil queue:nil usingBlock:
|
[[NSNotificationCenter defaultCenter] addObserverForName:USMStoreDidChangeNotification object:nil queue:nil usingBlock:
|
||||||
^(NSNotification *note) {
|
^(NSNotification *note) {
|
||||||
@ -259,6 +262,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
if (![self.passwordWindow.window isVisible])
|
if (![self.passwordWindow.window isVisible])
|
||||||
self.passwordWindow = nil;
|
self.passwordWindow = nil;
|
||||||
else {
|
else {
|
||||||
|
NSLog(@"Closing: dialogStyleHUD && passwordWindow.isVisible");
|
||||||
[self.passwordWindow close];
|
[self.passwordWindow close];
|
||||||
self.passwordWindow = nil;
|
self.passwordWindow = nil;
|
||||||
[self showPasswordWindow:nil];
|
[self showPasswordWindow:nil];
|
||||||
@ -281,14 +285,20 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
if (status != noErr)
|
if (status != noErr)
|
||||||
err(@"Error registering 'lock' hotkey: %d", status);
|
err(@"Error registering 'lock' hotkey: %d", status);
|
||||||
|
|
||||||
// iOS App window
|
// Initial display.
|
||||||
if ([[MPMacConfig get].showAppWindow boolValue]) {
|
[NSApp activateIgnoringOtherApps:YES];
|
||||||
|
if (YES || [[MPMacConfig get].showAppWindow boolValue]) {
|
||||||
[self.appsWindow = [[NSWindowController alloc] initWithWindowNibName:@"MPAppsWindow" owner:self] showWindow:self];
|
[self.appsWindow = [[NSWindowController alloc] initWithWindowNibName:@"MPAppsWindow" owner:self] showWindow:self];
|
||||||
[[NSNotificationCenter defaultCenter] addObserverForName:NSWindowWillCloseNotification object:self.appsWindow.window queue:nil
|
[[NSNotificationCenter defaultCenter] addObserverForName:NSWindowWillCloseNotification object:self.appsWindow.window queue:nil
|
||||||
usingBlock:^(NSNotification *note) {
|
usingBlock:^(NSNotification *note) {
|
||||||
[MPMacConfig get].showAppWindow = @(self.appWindowDontShow.state == NSOffState);
|
[MPMacConfig get].showAppWindow = @(self.appWindowDontShow.state == NSOffState);
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
[[NSOperationQueue mainQueue] addOperation:[NSBlockOperation blockOperationWithBlock:^{
|
||||||
|
if (YES || [[MPMacConfig get].firstRun boolValue]) {
|
||||||
|
[self showMenu];
|
||||||
|
}
|
||||||
|
}]];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setActiveUser:(MPUserEntity *)activeUser {
|
- (void)setActiveUser:(MPUserEntity *)activeUser {
|
||||||
@ -296,6 +306,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
BOOL reopenPasswordWindow = [self.passwordWindow.window isVisible];
|
BOOL reopenPasswordWindow = [self.passwordWindow.window isVisible];
|
||||||
|
|
||||||
if (![[self activeUserForThread].objectID isEqual:activeUser.objectID]) {
|
if (![[self activeUserForThread].objectID isEqual:activeUser.objectID]) {
|
||||||
|
NSLog(@"Closing: activeUser changed: %@ -> %@, reopening: %d", [self activeUserForThread].objectID, activeUser.objectID, reopenPasswordWindow);
|
||||||
[self.passwordWindow close];
|
[self.passwordWindow close];
|
||||||
self.passwordWindow = nil;
|
self.passwordWindow = nil;
|
||||||
[super setActiveUser:activeUser];
|
[super setActiveUser:activeUser];
|
||||||
@ -375,8 +386,10 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
- (IBAction)showPasswordWindow:(id)sender {
|
- (IBAction)showPasswordWindow:(id)sender {
|
||||||
|
|
||||||
// If no user, can't activate.
|
// If no user, can't activate.
|
||||||
if (![self activeUserForThread])
|
if (YES || ![self activeUserForThread]) {
|
||||||
|
[[NSAlert alertWithMessageText:@"No User Selected" defaultButton:[PearlStrings get].commonButtonOkay alternateButton:nil otherButton:nil informativeTextWithFormat:@"Begin by selecting or creating your user from the status menu (●●●|) next to the clock.", nil] runModal];
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Activate the app if not active.
|
// Activate the app if not active.
|
||||||
if (![[NSApplication sharedApplication] isActive])
|
if (![[NSApplication sharedApplication] isActive])
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
- (void)windowDidLoad {
|
- (void)windowDidLoad {
|
||||||
|
|
||||||
|
NSLog(@"DidLoad:\n%@", [NSThread callStackSymbols]);
|
||||||
if ([[MPMacConfig get].dialogStyleHUD boolValue])
|
if ([[MPMacConfig get].dialogStyleHUD boolValue])
|
||||||
self.window.styleMask = NSHUDWindowMask | NSTitledWindowMask | NSUtilityWindowMask | NSClosableWindowMask;
|
self.window.styleMask = NSHUDWindowMask | NSTitledWindowMask | NSUtilityWindowMask | NSClosableWindowMask;
|
||||||
else
|
else
|
||||||
@ -55,11 +56,13 @@
|
|||||||
} forKeyPath:@"key" options:NSKeyValueObservingOptionInitial context:nil];
|
} forKeyPath:@"key" options:NSKeyValueObservingOptionInitial context:nil];
|
||||||
[[NSNotificationCenter defaultCenter]
|
[[NSNotificationCenter defaultCenter]
|
||||||
addObserverForName:NSWindowDidBecomeKeyNotification object:self.window queue:nil usingBlock:^(NSNotification *note) {
|
addObserverForName:NSWindowDidBecomeKeyNotification object:self.window queue:nil usingBlock:^(NSNotification *note) {
|
||||||
|
NSLog(@"DidBecomeKey:\n%@", [NSThread callStackSymbols]);
|
||||||
[self checkLoadedAndUnlocked];
|
[self checkLoadedAndUnlocked];
|
||||||
[self.siteField selectText:nil];
|
[self.siteField selectText:nil];
|
||||||
}];
|
}];
|
||||||
[[NSNotificationCenter defaultCenter]
|
[[NSNotificationCenter defaultCenter]
|
||||||
addObserverForName:NSWindowWillCloseNotification object:self.window queue:nil usingBlock:^(NSNotification *note) {
|
addObserverForName:NSWindowWillCloseNotification object:self.window queue:nil usingBlock:^(NSNotification *note) {
|
||||||
|
NSLog(@"WillClose:\n%@", [NSThread callStackSymbols]);
|
||||||
NSWindow *sheet = [self.window attachedSheet];
|
NSWindow *sheet = [self.window attachedSheet];
|
||||||
if (sheet)
|
if (sheet)
|
||||||
[NSApp endSheet:sheet];
|
[NSApp endSheet:sheet];
|
||||||
@ -87,8 +90,10 @@
|
|||||||
MPUserEntity *activeUser = [MPMacAppDelegate get].activeUserForThread;
|
MPUserEntity *activeUser = [MPMacAppDelegate get].activeUserForThread;
|
||||||
if (activeUser && !activeUser.saveKey)
|
if (activeUser && !activeUser.saveKey)
|
||||||
[self unlock];
|
[self unlock];
|
||||||
else
|
else {
|
||||||
|
NSLog(@"Closing: !inProgress && !key && (!activeUser || activeUser.saveKey)");
|
||||||
[self.window close];
|
[self.window close];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,6 +165,7 @@
|
|||||||
- (void)alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo {
|
- (void)alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo {
|
||||||
|
|
||||||
if (contextInfo == MPAlertIncorrectMP) {
|
if (contextInfo == MPAlertIncorrectMP) {
|
||||||
|
NSLog(@"Closing: Incorrect MP, button: %ld", returnCode);
|
||||||
[self.window close];
|
[self.window close];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -191,6 +197,7 @@
|
|||||||
|
|
||||||
case NSAlertOtherReturn: {
|
case NSAlertOtherReturn: {
|
||||||
// "Cancel" button.
|
// "Cancel" button.
|
||||||
|
NSLog(@"Closing: Unlock MP, button: %ld", (long)returnCode);
|
||||||
[self.window close];
|
[self.window close];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -288,6 +295,7 @@
|
|||||||
- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector {
|
- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector {
|
||||||
|
|
||||||
if (commandSelector == @selector(cancel:)) { // Escape without completion.
|
if (commandSelector == @selector(cancel:)) { // Escape without completion.
|
||||||
|
NSLog(@"Closing: ESC without completion");
|
||||||
[self.window close];
|
[self.window close];
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,9 @@
|
|||||||
DA5E5D0C1724A667003798D8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5E5CC61724A667003798D8 /* main.m */; };
|
DA5E5D0C1724A667003798D8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5E5CC61724A667003798D8 /* main.m */; };
|
||||||
DA5E5D0D1724A667003798D8 /* MasterPassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DA5E5CC71724A667003798D8 /* MasterPassword.xcdatamodeld */; };
|
DA5E5D0D1724A667003798D8 /* MasterPassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DA5E5CC71724A667003798D8 /* MasterPassword.xcdatamodeld */; };
|
||||||
DA5E5D551724F9C8003798D8 /* MasterPassword.iconset in Resources */ = {isa = PBXBuildFile; fileRef = DA5E5D541724F9C8003798D8 /* MasterPassword.iconset */; };
|
DA5E5D551724F9C8003798D8 /* MasterPassword.iconset in Resources */ = {isa = PBXBuildFile; fileRef = DA5E5D541724F9C8003798D8 /* MasterPassword.iconset */; };
|
||||||
|
DABC6C02175D8C85000C15D4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||||
|
DABC6C15175D8CE1000C15D4 /* RHStatusItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = DABC6C14175D8CE1000C15D4 /* RHStatusItemView.m */; };
|
||||||
|
DABC6C16175D8E3A000C15D4 /* libRHStatusItemView.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DABC6C01175D8C85000C15D4 /* libRHStatusItemView.a */; };
|
||||||
DAC6326D148680650075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
DAC6326D148680650075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||||
DAC77CAE148291A600BCF976 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
DAC77CAE148291A600BCF976 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; };
|
||||||
DACA22BB1705DE7D002C6C22 /* UbiquityStoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22B71705DE7D002C6C22 /* UbiquityStoreManager.m */; };
|
DACA22BB1705DE7D002C6C22 /* UbiquityStoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DACA22B71705DE7D002C6C22 /* UbiquityStoreManager.m */; };
|
||||||
@ -188,6 +191,18 @@
|
|||||||
};
|
};
|
||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
DABC6BFF175D8C85000C15D4 /* CopyFiles */ = {
|
||||||
|
isa = PBXCopyFilesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
dstPath = "include/${PRODUCT_NAME}";
|
||||||
|
dstSubfolderSpec = 16;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
93D39067C0AFDC581794E2B8 /* NSArray+Indexing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Indexing.m"; sourceTree = "<group>"; };
|
93D39067C0AFDC581794E2B8 /* NSArray+Indexing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+Indexing.m"; sourceTree = "<group>"; };
|
||||||
93D393B97158D7BE9332EA53 /* NSDictionary+Indexing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Indexing.h"; sourceTree = "<group>"; };
|
93D393B97158D7BE9332EA53 /* NSDictionary+Indexing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+Indexing.h"; sourceTree = "<group>"; };
|
||||||
@ -275,6 +290,9 @@
|
|||||||
DA6701DD16406B7300B61001 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
|
DA6701DD16406B7300B61001 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
|
||||||
DA672D2E14F92C6B004A189C /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
|
DA672D2E14F92C6B004A189C /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
|
||||||
DABB981515100B4000B05417 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
|
DABB981515100B4000B05417 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
|
||||||
|
DABC6C01175D8C85000C15D4 /* libRHStatusItemView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRHStatusItemView.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
DABC6C13175D8CE1000C15D4 /* RHStatusItemView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RHStatusItemView.h; sourceTree = "<group>"; };
|
||||||
|
DABC6C14175D8CE1000C15D4 /* RHStatusItemView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RHStatusItemView.m; sourceTree = "<group>"; };
|
||||||
DAC6326C148680650075AEA5 /* libjrswizzle.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libjrswizzle.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
DAC6326C148680650075AEA5 /* libjrswizzle.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libjrswizzle.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
DAC632871486D95D0075AEA5 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
|
DAC632871486D95D0075AEA5 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
|
||||||
DAC77CAD148291A600BCF976 /* libPearl.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPearl.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
DAC77CAD148291A600BCF976 /* libPearl.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPearl.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
@ -407,6 +425,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
DABC6C16175D8E3A000C15D4 /* libRHStatusItemView.a in Frameworks */,
|
||||||
DA16B33F170661D4000A0EAB /* libUbiquityStoreManager.a in Frameworks */,
|
DA16B33F170661D4000A0EAB /* libUbiquityStoreManager.a in Frameworks */,
|
||||||
DA16B341170661DB000A0EAB /* Carbon.framework in Frameworks */,
|
DA16B341170661DB000A0EAB /* Carbon.framework in Frameworks */,
|
||||||
DA16B342170661E0000A0EAB /* Security.framework in Frameworks */,
|
DA16B342170661E0000A0EAB /* Security.framework in Frameworks */,
|
||||||
@ -415,6 +434,14 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
DABC6BFE175D8C85000C15D4 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
DABC6C02175D8C85000C15D4 /* Foundation.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
DAC63269148680650075AEA5 /* Frameworks */ = {
|
DAC63269148680650075AEA5 /* Frameworks */ = {
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@ -455,6 +482,7 @@
|
|||||||
DAC6326C148680650075AEA5 /* libjrswizzle.a */,
|
DAC6326C148680650075AEA5 /* libjrswizzle.a */,
|
||||||
DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */,
|
DA4425CB1557BED40052177D /* libUbiquityStoreManager.a */,
|
||||||
DA3EF17915A47744003ABF4E /* Tests.octest */,
|
DA3EF17915A47744003ABF4E /* Tests.octest */,
|
||||||
|
DABC6C01175D8C85000C15D4 /* libRHStatusItemView.a */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -563,6 +591,16 @@
|
|||||||
path = Mac;
|
path = Mac;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
DABC6C0E175D8CE1000C15D4 /* RHStatusItemView */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
DABC6C13175D8CE1000C15D4 /* RHStatusItemView.h */,
|
||||||
|
DABC6C14175D8CE1000C15D4 /* RHStatusItemView.m */,
|
||||||
|
);
|
||||||
|
name = RHStatusItemView;
|
||||||
|
path = RHStatusItemView/RHStatusItemView;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
DAC77CAF148291A600BCF976 /* Pearl */ = {
|
DAC77CAF148291A600BCF976 /* Pearl */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -576,6 +614,7 @@
|
|||||||
DACA22121705DDC5002C6C22 /* External */ = {
|
DACA22121705DDC5002C6C22 /* External */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
DABC6C0E175D8CE1000C15D4 /* RHStatusItemView */,
|
||||||
DACA29751705E2BD002C6C22 /* jrswizzle */,
|
DACA29751705E2BD002C6C22 /* jrswizzle */,
|
||||||
DACA22181705DE28002C6C22 /* Crashlytics.framework */,
|
DACA22181705DE28002C6C22 /* Crashlytics.framework */,
|
||||||
DAC77CAF148291A600BCF976 /* Pearl */,
|
DAC77CAF148291A600BCF976 /* Pearl */,
|
||||||
@ -928,6 +967,23 @@
|
|||||||
productReference = DA5BFA44147E415C00F98B1E /* Master Password.app */;
|
productReference = DA5BFA44147E415C00F98B1E /* Master Password.app */;
|
||||||
productType = "com.apple.product-type.application";
|
productType = "com.apple.product-type.application";
|
||||||
};
|
};
|
||||||
|
DABC6C00175D8C85000C15D4 /* RHStatusItemView */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = DABC6C0A175D8C85000C15D4 /* Build configuration list for PBXNativeTarget "RHStatusItemView" */;
|
||||||
|
buildPhases = (
|
||||||
|
DABC6BFD175D8C85000C15D4 /* Sources */,
|
||||||
|
DABC6BFE175D8C85000C15D4 /* Frameworks */,
|
||||||
|
DABC6BFF175D8C85000C15D4 /* CopyFiles */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = RHStatusItemView;
|
||||||
|
productName = RHStatusItemView;
|
||||||
|
productReference = DABC6C01175D8C85000C15D4 /* libRHStatusItemView.a */;
|
||||||
|
productType = "com.apple.product-type.library.static";
|
||||||
|
};
|
||||||
DAC6326B148680650075AEA5 /* jrswizzle */ = {
|
DAC6326B148680650075AEA5 /* jrswizzle */ = {
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = DAC63274148680650075AEA5 /* Build configuration list for PBXNativeTarget "jrswizzle" */;
|
buildConfigurationList = DAC63274148680650075AEA5 /* Build configuration list for PBXNativeTarget "jrswizzle" */;
|
||||||
@ -991,6 +1047,7 @@
|
|||||||
DAC77CAC148291A600BCF976 /* Pearl */,
|
DAC77CAC148291A600BCF976 /* Pearl */,
|
||||||
DAC6326B148680650075AEA5 /* jrswizzle */,
|
DAC6326B148680650075AEA5 /* jrswizzle */,
|
||||||
DA4425CA1557BED40052177D /* UbiquityStoreManager */,
|
DA4425CA1557BED40052177D /* UbiquityStoreManager */,
|
||||||
|
DABC6C00175D8C85000C15D4 /* RHStatusItemView */,
|
||||||
DA3EF17815A47744003ABF4E /* Tests */,
|
DA3EF17815A47744003ABF4E /* Tests */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@ -1164,6 +1221,14 @@
|
|||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
DABC6BFD175D8C85000C15D4 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
DABC6C15175D8CE1000C15D4 /* RHStatusItemView.m in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
DAC63268148680650075AEA5 /* Sources */ = {
|
DAC63268148680650075AEA5 /* Sources */ = {
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@ -1646,6 +1711,24 @@
|
|||||||
};
|
};
|
||||||
name = "AppStore-Mac";
|
name = "AppStore-Mac";
|
||||||
};
|
};
|
||||||
|
DABC6C0B175D8C85000C15D4 /* Debug-Mac */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
};
|
||||||
|
name = "Debug-Mac";
|
||||||
|
};
|
||||||
|
DABC6C0C175D8C85000C15D4 /* AdHoc-Mac */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
};
|
||||||
|
name = "AdHoc-Mac";
|
||||||
|
};
|
||||||
|
DABC6C0D175D8C85000C15D4 /* AppStore-Mac */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
};
|
||||||
|
name = "AppStore-Mac";
|
||||||
|
};
|
||||||
DAC63275148680650075AEA5 /* Debug-Mac */ = {
|
DAC63275148680650075AEA5 /* Debug-Mac */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
@ -1747,6 +1830,15 @@
|
|||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = "AdHoc-Mac";
|
defaultConfigurationName = "AdHoc-Mac";
|
||||||
};
|
};
|
||||||
|
DABC6C0A175D8C85000C15D4 /* Build configuration list for PBXNativeTarget "RHStatusItemView" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
DABC6C0B175D8C85000C15D4 /* Debug-Mac */,
|
||||||
|
DABC6C0C175D8C85000C15D4 /* AdHoc-Mac */,
|
||||||
|
DABC6C0D175D8C85000C15D4 /* AppStore-Mac */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
};
|
||||||
DAC63274148680650075AEA5 /* Build configuration list for PBXNativeTarget "jrswizzle" */ = {
|
DAC63274148680650075AEA5 /* Build configuration list for PBXNativeTarget "jrswizzle" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 230 B After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 1.4 KiB |
Loading…
Reference in New Issue
Block a user