2
0

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:
Maarten Billemont 2013-06-04 00:56:19 -04:00
parent f3248f446c
commit 195f70db53
9 changed files with 129 additions and 138 deletions

1
External/RHStatusItemView vendored Submodule

@ -0,0 +1 @@
Subproject commit eb8b21e117bfa5747d67394f06df400ac4c94279

View File

@ -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

View File

@ -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>

View File

@ -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;

View File

@ -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])

View File

@ -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,9 +90,11 @@
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];
} }
}
} }
- (void)checkLoadedAndUnlocked { - (void)checkLoadedAndUnlocked {
@ -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;
} }

View File

@ -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