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/infobars/infobars.h" | 5 #include "chrome/browser/views/infobars/infobars.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 "app/slide_animation.h" | 9 #include "app/slide_animation.h" |
10 #if defined(OS_WIN) | 10 #if defined(OS_WIN) |
11 #include "app/win_util.h" | 11 #include "app/win_util.h" |
12 #endif // defined(OS_WIN) | 12 #endif // defined(OS_WIN) |
13 #include "base/message_loop.h" | 13 #include "base/message_loop.h" |
| 14 #include "base/utf_string_conversions.h" |
14 #include "chrome/browser/views/event_utils.h" | 15 #include "chrome/browser/views/event_utils.h" |
15 #include "chrome/browser/views/infobars/infobar_container.h" | 16 #include "chrome/browser/views/infobars/infobar_container.h" |
16 #include "gfx/canvas.h" | 17 #include "gfx/canvas.h" |
17 #include "grit/generated_resources.h" | 18 #include "grit/generated_resources.h" |
18 #include "grit/theme_resources.h" | 19 #include "grit/theme_resources.h" |
19 #include "views/background.h" | 20 #include "views/background.h" |
20 #include "views/controls/button/image_button.h" | 21 #include "views/controls/button/image_button.h" |
21 #include "views/controls/button/native_button.h" | 22 #include "views/controls/button/native_button.h" |
22 #include "views/controls/image_view.h" | 23 #include "views/controls/image_view.h" |
23 #include "views/controls/label.h" | 24 #include "views/controls/label.h" |
24 #include "views/focus/external_focus_tracker.h" | 25 #include "views/focus/external_focus_tracker.h" |
25 #include "views/widget/widget.h" | 26 #include "views/widget/widget.h" |
26 | 27 |
27 // static | 28 // static |
28 const double InfoBar::kDefaultTargetHeight = 36.0; | 29 const double InfoBar::kDefaultTargetHeight = 36.0; |
29 const int InfoBar::kHorizontalPadding = 6; | 30 const int InfoBar::kHorizontalPadding = 6; |
30 const int InfoBar::kIconLabelSpacing = 6; | 31 const int InfoBar::kIconLabelSpacing = 6; |
31 const int InfoBar::kButtonButtonSpacing = 10; | 32 const int InfoBar::kButtonButtonSpacing = 10; |
32 const int InfoBar::kEndOfLabelSpacing = 16; | 33 const int InfoBar::kEndOfLabelSpacing = 16; |
33 const int InfoBar::kCloseButtonSpacing = 12; | 34 const int InfoBar::kCloseButtonSpacing = 12; |
34 const int InfoBar::kButtonInLabelSpacing = 5; | 35 const int InfoBar::kButtonInLabelSpacing = 5; |
35 | 36 |
36 static const SkColor kInfoBackgroundColorTop = SkColorSetRGB(170, 214, 112); | |
37 static const SkColor kInfoBackgroundColorBottom = SkColorSetRGB(146, 205, 114); | |
38 | |
39 static const SkColor kWarningBackgroundColorTop = SkColorSetRGB(255, 242, 183); | 37 static const SkColor kWarningBackgroundColorTop = SkColorSetRGB(255, 242, 183); |
40 static const SkColor kWarningBackgroundColorBottom = | 38 static const SkColor kWarningBackgroundColorBottom = |
41 SkColorSetRGB(250, 230, 145); | 39 SkColorSetRGB(250, 230, 145); |
42 | 40 |
43 static const SkColor kErrorBackgroundColorTop = kWarningBackgroundColorTop; | 41 static const SkColor kErrorBackgroundColorTop = kWarningBackgroundColorTop; |
44 static const SkColor kErrorBackgroundColorBottom = | 42 static const SkColor kErrorBackgroundColorBottom = |
45 kWarningBackgroundColorBottom; | 43 kWarningBackgroundColorBottom; |
46 | 44 |
47 static const SkColor kPageActionBackgroundColorTop = | 45 static const SkColor kPageActionBackgroundColorTop = |
48 SkColorSetRGB(218, 231, 249); | 46 SkColorSetRGB(218, 231, 249); |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 | 286 |
289 void InfoBar::DeleteSelf() { | 287 void InfoBar::DeleteSelf() { |
290 delete this; | 288 delete this; |
291 } | 289 } |
292 | 290 |
293 // AlertInfoBar, public: ------------------------------------------------------- | 291 // AlertInfoBar, public: ------------------------------------------------------- |
294 | 292 |
295 AlertInfoBar::AlertInfoBar(AlertInfoBarDelegate* delegate) | 293 AlertInfoBar::AlertInfoBar(AlertInfoBarDelegate* delegate) |
296 : InfoBar(delegate) { | 294 : InfoBar(delegate) { |
297 label_ = new views::Label( | 295 label_ = new views::Label( |
298 delegate->GetMessageText(), | 296 UTF16ToWideHack(delegate->GetMessageText()), |
299 ResourceBundle::GetSharedInstance().GetFont(ResourceBundle::MediumFont)); | 297 ResourceBundle::GetSharedInstance().GetFont(ResourceBundle::MediumFont)); |
300 label_->SetColor(SK_ColorBLACK); | 298 label_->SetColor(SK_ColorBLACK); |
301 label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); | 299 label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
302 AddChildView(label_); | 300 AddChildView(label_); |
303 | 301 |
304 icon_ = new views::ImageView; | 302 icon_ = new views::ImageView; |
305 if (delegate->GetIcon()) | 303 if (delegate->GetIcon()) |
306 icon_->SetImage(delegate->GetIcon()); | 304 icon_->SetImage(delegate->GetIcon()); |
307 AddChildView(icon_); | 305 AddChildView(icon_); |
308 } | 306 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 label_1_(new views::Label), | 341 label_1_(new views::Label), |
344 label_2_(new views::Label), | 342 label_2_(new views::Label), |
345 link_(new views::Link) { | 343 link_(new views::Link) { |
346 // Set up the icon. | 344 // Set up the icon. |
347 if (delegate->GetIcon()) | 345 if (delegate->GetIcon()) |
348 icon_->SetImage(delegate->GetIcon()); | 346 icon_->SetImage(delegate->GetIcon()); |
349 AddChildView(icon_); | 347 AddChildView(icon_); |
350 | 348 |
351 // Set up the labels. | 349 // Set up the labels. |
352 size_t offset; | 350 size_t offset; |
353 std::wstring message_text = delegate->GetMessageTextWithOffset(&offset); | 351 string16 message_text = delegate->GetMessageTextWithOffset(&offset); |
354 if (offset != std::wstring::npos) { | 352 if (offset != string16::npos) { |
355 label_1_->SetText(message_text.substr(0, offset)); | 353 label_1_->SetText(UTF16ToWideHack(message_text.substr(0, offset))); |
356 label_2_->SetText(message_text.substr(offset)); | 354 label_2_->SetText(UTF16ToWideHack(message_text.substr(offset))); |
357 } else { | 355 } else { |
358 label_1_->SetText(message_text); | 356 label_1_->SetText(UTF16ToWideHack(message_text)); |
359 } | 357 } |
360 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 358 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
361 label_1_->SetFont(rb.GetFont(ResourceBundle::MediumFont)); | 359 label_1_->SetFont(rb.GetFont(ResourceBundle::MediumFont)); |
362 label_2_->SetFont(rb.GetFont(ResourceBundle::MediumFont)); | 360 label_2_->SetFont(rb.GetFont(ResourceBundle::MediumFont)); |
363 label_1_->SetColor(SK_ColorBLACK); | 361 label_1_->SetColor(SK_ColorBLACK); |
364 label_2_->SetColor(SK_ColorBLACK); | 362 label_2_->SetColor(SK_ColorBLACK); |
365 label_1_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); | 363 label_1_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
366 label_2_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); | 364 label_2_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
367 AddChildView(label_1_); | 365 AddChildView(label_1_); |
368 AddChildView(label_2_); | 366 AddChildView(label_2_); |
369 | 367 |
370 // Set up the link. | 368 // Set up the link. |
371 link_->SetText(delegate->GetLinkText()); | 369 link_->SetText(UTF16ToWideHack(delegate->GetLinkText())); |
372 link_->SetFont(rb.GetFont(ResourceBundle::MediumFont)); | 370 link_->SetFont(rb.GetFont(ResourceBundle::MediumFont)); |
373 link_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); | 371 link_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
374 link_->SetController(this); | 372 link_->SetController(this); |
375 link_->MakeReadableOverBackgroundColor(background()->get_color()); | 373 link_->MakeReadableOverBackgroundColor(background()->get_color()); |
376 AddChildView(link_); | 374 AddChildView(link_); |
377 } | 375 } |
378 | 376 |
379 LinkInfoBar::~LinkInfoBar() { | 377 LinkInfoBar::~LinkInfoBar() { |
380 } | 378 } |
381 | 379 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 } | 437 } |
440 | 438 |
441 // ConfirmInfoBar, public: ----------------------------------------------------- | 439 // ConfirmInfoBar, public: ----------------------------------------------------- |
442 | 440 |
443 ConfirmInfoBar::ConfirmInfoBar(ConfirmInfoBarDelegate* delegate) | 441 ConfirmInfoBar::ConfirmInfoBar(ConfirmInfoBarDelegate* delegate) |
444 : AlertInfoBar(delegate), | 442 : AlertInfoBar(delegate), |
445 ok_button_(NULL), | 443 ok_button_(NULL), |
446 cancel_button_(NULL), | 444 cancel_button_(NULL), |
447 link_(NULL), | 445 link_(NULL), |
448 initialized_(false) { | 446 initialized_(false) { |
449 ok_button_ = new views::NativeButton( | 447 ok_button_ = new views::NativeButton(this, |
450 this, delegate->GetButtonLabel(ConfirmInfoBarDelegate::BUTTON_OK)); | 448 UTF16ToWideHack(delegate->GetButtonLabel( |
| 449 ConfirmInfoBarDelegate::BUTTON_OK))); |
451 ok_button_->SetAccessibleName(ok_button_->label()); | 450 ok_button_->SetAccessibleName(ok_button_->label()); |
452 if (delegate->GetButtons() & ConfirmInfoBarDelegate::BUTTON_OK_DEFAULT) | 451 if (delegate->GetButtons() & ConfirmInfoBarDelegate::BUTTON_OK_DEFAULT) |
453 ok_button_->SetAppearsAsDefault(true); | 452 ok_button_->SetAppearsAsDefault(true); |
454 if (delegate->NeedElevation(ConfirmInfoBarDelegate::BUTTON_OK)) | 453 if (delegate->NeedElevation(ConfirmInfoBarDelegate::BUTTON_OK)) |
455 ok_button_->SetNeedElevation(true); | 454 ok_button_->SetNeedElevation(true); |
456 cancel_button_ = new views::NativeButton( | 455 cancel_button_ = new views::NativeButton( |
457 this, delegate->GetButtonLabel(ConfirmInfoBarDelegate::BUTTON_CANCEL)); | 456 this, UTF16ToWideHack( |
| 457 delegate->GetButtonLabel(ConfirmInfoBarDelegate::BUTTON_CANCEL))); |
458 cancel_button_->SetAccessibleName(cancel_button_->label()); | 458 cancel_button_->SetAccessibleName(cancel_button_->label()); |
459 | 459 |
460 // Set up the link. | 460 // Set up the link. |
461 link_ = new views::Link; | 461 link_ = new views::Link; |
462 link_->SetText(delegate->GetLinkText()); | 462 link_->SetText(UTF16ToWideHack(delegate->GetLinkText())); |
463 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 463 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
464 link_->SetFont(rb.GetFont(ResourceBundle::MediumFont)); | 464 link_->SetFont(rb.GetFont(ResourceBundle::MediumFont)); |
465 link_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); | 465 link_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
466 link_->SetController(this); | 466 link_->SetController(this); |
467 link_->MakeReadableOverBackgroundColor(background()->get_color()); | 467 link_->MakeReadableOverBackgroundColor(background()->get_color()); |
468 } | 468 } |
469 | 469 |
470 ConfirmInfoBar::~ConfirmInfoBar() { | 470 ConfirmInfoBar::~ConfirmInfoBar() { |
471 if (!initialized_) { | 471 if (!initialized_) { |
472 delete ok_button_; | 472 delete ok_button_; |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
584 | 584 |
585 InfoBar* LinkInfoBarDelegate::CreateInfoBar() { | 585 InfoBar* LinkInfoBarDelegate::CreateInfoBar() { |
586 return new LinkInfoBar(this); | 586 return new LinkInfoBar(this); |
587 } | 587 } |
588 | 588 |
589 // ConfirmInfoBarDelegate, InfoBarDelegate overrides: -------------------------- | 589 // ConfirmInfoBarDelegate, InfoBarDelegate overrides: -------------------------- |
590 | 590 |
591 InfoBar* ConfirmInfoBarDelegate::CreateInfoBar() { | 591 InfoBar* ConfirmInfoBarDelegate::CreateInfoBar() { |
592 return new ConfirmInfoBar(this); | 592 return new ConfirmInfoBar(this); |
593 } | 593 } |
OLD | NEW |