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

Side by Side Diff: chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc

Issue 117903006: Refactor: Makes menus use gfx::FontList instead of gfx::Font. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 #include "chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h" 5 #include "chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/prefs/scoped_user_pref_update.h" 9 #include "base/prefs/scoped_user_pref_update.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 const int RecentTabsSubMenuModel::kDisabledRecentlyClosedHeaderCommandId = 1121; 165 const int RecentTabsSubMenuModel::kDisabledRecentlyClosedHeaderCommandId = 1121;
166 166
167 RecentTabsSubMenuModel::RecentTabsSubMenuModel( 167 RecentTabsSubMenuModel::RecentTabsSubMenuModel(
168 ui::AcceleratorProvider* accelerator_provider, 168 ui::AcceleratorProvider* accelerator_provider,
169 Browser* browser, 169 Browser* browser,
170 browser_sync::OpenTabsUIDelegate* open_tabs_delegate) 170 browser_sync::OpenTabsUIDelegate* open_tabs_delegate)
171 : ui::SimpleMenuModel(this), 171 : ui::SimpleMenuModel(this),
172 browser_(browser), 172 browser_(browser),
173 open_tabs_delegate_(open_tabs_delegate), 173 open_tabs_delegate_(open_tabs_delegate),
174 last_local_model_index_(-1), 174 last_local_model_index_(-1),
175 default_favicon_(ResourceBundle::GetSharedInstance(). 175 default_favicon_(ui::ResourceBundle::GetSharedInstance().
176 GetNativeImageNamed(IDR_DEFAULT_FAVICON)), 176 GetNativeImageNamed(IDR_DEFAULT_FAVICON)),
177 weak_ptr_factory_(this) { 177 weak_ptr_factory_(this) {
178 // Invoke asynchronous call to load tabs from local last session, which does 178 // Invoke asynchronous call to load tabs from local last session, which does
179 // nothing if the tabs have already been loaded or they shouldn't be loaded. 179 // nothing if the tabs have already been loaded or they shouldn't be loaded.
180 // TabRestoreServiceChanged() will be called after the tabs are loaded. 180 // TabRestoreServiceChanged() will be called after the tabs are loaded.
181 TabRestoreService* service = 181 TabRestoreService* service =
182 TabRestoreServiceFactory::GetForProfile(browser_->profile()); 182 TabRestoreServiceFactory::GetForProfile(browser_->profile());
183 if (service) { 183 if (service) {
184 service->LoadTabsFromLastSession(); 184 service->LoadTabsFromLastSession();
185 185
186 // TODO(sail): enable this when mac implements the dynamic menu, together with 186 // TODO(sail): enable this when mac implements the dynamic menu, together with
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 DCHECK(window_items_idx >= 0 && 306 DCHECK(window_items_idx >= 0 &&
307 window_items_idx < static_cast<int>(local_window_items_.size())); 307 window_items_idx < static_cast<int>(local_window_items_.size()));
308 UMA_HISTOGRAM_ENUMERATION("WrenchMenu.RecentTabsSubMenu", RESTORE_WINDOW, 308 UMA_HISTOGRAM_ENUMERATION("WrenchMenu.RecentTabsSubMenu", RESTORE_WINDOW,
309 LIMIT_RECENT_TAB_ACTION); 309 LIMIT_RECENT_TAB_ACTION);
310 service->RestoreEntryById(delegate, local_window_items_[window_items_idx], 310 service->RestoreEntryById(delegate, local_window_items_[window_items_idx],
311 browser_->host_desktop_type(), disposition); 311 browser_->host_desktop_type(), disposition);
312 } 312 }
313 } 313 }
314 } 314 }
315 315
316 const gfx::Font* RecentTabsSubMenuModel::GetLabelFontAt(int index) const { 316 const gfx::FontList* RecentTabsSubMenuModel::GetLabelFontListAt(
317 int index) const {
317 int command_id = GetCommandIdAt(index); 318 int command_id = GetCommandIdAt(index);
318 if (command_id == kRecentlyClosedHeaderCommandId || 319 if (command_id == kRecentlyClosedHeaderCommandId ||
319 IsDeviceNameCommandId(command_id)) { 320 IsDeviceNameCommandId(command_id)) {
320 return &ResourceBundle::GetSharedInstance().GetFont( 321 return &ui::ResourceBundle::GetSharedInstance().GetFontList(
321 ResourceBundle::BoldFont); 322 ui::ResourceBundle::BoldFont);
322 } 323 }
323 return NULL; 324 return NULL;
324 } 325 }
325 326
326 int RecentTabsSubMenuModel::GetMaxWidthForItemAtIndex(int item_index) const { 327 int RecentTabsSubMenuModel::GetMaxWidthForItemAtIndex(int item_index) const {
327 int command_id = GetCommandIdAt(item_index); 328 int command_id = GetCommandIdAt(item_index);
328 if (command_id == IDC_RECENT_TABS_NO_DEVICE_TABS || 329 if (command_id == IDC_RECENT_TABS_NO_DEVICE_TABS ||
329 command_id == kRecentlyClosedHeaderCommandId || 330 command_id == kRecentlyClosedHeaderCommandId ||
330 command_id == kDisabledRecentlyClosedHeaderCommandId) { 331 command_id == kDisabledRecentlyClosedHeaderCommandId) {
331 return -1; 332 return -1;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 if (!service || service->entries().size() == 0) { 379 if (!service || service->entries().size() == 0) {
379 // This is to show a disabled restore tab entry with the accelerator to 380 // This is to show a disabled restore tab entry with the accelerator to
380 // teach users about this command. 381 // teach users about this command.
381 InsertItemWithStringIdAt(++last_local_model_index_, 382 InsertItemWithStringIdAt(++last_local_model_index_,
382 kDisabledRecentlyClosedHeaderCommandId, 383 kDisabledRecentlyClosedHeaderCommandId,
383 IDS_NEW_TAB_RECENTLY_CLOSED); 384 IDS_NEW_TAB_RECENTLY_CLOSED);
384 } else { 385 } else {
385 InsertItemWithStringIdAt(++last_local_model_index_, 386 InsertItemWithStringIdAt(++last_local_model_index_,
386 kRecentlyClosedHeaderCommandId, 387 kRecentlyClosedHeaderCommandId,
387 IDS_NEW_TAB_RECENTLY_CLOSED); 388 IDS_NEW_TAB_RECENTLY_CLOSED);
388 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 389 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
389 SetIcon(last_local_model_index_, 390 SetIcon(last_local_model_index_,
390 rb.GetNativeImageNamed(IDR_RECENTLY_CLOSED_WINDOW)); 391 rb.GetNativeImageNamed(IDR_RECENTLY_CLOSED_WINDOW));
391 392
392 int added_count = 0; 393 int added_count = 0;
393 TabRestoreService::Entries entries = service->entries(); 394 TabRestoreService::Entries entries = service->entries();
394 for (TabRestoreService::Entries::const_iterator it = entries.begin(); 395 for (TabRestoreService::Entries::const_iterator it = entries.begin();
395 it != entries.end() && added_count < kMaxLocalEntries; ++it) { 396 it != entries.end() && added_count < kMaxLocalEntries; ++it) {
396 TabRestoreService::Entry* entry = *it; 397 TabRestoreService::Entry* entry = *it;
397 if (entry->type == TabRestoreService::TAB) { 398 if (entry->type == TabRestoreService::TAB) {
398 TabRestoreService::Tab* tab = 399 TabRestoreService::Tab* tab =
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 int command_id = WindowVectorIndexToCommandId(local_window_items_.size()); 521 int command_id = WindowVectorIndexToCommandId(local_window_items_.size());
521 // See comments in BuildLocalEntries() about usage of InsertItem*At(). 522 // See comments in BuildLocalEntries() about usage of InsertItem*At().
522 if (num_tabs == 1) { 523 if (num_tabs == 1) {
523 InsertItemWithStringIdAt(curr_model_index, command_id, 524 InsertItemWithStringIdAt(curr_model_index, command_id,
524 IDS_NEW_TAB_RECENTLY_CLOSED_WINDOW_SINGLE); 525 IDS_NEW_TAB_RECENTLY_CLOSED_WINDOW_SINGLE);
525 } else { 526 } else {
526 InsertItemAt(curr_model_index, command_id, l10n_util::GetStringFUTF16( 527 InsertItemAt(curr_model_index, command_id, l10n_util::GetStringFUTF16(
527 IDS_NEW_TAB_RECENTLY_CLOSED_WINDOW_MULTIPLE, 528 IDS_NEW_TAB_RECENTLY_CLOSED_WINDOW_MULTIPLE,
528 base::IntToString16(num_tabs))); 529 base::IntToString16(num_tabs)));
529 } 530 }
530 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 531 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
531 SetIcon(curr_model_index, rb.GetNativeImageNamed(IDR_RECENTLY_CLOSED_WINDOW)); 532 SetIcon(curr_model_index, rb.GetNativeImageNamed(IDR_RECENTLY_CLOSED_WINDOW));
532 local_window_items_.push_back(window_id); 533 local_window_items_.push_back(window_id);
533 } 534 }
534 535
535 void RecentTabsSubMenuModel::BuildOtherDevicesTabItem( 536 void RecentTabsSubMenuModel::BuildOtherDevicesTabItem(
536 const std::string& session_tag, 537 const std::string& session_tag,
537 const SessionTab& tab) { 538 const SessionTab& tab) {
538 const sessions::SerializedNavigationEntry& current_navigation = 539 const sessions::SerializedNavigationEntry& current_navigation =
539 tab.navigations.at(tab.normalized_navigation_index()); 540 tab.navigations.at(tab.normalized_navigation_index());
540 TabNavigationItem item(session_tag, tab.tab_id.id(), 541 TabNavigationItem item(session_tag, tab.tab_id.id(),
(...skipping 27 matching lines...) Expand all
568 case browser_sync::SyncedSession::TYPE_CHROMEOS: 569 case browser_sync::SyncedSession::TYPE_CHROMEOS:
569 case browser_sync::SyncedSession::TYPE_WIN: 570 case browser_sync::SyncedSession::TYPE_WIN:
570 case browser_sync::SyncedSession::TYPE_MACOSX: 571 case browser_sync::SyncedSession::TYPE_MACOSX:
571 case browser_sync::SyncedSession::TYPE_LINUX: 572 case browser_sync::SyncedSession::TYPE_LINUX:
572 case browser_sync::SyncedSession::TYPE_OTHER: 573 case browser_sync::SyncedSession::TYPE_OTHER:
573 case browser_sync::SyncedSession::TYPE_UNSET: 574 case browser_sync::SyncedSession::TYPE_UNSET:
574 favicon_id = IDR_LAPTOP_FAVICON; 575 favicon_id = IDR_LAPTOP_FAVICON;
575 break; 576 break;
576 }; 577 };
577 578
578 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 579 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
579 SetIcon(index_in_menu, rb.GetNativeImageNamed(favicon_id)); 580 SetIcon(index_in_menu, rb.GetNativeImageNamed(favicon_id));
580 } 581 }
581 582
582 void RecentTabsSubMenuModel::AddTabFavicon(int command_id, const GURL& url) { 583 void RecentTabsSubMenuModel::AddTabFavicon(int command_id, const GURL& url) {
583 bool is_local_tab = command_id < kFirstOtherDevicesTabCommandId; 584 bool is_local_tab = command_id < kFirstOtherDevicesTabCommandId;
584 int index_in_menu = GetIndexOfCommandId(command_id); 585 int index_in_menu = GetIndexOfCommandId(command_id);
585 586
586 if (!is_local_tab) { 587 if (!is_local_tab) {
587 // If tab has synced favicon, use it. 588 // If tab has synced favicon, use it.
588 // Note that currently, other devices' tabs only have favicons if 589 // Note that currently, other devices' tabs only have favicons if
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 682
682 ui::MenuModelDelegate* menu_model_delegate = GetMenuModelDelegate(); 683 ui::MenuModelDelegate* menu_model_delegate = GetMenuModelDelegate();
683 if (menu_model_delegate) 684 if (menu_model_delegate)
684 menu_model_delegate->OnMenuStructureChanged(); 685 menu_model_delegate->OnMenuStructureChanged();
685 } 686 }
686 687
687 void RecentTabsSubMenuModel::TabRestoreServiceDestroyed( 688 void RecentTabsSubMenuModel::TabRestoreServiceDestroyed(
688 TabRestoreService* service) { 689 TabRestoreService* service) {
689 TabRestoreServiceChanged(service); 690 TabRestoreServiceChanged(service);
690 } 691 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698