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

Unified Diff: chrome/browser/ui/views/translate/translate_bubble_view.cc

Issue 2074983003: fix "Always do this" checkbox (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change based on review comment Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/translate/translate_bubble_view.cc
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view.cc b/chrome/browser/ui/views/translate/translate_bubble_view.cc
index 9726e774b7812db4bce2278573591ca0e38b55ab..989842bf716417857939867bd3c84077ee559d96 100644
--- a/chrome/browser/ui/views/translate/translate_bubble_view.cc
+++ b/chrome/browser/ui/views/translate/translate_bubble_view.cc
@@ -179,6 +179,12 @@ void TranslateBubbleView::CloseBubble() {
void TranslateBubbleView::Init() {
SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0));
+ should_always_translate_ = model_->ShouldAlwaysTranslate();
+ if (Use2016Q2UI() && !is_in_incognito_window_) {
+ should_always_translate_ =
+ model_->ShouldAlwaysTranslateBeCheckedByDefault();
+ }
+
before_translate_view_ = CreateViewBeforeTranslate();
translating_view_ = CreateViewTranslating();
after_translate_view_ = CreateViewAfterTranslate();
@@ -371,7 +377,8 @@ TranslateBubbleView::TranslateBubbleView(
denial_combobox_(NULL),
source_language_combobox_(NULL),
target_language_combobox_(NULL),
- always_translate_checkbox_(NULL),
+ before_always_translate_checkbox_(NULL),
+ advanced_always_translate_checkbox_(NULL),
advanced_cancel_button_(NULL),
advanced_done_button_(NULL),
denial_menu_button_(NULL),
@@ -405,15 +412,17 @@ void TranslateBubbleView::HandleButtonPressed(
TranslateBubbleView::ButtonID sender_id) {
switch (sender_id) {
case BUTTON_ID_TRANSLATE: {
- if (always_translate_checkbox_)
- model_->SetAlwaysTranslate(always_translate_checkbox_->checked());
+ views::Checkbox* always_checkbox = GetAlwaysTranslateCheckbox();
groby-ooo-7-16 2016/06/20 19:03:09 I'd suggest just using |should_always_translate_|
ftang 2016/06/20 21:30:39 Done.
+ if (always_checkbox)
+ model_->SetAlwaysTranslate(always_checkbox->checked());
model_->Translate();
translate::ReportUiAction(translate::TRANSLATE_BUTTON_CLICKED);
break;
}
case BUTTON_ID_DONE: {
- if (always_translate_checkbox_)
- model_->SetAlwaysTranslate(always_translate_checkbox_->checked());
+ views::Checkbox* always_checkbox = GetAlwaysTranslateCheckbox();
+ if (always_checkbox)
+ model_->SetAlwaysTranslate(always_checkbox->checked());
if (model_->IsPageTranslatedInCurrentLanguages()) {
model_->GoBackFromAdvanced();
UpdateChildVisibilities();
@@ -444,11 +453,13 @@ void TranslateBubbleView::HandleButtonPressed(
break;
}
case BUTTON_ID_ALWAYS_TRANSLATE: {
- // Do nothing. The state of the checkbox affects only when the 'Done'
- // button is pressed.
- translate::ReportUiAction(always_translate_checkbox_->checked()
- ? translate::ALWAYS_TRANSLATE_CHECKED
- : translate::ALWAYS_TRANSLATE_UNCHECKED);
+ views::Checkbox* always_checkbox = GetAlwaysTranslateCheckbox();
+ if (always_checkbox) {
groby-ooo-7-16 2016/06/20 19:03:10 You might want to DCHECK here, instead of if(...)
ftang 2016/06/20 21:30:39 Done.
+ should_always_translate_ = always_checkbox->checked();
+ translate::ReportUiAction(should_always_translate_
+ ? translate::ALWAYS_TRANSLATE_CHECKED
+ : translate::ALWAYS_TRANSLATE_UNCHECKED);
+ }
break;
}
}
@@ -527,6 +538,11 @@ void TranslateBubbleView::HandleComboboxPerformAction(
}
void TranslateBubbleView::UpdateChildVisibilities() {
+ // Update the statew of the always translate checkbox
+ if (advanced_always_translate_checkbox_)
+ advanced_always_translate_checkbox_->SetChecked(should_always_translate_);
+ if (before_always_translate_checkbox_)
+ before_always_translate_checkbox_->SetChecked(should_always_translate_);
for (int i = 0; i < child_count(); i++) {
views::View* view = child_at(i);
view->SetVisible(view == GetCurrentView());
@@ -608,13 +624,11 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
layout->StartRow(0, COLUMN_SET_ID_MESSAGE);
layout->SkipColumns(1);
- always_translate_checkbox_ = new views::Checkbox(
+ before_always_translate_checkbox_ = new views::Checkbox(
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ALWAYS_DO_THIS));
- always_translate_checkbox_->SetChecked(
- model_->ShouldAlwaysTranslateBeCheckedByDefault());
- always_translate_checkbox_->set_id(BUTTON_ID_ALWAYS_TRANSLATE);
- always_translate_checkbox_->set_listener(this);
- layout->AddView(always_translate_checkbox_);
+ before_always_translate_checkbox_->set_id(BUTTON_ID_ALWAYS_TRANSLATE);
+ before_always_translate_checkbox_->set_listener(this);
+ layout->AddView(before_always_translate_checkbox_);
}
if (Use2016Q2UI()) {
layout->AddPaddingRow(0, views::kPanelSubVerticalSpacing);
@@ -831,9 +845,9 @@ views::View* TranslateBubbleView::CreateViewAdvanced() {
// In an incognito window, "Always translate" checkbox shouldn't be shown.
if (!is_in_incognito_window_) {
- always_translate_checkbox_ = new views::Checkbox(base::string16());
- always_translate_checkbox_->set_id(BUTTON_ID_ALWAYS_TRANSLATE);
- always_translate_checkbox_->set_listener(this);
+ advanced_always_translate_checkbox_ = new views::Checkbox(base::string16());
+ advanced_always_translate_checkbox_->set_id(BUTTON_ID_ALWAYS_TRANSLATE);
+ advanced_always_translate_checkbox_->set_listener(this);
}
views::View* view = new views::View();
@@ -879,7 +893,7 @@ views::View* TranslateBubbleView::CreateViewAdvanced() {
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
layout->StartRow(0, COLUMN_SET_ID_LANGUAGES);
layout->SkipColumns(1);
- layout->AddView(always_translate_checkbox_);
+ layout->AddView(advanced_always_translate_checkbox_);
}
layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
@@ -904,6 +918,18 @@ views::View* TranslateBubbleView::CreateViewAdvanced() {
return view;
}
+views::Checkbox* TranslateBubbleView::GetAlwaysTranslateCheckbox() {
+ if (model_->GetViewState() == TranslateBubbleModel::VIEW_STATE_ADVANCED) {
+ return advanced_always_translate_checkbox_;
+ } else if (model_->GetViewState() ==
+ TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE) {
+ return before_always_translate_checkbox_;
+ } else {
+ NOTREACHED();
+ return nullptr;
+ }
+}
+
void TranslateBubbleView::SwitchView(
TranslateBubbleModel::ViewState view_state) {
if (model_->GetViewState() == view_state)
@@ -934,12 +960,9 @@ void TranslateBubbleView::UpdateAdvancedView() {
model_->GetLanguageNameAt(model_->GetTargetLanguageIndex());
// "Always translate" checkbox doesn't exist in an incognito window.
- if (always_translate_checkbox_) {
- always_translate_checkbox_->SetText(
+ if (advanced_always_translate_checkbox_) {
+ advanced_always_translate_checkbox_->SetText(
l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ALWAYS));
- always_translate_checkbox_->SetChecked(
- Use2016Q2UI() ? model_->ShouldAlwaysTranslateBeCheckedByDefault()
- : model_->ShouldAlwaysTranslate());
}
base::string16 label;

Powered by Google App Engine
This is Rietveld 408576698