Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Side by Side Diff: chrome/browser/views/infobars/translate_infobars.cc

Issue 597042: Translate: Move label parsing logic into common code. (Closed)
Patch Set: Fix indentation. Created 10 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/translate/translate_infobars_delegates.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/translate/translate_infobars_delegates.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698