diff --git a/MacPass/MPInspectorViewController.h b/MacPass/MPInspectorViewController.h index 8d5f015d..8b6ffa6f 100644 --- a/MacPass/MPInspectorViewController.h +++ b/MacPass/MPInspectorViewController.h @@ -14,7 +14,7 @@ @class HNHGradientView; @class MPDocumentWindowController; -@interface MPInspectorViewController : MPViewController +@interface MPInspectorViewController : MPViewController @property (assign) IBOutlet MPPopupImageView *itemImageView; @property (assign) IBOutlet NSTextField *itemNameTextfield; diff --git a/MacPass/MPInspectorViewController.m b/MacPass/MPInspectorViewController.m index 5e2ce450..b19c2a73 100644 --- a/MacPass/MPInspectorViewController.m +++ b/MacPass/MPInspectorViewController.m @@ -259,23 +259,37 @@ enum { [[self view] layout]; } +#pragma mark Popovers - (void)_showImagePopup:(id)sender { [self _showPopopver:[[[MPIconSelectViewController alloc] init] autorelease] atView:self.itemImageView onEdge:NSMinYEdge]; } -- (void)closeActivePopup:(id)sender { - [_activePopover close]; -} - - (IBAction)_popUpPasswordGenerator:(id)sender { + [self.generatePasswordButton setEnabled:NO]; [self _showPopopver:[[[MPPasswordCreatorViewController alloc] init] autorelease] atView:self.passwordTextField onEdge:NSMinYEdge]; } - (void)_showPopopver:(NSViewController *)viewController atView:(NSView *)view onEdge:(NSRectEdge)edge { + if(_activePopover.contentViewController == viewController) { + return; // Do nothing, we already did show the controller + } + [_activePopover close]; + NSAssert(_activePopover == nil, @"Popover hast to be niled out"); _activePopover = [[NSPopover alloc] init]; + _activePopover.delegate = self; _activePopover.behavior = NSPopoverBehaviorTransient; _activePopover.contentViewController = viewController; [_activePopover showRelativeToRect:NSZeroRect ofView:view preferredEdge:edge]; +} + +- (void)popoverDidClose:(NSNotification *)notification { + /* We do not enable the button all the time, but it's wokring find this way */ + [self.generatePasswordButton setEnabled:YES]; + id controller = _activePopover.contentViewController; + if([controller respondsToSelector:@selector(password)]) { + [self.selectedEntry setPasswordUndoable:[controller password]]; + } + [_activePopover release]; _activePopover = nil; } @@ -298,23 +312,6 @@ enum { [self _updateContent]; } -#pragma mark Properties -//- (void)setSelectedEntry:(KdbEntry *)selectedEntry { -// if(_selectedEntry != selectedEntry) { -// _selectedEntry = selectedEntry; -// self.showsEntry = YES; -// [self _updateContent]; -// } -//} -// -//- (void)setSelectedGroup:(KdbGroup *)selectedGroup { -// if(_selectedGroup != selectedGroup) { -// _selectedGroup = selectedGroup; -// self.showsEntry = NO; -// [self _updateContent]; -// } -//} - #pragma mark NSTableViewDelegate - (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { NSTableCellView *tableCellView = [tableView makeViewWithIdentifier:[tableColumn identifier] owner:tableView]; diff --git a/MacPass/MPPasswordCreatorViewController.h b/MacPass/MPPasswordCreatorViewController.h index 111513bf..bc524472 100644 --- a/MacPass/MPPasswordCreatorViewController.h +++ b/MacPass/MPPasswordCreatorViewController.h @@ -10,6 +10,6 @@ @interface MPPasswordCreatorViewController : MPViewController -@property (retain) NSString *password; +@property (retain, readonly) NSString *password; @end diff --git a/MacPass/MPPasswordCreatorViewController.m b/MacPass/MPPasswordCreatorViewController.m index ede2d758..063e4fe2 100644 --- a/MacPass/MPPasswordCreatorViewController.m +++ b/MacPass/MPPasswordCreatorViewController.m @@ -7,6 +7,7 @@ // #import "MPPasswordCreatorViewController.h" +#import "MPPasteBoardController.h" #import "NSString+MPPasswordCreation.h" #define MIN_PASSWORD_LENGTH 1 @@ -16,6 +17,8 @@ @interface MPPasswordCreatorViewController () { MPPasswordCharacterFlags _characterFlags; } +@property (retain) NSString *password; + @property (assign) IBOutlet NSTextField *passwordTextField; @property (assign) IBOutlet NSTextField *passwordLengthTextField; @property (assign) IBOutlet NSTextField *customCharactersTextField; @@ -65,6 +68,7 @@ [_symbolsButton setTag:MPPasswordCharactersSymbols]; [self _resetCharacters]; + [self _generatePassword:nil]; } - (IBAction)_generatePassword:(id)sender { @@ -85,6 +89,11 @@ } - (IBAction)_usePassword:(id)sender { + if([self.addPasswordToPasteboardButton state] == NSOnState) { + [[MPPasteBoardController defaultController] copyObjects:@[_password]]; + } + id target = [NSApp targetForAction:@selector(performClose:)]; + [target performClose:nil]; } - (void)setUseCustomString:(BOOL)useCustomString { @@ -125,6 +134,5 @@ [_lowerCaseButton setState:userLowercase ? NSOnState : NSOffState]; [_numbersButton setState:useNumbers ? NSOnState : NSOffState]; [_symbolsButton setState:useSymbols ? NSOnState : NSOffState]; - } @end diff --git a/MacPass/MacPass-Info.plist b/MacPass/MacPass-Info.plist index 4aaa462a..fca1ec4a 100644 --- a/MacPass/MacPass-Info.plist +++ b/MacPass/MacPass-Info.plist @@ -48,7 +48,7 @@ CFBundleSignature ???? CFBundleVersion - 823 + 843 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSHumanReadableCopyright diff --git a/MacPass/de.lproj/Localizable.strings b/MacPass/de.lproj/Localizable.strings index ea9ede7b..ed872bfd 100644 Binary files a/MacPass/de.lproj/Localizable.strings and b/MacPass/de.lproj/Localizable.strings differ diff --git a/MacPass/en.lproj/Localizable.strings b/MacPass/en.lproj/Localizable.strings index f6482a41..9baefd8e 100644 Binary files a/MacPass/en.lproj/Localizable.strings and b/MacPass/en.lproj/Localizable.strings differ