transmission/macosx/GroupToolbarItem.mm

79 lines
2.8 KiB
Plaintext

/******************************************************************************
* Copyright (c) 2007-2012 Transmission authors and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*****************************************************************************/
#import "GroupToolbarItem.h"
@implementation GroupToolbarItem
- (void)setIdentifiers:(NSArray*)identifiers
{
fIdentifiers = identifiers;
}
- (void)validate
{
NSSegmentedControl* control = (NSSegmentedControl*)self.view;
for (NSInteger i = 0; i < control.segmentCount; i++)
{
[control setEnabled:[self.target validateToolbarItem:[[NSToolbarItem alloc] initWithItemIdentifier:fIdentifiers[i]]]
forSegment:i];
}
}
- (void)createMenu:(NSArray*)labels
{
NSMenuItem* menuItem = [[NSMenuItem alloc] initWithTitle:self.label action:NULL keyEquivalent:@""];
NSMenu* menu = [[NSMenu alloc] initWithTitle:self.label];
menuItem.submenu = menu;
menu.autoenablesItems = NO;
NSInteger const count = ((NSSegmentedControl*)self.view).segmentCount;
for (NSInteger i = 0; i < count; i++)
{
NSMenuItem* addItem = [[NSMenuItem alloc] initWithTitle:labels[i] action:self.action keyEquivalent:@""];
addItem.target = self.target;
addItem.tag = i;
[menu addItem:addItem];
}
self.menuFormRepresentation = menuItem;
}
- (NSMenuItem*)menuFormRepresentation
{
NSMenuItem* menuItem = super.menuFormRepresentation;
NSInteger const count = ((NSSegmentedControl*)self.view).segmentCount;
for (NSInteger i = 0; i < count; i++)
{
[menuItem.submenu itemAtIndex:i].enabled = [self.target
validateToolbarItem:[[NSToolbarItem alloc] initWithItemIdentifier:fIdentifiers[i]]];
}
return menuItem;
}
@end