1// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/ui/cocoa/encoding_menu_controller_delegate_mac.h" 6 7#import <Cocoa/Cocoa.h> 8 9#include "base/string16.h" 10#include "base/sys_string_conversions.h" 11#include "chrome/app/chrome_command_ids.h" 12#include "chrome/browser/profiles/profile.h" 13#include "chrome/browser/ui/toolbar/encoding_menu_controller.h" 14 15namespace { 16 17void AddSeparatorToMenu(NSMenu *parent_menu) { 18 NSMenuItem* separator = [NSMenuItem separatorItem]; 19 [parent_menu addItem:separator]; 20} 21 22void AppendMenuItem(NSMenu *parent_menu, int tag, NSString *title) { 23 24 NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title 25 action:nil 26 keyEquivalent:@""] autorelease]; 27 [parent_menu addItem:item]; 28 [item setAction:@selector(commandDispatch:)]; 29 [item setTag:tag]; 30} 31 32} // namespace 33 34// static 35void EncodingMenuControllerDelegate::BuildEncodingMenu(Profile *profile, 36 NSMenu* encoding_menu) { 37 DCHECK(profile); 38 39 typedef EncodingMenuController::EncodingMenuItemList EncodingMenuItemList; 40 EncodingMenuItemList menuItems; 41 EncodingMenuController controller; 42 controller.GetEncodingMenuItems(profile, &menuItems); 43 44 for (EncodingMenuItemList::iterator it = menuItems.begin(); 45 it != menuItems.end(); 46 ++it) { 47 int item_id = it->first; 48 string16 &localized_title_string16 = it->second; 49 50 if (item_id == 0) { 51 AddSeparatorToMenu(encoding_menu); 52 } else { 53 NSString *localized_title = 54 base::SysUTF16ToNSString(localized_title_string16); 55 AppendMenuItem(encoding_menu, item_id, localized_title); 56 } 57 } 58 59} 60