Home | History | Annotate | Download | only in cocoa
      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 
     15 namespace {
     16 
     17 void AddSeparatorToMenu(NSMenu *parent_menu) {
     18   NSMenuItem* separator = [NSMenuItem separatorItem];
     19   [parent_menu addItem:separator];
     20 }
     21 
     22 void 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
     35 void 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