| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/views/toolbar_view.h" | 5 #include "chrome/browser/views/toolbar_view.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
| 9 #include "chrome/app/chrome_dll_resource.h" | 9 #include "chrome/app/chrome_dll_resource.h" |
| 10 #include "chrome/browser/browser.h" | 10 #include "chrome/browser/browser.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 | 63 |
| 64 static SkBitmap* kPopupBackgroundEdge = NULL; | 64 static SkBitmap* kPopupBackgroundEdge = NULL; |
| 65 | 65 |
| 66 //////////////////////////////////////////////////////////////////////////////// | 66 //////////////////////////////////////////////////////////////////////////////// |
| 67 // ToolbarView, public: | 67 // ToolbarView, public: |
| 68 | 68 |
| 69 ToolbarView::ToolbarView(Browser* browser) | 69 ToolbarView::ToolbarView(Browser* browser) |
| 70 : model_(browser->toolbar_model()), | 70 : model_(browser->toolbar_model()), |
| 71 back_(NULL), | 71 back_(NULL), |
| 72 forward_(NULL), | 72 forward_(NULL), |
| 73 reload_(NULL), |
| 73 home_(NULL), | 74 home_(NULL), |
| 74 reload_(NULL), | |
| 75 location_bar_(NULL), | 75 location_bar_(NULL), |
| 76 browser_actions_(NULL), | 76 browser_actions_(NULL), |
| 77 app_menu_(NULL), | 77 app_menu_(NULL), |
| 78 profile_(NULL), | 78 profile_(NULL), |
| 79 browser_(browser), | 79 browser_(browser), |
| 80 profiles_menu_contents_(NULL), | 80 profiles_menu_contents_(NULL), |
| 81 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), | 81 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), |
| 82 destroyed_flag_(NULL), | 82 destroyed_flag_(NULL), |
| 83 collapsed_(false) { | 83 collapsed_(false) { |
| 84 SetID(VIEW_ID_TOOLBAR); | 84 SetID(VIEW_ID_TOOLBAR); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 back_->SetID(VIEW_ID_BACK_BUTTON); | 128 back_->SetID(VIEW_ID_BACK_BUTTON); |
| 129 | 129 |
| 130 forward_ = new views::ButtonDropDown(this, forward_menu_model_.get()); | 130 forward_ = new views::ButtonDropDown(this, forward_menu_model_.get()); |
| 131 forward_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | | 131 forward_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | |
| 132 views::Event::EF_MIDDLE_BUTTON_DOWN); | 132 views::Event::EF_MIDDLE_BUTTON_DOWN); |
| 133 forward_->set_tag(IDC_FORWARD); | 133 forward_->set_tag(IDC_FORWARD); |
| 134 forward_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_FORWARD)); | 134 forward_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_FORWARD)); |
| 135 forward_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_FORWARD)); | 135 forward_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_FORWARD)); |
| 136 forward_->SetID(VIEW_ID_FORWARD_BUTTON); | 136 forward_->SetID(VIEW_ID_FORWARD_BUTTON); |
| 137 | 137 |
| 138 home_ = new views::ImageButton(this); | |
| 139 home_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | | |
| 140 views::Event::EF_MIDDLE_BUTTON_DOWN); | |
| 141 home_->set_tag(IDC_HOME); | |
| 142 home_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_HOME)); | |
| 143 home_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_HOME)); | |
| 144 home_->SetID(VIEW_ID_HOME_BUTTON); | |
| 145 | |
| 146 // Have to create this before |reload_| as |reload_|'s constructor needs it. | 138 // Have to create this before |reload_| as |reload_|'s constructor needs it. |
| 147 location_bar_ = new LocationBarView(profile, browser_->command_updater(), | 139 location_bar_ = new LocationBarView(profile, browser_->command_updater(), |
| 148 model_, this, (display_mode_ == DISPLAYMODE_LOCATION) ? | 140 model_, this, (display_mode_ == DISPLAYMODE_LOCATION) ? |
| 149 LocationBarView::POPUP : LocationBarView::NORMAL); | 141 LocationBarView::POPUP : LocationBarView::NORMAL); |
| 150 | 142 |
| 151 reload_ = new ReloadButton(location_bar_, browser_); | 143 reload_ = new ReloadButton(location_bar_, browser_); |
| 152 reload_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | | 144 reload_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | |
| 153 views::Event::EF_MIDDLE_BUTTON_DOWN); | 145 views::Event::EF_MIDDLE_BUTTON_DOWN); |
| 154 reload_->set_tag(IDC_RELOAD); | 146 reload_->set_tag(IDC_RELOAD); |
| 155 reload_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_RELOAD)); | 147 reload_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_RELOAD)); |
| 156 reload_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_RELOAD)); | 148 reload_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_RELOAD)); |
| 157 reload_->SetID(VIEW_ID_RELOAD_BUTTON); | 149 reload_->SetID(VIEW_ID_RELOAD_BUTTON); |
| 158 | 150 |
| 151 home_ = new views::ImageButton(this); |
| 152 home_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | |
| 153 views::Event::EF_MIDDLE_BUTTON_DOWN); |
| 154 home_->set_tag(IDC_HOME); |
| 155 home_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_HOME)); |
| 156 home_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_HOME)); |
| 157 home_->SetID(VIEW_ID_HOME_BUTTON); |
| 158 |
| 159 browser_actions_ = new BrowserActionsContainer(browser_, this); | 159 browser_actions_ = new BrowserActionsContainer(browser_, this); |
| 160 | 160 |
| 161 app_menu_ = new views::MenuButton(NULL, std::wstring(), this, false); | 161 app_menu_ = new views::MenuButton(NULL, std::wstring(), this, false); |
| 162 app_menu_->EnableCanvasFlippingForRTLUI(true); | 162 app_menu_->EnableCanvasFlippingForRTLUI(true); |
| 163 app_menu_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_APP)); | 163 app_menu_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_APP)); |
| 164 app_menu_->SetTooltipText(l10n_util::GetStringF(IDS_APPMENU_TOOLTIP, | 164 app_menu_->SetTooltipText(l10n_util::GetStringF(IDS_APPMENU_TOOLTIP, |
| 165 l10n_util::GetString(IDS_PRODUCT_NAME))); | 165 l10n_util::GetString(IDS_PRODUCT_NAME))); |
| 166 app_menu_->SetID(VIEW_ID_APP_MENU); | 166 app_menu_->SetID(VIEW_ID_APP_MENU); |
| 167 | 167 |
| 168 // Catch the case where the window is created after we detect a new version. | 168 // Catch the case where the window is created after we detect a new version. |
| 169 if (Singleton<UpgradeDetector>::get()->notify_upgrade()) | 169 if (Singleton<UpgradeDetector>::get()->notify_upgrade()) |
| 170 ShowUpgradeReminder(); | 170 ShowUpgradeReminder(); |
| 171 | 171 |
| 172 LoadImages(); | 172 LoadImages(); |
| 173 | 173 |
| 174 // Always add children in order from left to right, for accessibility. | 174 // Always add children in order from left to right, for accessibility. |
| 175 AddChildView(back_); | 175 AddChildView(back_); |
| 176 AddChildView(forward_); | 176 AddChildView(forward_); |
| 177 AddChildView(reload_); |
| 177 AddChildView(home_); | 178 AddChildView(home_); |
| 178 AddChildView(reload_); | |
| 179 AddChildView(location_bar_); | 179 AddChildView(location_bar_); |
| 180 AddChildView(browser_actions_); | 180 AddChildView(browser_actions_); |
| 181 AddChildView(app_menu_); | 181 AddChildView(app_menu_); |
| 182 | 182 |
| 183 location_bar_->Init(); | 183 location_bar_->Init(); |
| 184 show_home_button_.Init(prefs::kShowHomeButton, profile->GetPrefs(), this); | 184 show_home_button_.Init(prefs::kShowHomeButton, profile->GetPrefs(), this); |
| 185 | 185 |
| 186 SetProfile(profile); | 186 SetProfile(profile); |
| 187 } | 187 } |
| 188 | 188 |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 396 browser_->ExecuteCommand(command_id); | 396 browser_->ExecuteCommand(command_id); |
| 397 } | 397 } |
| 398 | 398 |
| 399 //////////////////////////////////////////////////////////////////////////////// | 399 //////////////////////////////////////////////////////////////////////////////// |
| 400 // ToolbarView, views::View overrides: | 400 // ToolbarView, views::View overrides: |
| 401 | 401 |
| 402 gfx::Size ToolbarView::GetPreferredSize() { | 402 gfx::Size ToolbarView::GetPreferredSize() { |
| 403 if (IsDisplayModeNormal()) { | 403 if (IsDisplayModeNormal()) { |
| 404 int min_width = kControlIndent + back_->GetPreferredSize().width() + | 404 int min_width = kControlIndent + back_->GetPreferredSize().width() + |
| 405 forward_->GetPreferredSize().width() + kControlHorizOffset + | 405 forward_->GetPreferredSize().width() + kControlHorizOffset + |
| 406 reload_->GetPreferredSize().width() + kControlHorizOffset + |
| 406 (show_home_button_.GetValue() ? | 407 (show_home_button_.GetValue() ? |
| 407 (home_->GetPreferredSize().width() + kControlHorizOffset) : 0) + | 408 (home_->GetPreferredSize().width() + kControlHorizOffset) : 0) + |
| 408 reload_->GetPreferredSize().width() + kControlHorizOffset + | |
| 409 browser_actions_->GetPreferredSize().width() + | 409 browser_actions_->GetPreferredSize().width() + |
| 410 kMenuButtonOffset + | 410 kMenuButtonOffset + |
| 411 app_menu_->GetPreferredSize().width() + kPaddingRight; | 411 app_menu_->GetPreferredSize().width() + kPaddingRight; |
| 412 | 412 |
| 413 static SkBitmap normal_background; | 413 static SkBitmap normal_background; |
| 414 if (normal_background.isNull()) { | 414 if (normal_background.isNull()) { |
| 415 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 415 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 416 normal_background = *rb.GetBitmapNamed(IDR_CONTENT_TOP_CENTER); | 416 normal_background = *rb.GetBitmapNamed(IDR_CONTENT_TOP_CENTER); |
| 417 } | 417 } |
| 418 | 418 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 // http://crbug.com/5540 | 458 // http://crbug.com/5540 |
| 459 int back_width = back_->GetPreferredSize().width(); | 459 int back_width = back_->GetPreferredSize().width(); |
| 460 if (browser_->window() && browser_->window()->IsMaximized()) | 460 if (browser_->window() && browser_->window()->IsMaximized()) |
| 461 back_->SetBounds(0, child_y, back_width + kControlIndent, child_height); | 461 back_->SetBounds(0, child_y, back_width + kControlIndent, child_height); |
| 462 else | 462 else |
| 463 back_->SetBounds(kControlIndent, child_y, back_width, child_height); | 463 back_->SetBounds(kControlIndent, child_y, back_width, child_height); |
| 464 | 464 |
| 465 forward_->SetBounds(back_->x() + back_->width(), child_y, | 465 forward_->SetBounds(back_->x() + back_->width(), child_y, |
| 466 forward_->GetPreferredSize().width(), child_height); | 466 forward_->GetPreferredSize().width(), child_height); |
| 467 | 467 |
| 468 reload_->SetBounds(forward_->x() + forward_->width() + kControlHorizOffset, |
| 469 child_y, reload_->GetPreferredSize().width(), child_height); |
| 470 |
| 468 if (show_home_button_.GetValue()) { | 471 if (show_home_button_.GetValue()) { |
| 469 home_->SetVisible(true); | 472 home_->SetVisible(true); |
| 470 home_->SetBounds(forward_->x() + forward_->width() + kControlHorizOffset, | 473 home_->SetBounds(reload_->x() + reload_->width() + kControlHorizOffset, |
| 471 child_y, home_->GetPreferredSize().width(), child_height); | 474 child_y, home_->GetPreferredSize().width(), child_height); |
| 472 } else { | 475 } else { |
| 473 home_->SetVisible(false); | 476 home_->SetVisible(false); |
| 474 home_->SetBounds(forward_->x() + forward_->width(), child_y, 0, | 477 home_->SetBounds(reload_->x() + reload_->width(), child_y, 0, child_height); |
| 475 child_height); | |
| 476 } | 478 } |
| 477 | 479 |
| 478 reload_->SetBounds(home_->x() + home_->width() + kControlHorizOffset, child_y, | |
| 479 reload_->GetPreferredSize().width(), child_height); | |
| 480 | |
| 481 int browser_actions_width = browser_actions_->GetPreferredSize().width(); | 480 int browser_actions_width = browser_actions_->GetPreferredSize().width(); |
| 482 int app_menu_width = app_menu_->GetPreferredSize().width(); | 481 int app_menu_width = app_menu_->GetPreferredSize().width(); |
| 483 int location_x = reload_->x() + reload_->width() + kControlHorizOffset; | 482 int location_x = home_->x() + home_->width() + kControlHorizOffset; |
| 484 int available_width = width() - kPaddingRight - app_menu_width - | 483 int available_width = width() - kPaddingRight - app_menu_width - |
| 485 browser_actions_width - kMenuButtonOffset - location_x; | 484 browser_actions_width - kMenuButtonOffset - location_x; |
| 486 | 485 |
| 487 location_bar_->SetBounds(location_x, child_y, std::max(available_width, 0), | 486 location_bar_->SetBounds(location_x, child_y, std::max(available_width, 0), |
| 488 child_height); | 487 child_height); |
| 489 int next_menu_x = | 488 int next_menu_x = |
| 490 location_bar_->x() + location_bar_->width() + kMenuButtonOffset; | 489 location_bar_->x() + location_bar_->width() + kMenuButtonOffset; |
| 491 | 490 |
| 492 browser_actions_->SetBounds(next_menu_x, 0, browser_actions_width, height()); | 491 browser_actions_->SetBounds(next_menu_x, 0, browser_actions_width, height()); |
| 493 // The browser actions need to do a layout explicitly, because when an | 492 // The browser actions need to do a layout explicitly, because when an |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 570 tp->GetBitmapNamed(IDR_FORWARD)); | 569 tp->GetBitmapNamed(IDR_FORWARD)); |
| 571 forward_->SetImage(views::CustomButton::BS_HOT, | 570 forward_->SetImage(views::CustomButton::BS_HOT, |
| 572 tp->GetBitmapNamed(IDR_FORWARD_H)); | 571 tp->GetBitmapNamed(IDR_FORWARD_H)); |
| 573 forward_->SetImage(views::CustomButton::BS_PUSHED, | 572 forward_->SetImage(views::CustomButton::BS_PUSHED, |
| 574 tp->GetBitmapNamed(IDR_FORWARD_P)); | 573 tp->GetBitmapNamed(IDR_FORWARD_P)); |
| 575 forward_->SetImage(views::CustomButton::BS_DISABLED, | 574 forward_->SetImage(views::CustomButton::BS_DISABLED, |
| 576 tp->GetBitmapNamed(IDR_FORWARD_D)); | 575 tp->GetBitmapNamed(IDR_FORWARD_D)); |
| 577 forward_->SetBackground(color, background, | 576 forward_->SetBackground(color, background, |
| 578 tp->GetBitmapNamed(IDR_FORWARD_MASK)); | 577 tp->GetBitmapNamed(IDR_FORWARD_MASK)); |
| 579 | 578 |
| 580 home_->SetImage(views::CustomButton::BS_NORMAL, tp->GetBitmapNamed(IDR_HOME)); | |
| 581 home_->SetImage(views::CustomButton::BS_HOT, tp->GetBitmapNamed(IDR_HOME_H)); | |
| 582 home_->SetImage(views::CustomButton::BS_PUSHED, | |
| 583 tp->GetBitmapNamed(IDR_HOME_P)); | |
| 584 home_->SetBackground(color, background, | |
| 585 tp->GetBitmapNamed(IDR_BUTTON_MASK)); | |
| 586 | |
| 587 reload_->SetImage(views::CustomButton::BS_NORMAL, | 579 reload_->SetImage(views::CustomButton::BS_NORMAL, |
| 588 tp->GetBitmapNamed(IDR_RELOAD)); | 580 tp->GetBitmapNamed(IDR_RELOAD)); |
| 589 reload_->SetImage(views::CustomButton::BS_HOT, | 581 reload_->SetImage(views::CustomButton::BS_HOT, |
| 590 tp->GetBitmapNamed(IDR_RELOAD_H)); | 582 tp->GetBitmapNamed(IDR_RELOAD_H)); |
| 591 reload_->SetImage(views::CustomButton::BS_PUSHED, | 583 reload_->SetImage(views::CustomButton::BS_PUSHED, |
| 592 tp->GetBitmapNamed(IDR_RELOAD_P)); | 584 tp->GetBitmapNamed(IDR_RELOAD_P)); |
| 593 reload_->SetToggledImage(views::CustomButton::BS_NORMAL, | 585 reload_->SetToggledImage(views::CustomButton::BS_NORMAL, |
| 594 tp->GetBitmapNamed(IDR_STOP)); | 586 tp->GetBitmapNamed(IDR_STOP)); |
| 595 reload_->SetToggledImage(views::CustomButton::BS_HOT, | 587 reload_->SetToggledImage(views::CustomButton::BS_HOT, |
| 596 tp->GetBitmapNamed(IDR_STOP_H)); | 588 tp->GetBitmapNamed(IDR_STOP_H)); |
| 597 reload_->SetToggledImage(views::CustomButton::BS_PUSHED, | 589 reload_->SetToggledImage(views::CustomButton::BS_PUSHED, |
| 598 tp->GetBitmapNamed(IDR_STOP_P)); | 590 tp->GetBitmapNamed(IDR_STOP_P)); |
| 599 reload_->SetBackground(color, background, | 591 reload_->SetBackground(color, background, |
| 600 tp->GetBitmapNamed(IDR_BUTTON_MASK)); | 592 tp->GetBitmapNamed(IDR_BUTTON_MASK)); |
| 601 | 593 |
| 594 home_->SetImage(views::CustomButton::BS_NORMAL, tp->GetBitmapNamed(IDR_HOME)); |
| 595 home_->SetImage(views::CustomButton::BS_HOT, tp->GetBitmapNamed(IDR_HOME_H)); |
| 596 home_->SetImage(views::CustomButton::BS_PUSHED, |
| 597 tp->GetBitmapNamed(IDR_HOME_P)); |
| 598 home_->SetBackground(color, background, |
| 599 tp->GetBitmapNamed(IDR_BUTTON_MASK)); |
| 600 |
| 602 app_menu_->SetIcon(GetAppMenuIcon()); | 601 app_menu_->SetIcon(GetAppMenuIcon()); |
| 603 } | 602 } |
| 604 | 603 |
| 605 void ToolbarView::ShowUpgradeReminder() { | 604 void ToolbarView::ShowUpgradeReminder() { |
| 606 update_reminder_animation_.reset(new SlideAnimation(this)); | 605 update_reminder_animation_.reset(new SlideAnimation(this)); |
| 607 update_reminder_animation_->SetSlideDuration(kPulseDuration); | 606 update_reminder_animation_->SetSlideDuration(kPulseDuration); |
| 608 | 607 |
| 609 // Then start the recurring timer for pulsating it. | 608 // Then start the recurring timer for pulsating it. |
| 610 upgrade_reminder_pulse_timer_.Start( | 609 upgrade_reminder_pulse_timer_.Start( |
| 611 base::TimeDelta::FromMilliseconds(kPulsateEveryMs), | 610 base::TimeDelta::FromMilliseconds(kPulsateEveryMs), |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 655 *tp->GetBitmapNamed(IDR_UPGRADE_DOT_INACTIVE), | 654 *tp->GetBitmapNamed(IDR_UPGRADE_DOT_INACTIVE), |
| 656 *tp->GetBitmapNamed(IDR_UPGRADE_DOT_ACTIVE), | 655 *tp->GetBitmapNamed(IDR_UPGRADE_DOT_ACTIVE), |
| 657 value); | 656 value); |
| 658 } | 657 } |
| 659 | 658 |
| 660 canvas->DrawBitmapInt(badge, kUpgradeDotOffset, | 659 canvas->DrawBitmapInt(badge, kUpgradeDotOffset, |
| 661 icon.height() - badge.height()); | 660 icon.height() - badge.height()); |
| 662 | 661 |
| 663 return canvas->ExtractBitmap(); | 662 return canvas->ExtractBitmap(); |
| 664 } | 663 } |
| OLD | NEW |