Commit 94b7fa72 authored by toyoshim@chromium.org's avatar toyoshim@chromium.org

Translate (Win): add after infobar UI for server side language detection

After enabling context menu to translate unknown language, Chrome needs
to modify infobar UX for Chrome Translate.

This change fixes Win UI.

BUG=172593

Review URL: https://chromiumcodereview.appspot.com/15376008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202398 0039d316-1c4b-4281-b951-d872f2087c98
parent 8f6d7612
...@@ -26,6 +26,8 @@ AfterTranslateInfoBar::AfterTranslateInfoBar( ...@@ -26,6 +26,8 @@ AfterTranslateInfoBar::AfterTranslateInfoBar(
options_menu_button_(NULL), options_menu_button_(NULL),
options_menu_model_(delegate), options_menu_model_(delegate),
swapped_language_buttons_(false) { swapped_language_buttons_(false) {
autodetermined_source_language_ =
delegate->original_language_index() == TranslateInfoBarDelegate::kNoIndex;
} }
AfterTranslateInfoBar::~AfterTranslateInfoBar() { AfterTranslateInfoBar::~AfterTranslateInfoBar() {
...@@ -42,7 +44,7 @@ void AfterTranslateInfoBar::Layout() { ...@@ -42,7 +44,7 @@ void AfterTranslateInfoBar::Layout() {
views::MenuButton* first_button = original_language_menu_button_; views::MenuButton* first_button = original_language_menu_button_;
views::MenuButton* second_button = target_language_menu_button_; views::MenuButton* second_button = target_language_menu_button_;
if (swapped_language_buttons_) if (swapped_language_buttons_ || autodetermined_source_language_)
std::swap(first_button, second_button); std::swap(first_button, second_button);
gfx::Size first_button_size = first_button->GetPreferredSize(); gfx::Size first_button_size = first_button->GetPreferredSize();
first_button->SetBounds(label_1_->bounds().right() + kButtonInLabelSpacing, first_button->SetBounds(label_1_->bounds().right() + kButtonInLabelSpacing,
...@@ -55,19 +57,24 @@ void AfterTranslateInfoBar::Layout() { ...@@ -55,19 +57,24 @@ void AfterTranslateInfoBar::Layout() {
label_2_size.height()); label_2_size.height());
available_width = std::max(0, available_width - label_2_size.width()); available_width = std::max(0, available_width - label_2_size.width());
gfx::Size second_button_size = second_button->GetPreferredSize(); if (!autodetermined_source_language_) {
second_button->SetBounds(label_2_->bounds().right() + kButtonInLabelSpacing, gfx::Size second_button_size = second_button->GetPreferredSize();
OffsetY(second_button_size), second_button_size.width(), second_button->SetBounds(label_2_->bounds().right() + kButtonInLabelSpacing,
second_button_size.height()); OffsetY(second_button_size), second_button_size.width(),
second_button_size.height());
gfx::Size label_3_size = label_3_->GetPreferredSize(); gfx::Size label_3_size = label_3_->GetPreferredSize();
label_3_->SetBounds(second_button->bounds().right() + kButtonInLabelSpacing, label_3_->SetBounds(second_button->bounds().right() + kButtonInLabelSpacing,
OffsetY(label_3_size), std::min(label_3_size.width(), available_width), OffsetY(label_3_size), std::min(label_3_size.width(), available_width),
label_3_size.height()); label_3_size.height());
}
gfx::Size revert_button_size = revert_button_->GetPreferredSize(); gfx::Size revert_button_size = revert_button_->GetPreferredSize();
revert_button_->SetBounds(label_3_->bounds().right() + kButtonInLabelSpacing, revert_button_->SetBounds(
OffsetY(revert_button_size), revert_button_size.width(), (label_3_ ? label_3_ : label_2_)->bounds().right() +
kButtonInLabelSpacing,
OffsetY(revert_button_size),
revert_button_size.width(),
revert_button_size.height()); revert_button_size.height());
gfx::Size options_size = options_menu_button_->GetPreferredSize(); gfx::Size options_size = options_menu_button_->GetPreferredSize();
...@@ -83,15 +90,14 @@ void AfterTranslateInfoBar::ViewHierarchyChanged( ...@@ -83,15 +90,14 @@ void AfterTranslateInfoBar::ViewHierarchyChanged(
} }
std::vector<string16> strings; std::vector<string16> strings;
TranslateInfoBarDelegate* delegate = GetDelegate(); TranslateInfoBarDelegate::GetAfterTranslateStrings(
delegate->GetAfterTranslateStrings(&strings, &strings, &swapped_language_buttons_, autodetermined_source_language_);
&swapped_language_buttons_, DCHECK_EQ(autodetermined_source_language_ ? 2U : 3U, strings.size());
false);
DCHECK_EQ(3U, strings.size());
label_1_ = CreateLabel(strings[0]); label_1_ = CreateLabel(strings[0]);
AddChildView(label_1_); AddChildView(label_1_);
TranslateInfoBarDelegate* delegate = GetDelegate();
original_language_menu_button_ = CreateMenuButton(string16(), this); original_language_menu_button_ = CreateMenuButton(string16(), this);
original_language_menu_model_.reset(new TranslateLanguageMenuModel( original_language_menu_model_.reset(new TranslateLanguageMenuModel(
TranslateLanguageMenuModel::ORIGINAL, delegate, this, TranslateLanguageMenuModel::ORIGINAL, delegate, this,
...@@ -100,17 +106,19 @@ void AfterTranslateInfoBar::ViewHierarchyChanged( ...@@ -100,17 +106,19 @@ void AfterTranslateInfoBar::ViewHierarchyChanged(
target_language_menu_model_.reset(new TranslateLanguageMenuModel( target_language_menu_model_.reset(new TranslateLanguageMenuModel(
TranslateLanguageMenuModel::TARGET, delegate, this, TranslateLanguageMenuModel::TARGET, delegate, this,
target_language_menu_button_, true)); target_language_menu_button_, true));
AddChildView(swapped_language_buttons_ ? AddChildView((swapped_language_buttons_ || autodetermined_source_language_) ?
target_language_menu_button_ : original_language_menu_button_); target_language_menu_button_ : original_language_menu_button_);
label_2_ = CreateLabel(strings[1]); label_2_ = CreateLabel(strings[1]);
AddChildView(label_2_); AddChildView(label_2_);
AddChildView(swapped_language_buttons_ ? if (!autodetermined_source_language_) {
original_language_menu_button_ : target_language_menu_button_); AddChildView(swapped_language_buttons_ ?
original_language_menu_button_ : target_language_menu_button_);
label_3_ = CreateLabel(strings[2]); label_3_ = CreateLabel(strings[2]);
AddChildView(label_3_); AddChildView(label_3_);
}
revert_button_ = CreateLabelButton(this, revert_button_ = CreateLabelButton(this,
l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_REVERT), false); l10n_util::GetStringUTF16(IDS_TRANSLATE_INFOBAR_REVERT), false);
...@@ -127,8 +135,10 @@ void AfterTranslateInfoBar::ViewHierarchyChanged( ...@@ -127,8 +135,10 @@ void AfterTranslateInfoBar::ViewHierarchyChanged(
// These must happen after adding all children because they trigger layout, // These must happen after adding all children because they trigger layout,
// which assumes that particular children (e.g. the close button) have already // which assumes that particular children (e.g. the close button) have already
// been added. // been added.
UpdateLanguageButtonText(original_language_menu_button_, if (!autodetermined_source_language_) {
delegate->language_name_at(delegate->original_language_index())); UpdateLanguageButtonText(original_language_menu_button_,
delegate->language_name_at(delegate->original_language_index()));
}
UpdateLanguageButtonText(target_language_menu_button_, UpdateLanguageButtonText(target_language_menu_button_,
delegate->language_name_at(delegate->target_language_index())); delegate->language_name_at(delegate->target_language_index()));
} }
......
...@@ -56,6 +56,9 @@ class AfterTranslateInfoBar : public TranslateInfoBarBase, ...@@ -56,6 +56,9 @@ class AfterTranslateInfoBar : public TranslateInfoBarBase,
// True if the target language comes before the original one. // True if the target language comes before the original one.
bool swapped_language_buttons_; bool swapped_language_buttons_;
// True if the source language is expected to be determined by a server.
bool autodetermined_source_language_;
DISALLOW_COPY_AND_ASSIGN(AfterTranslateInfoBar); DISALLOW_COPY_AND_ASSIGN(AfterTranslateInfoBar);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment