| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/wrench_menu_model.h" | 5 #include "chrome/browser/ui/toolbar/wrench_menu_model.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 | 211 |
| 212 //////////////////////////////////////////////////////////////////////////////// | 212 //////////////////////////////////////////////////////////////////////////////// |
| 213 // WrenchMenuModel | 213 // WrenchMenuModel |
| 214 | 214 |
| 215 WrenchMenuModel::WrenchMenuModel(ui::AcceleratorProvider* provider, | 215 WrenchMenuModel::WrenchMenuModel(ui::AcceleratorProvider* provider, |
| 216 Browser* browser) | 216 Browser* browser) |
| 217 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)), | 217 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)), |
| 218 provider_(provider), | 218 provider_(provider), |
| 219 browser_(browser), | 219 browser_(browser), |
| 220 tabstrip_model_(browser_->tabstrip_model()) { | 220 tabstrip_model_(browser_->tabstrip_model()) { |
| 221 Build(); | 221 #if defined(OS_CHROMEOS) |
| 222 BuildCrosMenu(); |
| 223 #else |
| 224 BuildBrowserMenu(); |
| 225 #endif |
| 222 UpdateZoomControls(); | 226 UpdateZoomControls(); |
| 223 | 227 |
| 224 tabstrip_model_->AddObserver(this); | 228 tabstrip_model_->AddObserver(this); |
| 225 | 229 |
| 226 registrar_.Add(this, content::NOTIFICATION_ZOOM_LEVEL_CHANGED, | 230 registrar_.Add(this, content::NOTIFICATION_ZOOM_LEVEL_CHANGED, |
| 227 Source<HostZoomMap>(browser_->profile()->GetHostZoomMap())); | 231 Source<HostZoomMap>(browser_->profile()->GetHostZoomMap())); |
| 228 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 232 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| 229 NotificationService::AllSources()); | 233 NotificationService::AllSources()); |
| 230 } | 234 } |
| 231 | 235 |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 } | 403 } |
| 400 | 404 |
| 401 // For testing. | 405 // For testing. |
| 402 WrenchMenuModel::WrenchMenuModel() | 406 WrenchMenuModel::WrenchMenuModel() |
| 403 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)), | 407 : ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)), |
| 404 provider_(NULL), | 408 provider_(NULL), |
| 405 browser_(NULL), | 409 browser_(NULL), |
| 406 tabstrip_model_(NULL) { | 410 tabstrip_model_(NULL) { |
| 407 } | 411 } |
| 408 | 412 |
| 409 void WrenchMenuModel::Build() { | 413 void WrenchMenuModel::BuildBrowserMenu() { |
| 410 AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); | 414 AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); |
| 411 AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW); | 415 AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW); |
| 412 #if defined(OS_CHROMEOS) | |
| 413 if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) | |
| 414 AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW); | |
| 415 #else | |
| 416 AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW); | 416 AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW); |
| 417 #endif | |
| 418 | 417 |
| 419 AddSeparator(); | 418 AddSeparator(); |
| 420 #if defined(OS_POSIX) && !defined(TOOLKIT_VIEWS) | 419 #if defined(OS_POSIX) && !defined(TOOLKIT_VIEWS) |
| 421 // WARNING: Mac does not use the ButtonMenuItemModel, but instead defines the | 420 // WARNING: Mac does not use the ButtonMenuItemModel, but instead defines the |
| 422 // layout for this menu item in Toolbar.xib. It does, however, use the | 421 // layout for this menu item in Toolbar.xib. It does, however, use the |
| 423 // command_id value from AddButtonItem() to identify this special item. | 422 // command_id value from AddButtonItem() to identify this special item. |
| 424 edit_menu_item_model_.reset(new ui::ButtonMenuItemModel(IDS_EDIT, this)); | 423 edit_menu_item_model_.reset(new ui::ButtonMenuItemModel(IDS_EDIT, this)); |
| 425 edit_menu_item_model_->AddGroupItemWithStringId(IDC_CUT, IDS_CUT); | 424 edit_menu_item_model_->AddGroupItemWithStringId(IDC_CUT, IDS_CUT); |
| 426 edit_menu_item_model_->AddGroupItemWithStringId(IDC_COPY, IDS_COPY); | 425 edit_menu_item_model_->AddGroupItemWithStringId(IDC_COPY, IDS_COPY); |
| 427 edit_menu_item_model_->AddGroupItemWithStringId(IDC_PASTE, IDS_PASTE); | 426 edit_menu_item_model_->AddGroupItemWithStringId(IDC_PASTE, IDS_PASTE); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 | 461 |
| 463 AddSeparator(); | 462 AddSeparator(); |
| 464 | 463 |
| 465 bookmark_sub_menu_model_.reset(new BookmarkSubMenuModel(this, browser_)); | 464 bookmark_sub_menu_model_.reset(new BookmarkSubMenuModel(this, browser_)); |
| 466 AddSubMenuWithStringId(IDC_BOOKMARKS_MENU, IDS_BOOKMARKS_MENU, | 465 AddSubMenuWithStringId(IDC_BOOKMARKS_MENU, IDS_BOOKMARKS_MENU, |
| 467 bookmark_sub_menu_model_.get()); | 466 bookmark_sub_menu_model_.get()); |
| 468 AddItemWithStringId(IDC_SHOW_HISTORY, IDS_SHOW_HISTORY); | 467 AddItemWithStringId(IDC_SHOW_HISTORY, IDS_SHOW_HISTORY); |
| 469 AddItemWithStringId(IDC_SHOW_DOWNLOADS, IDS_SHOW_DOWNLOADS); | 468 AddItemWithStringId(IDC_SHOW_DOWNLOADS, IDS_SHOW_DOWNLOADS); |
| 470 AddSeparator(); | 469 AddSeparator(); |
| 471 | 470 |
| 472 #if !defined(OS_CHROMEOS) | |
| 473 if (browser_->profile()->GetOriginalProfile()->IsSyncAccessible()) { | 471 if (browser_->profile()->GetOriginalProfile()->IsSyncAccessible()) { |
| 474 const string16 short_product_name = | 472 const string16 short_product_name = |
| 475 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME); | 473 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME); |
| 476 AddItem(IDC_SHOW_SYNC_SETUP, l10n_util::GetStringFUTF16( | 474 AddItem(IDC_SHOW_SYNC_SETUP, l10n_util::GetStringFUTF16( |
| 477 IDS_SHOW_SYNC_SETUP, short_product_name)); | 475 IDS_SHOW_SYNC_SETUP, short_product_name)); |
| 478 AddSeparator(); | 476 AddSeparator(); |
| 479 } | 477 } |
| 480 #endif | |
| 481 | 478 |
| 482 #if defined(OS_CHROMEOS) | 479 #if defined(OS_MACOSX) |
| 483 AddItemWithStringId(IDC_OPTIONS, IDS_SETTINGS); | |
| 484 #elif defined(OS_MACOSX) | |
| 485 AddItemWithStringId(IDC_OPTIONS, IDS_PREFERENCES); | 480 AddItemWithStringId(IDC_OPTIONS, IDS_PREFERENCES); |
| 486 #elif defined(TOOLKIT_USES_GTK) | 481 #elif defined(TOOLKIT_USES_GTK) |
| 487 string16 preferences = gtk_util::GetStockPreferencesMenuLabel(); | 482 string16 preferences = gtk_util::GetStockPreferencesMenuLabel(); |
| 488 if (!preferences.empty()) | 483 if (!preferences.empty()) |
| 489 AddItem(IDC_OPTIONS, preferences); | 484 AddItem(IDC_OPTIONS, preferences); |
| 490 else | 485 else |
| 491 AddItemWithStringId(IDC_OPTIONS, IDS_PREFERENCES); | 486 AddItemWithStringId(IDC_OPTIONS, IDS_PREFERENCES); |
| 492 #else | 487 #else |
| 493 AddItemWithStringId(IDC_OPTIONS, IDS_OPTIONS); | 488 AddItemWithStringId(IDC_OPTIONS, IDS_OPTIONS); |
| 494 #endif | 489 #endif |
| 495 | 490 |
| 496 #if defined(OS_CHROMEOS) | |
| 497 const string16 product_name = l10n_util::GetStringUTF16(IDS_PRODUCT_OS_NAME); | |
| 498 #else | |
| 499 const string16 product_name = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME); | 491 const string16 product_name = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME); |
| 500 #endif | |
| 501 AddItem(IDC_ABOUT, l10n_util::GetStringFUTF16(IDS_ABOUT, product_name)); | 492 AddItem(IDC_ABOUT, l10n_util::GetStringFUTF16(IDS_ABOUT, product_name)); |
| 502 string16 num_background_pages = base::FormatNumber( | 493 string16 num_background_pages = base::FormatNumber( |
| 503 TaskManager::GetBackgroundPageCount()); | 494 TaskManager::GetBackgroundPageCount()); |
| 504 AddItem(IDC_VIEW_BACKGROUND_PAGES, l10n_util::GetStringFUTF16( | 495 AddItem(IDC_VIEW_BACKGROUND_PAGES, l10n_util::GetStringFUTF16( |
| 505 IDS_VIEW_BACKGROUND_PAGES, num_background_pages)); | 496 IDS_VIEW_BACKGROUND_PAGES, num_background_pages)); |
| 506 AddItem(IDC_UPGRADE_DIALOG, l10n_util::GetStringFUTF16( | 497 AddItem(IDC_UPGRADE_DIALOG, l10n_util::GetStringFUTF16( |
| 507 IDS_UPDATE_NOW, product_name)); | 498 IDS_UPDATE_NOW, product_name)); |
| 508 AddItem(IDC_VIEW_INCOMPATIBILITIES, l10n_util::GetStringUTF16( | 499 AddItem(IDC_VIEW_INCOMPATIBILITIES, l10n_util::GetStringUTF16( |
| 509 IDS_VIEW_INCOMPATIBILITIES)); | 500 IDS_VIEW_INCOMPATIBILITIES)); |
| 510 | 501 |
| 511 #if defined(OS_WIN) | 502 #if defined(OS_WIN) |
| 512 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 503 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 513 SetIcon(GetIndexOfCommandId(IDC_VIEW_INCOMPATIBILITIES), | 504 SetIcon(GetIndexOfCommandId(IDC_VIEW_INCOMPATIBILITIES), |
| 514 *rb.GetBitmapNamed(IDR_CONFLICT_MENU)); | 505 *rb.GetBitmapNamed(IDR_CONFLICT_MENU)); |
| 515 #endif | 506 #endif |
| 516 | 507 |
| 517 AddItemWithStringId(IDC_HELP_PAGE, IDS_HELP_PAGE); | 508 AddItemWithStringId(IDC_HELP_PAGE, IDS_HELP_PAGE); |
| 518 #if defined(OS_CHROMEOS) | 509 |
| 510 if (browser_defaults::kShowExitMenuItem) { |
| 511 AddSeparator(); |
| 512 AddItemWithStringId(IDC_EXIT, IDS_EXIT); |
| 513 } |
| 514 } |
| 515 |
| 516 void WrenchMenuModel::BuildCrosMenu() { |
| 517 #if !defined(TOUCH_UI) |
| 518 AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); |
| 519 AddItemWithStringId(IDC_NEW_WINDOW, IDS_NEW_WINDOW); |
| 520 if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) |
| 521 AddItemWithStringId(IDC_NEW_INCOGNITO_WINDOW, IDS_NEW_INCOGNITO_WINDOW); |
| 522 |
| 523 AddSeparator(); |
| 524 CreateCutCopyPaste(); |
| 525 |
| 526 AddSeparator(); |
| 527 CreateZoomFullscreen(); |
| 528 |
| 529 AddSeparator(); |
| 530 AddItemWithStringId(IDC_SAVE_PAGE, IDS_SAVE_PAGE); |
| 531 #endif // !TOUCH_UI |
| 532 AddItemWithStringId(IDC_FIND, IDS_FIND); |
| 533 AddItemWithStringId(IDC_PRINT, IDS_PRINT); |
| 534 |
| 535 tools_menu_model_.reset(new ToolsMenuModel(this, browser_)); |
| 536 AddSubMenuWithStringId(IDC_ZOOM_MENU, IDS_TOOLS_MENU, |
| 537 tools_menu_model_.get()); |
| 538 |
| 539 AddSeparator(); |
| 540 |
| 541 bookmark_sub_menu_model_.reset(new BookmarkSubMenuModel(this, browser_)); |
| 542 AddSubMenuWithStringId(IDC_BOOKMARKS_MENU, IDS_BOOKMARKS_MENU, |
| 543 bookmark_sub_menu_model_.get()); |
| 544 AddItemWithStringId(IDC_SHOW_HISTORY, IDS_SHOW_HISTORY); |
| 545 #if !defined(TOUCH_UI) |
| 546 AddItemWithStringId(IDC_SHOW_DOWNLOADS, IDS_SHOW_DOWNLOADS); |
| 547 #endif // !TOUCH_UI |
| 548 AddSeparator(); |
| 549 |
| 550 AddItemWithStringId(IDC_OPTIONS, IDS_SETTINGS); |
| 551 const string16 product_name = l10n_util::GetStringUTF16(IDS_PRODUCT_OS_NAME); |
| 552 AddItem(IDC_ABOUT, l10n_util::GetStringFUTF16(IDS_ABOUT, product_name)); |
| 553 string16 num_background_pages = base::FormatNumber( |
| 554 TaskManager::GetBackgroundPageCount()); |
| 555 AddItem(IDC_VIEW_BACKGROUND_PAGES, |
| 556 l10n_util::GetStringFUTF16(IDS_VIEW_BACKGROUND_PAGES, |
| 557 num_background_pages)); |
| 558 AddItem(IDC_UPGRADE_DIALOG, |
| 559 l10n_util::GetStringFUTF16(IDS_UPDATE_NOW, product_name)); |
| 560 AddItem(IDC_VIEW_INCOMPATIBILITIES, |
| 561 l10n_util::GetStringUTF16(IDS_VIEW_INCOMPATIBILITIES)); |
| 562 |
| 563 // Use an icon for IDC_HELP_PAGE menu item. |
| 564 AddItemWithStringId(IDC_HELP_PAGE, IDS_HELP_PAGE); |
| 519 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 565 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 520 // Use an icon for IDC_HELP_PAGE menu item. | |
| 521 SetIcon(GetIndexOfCommandId(IDC_HELP_PAGE), | 566 SetIcon(GetIndexOfCommandId(IDC_HELP_PAGE), |
| 522 *rb.GetBitmapNamed(IDR_HELP_MENU)); | 567 *rb.GetBitmapNamed(IDR_HELP_MENU)); |
| 523 | 568 |
| 524 // Show IDC_FEEDBACK in top-tier wrench menu for ChromeOS. | 569 // Show IDC_FEEDBACK in top-tier wrench menu for ChromeOS. |
| 525 AddItemWithStringId(IDC_FEEDBACK, IDS_FEEDBACK); | 570 AddItemWithStringId(IDC_FEEDBACK, IDS_FEEDBACK); |
| 526 #endif | 571 AddSeparator(); |
| 527 | 572 |
| 528 if (browser_defaults::kShowExitMenuItem) { | 573 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) { |
| 529 AddSeparator(); | 574 AddItemWithStringId(IDC_EXIT, IDS_EXIT_GUEST_MODE); |
| 530 #if defined(OS_CHROMEOS) | 575 } else { |
| 531 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) { | 576 AddItemWithStringId(IDC_EXIT, IDS_SIGN_OUT); |
| 532 AddItemWithStringId(IDC_EXIT, IDS_EXIT_GUEST_MODE); | |
| 533 } else { | |
| 534 AddItemWithStringId(IDC_EXIT, IDS_SIGN_OUT); | |
| 535 } | |
| 536 #else | |
| 537 AddItemWithStringId(IDC_EXIT, IDS_EXIT); | |
| 538 #endif | |
| 539 } | 577 } |
| 540 } | 578 } |
| 541 | 579 |
| 542 void WrenchMenuModel::CreateCutCopyPaste() { | 580 void WrenchMenuModel::CreateCutCopyPaste() { |
| 543 // WARNING: views/wrench_menu assumes these items are added in this order. If | 581 // WARNING: views/wrench_menu assumes these items are added in this order. If |
| 544 // you change the order you'll need to update wrench_menu as well. | 582 // you change the order you'll need to update wrench_menu as well. |
| 545 AddItemWithStringId(IDC_CUT, IDS_CUT); | 583 AddItemWithStringId(IDC_CUT, IDS_CUT); |
| 546 AddItemWithStringId(IDC_COPY, IDS_COPY); | 584 AddItemWithStringId(IDC_COPY, IDS_COPY); |
| 547 AddItemWithStringId(IDC_PASTE, IDS_PASTE); | 585 AddItemWithStringId(IDC_PASTE, IDS_PASTE); |
| 548 } | 586 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 564 &enable_increment, &enable_decrement); | 602 &enable_increment, &enable_decrement); |
| 565 } | 603 } |
| 566 zoom_label_ = l10n_util::GetStringFUTF16( | 604 zoom_label_ = l10n_util::GetStringFUTF16( |
| 567 IDS_ZOOM_PERCENT, base::IntToString16(zoom_percent)); | 605 IDS_ZOOM_PERCENT, base::IntToString16(zoom_percent)); |
| 568 } | 606 } |
| 569 | 607 |
| 570 string16 WrenchMenuModel::GetSyncMenuLabel() const { | 608 string16 WrenchMenuModel::GetSyncMenuLabel() const { |
| 571 return sync_ui_util::GetSyncMenuLabel( | 609 return sync_ui_util::GetSyncMenuLabel( |
| 572 browser_->profile()->GetOriginalProfile()->GetProfileSyncService()); | 610 browser_->profile()->GetOriginalProfile()->GetProfileSyncService()); |
| 573 } | 611 } |
| OLD | NEW |