Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm

Issue 339413002: Use the managed bookmarks icon for its folder on Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import <AppKit/AppKit.h> 5 #import <AppKit/AppKit.h>
6 6
7 #include "base/strings/sys_string_conversions.h" 7 #include "base/strings/sys_string_conversions.h"
8 #include "chrome/app/chrome_command_ids.h" 8 #include "chrome/app/chrome_command_ids.h"
9 #import "chrome/browser/app_controller_mac.h" 9 #import "chrome/browser/app_controller_mac.h"
10 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 10 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 ClearBookmarkMenu(bookmark_menu); 76 ClearBookmarkMenu(bookmark_menu);
77 77
78 // Add at most one separator for the bookmark bar and the managed bookmarks 78 // Add at most one separator for the bookmark bar and the managed bookmarks
79 // folder. 79 // folder.
80 ChromeBookmarkClient* client = 80 ChromeBookmarkClient* client =
81 ChromeBookmarkClientFactory::GetForProfile(profile_); 81 ChromeBookmarkClientFactory::GetForProfile(profile_);
82 const BookmarkNode* barNode = model->bookmark_bar_node(); 82 const BookmarkNode* barNode = model->bookmark_bar_node();
83 const BookmarkNode* managedNode = client->managed_node(); 83 const BookmarkNode* managedNode = client->managed_node();
84 if (!barNode->empty() || !managedNode->empty()) 84 if (!barNode->empty() || !managedNode->empty())
85 [bookmark_menu addItem:[NSMenuItem separatorItem]]; 85 [bookmark_menu addItem:[NSMenuItem separatorItem]];
86 // TODO(joaodasilva): use the 'Managed Bookmarks' icon for the managedNode. 86 if (!managedNode->empty()) {
87 if (!managedNode->empty()) 87 // Most users never see this node, so the image is only loaded if needed.
88 AddNodeAsSubmenu(bookmark_menu, managedNode, !is_submenu); 88 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
89 NSImage* image =
90 rb.GetNativeImageNamed(IDR_BOOKMARK_BAR_FOLDER_MANAGED).ToNSImage();
91 AddNodeAsSubmenu(bookmark_menu, managedNode, image, !is_submenu);
92 }
89 if (!barNode->empty()) 93 if (!barNode->empty())
90 AddNodeToMenu(barNode, bookmark_menu, !is_submenu); 94 AddNodeToMenu(barNode, bookmark_menu, !is_submenu);
91 95
92 // If the "Other Bookmarks" folder has any content, make a submenu for it and 96 // If the "Other Bookmarks" folder has any content, make a submenu for it and
93 // fill it in. 97 // fill it in.
94 if (!model->other_node()->empty()) { 98 if (!model->other_node()->empty()) {
95 [bookmark_menu addItem:[NSMenuItem separatorItem]]; 99 [bookmark_menu addItem:[NSMenuItem separatorItem]];
96 AddNodeAsSubmenu(bookmark_menu, 100 AddNodeAsSubmenu(bookmark_menu,
97 model->other_node(), 101 model->other_node(),
102 folder_image_,
98 !is_submenu); 103 !is_submenu);
99 } 104 }
100 105
101 // If the "Mobile Bookmarks" folder has any content, make a submenu for it and 106 // If the "Mobile Bookmarks" folder has any content, make a submenu for it and
102 // fill it in. 107 // fill it in.
103 if (!model->mobile_node()->empty()) { 108 if (!model->mobile_node()->empty()) {
104 // Add a separator if we did not already add one due to a non-empty 109 // Add a separator if we did not already add one due to a non-empty
105 // "Other Bookmarks" folder. 110 // "Other Bookmarks" folder.
106 if (model->other_node()->empty()) 111 if (model->other_node()->empty())
107 [bookmark_menu addItem:[NSMenuItem separatorItem]]; 112 [bookmark_menu addItem:[NSMenuItem separatorItem]];
108 113
109 AddNodeAsSubmenu(bookmark_menu, 114 AddNodeAsSubmenu(bookmark_menu,
110 model->mobile_node(), 115 model->mobile_node(),
116 folder_image_,
111 !is_submenu); 117 !is_submenu);
112 } 118 }
113 119
114 menuIsValid_ = true; 120 menuIsValid_ = true;
115 } 121 }
116 122
117 void BookmarkMenuBridge::BookmarkModelBeingDeleted(BookmarkModel* model) { 123 void BookmarkMenuBridge::BookmarkModelBeingDeleted(BookmarkModel* model) {
118 NSMenu* bookmark_menu = BookmarkMenu(); 124 NSMenu* bookmark_menu = BookmarkMenu();
119 if (bookmark_menu == nil) 125 if (bookmark_menu == nil)
120 return; 126 return;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 // any. 222 // any.
217 [menu removeItem:item]; 223 [menu removeItem:item];
218 } else { 224 } else {
219 // Leave it alone. 225 // Leave it alone.
220 } 226 }
221 } 227 }
222 } 228 }
223 229
224 void BookmarkMenuBridge::AddNodeAsSubmenu(NSMenu* menu, 230 void BookmarkMenuBridge::AddNodeAsSubmenu(NSMenu* menu,
225 const BookmarkNode* node, 231 const BookmarkNode* node,
232 NSImage* image,
226 bool add_extra_items) { 233 bool add_extra_items) {
227 NSString* title = SysUTF16ToNSString(node->GetTitle()); 234 NSString* title = SysUTF16ToNSString(node->GetTitle());
228 NSMenuItem* items = [[[NSMenuItem alloc] 235 NSMenuItem* items = [[[NSMenuItem alloc]
229 initWithTitle:title 236 initWithTitle:title
230 action:nil 237 action:nil
231 keyEquivalent:@""] autorelease]; 238 keyEquivalent:@""] autorelease];
232 [items setImage:folder_image_]; 239 [items setImage:image];
233 [menu addItem:items]; 240 [menu addItem:items];
234 NSMenu* submenu = [[[NSMenu alloc] initWithTitle:title] autorelease]; 241 NSMenu* submenu = [[[NSMenu alloc] initWithTitle:title] autorelease];
235 [menu setSubmenu:submenu forItem:items]; 242 [menu setSubmenu:submenu forItem:items];
236 AddNodeToMenu(node, submenu, add_extra_items); 243 AddNodeToMenu(node, submenu, add_extra_items);
237 } 244 }
238 245
239 // TODO(jrg): limit the number of bookmarks in the menubar? 246 // TODO(jrg): limit the number of bookmarks in the menubar?
240 void BookmarkMenuBridge::AddNodeToMenu(const BookmarkNode* node, NSMenu* menu, 247 void BookmarkMenuBridge::AddNodeToMenu(const BookmarkNode* node, NSMenu* menu,
241 bool add_extra_items) { 248 bool add_extra_items) {
242 int child_count = node->child_count(); 249 int child_count = node->child_count();
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 350
344 NSMenuItem* BookmarkMenuBridge::MenuItemForNode(const BookmarkNode* node) { 351 NSMenuItem* BookmarkMenuBridge::MenuItemForNode(const BookmarkNode* node) {
345 if (!node) 352 if (!node)
346 return nil; 353 return nil;
347 std::map<const BookmarkNode*, NSMenuItem*>::iterator it = 354 std::map<const BookmarkNode*, NSMenuItem*>::iterator it =
348 bookmark_nodes_.find(node); 355 bookmark_nodes_.find(node);
349 if (it == bookmark_nodes_.end()) 356 if (it == bookmark_nodes_.end())
350 return nil; 357 return nil;
351 return it->second; 358 return it->second;
352 } 359 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698