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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 | 60 |
61 static SkBitmap* kPopupBackgroundEdge = NULL; | 61 static SkBitmap* kPopupBackgroundEdge = NULL; |
62 | 62 |
63 //////////////////////////////////////////////////////////////////////////////// | 63 //////////////////////////////////////////////////////////////////////////////// |
64 // ToolbarView, public: | 64 // ToolbarView, public: |
65 | 65 |
66 ToolbarView::ToolbarView(Browser* browser) | 66 ToolbarView::ToolbarView(Browser* browser) |
67 : model_(browser->toolbar_model()), | 67 : model_(browser->toolbar_model()), |
68 back_(NULL), | 68 back_(NULL), |
69 forward_(NULL), | 69 forward_(NULL), |
| 70 reload_(NULL), |
70 home_(NULL), | 71 home_(NULL), |
71 reload_(NULL), | |
72 location_bar_(NULL), | 72 location_bar_(NULL), |
73 browser_actions_(NULL), | 73 browser_actions_(NULL), |
74 app_menu_(NULL), | 74 app_menu_(NULL), |
75 profile_(NULL), | 75 profile_(NULL), |
76 browser_(browser), | 76 browser_(browser), |
77 profiles_menu_contents_(NULL), | 77 profiles_menu_contents_(NULL), |
78 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), | 78 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)), |
79 destroyed_flag_(NULL) { | 79 destroyed_flag_(NULL) { |
80 SetID(VIEW_ID_TOOLBAR); | 80 SetID(VIEW_ID_TOOLBAR); |
81 | 81 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 back_->SetID(VIEW_ID_BACK_BUTTON); | 124 back_->SetID(VIEW_ID_BACK_BUTTON); |
125 | 125 |
126 forward_ = new views::ButtonDropDown(this, forward_menu_model_.get()); | 126 forward_ = new views::ButtonDropDown(this, forward_menu_model_.get()); |
127 forward_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | | 127 forward_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | |
128 views::Event::EF_MIDDLE_BUTTON_DOWN); | 128 views::Event::EF_MIDDLE_BUTTON_DOWN); |
129 forward_->set_tag(IDC_FORWARD); | 129 forward_->set_tag(IDC_FORWARD); |
130 forward_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_FORWARD)); | 130 forward_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_FORWARD)); |
131 forward_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_FORWARD)); | 131 forward_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_FORWARD)); |
132 forward_->SetID(VIEW_ID_FORWARD_BUTTON); | 132 forward_->SetID(VIEW_ID_FORWARD_BUTTON); |
133 | 133 |
134 home_ = new views::ImageButton(this); | |
135 home_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | | |
136 views::Event::EF_MIDDLE_BUTTON_DOWN); | |
137 home_->set_tag(IDC_HOME); | |
138 home_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_HOME)); | |
139 home_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_HOME)); | |
140 home_->SetID(VIEW_ID_HOME_BUTTON); | |
141 | |
142 // Have to create this before |reload_| as |reload_|'s constructor needs it. | 134 // Have to create this before |reload_| as |reload_|'s constructor needs it. |
143 location_bar_ = new LocationBarView(profile, browser_->command_updater(), | 135 location_bar_ = new LocationBarView(profile, browser_->command_updater(), |
144 model_, this, (display_mode_ == DISPLAYMODE_LOCATION) ? | 136 model_, this, (display_mode_ == DISPLAYMODE_LOCATION) ? |
145 LocationBarView::POPUP : LocationBarView::NORMAL); | 137 LocationBarView::POPUP : LocationBarView::NORMAL); |
146 | 138 |
147 reload_ = new ReloadButton(location_bar_, browser_); | 139 reload_ = new ReloadButton(location_bar_, browser_); |
148 reload_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | | 140 reload_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | |
149 views::Event::EF_MIDDLE_BUTTON_DOWN); | 141 views::Event::EF_MIDDLE_BUTTON_DOWN); |
150 reload_->set_tag(IDC_RELOAD); | 142 reload_->set_tag(IDC_RELOAD); |
151 reload_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_RELOAD)); | 143 reload_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_RELOAD)); |
152 reload_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_RELOAD)); | 144 reload_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_RELOAD)); |
153 reload_->SetID(VIEW_ID_RELOAD_BUTTON); | 145 reload_->SetID(VIEW_ID_RELOAD_BUTTON); |
154 | 146 |
| 147 home_ = new views::ImageButton(this); |
| 148 home_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN | |
| 149 views::Event::EF_MIDDLE_BUTTON_DOWN); |
| 150 home_->set_tag(IDC_HOME); |
| 151 home_->SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_HOME)); |
| 152 home_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_HOME)); |
| 153 home_->SetID(VIEW_ID_HOME_BUTTON); |
| 154 |
155 browser_actions_ = new BrowserActionsContainer(browser_, this); | 155 browser_actions_ = new BrowserActionsContainer(browser_, this); |
156 | 156 |
157 app_menu_ = new views::MenuButton(NULL, std::wstring(), this, false); | 157 app_menu_ = new views::MenuButton(NULL, std::wstring(), this, false); |
158 app_menu_->EnableCanvasFlippingForRTLUI(true); | 158 app_menu_->EnableCanvasFlippingForRTLUI(true); |
159 app_menu_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_APP)); | 159 app_menu_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_APP)); |
160 app_menu_->SetTooltipText(l10n_util::GetStringF(IDS_APPMENU_TOOLTIP, | 160 app_menu_->SetTooltipText(l10n_util::GetStringF(IDS_APPMENU_TOOLTIP, |
161 l10n_util::GetString(IDS_PRODUCT_NAME))); | 161 l10n_util::GetString(IDS_PRODUCT_NAME))); |
162 app_menu_->SetID(VIEW_ID_APP_MENU); | 162 app_menu_->SetID(VIEW_ID_APP_MENU); |
163 | 163 |
164 // Catch the case where the window is created after we detect a new version. | 164 // Catch the case where the window is created after we detect a new version. |
165 if (Singleton<UpgradeDetector>::get()->notify_upgrade()) | 165 if (Singleton<UpgradeDetector>::get()->notify_upgrade()) |
166 ShowUpgradeReminder(); | 166 ShowUpgradeReminder(); |
167 | 167 |
168 LoadImages(); | 168 LoadImages(); |
169 | 169 |
170 // Always add children in order from left to right, for accessibility. | 170 // Always add children in order from left to right, for accessibility. |
171 AddChildView(back_); | 171 AddChildView(back_); |
172 AddChildView(forward_); | 172 AddChildView(forward_); |
| 173 AddChildView(reload_); |
173 AddChildView(home_); | 174 AddChildView(home_); |
174 AddChildView(reload_); | |
175 AddChildView(location_bar_); | 175 AddChildView(location_bar_); |
176 AddChildView(browser_actions_); | 176 AddChildView(browser_actions_); |
177 AddChildView(app_menu_); | 177 AddChildView(app_menu_); |
178 | 178 |
179 location_bar_->Init(); | 179 location_bar_->Init(); |
180 show_home_button_.Init(prefs::kShowHomeButton, profile->GetPrefs(), this); | 180 show_home_button_.Init(prefs::kShowHomeButton, profile->GetPrefs(), this); |
181 | 181 |
182 SetProfile(profile); | 182 SetProfile(profile); |
183 } | 183 } |
184 | 184 |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 browser_->ExecuteCommand(command_id); | 381 browser_->ExecuteCommand(command_id); |
382 } | 382 } |
383 | 383 |
384 //////////////////////////////////////////////////////////////////////////////// | 384 //////////////////////////////////////////////////////////////////////////////// |
385 // ToolbarView, views::View overrides: | 385 // ToolbarView, views::View overrides: |
386 | 386 |
387 gfx::Size ToolbarView::GetPreferredSize() { | 387 gfx::Size ToolbarView::GetPreferredSize() { |
388 if (IsDisplayModeNormal()) { | 388 if (IsDisplayModeNormal()) { |
389 int min_width = kControlIndent + back_->GetPreferredSize().width() + | 389 int min_width = kControlIndent + back_->GetPreferredSize().width() + |
390 forward_->GetPreferredSize().width() + kControlHorizOffset + | 390 forward_->GetPreferredSize().width() + kControlHorizOffset + |
| 391 reload_->GetPreferredSize().width() + kControlHorizOffset + |
391 (show_home_button_.GetValue() ? | 392 (show_home_button_.GetValue() ? |
392 (home_->GetPreferredSize().width() + kControlHorizOffset) : 0) + | 393 (home_->GetPreferredSize().width() + kControlHorizOffset) : 0) + |
393 reload_->GetPreferredSize().width() + kControlHorizOffset + | |
394 browser_actions_->GetPreferredSize().width() + | 394 browser_actions_->GetPreferredSize().width() + |
395 kMenuButtonOffset + | 395 kMenuButtonOffset + |
396 app_menu_->GetPreferredSize().width() + kPaddingRight; | 396 app_menu_->GetPreferredSize().width() + kPaddingRight; |
397 | 397 |
398 static SkBitmap normal_background; | 398 static SkBitmap normal_background; |
399 if (normal_background.isNull()) { | 399 if (normal_background.isNull()) { |
400 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 400 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
401 normal_background = *rb.GetBitmapNamed(IDR_CONTENT_TOP_CENTER); | 401 normal_background = *rb.GetBitmapNamed(IDR_CONTENT_TOP_CENTER); |
402 } | 402 } |
403 | 403 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 // http://crbug.com/5540 | 438 // http://crbug.com/5540 |
439 int back_width = back_->GetPreferredSize().width(); | 439 int back_width = back_->GetPreferredSize().width(); |
440 if (browser_->window() && browser_->window()->IsMaximized()) | 440 if (browser_->window() && browser_->window()->IsMaximized()) |
441 back_->SetBounds(0, child_y, back_width + kControlIndent, child_height); | 441 back_->SetBounds(0, child_y, back_width + kControlIndent, child_height); |
442 else | 442 else |
443 back_->SetBounds(kControlIndent, child_y, back_width, child_height); | 443 back_->SetBounds(kControlIndent, child_y, back_width, child_height); |
444 | 444 |
445 forward_->SetBounds(back_->x() + back_->width(), child_y, | 445 forward_->SetBounds(back_->x() + back_->width(), child_y, |
446 forward_->GetPreferredSize().width(), child_height); | 446 forward_->GetPreferredSize().width(), child_height); |
447 | 447 |
| 448 reload_->SetBounds(forward_->x() + forward_->width() + kControlHorizOffset, |
| 449 child_y, reload_->GetPreferredSize().width(), child_height); |
| 450 |
448 if (show_home_button_.GetValue()) { | 451 if (show_home_button_.GetValue()) { |
449 home_->SetVisible(true); | 452 home_->SetVisible(true); |
450 home_->SetBounds(forward_->x() + forward_->width() + kControlHorizOffset, | 453 home_->SetBounds(reload_->x() + reload_->width() + kControlHorizOffset, |
451 child_y, home_->GetPreferredSize().width(), child_height); | 454 child_y, home_->GetPreferredSize().width(), child_height); |
452 } else { | 455 } else { |
453 home_->SetVisible(false); | 456 home_->SetVisible(false); |
454 home_->SetBounds(forward_->x() + forward_->width(), child_y, 0, | 457 home_->SetBounds(reload_->x() + reload_->width(), child_y, 0, child_height); |
455 child_height); | |
456 } | 458 } |
457 | 459 |
458 reload_->SetBounds(home_->x() + home_->width() + kControlHorizOffset, child_y, | |
459 reload_->GetPreferredSize().width(), child_height); | |
460 | |
461 int browser_actions_width = browser_actions_->GetPreferredSize().width(); | 460 int browser_actions_width = browser_actions_->GetPreferredSize().width(); |
462 int app_menu_width = app_menu_->GetPreferredSize().width(); | 461 int app_menu_width = app_menu_->GetPreferredSize().width(); |
463 int location_x = reload_->x() + reload_->width() + kControlHorizOffset; | 462 int location_x = home_->x() + home_->width() + kControlHorizOffset; |
464 int available_width = width() - kPaddingRight - app_menu_width - | 463 int available_width = width() - kPaddingRight - app_menu_width - |
465 browser_actions_width - kMenuButtonOffset - location_x; | 464 browser_actions_width - kMenuButtonOffset - location_x; |
466 | 465 |
467 location_bar_->SetBounds(location_x, child_y, std::max(available_width, 0), | 466 location_bar_->SetBounds(location_x, child_y, std::max(available_width, 0), |
468 child_height); | 467 child_height); |
469 int next_menu_x = | 468 int next_menu_x = |
470 location_bar_->x() + location_bar_->width() + kMenuButtonOffset; | 469 location_bar_->x() + location_bar_->width() + kMenuButtonOffset; |
471 | 470 |
472 browser_actions_->SetBounds(next_menu_x, 0, browser_actions_width, height()); | 471 browser_actions_->SetBounds(next_menu_x, 0, browser_actions_width, height()); |
473 // The browser actions need to do a layout explicitly, because when an | 472 // 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... |
550 tp->GetBitmapNamed(IDR_FORWARD)); | 549 tp->GetBitmapNamed(IDR_FORWARD)); |
551 forward_->SetImage(views::CustomButton::BS_HOT, | 550 forward_->SetImage(views::CustomButton::BS_HOT, |
552 tp->GetBitmapNamed(IDR_FORWARD_H)); | 551 tp->GetBitmapNamed(IDR_FORWARD_H)); |
553 forward_->SetImage(views::CustomButton::BS_PUSHED, | 552 forward_->SetImage(views::CustomButton::BS_PUSHED, |
554 tp->GetBitmapNamed(IDR_FORWARD_P)); | 553 tp->GetBitmapNamed(IDR_FORWARD_P)); |
555 forward_->SetImage(views::CustomButton::BS_DISABLED, | 554 forward_->SetImage(views::CustomButton::BS_DISABLED, |
556 tp->GetBitmapNamed(IDR_FORWARD_D)); | 555 tp->GetBitmapNamed(IDR_FORWARD_D)); |
557 forward_->SetBackground(color, background, | 556 forward_->SetBackground(color, background, |
558 tp->GetBitmapNamed(IDR_FORWARD_MASK)); | 557 tp->GetBitmapNamed(IDR_FORWARD_MASK)); |
559 | 558 |
560 home_->SetImage(views::CustomButton::BS_NORMAL, tp->GetBitmapNamed(IDR_HOME)); | |
561 home_->SetImage(views::CustomButton::BS_HOT, tp->GetBitmapNamed(IDR_HOME_H)); | |
562 home_->SetImage(views::CustomButton::BS_PUSHED, | |
563 tp->GetBitmapNamed(IDR_HOME_P)); | |
564 home_->SetBackground(color, background, | |
565 tp->GetBitmapNamed(IDR_BUTTON_MASK)); | |
566 | |
567 reload_->SetImage(views::CustomButton::BS_NORMAL, | 559 reload_->SetImage(views::CustomButton::BS_NORMAL, |
568 tp->GetBitmapNamed(IDR_RELOAD)); | 560 tp->GetBitmapNamed(IDR_RELOAD)); |
569 reload_->SetImage(views::CustomButton::BS_HOT, | 561 reload_->SetImage(views::CustomButton::BS_HOT, |
570 tp->GetBitmapNamed(IDR_RELOAD_H)); | 562 tp->GetBitmapNamed(IDR_RELOAD_H)); |
571 reload_->SetImage(views::CustomButton::BS_PUSHED, | 563 reload_->SetImage(views::CustomButton::BS_PUSHED, |
572 tp->GetBitmapNamed(IDR_RELOAD_P)); | 564 tp->GetBitmapNamed(IDR_RELOAD_P)); |
573 reload_->SetToggledImage(views::CustomButton::BS_NORMAL, | 565 reload_->SetToggledImage(views::CustomButton::BS_NORMAL, |
574 tp->GetBitmapNamed(IDR_STOP)); | 566 tp->GetBitmapNamed(IDR_STOP)); |
575 reload_->SetToggledImage(views::CustomButton::BS_HOT, | 567 reload_->SetToggledImage(views::CustomButton::BS_HOT, |
576 tp->GetBitmapNamed(IDR_STOP_H)); | 568 tp->GetBitmapNamed(IDR_STOP_H)); |
577 reload_->SetToggledImage(views::CustomButton::BS_PUSHED, | 569 reload_->SetToggledImage(views::CustomButton::BS_PUSHED, |
578 tp->GetBitmapNamed(IDR_STOP_P)); | 570 tp->GetBitmapNamed(IDR_STOP_P)); |
579 reload_->SetBackground(color, background, | 571 reload_->SetBackground(color, background, |
580 tp->GetBitmapNamed(IDR_BUTTON_MASK)); | 572 tp->GetBitmapNamed(IDR_BUTTON_MASK)); |
581 | 573 |
| 574 home_->SetImage(views::CustomButton::BS_NORMAL, tp->GetBitmapNamed(IDR_HOME)); |
| 575 home_->SetImage(views::CustomButton::BS_HOT, tp->GetBitmapNamed(IDR_HOME_H)); |
| 576 home_->SetImage(views::CustomButton::BS_PUSHED, |
| 577 tp->GetBitmapNamed(IDR_HOME_P)); |
| 578 home_->SetBackground(color, background, |
| 579 tp->GetBitmapNamed(IDR_BUTTON_MASK)); |
| 580 |
582 app_menu_->SetIcon(GetAppMenuIcon()); | 581 app_menu_->SetIcon(GetAppMenuIcon()); |
583 } | 582 } |
584 | 583 |
585 void ToolbarView::ShowUpgradeReminder() { | 584 void ToolbarView::ShowUpgradeReminder() { |
586 update_reminder_animation_.reset(new SlideAnimation(this)); | 585 update_reminder_animation_.reset(new SlideAnimation(this)); |
587 update_reminder_animation_->SetSlideDuration(kPulseDuration); | 586 update_reminder_animation_->SetSlideDuration(kPulseDuration); |
588 | 587 |
589 // Then start the recurring timer for pulsating it. | 588 // Then start the recurring timer for pulsating it. |
590 upgrade_reminder_pulse_timer_.Start( | 589 upgrade_reminder_pulse_timer_.Start( |
591 base::TimeDelta::FromMilliseconds(kPulsateEveryMs), | 590 base::TimeDelta::FromMilliseconds(kPulsateEveryMs), |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
662 } | 661 } |
663 #endif | 662 #endif |
664 | 663 |
665 // Tell the menu button to activate, opening its pop-up menu. | 664 // Tell the menu button to activate, opening its pop-up menu. |
666 menu_button->Activate(); | 665 menu_button->Activate(); |
667 | 666 |
668 #if defined(OS_WIN) | 667 #if defined(OS_WIN) |
669 SetToolbarFocus(NULL, menu_button); | 668 SetToolbarFocus(NULL, menu_button); |
670 #endif | 669 #endif |
671 } | 670 } |
OLD | NEW |