Chromium Code Reviews| 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/translate_infobars.h" | 5 #include "chrome/browser/views/infobars/translate_infobars.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "app/gfx/canvas.h" | 10 #include "app/gfx/canvas.h" |
| (...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 476 | 476 |
| 477 // TranslateInfoBar, views::ViewMenuDelegate implementation: ------------------- | 477 // TranslateInfoBar, views::ViewMenuDelegate implementation: ------------------- |
| 478 | 478 |
| 479 void TranslateInfoBar::RunMenu(views::View* source, const gfx::Point& pt) { | 479 void TranslateInfoBar::RunMenu(views::View* source, const gfx::Point& pt) { |
| 480 switch (source->GetID()) { | 480 switch (source->GetID()) { |
| 481 case kMenuIDOptions: { | 481 case kMenuIDOptions: { |
| 482 if (!options_menu_model_.get()) { | 482 if (!options_menu_model_.get()) { |
| 483 options_menu_model_.reset(new OptionsMenuModel(this, GetDelegate())); | 483 options_menu_model_.reset(new OptionsMenuModel(this, GetDelegate())); |
| 484 options_menu_menu_.reset(new views::Menu2(options_menu_model_.get())); | 484 options_menu_menu_.reset(new views::Menu2(options_menu_model_.get())); |
| 485 } | 485 } |
| 486 options_menu_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); | 486 options_menu_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); |
|
kuan
2010/02/16 17:23:54
i assume this is fixing RTL bug? if it is, could
| |
| 487 break; | 487 break; |
| 488 } | 488 } |
| 489 | 489 |
| 490 case kMenuIDOriginalLanguage: { | 490 case kMenuIDOriginalLanguage: { |
| 491 if (GetDelegate()->state() != TranslateInfoBarDelegate::kTranslating) { | 491 if (GetDelegate()->state() != TranslateInfoBarDelegate::kTranslating) { |
| 492 if (!original_language_menu_model_.get()) { | 492 if (!original_language_menu_model_.get()) { |
| 493 original_language_menu_model_.reset( | 493 original_language_menu_model_.reset( |
| 494 new LanguagesMenuModel(this, GetDelegate(), true)); | 494 new LanguagesMenuModel(this, GetDelegate(), true)); |
| 495 original_language_menu_menu_.reset( | 495 original_language_menu_menu_.reset( |
| 496 new views::Menu2(original_language_menu_model_.get())); | 496 new views::Menu2(original_language_menu_model_.get())); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 616 if (tab != GetDelegate()->tab_contents()) | 616 if (tab != GetDelegate()->tab_contents()) |
| 617 return; | 617 return; |
| 618 UpdateState(TranslateInfoBarDelegate::kAfterTranslate); | 618 UpdateState(TranslateInfoBarDelegate::kAfterTranslate); |
| 619 } | 619 } |
| 620 | 620 |
| 621 // TranslateInfoBar, private: -------------------------------------------------- | 621 // TranslateInfoBar, private: -------------------------------------------------- |
| 622 | 622 |
| 623 void TranslateInfoBar::CreateLabels() { | 623 void TranslateInfoBar::CreateLabels() { |
| 624 // Determine text for labels. | 624 // Determine text for labels. |
| 625 std::vector<size_t> offsets; | 625 std::vector<size_t> offsets; |
| 626 std::wstring message_text = l10n_util::GetStringF( | 626 string16 message_text_utf16; |
| 627 (GetDelegate()->state() == TranslateInfoBarDelegate::kAfterTranslate ? | 627 GetDelegate()->GetMessageText(&message_text_utf16, &offsets, |
| 628 IDS_TRANSLATE_INFOBAR_AFTER_MESSAGE : | 628 &swapped_language_placeholders_); |
| 629 IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE), | 629 |
| 630 std::wstring(), std::wstring(), &offsets); | 630 std::wstring message_text = UTF16ToWideHack(message_text_utf16); |
| 631 if (!offsets.empty() && offsets.size() <= 2) { | |
| 632 // Sort the offsets if necessary. | |
| 633 if (offsets.size() == 2 && offsets[0] > offsets[1]) { | |
| 634 size_t offset0 = offsets[0]; | |
| 635 offsets[0] = offsets[1]; | |
| 636 offsets[1] = offset0; | |
| 637 swapped_language_placeholders_ = true; | |
| 638 } | |
| 639 if (offsets[offsets.size() - 1] != message_text.length()) | |
| 640 offsets.push_back(message_text.length()); | |
| 641 } else { | |
| 642 NOTREACHED() << "Invalid no. of placeholders in label."; | |
| 643 } | |
| 644 | 631 |
| 645 // Create label controls. | 632 // Create label controls. |
| 646 const gfx::Font& font = ResourceBundle::GetSharedInstance().GetFont( | 633 const gfx::Font& font = ResourceBundle::GetSharedInstance().GetFont( |
| 647 ResourceBundle::MediumFont); | 634 ResourceBundle::MediumFont); |
| 648 std::wstring label_1 = message_text.substr(0, offsets[0]); | 635 std::wstring label_1 = message_text.substr(0, offsets[0]); |
| 649 if (label_1_) { | 636 if (label_1_) { |
| 650 label_1_->SetText(label_1); | 637 label_1_->SetText(label_1); |
| 651 } else { | 638 } else { |
| 652 label_1_ = new views::Label(label_1, font); | 639 label_1_ = new views::Label(label_1, font); |
| 653 label_1_->SetColor(SK_ColorBLACK); | 640 label_1_->SetColor(SK_ColorBLACK); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 747 inline int TranslateInfoBar::GetSpacingAfterFirstLanguageButton() const { | 734 inline int TranslateInfoBar::GetSpacingAfterFirstLanguageButton() const { |
| 748 return (GetDelegate()->state() == TranslateInfoBarDelegate::kBeforeTranslate ? | 735 return (GetDelegate()->state() == TranslateInfoBarDelegate::kBeforeTranslate ? |
| 749 10 : kButtonInLabelSpacing); | 736 10 : kButtonInLabelSpacing); |
| 750 } | 737 } |
| 751 | 738 |
| 752 // TranslateInfoBarDelegate, InfoBarDelegate overrides: ------------------ | 739 // TranslateInfoBarDelegate, InfoBarDelegate overrides: ------------------ |
| 753 | 740 |
| 754 InfoBar* TranslateInfoBarDelegate::CreateInfoBar() { | 741 InfoBar* TranslateInfoBarDelegate::CreateInfoBar() { |
| 755 return new TranslateInfoBar(this); | 742 return new TranslateInfoBar(this); |
| 756 } | 743 } |
| OLD | NEW |