diff --git a/MacPass.xcodeproj/project.pbxproj b/MacPass.xcodeproj/project.pbxproj index 668a3402..57e910ac 100644 --- a/MacPass.xcodeproj/project.pbxproj +++ b/MacPass.xcodeproj/project.pbxproj @@ -90,7 +90,6 @@ 4CA0B2F015BCADC800654E32 /* GeneralSettings.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4CA0B2EF15BCADC800654E32 /* GeneralSettings.xib */; }; 4CA0B2F915BCAF6700654E32 /* MPGeneralSettingsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B2F815BCAF6700654E32 /* MPGeneralSettingsController.m */; }; 4CA0B2FC15BCAF8600654E32 /* MPSettingsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B2FB15BCAF8600654E32 /* MPSettingsWindowController.m */; }; - 4CAC6F7816D2B54800D79D5E /* MPMainWindowSplitViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAC6F7716D2B54800D79D5E /* MPMainWindowSplitViewDelegate.m */; }; 4CAD747B15B887FD00104512 /* DDXMLElementAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD745715B887FD00104512 /* DDXMLElementAdditions.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 4CAD747C15B887FD00104512 /* NSString+DDXML.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD745A15B887FD00104512 /* NSString+DDXML.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; 4CAD747D15B887FD00104512 /* DDXMLDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD745D15B887FD00104512 /* DDXMLDocument.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; }; @@ -274,8 +273,6 @@ 4CA0B2FA15BCAF8600654E32 /* MPSettingsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSettingsWindowController.h; sourceTree = ""; }; 4CA0B2FB15BCAF8600654E32 /* MPSettingsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSettingsWindowController.m; sourceTree = ""; }; 4CA0B30D15BCB6FD00654E32 /* MPSettingsTab.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPSettingsTab.h; sourceTree = ""; }; - 4CAC6F7616D2B54800D79D5E /* MPMainWindowSplitViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPMainWindowSplitViewDelegate.h; sourceTree = ""; }; - 4CAC6F7716D2B54800D79D5E /* MPMainWindowSplitViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPMainWindowSplitViewDelegate.m; sourceTree = ""; }; 4CAD745615B887FD00104512 /* DDXMLElementAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DDXMLElementAdditions.h; sourceTree = ""; }; 4CAD745715B887FD00104512 /* DDXMLElementAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DDXMLElementAdditions.m; sourceTree = ""; }; 4CAD745915B887FD00104512 /* NSString+DDXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+DDXML.h"; sourceTree = ""; }; @@ -401,8 +398,6 @@ 4CC6259015BA1C99002F5B11 /* MPOutlineViewDelegate.m */, 4C3BD51316D276F800389F1F /* MPToolbarDelegate.h */, 4C3BD51416D276F800389F1F /* MPToolbarDelegate.m */, - 4CAC6F7616D2B54800D79D5E /* MPMainWindowSplitViewDelegate.h */, - 4CAC6F7716D2B54800D79D5E /* MPMainWindowSplitViewDelegate.m */, 4C811C8116ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.h */, 4C811C8216ECD06E00C4BAC6 /* MPKeyfilePathControlDelegate.m */, ); @@ -925,7 +920,6 @@ 4C65FAE916D16DDB006E0577 /* MPPasswordInputController.m in Sources */, 4CDF01A316D1B76700D0AC08 /* MPEntryViewController.m in Sources */, 4C3BD51516D276F800389F1F /* MPToolbarDelegate.m in Sources */, - 4CAC6F7816D2B54800D79D5E /* MPMainWindowSplitViewDelegate.m in Sources */, 4C61EA0316D2FD0800AC519E /* MPOutlineViewController.m in Sources */, 4C2C4C2C16D3BE3700D49295 /* KdbGroup+MPAdditions.m in Sources */, 4CC1AEBE16D4467C006D2AAB /* KdbTree+MPAdditions.m in Sources */, diff --git a/MacPass/DocumentWindow.xib b/MacPass/DocumentWindow.xib index 7813a278..3798ee63 100644 --- a/MacPass/DocumentWindow.xib +++ b/MacPass/DocumentWindow.xib @@ -80,6 +80,7 @@ {{527, 0}, {200, 449}} + _NS:9 NSView @@ -91,6 +92,17 @@ _NS:9 YES 2 + + YES + + + + + + + + + {727, 449} diff --git a/MacPass/MPDocumentWindowController.h b/MacPass/MPDocumentWindowController.h index 8ca00817..38f7a8cc 100644 --- a/MacPass/MPDocumentWindowController.h +++ b/MacPass/MPDocumentWindowController.h @@ -26,7 +26,6 @@ @property (readonly, retain) MPInspectorTabViewController *inspectorTabViewController; @property (readonly, retain) MPCreationViewController *creationViewController; - - (void)showEntries; - (void)showPasswordInput; - (void)performFindPanelAction:(id)sender; diff --git a/MacPass/MPDocumentWindowController.m b/MacPass/MPDocumentWindowController.m index e8c70ee0..f5cc9498 100644 --- a/MacPass/MPDocumentWindowController.m +++ b/MacPass/MPDocumentWindowController.m @@ -13,7 +13,6 @@ #import "MPPasswordEditViewController.h" #import "MPToolbarDelegate.h" #import "MPOutlineViewController.h" -#import "MPMainWindowSplitViewDelegate.h" #import "MPInspectorTabViewController.h" #import "MPAppDelegate.h" @@ -38,7 +37,6 @@ @property (retain) MPInspectorTabViewController *inspectorTabViewController; @property (retain) MPToolbarDelegate *toolbarDelegate; -@property (retain) MPMainWindowSplitViewDelegate *splitViewDelegate; - (void)_setContentViewController:(MPViewController *)viewController; - (void)_setOutlineVisible:(BOOL)isVisible; @@ -71,7 +69,6 @@ [_creationViewController release]; [_toolbarDelegate release]; - [_splitViewDelegate release]; [super dealloc]; } @@ -86,8 +83,6 @@ [self.toolbar setDelegate:self.toolbarDelegate]; [self.window setToolbar:self.toolbar]; - [self.splitView setDelegate:self.splitViewDelegate]; - /* Add outlineview */ const NSRect outlineFrame = [self.outlineView frame]; [self.outlineViewController.view setFrame:outlineFrame]; @@ -171,17 +166,13 @@ - (BOOL)validateMenuItem:(NSMenuItem *)menuItem { SEL menuAction = [menuItem action]; if(menuAction == @selector(main:)) { - NSView *outlineView = [self.splitView subviews][MPSplitViewOutlineViewIndex]; - BOOL outlineIsHidden = [self.splitView isSubviewCollapsed:outlineView]; - NSString *title = outlineIsHidden ? NSLocalizedString(@"SHOW_OUTLINE_VIEW", @"") : NSLocalizedString(@"HIDE_OUTLINE_VIEW", @"Hide the Outline View"); + NSString *title = self.outlineViewController.isVisible ? NSLocalizedString(@"SHOW_OUTLINE_VIEW", @"") : NSLocalizedString(@"HIDE_OUTLINE_VIEW", @"Hide the Outline View"); [menuItem setTitle:title]; return YES; } if( menuAction == @selector(toggleInspector:) ) { - NSView *inspectorView = [self.splitView subviews][MPSplitViewInspectorViewIndex]; - BOOL inspectorIsHidden = [self.splitView isSubviewCollapsed:inspectorView]; - NSString *title = inspectorIsHidden ? NSLocalizedString(@"SHOW_INSPECTOR", @"Show the Inspector") : NSLocalizedString(@"HIDE_INSPECTOR", @"Hide the Inspector"); + NSString *title = [self.inspectorTabViewController isVisible] ? NSLocalizedString(@"SHOW_INSPECTOR", @"Show the Inspector") : NSLocalizedString(@"HIDE_INSPECTOR", @"Hide the Inspector"); [menuItem setTitle:title]; return YES; diff --git a/MacPass/MPInspectorTabViewController.h b/MacPass/MPInspectorTabViewController.h index d9595ea7..23cdced7 100644 --- a/MacPass/MPInspectorTabViewController.h +++ b/MacPass/MPInspectorTabViewController.h @@ -26,6 +26,7 @@ @property (assign) IBOutlet NSButton *openURLButton; @property (assign) IBOutlet NSButton *showPasswordCreator; +- (BOOL)isVisible; - (void)toggleVisible; - (IBAction)togglePasswordDisplay:(id)sender; - (void)hideImagePopup:(id)sender; diff --git a/MacPass/MPInspectorTabViewController.m b/MacPass/MPInspectorTabViewController.m index c82ea8e2..dfd29972 100644 --- a/MacPass/MPInspectorTabViewController.m +++ b/MacPass/MPInspectorTabViewController.m @@ -101,10 +101,13 @@ [self _clearContent]; } +- (BOOL)isVisible { + return [[self view] frame].size.width > 0; +} + - (void)toggleVisible { - const BOOL isVisible = [[self view] frame].size.width > 0; - NSLayoutConstraint *add = isVisible ? self.hideConstraint : self.showConstraint; - NSLayoutConstraint *remove = isVisible ? self.showConstraint : self.hideConstraint; + NSLayoutConstraint *add = [self isVisible] ? self.hideConstraint : self.showConstraint; + NSLayoutConstraint *remove = [self isVisible] ? self.showConstraint : self.hideConstraint; [[self view] removeConstraint:remove]; [[self view] addConstraint:add]; [[self view] layout]; diff --git a/MacPass/MPMainWindowSplitViewDelegate.h b/MacPass/MPMainWindowSplitViewDelegate.h deleted file mode 100644 index de28b07d..00000000 --- a/MacPass/MPMainWindowSplitViewDelegate.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// MPMainWindowSplitViewDelegate.h -// MacPass -// -// Created by michael starke on 18.02.13. -// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. -// - -#import - -APPKIT_EXTERN const CGFloat MPMainWindowSplitViewDelegateMinimumOutlineWidth; -APPKIT_EXTERN const CGFloat MPMainWindowSplitViewDelegateMinimumContentWidth; -APPKIT_EXTERN const CGFloat MPMainWindowSplitViewDelegateMinimumInspectorWidth; - -typedef enum { - MPSplitViewOutlineViewIndex, - MPSplitViewContentViewIndex, - MPSplitViewInspectorViewIndex, -} MPSplitViewSubViewIndex; - -typedef enum { - MPSplitViewOutlineDividerIndex, - MPSplitViewInspectorDividerIndex, -} MPSplitViewDividerIndex; - -@interface MPMainWindowSplitViewDelegate : NSObject - - -@end diff --git a/MacPass/MPMainWindowSplitViewDelegate.m b/MacPass/MPMainWindowSplitViewDelegate.m deleted file mode 100644 index fbab4c83..00000000 --- a/MacPass/MPMainWindowSplitViewDelegate.m +++ /dev/null @@ -1,132 +0,0 @@ -// -// MPMainWindowSplitViewDelegate.m -// MacPass -// -// Created by michael starke on 18.02.13. -// Copyright (c) 2013 HicknHack Software GmbH. All rights reserved. -// - -#import "MPMainWindowSplitViewDelegate.h" - -const CGFloat MPMainWindowSplitViewDelegateMinimumOutlineWidth = 150.0; -const CGFloat MPMainWindowSplitViewDelegateMinimumContentWidth = 350.0; -const CGFloat MPMainWindowSplitViewDelegateMinimumInspectorWidth = 250.0; - - -@interface MPMainWindowSplitViewDelegate () - -- (NSView *)_subViewOfType:(MPSplitViewSubViewIndex)subViewType splitView:(NSSplitView *)splitView; - -@end - -@implementation MPMainWindowSplitViewDelegate - -- (NSView *)_subViewOfType:(MPSplitViewSubViewIndex)subViewType splitView :(NSSplitView *)splitView { - return [splitView subviews][subViewType]; -} - -- (BOOL)splitView:(NSSplitView *)splitView canCollapseSubview:(NSView *)subview { - return (subview == [self _subViewOfType:MPSplitViewInspectorViewIndex splitView:splitView]); -} - -- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex { - switch (dividerIndex) { - case MPSplitViewOutlineDividerIndex: - return (proposedMinimumPosition < MPMainWindowSplitViewDelegateMinimumOutlineWidth) ? MPMainWindowSplitViewDelegateMinimumOutlineWidth : proposedMinimumPosition; - break; - - case MPSplitViewInspectorDividerIndex: { - return [self splitView:splitView constrainSplitPosition:proposedMinimumPosition ofSubviewAt:dividerIndex]; - } - - default: - return proposedMinimumPosition; - break; - } -} - -- (CGFloat)splitView:(NSSplitView *)splitView constrainSplitPosition:(CGFloat)proposedPosition ofSubviewAt:(NSInteger)dividerIndex { - if(dividerIndex == MPSplitViewInspectorDividerIndex) { - return [splitView frame].size.width - MPMainWindowSplitViewDelegateMinimumInspectorWidth; - } - return proposedPosition; -} - -- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMaximumPosition ofSubviewAt:(NSInteger)dividerIndex { - - // Update to take inpspector into account - NSView *outlineView = [self _subViewOfType:MPSplitViewOutlineViewIndex splitView:splitView]; - NSView *inspectorView = [self _subViewOfType:MPSplitViewInspectorViewIndex splitView:splitView]; - NSUInteger outlineMultiplicator = [splitView isSubviewCollapsed:outlineView] ? 0 : 1; - NSUInteger inpsectorMulitplicator = [splitView isSubviewCollapsed:inspectorView] ? 0 : 1; - NSUInteger dividerMultiplicator = inpsectorMulitplicator + outlineMultiplicator; - CGFloat availableWidth = [splitView frame].size.width - (dividerMultiplicator * [splitView dividerThickness]); - switch (dividerIndex) { - case MPSplitViewOutlineDividerIndex: - return availableWidth - (outlineMultiplicator * [outlineView frame].size.width ) - MPMainWindowSplitViewDelegateMinimumContentWidth; - - case MPSplitViewInspectorDividerIndex: - return availableWidth - MPMainWindowSplitViewDelegateMinimumInspectorWidth; - - default: - return proposedMaximumPosition; - } -} - -- (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)oldSize { - NSSize newSize = [splitView frame].size; - const CGFloat dividierThickness = [splitView dividerThickness]; - - NSView *outlineView = [self _subViewOfType:MPSplitViewOutlineViewIndex splitView:splitView]; - NSView *contentView = [self _subViewOfType:MPSplitViewContentViewIndex splitView:splitView]; - NSView *inspectorView = [self _subViewOfType:MPSplitViewInspectorViewIndex splitView:splitView]; - - CGFloat outlineWidth = [outlineView isHidden] ? 0.0 : [outlineView frame].size.width; - CGFloat inspectorWidth = [inspectorView isHidden] ? 0.0 : [inspectorView frame].size.width; - - CGFloat dividerThicknessCorrection = 0; - if(outlineWidth > 0.0) { - dividerThicknessCorrection += dividierThickness; - } - if(inspectorWidth > 0.0 ) { - dividerThicknessCorrection += dividierThickness; - } - - CGFloat contentWidth = newSize.width - outlineWidth - inspectorWidth - dividerThicknessCorrection; - CGFloat contentOriginX = [outlineView isHidden] ? outlineWidth : outlineWidth + dividierThickness; - NSRect newContentFrame = NSMakeRect(contentOriginX, 0, contentWidth, newSize.height); - NSRect newOutlineFrame = NSMakeRect(0, 0, outlineWidth, newSize.height); - NSRect newInpectorFrame = NSMakeRect(newContentFrame.origin.x + contentWidth + dividierThickness, 0, inspectorWidth, newSize.height); - - if(NO == [outlineView isHidden]) { - [outlineView setFrame:newOutlineFrame]; - } - if(NO == [inspectorView isHidden]) { - [inspectorView setFrame:newInpectorFrame]; - } - [contentView setFrame:newContentFrame]; -}; - -- (BOOL)splitView:(NSSplitView *)splitView shouldHideDividerAtIndex:(NSInteger)dividerIndex { - NSView *outlineView = [self _subViewOfType:MPSplitViewOutlineViewIndex splitView:splitView]; - NSView *inspectorView = [self _subViewOfType:MPSplitViewInspectorViewIndex splitView:splitView]; - - BOOL shouldHide = NO; - switch (dividerIndex) { - case MPSplitViewInspectorDividerIndex: - shouldHide = [inspectorView isHidden]; - break; - - case MPSplitViewOutlineDividerIndex: - shouldHide = [outlineView isHidden]; - break; - - default: { - NSException *exception = [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Divider Index out of range!" userInfo:nil]; - @throw exception; - } - } - return shouldHide; -} - -@end diff --git a/MacPass/MacPass-Info.plist b/MacPass/MacPass-Info.plist index 90fe4764..a1399c67 100644 --- a/MacPass/MacPass-Info.plist +++ b/MacPass/MacPass-Info.plist @@ -46,7 +46,7 @@ CFBundleSignature ???? CFBundleVersion - 6E0 + 6E6 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSHumanReadableCopyright diff --git a/MacPass/PasswordEditView.xib b/MacPass/PasswordEditView.xib index 676f7629..548cd957 100644 --- a/MacPass/PasswordEditView.xib +++ b/MacPass/PasswordEditView.xib @@ -49,6 +49,7 @@ 268 {{99, 156}, {164, 17}} + _NS:1535 YES @@ -89,6 +90,7 @@ 268 {{113, 13}, {82, 32}} + _NS:9 YES @@ -117,6 +119,7 @@ {{83, 57}, {197, 22}} + _NS:9 YES @@ -141,6 +144,7 @@ 268 {{86, 86}, {191, 22}} + _NS:9 YES @@ -178,6 +182,7 @@ 268 {{17, 89}, {64, 17}} + _NS:1535 YES @@ -198,6 +203,7 @@ 268 {{35, 62}, {46, 17}} + _NS:1535 YES @@ -218,6 +224,7 @@ 268 {{195, 13}, {88, 32}} + _NS:9 {250, 250} YES @@ -240,7 +247,9 @@ {363, 193} + + {751, 750} NSView @@ -871,7 +880,62 @@ 56 - + + + + MPPasswordEditViewController + MPViewController + + id + id + + + + _cancel: + id + + + _change: + id + + + + NSPathControl + NSSecureTextField + + + + keyfilePathControl + NSPathControl + + + passwordTextField + NSSecureTextField + + + + IBProjectSource + ./Classes/MPPasswordEditViewController.h + + + + MPViewController + NSViewController + + IBProjectSource + ./Classes/MPViewController.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + 0 IBCocoaFramework YES diff --git a/MacPass/PasswordInputView.xib b/MacPass/PasswordInputView.xib index 0d7799c7..d2b7bb3b 100644 --- a/MacPass/PasswordInputView.xib +++ b/MacPass/PasswordInputView.xib @@ -51,6 +51,7 @@ 268 {{96, 175}, {184, 17}} + _NS:1535 YES @@ -99,6 +100,7 @@ {{157, 200}, {48, 48}} + _NS:9 YES @@ -123,6 +125,7 @@ 268 {{127, 50}, {82, 32}} + _NS:9 YES @@ -151,6 +154,7 @@ {{83, 94}, {197, 22}} + _NS:9 YES @@ -175,6 +179,7 @@ 268 {{86, 123}, {191, 22}} + _NS:9 YES @@ -212,6 +217,7 @@ 268 {{17, 126}, {64, 17}} + _NS:1535 YES @@ -232,6 +238,7 @@ 268 {{35, 99}, {46, 17}} + _NS:1535 YES @@ -252,7 +259,7 @@ 268 {{209, 50}, {74, 32}} - + _NS:9 {250, 250} YES @@ -275,7 +282,9 @@ {362, 268} + + {751, 750} NSView @@ -1087,7 +1096,69 @@ 295 - + + + + MPPasswordInputController + MPViewController + + _decrypt: + id + + + _decrypt: + + _decrypt: + id + + + + NSImageView + NSTextField + NSPathControl + NSSecureTextField + + + + errorImageView + NSImageView + + + errorInfoTextField + NSTextField + + + keyPathControl + NSPathControl + + + passwordTextField + NSSecureTextField + + + + IBProjectSource + ./Classes/MPPasswordInputController.h + + + + MPViewController + NSViewController + + IBProjectSource + ./Classes/MPViewController.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + 0 IBCocoaFramework YES