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

Side by Side Diff: chrome/browser/ui/views/translate/translate_bubble_view.cc

Issue 2088053002: Split to use two different ID for the two different checkbox in two different subview. Currently th… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2743
Patch Set: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/ui/views/translate/translate_bubble_view.h" 5 #include "chrome/browser/ui/views/translate/translate_bubble_view.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 } 172 }
173 173
174 void TranslateBubbleView::CloseBubble() { 174 void TranslateBubbleView::CloseBubble() {
175 mouse_handler_.reset(); 175 mouse_handler_.reset();
176 LocationBarBubbleDelegateView::CloseBubble(); 176 LocationBarBubbleDelegateView::CloseBubble();
177 } 177 }
178 178
179 void TranslateBubbleView::Init() { 179 void TranslateBubbleView::Init() {
180 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0)); 180 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0));
181 181
182 should_always_translate_ = model_->ShouldAlwaysTranslate();
183 if (Use2016Q2UI() && !is_in_incognito_window_) {
184 should_always_translate_ =
185 model_->ShouldAlwaysTranslateBeCheckedByDefault();
186 }
187
182 before_translate_view_ = CreateViewBeforeTranslate(); 188 before_translate_view_ = CreateViewBeforeTranslate();
183 translating_view_ = CreateViewTranslating(); 189 translating_view_ = CreateViewTranslating();
184 after_translate_view_ = CreateViewAfterTranslate(); 190 after_translate_view_ = CreateViewAfterTranslate();
185 error_view_ = CreateViewError(); 191 error_view_ = CreateViewError();
186 advanced_view_ = CreateViewAdvanced(); 192 advanced_view_ = CreateViewAdvanced();
187 193
188 AddChildView(before_translate_view_); 194 AddChildView(before_translate_view_);
189 AddChildView(translating_view_); 195 AddChildView(translating_view_);
190 AddChildView(after_translate_view_); 196 AddChildView(after_translate_view_);
191 AddChildView(error_view_); 197 AddChildView(error_view_);
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 : LocationBarBubbleDelegateView(anchor_view, web_contents), 370 : LocationBarBubbleDelegateView(anchor_view, web_contents),
365 WebContentsObserver(web_contents), 371 WebContentsObserver(web_contents),
366 before_translate_view_(NULL), 372 before_translate_view_(NULL),
367 translating_view_(NULL), 373 translating_view_(NULL),
368 after_translate_view_(NULL), 374 after_translate_view_(NULL),
369 error_view_(NULL), 375 error_view_(NULL),
370 advanced_view_(NULL), 376 advanced_view_(NULL),
371 denial_combobox_(NULL), 377 denial_combobox_(NULL),
372 source_language_combobox_(NULL), 378 source_language_combobox_(NULL),
373 target_language_combobox_(NULL), 379 target_language_combobox_(NULL),
374 always_translate_checkbox_(NULL), 380 before_always_translate_checkbox_(NULL),
381 advanced_always_translate_checkbox_(NULL),
375 advanced_cancel_button_(NULL), 382 advanced_cancel_button_(NULL),
376 advanced_done_button_(NULL), 383 advanced_done_button_(NULL),
377 denial_menu_button_(NULL), 384 denial_menu_button_(NULL),
378 model_(std::move(model)), 385 model_(std::move(model)),
379 error_type_(error_type), 386 error_type_(error_type),
380 is_in_incognito_window_( 387 is_in_incognito_window_(
381 web_contents && web_contents->GetBrowserContext()->IsOffTheRecord()) { 388 web_contents && web_contents->GetBrowserContext()->IsOffTheRecord()),
389 should_always_translate_(false) {
382 translate_bubble_view_ = this; 390 translate_bubble_view_ = this;
383 if (web_contents) // web_contents can be null in unit_tests. 391 if (web_contents) // web_contents can be null in unit_tests.
384 mouse_handler_.reset(new WebContentMouseHandler(this, web_contents)); 392 mouse_handler_.reset(new WebContentMouseHandler(this, web_contents));
385 } 393 }
386 394
387 views::View* TranslateBubbleView::GetCurrentView() const { 395 views::View* TranslateBubbleView::GetCurrentView() const {
388 switch (model_->GetViewState()) { 396 switch (model_->GetViewState()) {
389 case TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE: 397 case TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE:
390 return before_translate_view_; 398 return before_translate_view_;
391 case TranslateBubbleModel::VIEW_STATE_TRANSLATING: 399 case TranslateBubbleModel::VIEW_STATE_TRANSLATING:
392 return translating_view_; 400 return translating_view_;
393 case TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE: 401 case TranslateBubbleModel::VIEW_STATE_AFTER_TRANSLATE:
394 return after_translate_view_; 402 return after_translate_view_;
395 case TranslateBubbleModel::VIEW_STATE_ERROR: 403 case TranslateBubbleModel::VIEW_STATE_ERROR:
396 return error_view_; 404 return error_view_;
397 case TranslateBubbleModel::VIEW_STATE_ADVANCED: 405 case TranslateBubbleModel::VIEW_STATE_ADVANCED:
398 return advanced_view_; 406 return advanced_view_;
399 } 407 }
400 NOTREACHED(); 408 NOTREACHED();
401 return NULL; 409 return NULL;
402 } 410 }
403 411
404 void TranslateBubbleView::HandleButtonPressed( 412 void TranslateBubbleView::HandleButtonPressed(
405 TranslateBubbleView::ButtonID sender_id) { 413 TranslateBubbleView::ButtonID sender_id) {
406 switch (sender_id) { 414 switch (sender_id) {
407 case BUTTON_ID_TRANSLATE: { 415 case BUTTON_ID_TRANSLATE: {
408 if (always_translate_checkbox_) 416 model_->SetAlwaysTranslate(should_always_translate_);
409 model_->SetAlwaysTranslate(always_translate_checkbox_->checked());
410 model_->Translate(); 417 model_->Translate();
411 translate::ReportUiAction(translate::TRANSLATE_BUTTON_CLICKED); 418 translate::ReportUiAction(translate::TRANSLATE_BUTTON_CLICKED);
412 break; 419 break;
413 } 420 }
414 case BUTTON_ID_DONE: { 421 case BUTTON_ID_DONE: {
415 if (always_translate_checkbox_) 422 model_->SetAlwaysTranslate(should_always_translate_);
416 model_->SetAlwaysTranslate(always_translate_checkbox_->checked());
417 if (model_->IsPageTranslatedInCurrentLanguages()) { 423 if (model_->IsPageTranslatedInCurrentLanguages()) {
418 model_->GoBackFromAdvanced(); 424 model_->GoBackFromAdvanced();
419 UpdateChildVisibilities(); 425 UpdateChildVisibilities();
420 SizeToContents(); 426 SizeToContents();
421 } else { 427 } else {
422 model_->Translate(); 428 model_->Translate();
423 SwitchView(TranslateBubbleModel::VIEW_STATE_TRANSLATING); 429 SwitchView(TranslateBubbleModel::VIEW_STATE_TRANSLATING);
424 } 430 }
425 translate::ReportUiAction(translate::DONE_BUTTON_CLICKED); 431 translate::ReportUiAction(translate::DONE_BUTTON_CLICKED);
426 break; 432 break;
(...skipping 10 matching lines...) Expand all
437 translate::ReportUiAction(translate::TRY_AGAIN_BUTTON_CLICKED); 443 translate::ReportUiAction(translate::TRY_AGAIN_BUTTON_CLICKED);
438 break; 444 break;
439 } 445 }
440 case BUTTON_ID_SHOW_ORIGINAL: { 446 case BUTTON_ID_SHOW_ORIGINAL: {
441 model_->RevertTranslation(); 447 model_->RevertTranslation();
442 GetWidget()->Close(); 448 GetWidget()->Close();
443 translate::ReportUiAction(translate::SHOW_ORIGINAL_BUTTON_CLICKED); 449 translate::ReportUiAction(translate::SHOW_ORIGINAL_BUTTON_CLICKED);
444 break; 450 break;
445 } 451 }
446 case BUTTON_ID_ALWAYS_TRANSLATE: { 452 case BUTTON_ID_ALWAYS_TRANSLATE: {
447 // Do nothing. The state of the checkbox affects only when the 'Done' 453 views::Checkbox* always_checkbox = GetAlwaysTranslateCheckbox();
448 // button is pressed. 454 DCHECK(always_checkbox);
449 translate::ReportUiAction(always_translate_checkbox_->checked() 455 should_always_translate_ = always_checkbox->checked();
456 translate::ReportUiAction(should_always_translate_
450 ? translate::ALWAYS_TRANSLATE_CHECKED 457 ? translate::ALWAYS_TRANSLATE_CHECKED
451 : translate::ALWAYS_TRANSLATE_UNCHECKED); 458 : translate::ALWAYS_TRANSLATE_UNCHECKED);
452 break; 459 break;
453 } 460 }
454 } 461 }
455 } 462 }
456 463
457 void TranslateBubbleView::HandleLinkClicked( 464 void TranslateBubbleView::HandleLinkClicked(
458 TranslateBubbleView::LinkID sender_id) { 465 TranslateBubbleView::LinkID sender_id) {
459 switch (sender_id) { 466 switch (sender_id) {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 model_->UpdateTargetLanguageIndex( 527 model_->UpdateTargetLanguageIndex(
521 target_language_combobox_->selected_index()); 528 target_language_combobox_->selected_index());
522 UpdateAdvancedView(); 529 UpdateAdvancedView();
523 translate::ReportUiAction(translate::TARGET_LANGUAGE_MENU_CLICKED); 530 translate::ReportUiAction(translate::TARGET_LANGUAGE_MENU_CLICKED);
524 break; 531 break;
525 } 532 }
526 } 533 }
527 } 534 }
528 535
529 void TranslateBubbleView::UpdateChildVisibilities() { 536 void TranslateBubbleView::UpdateChildVisibilities() {
537 // Update the statew of the always translate checkbox
538 if (advanced_always_translate_checkbox_)
539 advanced_always_translate_checkbox_->SetChecked(should_always_translate_);
540 if (before_always_translate_checkbox_)
541 before_always_translate_checkbox_->SetChecked(should_always_translate_);
530 for (int i = 0; i < child_count(); i++) { 542 for (int i = 0; i < child_count(); i++) {
531 views::View* view = child_at(i); 543 views::View* view = child_at(i);
532 view->SetVisible(view == GetCurrentView()); 544 view->SetVisible(view == GetCurrentView());
533 } 545 }
534 } 546 }
535 547
536 views::View* TranslateBubbleView::CreateViewBeforeTranslate() { 548 views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
537 const int kQuestionWidth = 200; 549 const int kQuestionWidth = 200;
538 base::string16 original_language_name = 550 base::string16 original_language_name =
539 model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); 551 model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex());
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_BEFORE_TRANSLATE))); 613 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_BEFORE_TRANSLATE)));
602 layout->AddView( 614 layout->AddView(
603 CreateLink(this, IDS_TRANSLATE_BUBBLE_ADVANCED, LINK_ID_ADVANCED)); 615 CreateLink(this, IDS_TRANSLATE_BUBBLE_ADVANCED, LINK_ID_ADVANCED));
604 } 616 }
605 617
606 // In an incognito window, the "Always translate" checkbox shouldn't be shown. 618 // In an incognito window, the "Always translate" checkbox shouldn't be shown.
607 if (Use2016Q2UI() && !is_in_incognito_window_) { 619 if (Use2016Q2UI() && !is_in_incognito_window_) {
608 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 620 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
609 layout->StartRow(0, COLUMN_SET_ID_MESSAGE); 621 layout->StartRow(0, COLUMN_SET_ID_MESSAGE);
610 layout->SkipColumns(1); 622 layout->SkipColumns(1);
611 always_translate_checkbox_ = new views::Checkbox( 623 before_always_translate_checkbox_ = new views::Checkbox(
612 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ALWAYS_DO_THIS)); 624 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ALWAYS_DO_THIS));
613 always_translate_checkbox_->SetChecked( 625 before_always_translate_checkbox_->set_id(BUTTON_ID_ALWAYS_TRANSLATE);
614 model_->ShouldAlwaysTranslateBeCheckedByDefault()); 626 before_always_translate_checkbox_->set_listener(this);
615 always_translate_checkbox_->set_id(BUTTON_ID_ALWAYS_TRANSLATE); 627 layout->AddView(before_always_translate_checkbox_);
616 always_translate_checkbox_->set_listener(this);
617 layout->AddView(always_translate_checkbox_);
618 } 628 }
619 if (Use2016Q2UI()) { 629 if (Use2016Q2UI()) {
620 layout->AddPaddingRow(0, views::kPanelSubVerticalSpacing); 630 layout->AddPaddingRow(0, views::kPanelSubVerticalSpacing);
621 } else { 631 } else {
622 layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing); 632 layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
623 } 633 }
624 634
625 layout->StartRow(0, COLUMN_SET_ID_CONTENT); 635 layout->StartRow(0, COLUMN_SET_ID_CONTENT);
626 views::LabelButton* accept_button = 636 views::LabelButton* accept_button =
627 Use2016Q2UI() 637 Use2016Q2UI()
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 target_language_combobox_model_.reset( 834 target_language_combobox_model_.reset(
825 new LanguageComboboxModel(target_default_index, model_.get())); 835 new LanguageComboboxModel(target_default_index, model_.get()));
826 target_language_combobox_ = 836 target_language_combobox_ =
827 new views::Combobox(target_language_combobox_model_.get()); 837 new views::Combobox(target_language_combobox_model_.get());
828 838
829 target_language_combobox_->set_id(COMBOBOX_ID_TARGET_LANGUAGE); 839 target_language_combobox_->set_id(COMBOBOX_ID_TARGET_LANGUAGE);
830 target_language_combobox_->set_listener(this); 840 target_language_combobox_->set_listener(this);
831 841
832 // In an incognito window, "Always translate" checkbox shouldn't be shown. 842 // In an incognito window, "Always translate" checkbox shouldn't be shown.
833 if (!is_in_incognito_window_) { 843 if (!is_in_incognito_window_) {
834 always_translate_checkbox_ = new views::Checkbox(base::string16()); 844 advanced_always_translate_checkbox_ = new views::Checkbox(base::string16());
835 always_translate_checkbox_->set_id(BUTTON_ID_ALWAYS_TRANSLATE); 845 advanced_always_translate_checkbox_->set_id(BUTTON_ID_ALWAYS_TRANSLATE);
836 always_translate_checkbox_->set_listener(this); 846 advanced_always_translate_checkbox_->set_listener(this);
837 } 847 }
838 848
839 views::View* view = new views::View(); 849 views::View* view = new views::View();
840 views::GridLayout* layout = new views::GridLayout(view); 850 views::GridLayout* layout = new views::GridLayout(view);
841 view->SetLayoutManager(layout); 851 view->SetLayoutManager(layout);
842 852
843 using views::GridLayout; 853 using views::GridLayout;
844 854
845 enum { 855 enum {
846 COLUMN_SET_ID_LANGUAGES, 856 COLUMN_SET_ID_LANGUAGES,
(...skipping 25 matching lines...) Expand all
872 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 882 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
873 883
874 layout->StartRow(0, COLUMN_SET_ID_LANGUAGES); 884 layout->StartRow(0, COLUMN_SET_ID_LANGUAGES);
875 layout->AddView(target_language_label); 885 layout->AddView(target_language_label);
876 layout->AddView(target_language_combobox_); 886 layout->AddView(target_language_combobox_);
877 887
878 if (!is_in_incognito_window_) { 888 if (!is_in_incognito_window_) {
879 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 889 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
880 layout->StartRow(0, COLUMN_SET_ID_LANGUAGES); 890 layout->StartRow(0, COLUMN_SET_ID_LANGUAGES);
881 layout->SkipColumns(1); 891 layout->SkipColumns(1);
882 layout->AddView(always_translate_checkbox_); 892 layout->AddView(advanced_always_translate_checkbox_);
883 } 893 }
884 894
885 layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing); 895 layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
886 896
887 layout->StartRow(0, COLUMN_SET_ID_BUTTONS); 897 layout->StartRow(0, COLUMN_SET_ID_BUTTONS);
888 layout->AddView(CreateLink(this, IDS_TRANSLATE_BUBBLE_LANGUAGE_SETTINGS, 898 layout->AddView(CreateLink(this, IDS_TRANSLATE_BUBBLE_LANGUAGE_SETTINGS,
889 LINK_ID_LANGUAGE_SETTINGS)); 899 LINK_ID_LANGUAGE_SETTINGS));
890 advanced_done_button_ = 900 advanced_done_button_ =
891 Use2016Q2UI() 901 Use2016Q2UI()
892 ? CreateBlueButton(this, l10n_util::GetStringUTF16(IDS_DONE), 902 ? CreateBlueButton(this, l10n_util::GetStringUTF16(IDS_DONE),
893 BUTTON_ID_DONE) 903 BUTTON_ID_DONE)
894 : CreateLabelButton(this, l10n_util::GetStringUTF16(IDS_DONE), 904 : CreateLabelButton(this, l10n_util::GetStringUTF16(IDS_DONE),
895 BUTTON_ID_DONE); 905 BUTTON_ID_DONE);
896 advanced_done_button_->SetIsDefault(true); 906 advanced_done_button_->SetIsDefault(true);
897 advanced_cancel_button_ = CreateLabelButton( 907 advanced_cancel_button_ = CreateLabelButton(
898 this, l10n_util::GetStringUTF16(IDS_CANCEL), BUTTON_ID_CANCEL); 908 this, l10n_util::GetStringUTF16(IDS_CANCEL), BUTTON_ID_CANCEL);
899 layout->AddView(advanced_done_button_); 909 layout->AddView(advanced_done_button_);
900 layout->AddView(advanced_cancel_button_); 910 layout->AddView(advanced_cancel_button_);
901 911
902 UpdateAdvancedView(); 912 UpdateAdvancedView();
903 913
904 return view; 914 return view;
905 } 915 }
906 916
917 views::Checkbox* TranslateBubbleView::GetAlwaysTranslateCheckbox() {
918 if (model_->GetViewState() == TranslateBubbleModel::VIEW_STATE_ADVANCED) {
919 return advanced_always_translate_checkbox_;
920 } else if (model_->GetViewState() ==
921 TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE) {
922 return before_always_translate_checkbox_;
923 } else {
924 NOTREACHED();
925 return nullptr;
926 }
927 }
928
907 void TranslateBubbleView::SwitchView( 929 void TranslateBubbleView::SwitchView(
908 TranslateBubbleModel::ViewState view_state) { 930 TranslateBubbleModel::ViewState view_state) {
909 if (model_->GetViewState() == view_state) 931 if (model_->GetViewState() == view_state)
910 return; 932 return;
911 933
912 model_->SetViewState(view_state); 934 model_->SetViewState(view_state);
913 UpdateChildVisibilities(); 935 UpdateChildVisibilities();
914 if (view_state == TranslateBubbleModel::VIEW_STATE_ADVANCED) 936 if (view_state == TranslateBubbleModel::VIEW_STATE_ADVANCED)
915 UpdateAdvancedView(); 937 UpdateAdvancedView();
916 SizeToContents(); 938 SizeToContents();
(...skipping 10 matching lines...) Expand all
927 DCHECK(source_language_combobox_); 949 DCHECK(source_language_combobox_);
928 DCHECK(target_language_combobox_); 950 DCHECK(target_language_combobox_);
929 DCHECK(advanced_done_button_); 951 DCHECK(advanced_done_button_);
930 952
931 base::string16 source_language_name = 953 base::string16 source_language_name =
932 model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); 954 model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex());
933 base::string16 target_language_name = 955 base::string16 target_language_name =
934 model_->GetLanguageNameAt(model_->GetTargetLanguageIndex()); 956 model_->GetLanguageNameAt(model_->GetTargetLanguageIndex());
935 957
936 // "Always translate" checkbox doesn't exist in an incognito window. 958 // "Always translate" checkbox doesn't exist in an incognito window.
937 if (always_translate_checkbox_) { 959 if (advanced_always_translate_checkbox_) {
938 always_translate_checkbox_->SetText( 960 advanced_always_translate_checkbox_->SetText(
939 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ALWAYS)); 961 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ALWAYS));
940 always_translate_checkbox_->SetChecked(
941 Use2016Q2UI() ? model_->ShouldAlwaysTranslateBeCheckedByDefault()
942 : model_->ShouldAlwaysTranslate());
943 } 962 }
944 963
945 base::string16 label; 964 base::string16 label;
946 if (model_->IsPageTranslatedInCurrentLanguages()) 965 if (model_->IsPageTranslatedInCurrentLanguages())
947 label = l10n_util::GetStringUTF16(IDS_DONE); 966 label = l10n_util::GetStringUTF16(IDS_DONE);
948 else 967 else
949 label = l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT); 968 label = l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT);
950 advanced_done_button_->SetText(label); 969 advanced_done_button_->SetText(label);
951 advanced_done_button_->SizeToPreferredSize(); 970 advanced_done_button_->SizeToPreferredSize();
952 if (advanced_view_) 971 if (advanced_view_)
953 advanced_view_->Layout(); 972 advanced_view_->Layout();
954 } 973 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698