* Adium is the legal property of its developers, whose names are listed in the copyright file included * with this source distribution. * This program is free software; you can redistribute it and/or modify it under the terms of the GNU * General Public License as published by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * You should have received a copy of the GNU General Public License along with this program; if not, * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #import "AINewBookmarkWindowController.h" #import "AINewGroupWindowController.h" #import <Adium/AIAccountControllerProtocol.h> #import <Adium/AIContactControllerProtocol.h> #import <Adium/AIInterfaceControllerProtocol.h> #import <Adium/AIListGroup.h> #import <Adium/AIServiceMenu.h> #import <AIUtilities/AIMenuAdditions.h> #import <AIUtilities/AIStringAdditions.h> #import <AIUtilities/AIPopUpButtonAdditions.h> #define ADD_BOOKMARK_NIB @"AddBookmark" #define DEFAULT_GROUP_NAME AILocalizedString(@"Contacts",nil) @interface AINewBookmarkWindowController () - (id)initWithChat:(AIChat *)inChat notifyingTarget:(id)inTarget; - (void)newGroup:(id)sender; - (void)newGroupDidEnd:(NSNotification *)inNotification; - (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; @implementation AINewBookmarkWindowController - (void)showOnWindow:(NSWindow *)parentWindow [NSApp beginSheet:self.window modalForWindow:parentWindow didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) [self.window makeKeyAndOrderFront:nil]; - (id)initWithChat:(AIChat *)inChat notifyingTarget:(id)inTarget if ((self = [super initWithWindowNibName:ADD_BOOKMARK_NIB])) { target = [inTarget retain]; * @brief didEnd selector for the sheet created above, dismisses the sheet -(void)sheetDidEnd:(NSWindow*)sheet returnCode:(NSInteger)returnCode contextInfo:(void*)contextInfo - (void)windowWillClose:(id)sender [super windowWillClose:sender]; * @brief the sheet finished loading, populate the group menu with contactlist's groups [textField_name setStringValue:chat.name]; [label_name setLocalizedString:AILocalizedString(@"Name:", nil)]; [label_group setLocalizedString:AILocalizedString(@"Group:", nil)]; [button_add setLocalizedString:AILocalizedStringFromTable(@"Add", @"Buttons", nil)]; [button_cancel setLocalizedString:AILocalizedStringFromTable(@"Cancel", @"Buttons", nil)]; * @brief User pressed ok on sheet - Calls createBookmarkWithInfo: on the delegate class AIBookmarkController, which creates * a new bookmark with the entered name & moves it to the entered group. - (IBAction)add:(id)sender [target createBookmarkForChat:chat withName:[textField_name stringValue] inGroup:[[popUp_group selectedItem] representedObject]]; *@brief user pressed cancel on panel -dismisses the sheet - (IBAction)cancel:(id)sender //Add to Group --------------------------------------------------------------------------------------------------------- #pragma mark Add to Group * @brief Build the menu of available destination groups menu = [adium.contactController groupMenuWithTarget:nil]; //Add a default group name to the menu if there are no groups listed if ([menu numberOfItems] == 0) { [menu addItemWithTitle:DEFAULT_GROUP_NAME [menu addItem:[NSMenuItem separatorItem]]; [menu addItemWithTitle:[AILocalizedString(@"New Group",nil) stringByAppendingEllipsis] action:@selector(newGroup:) [popUp_group setMenu:menu]; [popUp_group selectItemAtIndex:0]; * @brief Prompt the user to add a new group immediately - (void)newGroup:(id)sender AINewGroupWindowController *newGroupWindowController = [[AINewGroupWindowController alloc] init]; //Observe for the New Group window to close [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(newGroupDidEnd:) name:@"NewGroupWindowControllerDidEnd" object:[newGroupWindowController window]]; [newGroupWindowController showOnWindow:[self window]]; * @brief the New Group sheet has ended, if a new group was created, select it, otherwise * select the first group. - (void)newGroupDidEnd:(NSNotification *)inNotification NSWindow *window = [inNotification object]; if ([[window windowController] isKindOfClass:[AINewGroupWindowController class]]) { AIListGroup *group = [(AINewGroupWindowController *)[window windowController] group]; /* Select the new group if it exists; otherwise select the first group (so we don't still have New Group... selected). * If the user cancelled, group will be nil since the group doesn't exist. if (![popUp_group selectItemWithRepresentedObject:group]) { [popUp_group selectItemAtIndex:0]; [[self window] performSelector:@selector(makeKeyAndOrderFront:) [[NSNotificationCenter defaultCenter] removeObserver:self name:@"NewGroupWindowControllerDidEnd"