Modern Objective-C

This commit is contained in:
michael starke
2016-08-28 14:32:00 +02:00
parent bd3eb7950c
commit e9b9ca9425

View File

@@ -105,18 +105,18 @@ NSString *const MPToolbarItemCopyPassword = @"TOOLBAR_COPY_PASSWORD";
if([itemIdentifier isEqualToString:MPToolbarItemAction]) { if([itemIdentifier isEqualToString:MPToolbarItemAction]) {
NSPopUpButton *popupButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(0, 0, 50, 32) pullsDown:YES]; NSPopUpButton *popupButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(0, 0, 50, 32) pullsDown:YES];
[[popupButton cell] setBezelStyle:NSTexturedRoundedBezelStyle]; popupButton.bezelStyle = NSTexturedRoundedBezelStyle;
[[popupButton cell] setImageScaling:NSImageScaleProportionallyDown]; popupButton.focusRingType = NSFocusRingTypeNone;
[popupButton setFocusRingType:NSFocusRingTypeNone]; popupButton.title = @"";
[popupButton setTitle:@""]; [popupButton.cell setImageScaling:NSImageScaleProportionallyDown];
[popupButton sizeToFit]; [popupButton sizeToFit];
NSRect newFrame = [popupButton frame]; NSRect newFrame = popupButton.frame;
newFrame.size.width += 20; newFrame.size.width += 20;
NSMenu *menu = [[NSMenu allocWithZone:[NSMenu menuZone]] init]; NSMenu *menu = [[NSMenu alloc] init];
NSMenuItem *actionImageItem = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:@"" action:NULL keyEquivalent:@""]; NSMenuItem *actionImageItem = [[NSMenuItem alloc] initWithTitle:@"" action:NULL keyEquivalent:@""];
[actionImageItem setImage:self.toolbarImages[MPToolbarItemAction]]; actionImageItem.image = self.toolbarImages[MPToolbarItemAction];
[menu addItem:actionImageItem]; [menu addItem:actionImageItem];
NSArray *menuItems = [MPContextMenuHelper contextMenuItemsWithItems:MPContextMenuExtended]; NSArray *menuItems = [MPContextMenuHelper contextMenuItemsWithItems:MPContextMenuExtended];
for(NSMenuItem *item in menuItems) { for(NSMenuItem *item in menuItems) {
@@ -125,31 +125,31 @@ NSString *const MPToolbarItemCopyPassword = @"TOOLBAR_COPY_PASSWORD";
NSMenuItem *menuRepresentation = [[NSMenuItem alloc] initWithTitle:itemLabel NSMenuItem *menuRepresentation = [[NSMenuItem alloc] initWithTitle:itemLabel
action:[self _actionForToolbarItemIdentifier:itemIdentifier] action:[self _actionForToolbarItemIdentifier:itemIdentifier]
keyEquivalent:@""]; keyEquivalent:@""];
[menuRepresentation setSubmenu:menu]; menuRepresentation.submenu = menu;
[popupButton setFrame:newFrame]; popupButton.frame = newFrame;
[popupButton setMenu:menu]; popupButton.menu = menu;
[item setMenuFormRepresentation:menuRepresentation]; item.menuFormRepresentation = menuRepresentation;
[item setView:popupButton]; item.view = popupButton;
} }
else if( [itemIdentifier isEqualToString:MPToolbarItemAddEntry]) { else if( [itemIdentifier isEqualToString:MPToolbarItemAddEntry]) {
MPContextToolbarButton *button = [[MPContextToolbarButton alloc] initWithFrame:NSMakeRect(0, 0, 32, 32)]; MPContextToolbarButton *button = [[MPContextToolbarButton alloc] initWithFrame:NSMakeRect(0, 0, 32, 32)];
[button setAction:[self _actionForToolbarItemIdentifier:itemIdentifier]]; [button setAction:[self _actionForToolbarItemIdentifier:itemIdentifier]];
NSImage *image = self.toolbarImages[itemIdentifier]; NSImage *image = self.toolbarImages[itemIdentifier];
[image setSize:NSMakeSize(16, 16)]; image.size = NSMakeSize(16, 16);
[button setImage:image]; [button setImage:image];
[button sizeToFit]; [button sizeToFit];
NSMenu *menu = [NSMenu allocWithZone:[NSMenu menuZone]]; NSMenu *menu = [NSMenu allocWithZone:[NSMenu menuZone]];
[menu addItemWithTitle:@"Dummy" action:NULL keyEquivalent:@""]; [menu addItemWithTitle:@"Dummy" action:NULL keyEquivalent:@""];
[menu setDelegate:_entryMenuDelegate]; menu.delegate = _entryMenuDelegate;
[button setContextMenu:menu]; [button setContextMenu:menu];
NSRect fittingRect = [button frame]; NSRect fittingRect = button.frame;
fittingRect.size.width = MAX( (CGFloat)32.0,fittingRect.size.width); fittingRect.size.width = MAX( (CGFloat)32.0,fittingRect.size.width);
[button setFrame:fittingRect]; button.frame = fittingRect;
[item setView:button]; item.view = button;
/* Create the Contextual Menu button */ /* Create the Contextual Menu button */
NSMenuItem *menuRepresentation = [[NSMenuItem alloc] initWithTitle:itemLabel NSMenuItem *menuRepresentation = [[NSMenuItem alloc] initWithTitle:itemLabel
action:[self _actionForToolbarItemIdentifier:itemIdentifier] action:[self _actionForToolbarItemIdentifier:itemIdentifier]
@@ -159,35 +159,35 @@ NSString *const MPToolbarItemCopyPassword = @"TOOLBAR_COPY_PASSWORD";
} }
else if( [itemIdentifier isEqualToString:MPToolbarItemSearch]){ else if( [itemIdentifier isEqualToString:MPToolbarItemSearch]){
NSSearchField *searchField = [[NSSearchField alloc] init]; NSSearchField *searchField = [[NSSearchField alloc] init];
[searchField setAction:@selector(updateSearch:)]; searchField.action = @selector(updateSearch:);
NSSearchFieldCell *cell = [searchField cell]; NSSearchFieldCell *cell = searchField.cell;
[[cell cancelButtonCell] setAction:@selector(exitSearch:)]; cell.cancelButtonCell.action = @selector(exitSearch:);
[[cell cancelButtonCell] setTarget:nil]; cell.cancelButtonCell.target = nil;
[searchField setRecentsAutosaveName:@"RecentEntrySearches"]; searchField.recentsAutosaveName = @"RecentEntrySearches";
[item setView:searchField]; item.view = searchField;
/* Use default size base on documentation */ /* Use default size base on documentation */
[item setMinSize:NSMakeSize(140, 32)]; item.minSize = NSMakeSize(140, 32);
[item setMaxSize:NSMakeSize(240, 32)]; item.maxSize = NSMakeSize(240, 32);
NSMenu *templateMenu = [self _allocateSearchMenuTemplate]; NSMenu *templateMenu = [self _allocateSearchMenuTemplate];
[[searchField cell] setSearchMenuTemplate:templateMenu]; [searchField.cell setSearchMenuTemplate:templateMenu];
self.searchField = searchField; self.searchField = searchField;
} }
else { else {
NSButton *button = [[MPToolbarButton alloc] initWithFrame:NSMakeRect(0, 0, 32, 32)]; NSButton *button = [[MPToolbarButton alloc] initWithFrame:NSMakeRect(0, 0, 32, 32)];
NSImage *image = self.toolbarImages[itemIdentifier]; NSImage *image = self.toolbarImages[itemIdentifier];
[image setSize:NSMakeSize(16, 16)]; image.size = NSMakeSize(16, 16);
[button setImage:image]; [button setImage:image];
[button sizeToFit]; [button sizeToFit];
[button setAction:[self _actionForToolbarItemIdentifier:itemIdentifier]]; button.action = [self _actionForToolbarItemIdentifier:itemIdentifier];
NSRect fittingRect = [button frame]; NSRect fittingRect = [button frame];
fittingRect.size.width = MAX( (CGFloat)32.0,fittingRect.size.width); fittingRect.size.width = MAX( (CGFloat)32.0,fittingRect.size.width);
[button setFrame:fittingRect]; button.frame = fittingRect;
[item setView:button]; item.view = button;
NSMenuItem *menuRepresentation = [[NSMenuItem alloc] initWithTitle:itemLabel NSMenuItem *menuRepresentation = [[NSMenuItem alloc] initWithTitle:itemLabel
action:[self _actionForToolbarItemIdentifier:itemIdentifier] action:[self _actionForToolbarItemIdentifier:itemIdentifier]
keyEquivalent:@""]; keyEquivalent:@""];
[item setMenuFormRepresentation:menuRepresentation]; item.menuFormRepresentation = menuRepresentation;
} }
self.toolbarItems[itemIdentifier] = item; self.toolbarItems[itemIdentifier] = item;
} }
@@ -259,21 +259,21 @@ NSString *const MPToolbarItemCopyPassword = @"TOOLBAR_COPY_PASSWORD";
- (NSMenu *)_allocateSearchMenuTemplate { - (NSMenu *)_allocateSearchMenuTemplate {
NSMenu *menu = [[NSMenu alloc] init]; NSMenu *menu = [[NSMenu alloc] init];
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"CLEAR_RECENT_SEARCHES", @"") action:NULL keyEquivalent:@""]; NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"CLEAR_RECENT_SEARCHES", @"") action:NULL keyEquivalent:@""];
[item setTag:NSSearchFieldClearRecentsMenuItemTag]; item.tag = NSSearchFieldClearRecentsMenuItemTag;
[menu addItem:item]; [menu addItem:item];
[menu addItem:[NSMenuItem separatorItem]]; [menu addItem:[NSMenuItem separatorItem]];
item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"RECENT_SEARCHES", @"") action:NULL keyEquivalent:@""]; item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"RECENT_SEARCHES", @"") action:NULL keyEquivalent:@""];
[item setTag:NSSearchFieldRecentsTitleMenuItemTag]; item.tag = NSSearchFieldRecentsTitleMenuItemTag;
[menu addItem:item]; [menu addItem:item];
item = [[NSMenuItem alloc] initWithTitle:@"Recents" action:NULL keyEquivalent:@""]; item = [[NSMenuItem alloc] initWithTitle:@"Recents" action:NULL keyEquivalent:@""];
[item setTag:NSSearchFieldRecentsMenuItemTag]; item.tag = NSSearchFieldRecentsMenuItemTag;
[menu addItem:item]; [menu addItem:item];
item = [[NSMenuItem alloc] initWithTitle:@"NoEntries" action:NULL keyEquivalent:@""]; item = [[NSMenuItem alloc] initWithTitle:@"NoEntries" action:NULL keyEquivalent:@""];
[item setTag:NSSearchFieldNoRecentsMenuItemTag]; item.tag = NSSearchFieldNoRecentsMenuItemTag;
[menu addItem:item]; [menu addItem:item];
return menu; return menu;
@@ -281,16 +281,16 @@ NSString *const MPToolbarItemCopyPassword = @"TOOLBAR_COPY_PASSWORD";
- (void)_didEnterSearch:(NSNotification *)notification { - (void)_didEnterSearch:(NSNotification *)notification {
/* We enter search. If there is no Item to search in the toolbar, we need to add it */ /* We enter search. If there is no Item to search in the toolbar, we need to add it */
NSArray *currentItems = [self.toolbar items]; NSArray *currentItems = self.toolbar.items;
NSToolbarItem *searchItem = self.toolbarItems[MPToolbarItemSearch]; NSToolbarItem *searchItem = self.toolbarItems[MPToolbarItemSearch];
if(!searchItem || ![currentItems containsObject:searchItem]) { if(!searchItem || ![currentItems containsObject:searchItem]) {
[self.toolbar insertItemWithItemIdentifier:MPToolbarItemSearch atIndex:[currentItems count]]; [self.toolbar insertItemWithItemIdentifier:MPToolbarItemSearch atIndex:[currentItems count]];
_didAddSearchfieldForSearch = YES; _didAddSearchfieldForSearch = YES;
} }
/* Then we should make sure the toolbar is visible. Just to make life easier */ /* Then we should make sure the toolbar is visible. Just to make life easier */
if(![self.toolbar isVisible]) { if(!self.toolbar.visible) {
_didShowToolbarForSearch = YES; _didShowToolbarForSearch = YES;
[self.toolbar setVisible:YES]; self.toolbar.visible = YES;
} }
_displayModeBeforeSearch = [self.toolbar displayMode]; _displayModeBeforeSearch = [self.toolbar displayMode];
if(_displayModeBeforeSearch == NSToolbarDisplayModeLabelOnly) { if(_displayModeBeforeSearch == NSToolbarDisplayModeLabelOnly) {
@@ -298,7 +298,7 @@ NSString *const MPToolbarItemCopyPassword = @"TOOLBAR_COPY_PASSWORD";
} }
/* only make the searchfield first responder if it's not already in an active search */ /* only make the searchfield first responder if it's not already in an active search */
if(![self.searchField currentEditor]) { if(![self.searchField currentEditor]) {
[[self.searchField window] makeFirstResponder:self.searchField]; [self.searchField.window makeFirstResponder:self.searchField];
[self.searchField selectText:self]; [self.searchField selectText:self];
} }
} }
@@ -307,23 +307,23 @@ NSString *const MPToolbarItemCopyPassword = @"TOOLBAR_COPY_PASSWORD";
[self.searchField setStringValue:@""]; [self.searchField setStringValue:@""];
NSWindow *window = [self.searchField window]; NSWindow *window = [self.searchField window];
/* Resign first responder form search field only if it was the first responder */ /* Resign first responder form search field only if it was the first responder */
if([window firstResponder] == [self.searchField currentEditor]) { if(window.firstResponder == [self.searchField currentEditor]) {
[window makeFirstResponder:nil]; [window makeFirstResponder:nil];
} }
if(_didAddSearchfieldForSearch) { if(_didAddSearchfieldForSearch) {
NSToolbarItem *searchItem = self.toolbarItems[MPToolbarItemSearch]; NSToolbarItem *searchItem = self.toolbarItems[MPToolbarItemSearch];
NSUInteger index = [[self.toolbar items] indexOfObject:searchItem]; NSUInteger index = [self.toolbar.items indexOfObject:searchItem];
if(index != NSNotFound) { if(index != NSNotFound) {
[self.toolbar removeItemAtIndex:index]; [self.toolbar removeItemAtIndex:index];
_didAddSearchfieldForSearch = NO; _didAddSearchfieldForSearch = NO;
} }
} }
if(_displayModeBeforeSearch != [self.toolbar displayMode]) { if(_displayModeBeforeSearch != self.toolbar.displayMode) {
[self.toolbar setDisplayMode:_displayModeBeforeSearch]; self.toolbar.displayMode = _displayModeBeforeSearch;
} }
if(_didShowToolbarForSearch && [self.toolbar isVisible]) { if(_didShowToolbarForSearch && self.toolbar.visible) {
_didShowToolbarForSearch = NO; _didShowToolbarForSearch = NO;
[self.toolbar setVisible:NO]; self.toolbar.visible = NO;
} }
} }