| OLD | NEW |
| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 std::string auto_translate_language = | 74 std::string auto_translate_language = |
| 75 TranslateManager::GetAutoTargetLanguage(*source, prefs); | 75 TranslateManager::GetAutoTargetLanguage(*source, prefs); |
| 76 if (!auto_translate_language.empty()) { | 76 if (!auto_translate_language.empty()) { |
| 77 *target = auto_translate_language; | 77 *target = auto_translate_language; |
| 78 return; | 78 return; |
| 79 } | 79 } |
| 80 } | 80 } |
| 81 *target = TranslateManager::GetTargetLanguage(prefs); | 81 *target = TranslateManager::GetTargetLanguage(prefs); |
| 82 } | 82 } |
| 83 | 83 |
| 84 // TODO(hajimehoshi): The interface to offer denial choices should be another | |
| 85 // control instead of Combobox. See crbug/305494. | |
| 86 class TranslateDenialComboboxModel : public ui::ComboboxModel { | 84 class TranslateDenialComboboxModel : public ui::ComboboxModel { |
| 87 public: | 85 public: |
| 88 enum { | 86 enum { |
| 89 INDEX_NOPE = 0, | 87 INDEX_NOPE = 0, |
| 90 INDEX_NEVER_TRANSLATE_LANGUAGE = 2, | 88 INDEX_NEVER_TRANSLATE_LANGUAGE = 2, |
| 91 INDEX_NEVER_TRANSLATE_SITE = 4, | 89 INDEX_NEVER_TRANSLATE_SITE = 4, |
| 92 }; | 90 }; |
| 93 | 91 |
| 94 explicit TranslateDenialComboboxModel( | 92 explicit TranslateDenialComboboxModel( |
| 95 const string16& original_language_name) { | 93 const string16& original_language_name) { |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 width = std::max(width, child->GetPreferredSize().width()); | 273 width = std::max(width, child->GetPreferredSize().width()); |
| 276 } | 274 } |
| 277 int height = GetCurrentView()->GetPreferredSize().height(); | 275 int height = GetCurrentView()->GetPreferredSize().height(); |
| 278 return gfx::Size(width, height); | 276 return gfx::Size(width, height); |
| 279 } | 277 } |
| 280 | 278 |
| 281 void TranslateBubbleView::OnSelectedIndexChanged(views::Combobox* combobox) { | 279 void TranslateBubbleView::OnSelectedIndexChanged(views::Combobox* combobox) { |
| 282 HandleComboboxSelectedIndexChanged(static_cast<ComboboxID>(combobox->id())); | 280 HandleComboboxSelectedIndexChanged(static_cast<ComboboxID>(combobox->id())); |
| 283 } | 281 } |
| 284 | 282 |
| 283 void TranslateBubbleView::OnComboboxTextButtonClicked( |
| 284 views::Combobox* combobox) { |
| 285 if (combobox != denial_combobox_) |
| 286 return; |
| 287 |
| 288 int index = combobox->selected_index(); |
| 289 switch (index) { |
| 290 case TranslateDenialComboboxModel::INDEX_NOPE: |
| 291 if (!translate_executed_) |
| 292 model_->TranslationDeclined(); |
| 293 StartFade(false); |
| 294 break; |
| 295 case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE: |
| 296 model_->SetNeverTranslateLanguage(true); |
| 297 StartFade(false); |
| 298 break; |
| 299 case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE: |
| 300 model_->SetNeverTranslateSite(true); |
| 301 StartFade(false); |
| 302 break; |
| 303 default: |
| 304 NOTREACHED(); |
| 305 break; |
| 306 } |
| 307 } |
| 308 |
| 285 void TranslateBubbleView::LinkClicked(views::Link* source, int event_flags) { | 309 void TranslateBubbleView::LinkClicked(views::Link* source, int event_flags) { |
| 286 HandleLinkClicked(static_cast<LinkID>(source->id())); | 310 HandleLinkClicked(static_cast<LinkID>(source->id())); |
| 287 } | 311 } |
| 288 | 312 |
| 289 void TranslateBubbleView::WebContentsDestroyed( | 313 void TranslateBubbleView::WebContentsDestroyed( |
| 290 content::WebContents* web_contents) { | 314 content::WebContents* web_contents) { |
| 291 GetWidget()->CloseNow(); | 315 GetWidget()->CloseNow(); |
| 292 } | 316 } |
| 293 | 317 |
| 294 TranslateBubbleModel::ViewState TranslateBubbleView::GetViewState() const { | 318 TranslateBubbleModel::ViewState TranslateBubbleView::GetViewState() const { |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 false)); | 433 false)); |
| 410 break; | 434 break; |
| 411 } | 435 } |
| 412 } | 436 } |
| 413 } | 437 } |
| 414 | 438 |
| 415 void TranslateBubbleView::HandleComboboxSelectedIndexChanged( | 439 void TranslateBubbleView::HandleComboboxSelectedIndexChanged( |
| 416 TranslateBubbleView::ComboboxID sender_id) { | 440 TranslateBubbleView::ComboboxID sender_id) { |
| 417 switch (sender_id) { | 441 switch (sender_id) { |
| 418 case COMBOBOX_ID_DENIAL: { | 442 case COMBOBOX_ID_DENIAL: { |
| 419 int index = denial_combobox_->selected_index(); | 443 // do nothing |
| 420 switch (index) { | |
| 421 case TranslateDenialComboboxModel::INDEX_NOPE: | |
| 422 if (!translate_executed_) | |
| 423 model_->TranslationDeclined(); | |
| 424 StartFade(false); | |
| 425 break; | |
| 426 case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE: | |
| 427 model_->SetNeverTranslateLanguage(true); | |
| 428 StartFade(false); | |
| 429 break; | |
| 430 case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE: | |
| 431 model_->SetNeverTranslateSite(true); | |
| 432 StartFade(false); | |
| 433 break; | |
| 434 default: | |
| 435 NOTREACHED(); | |
| 436 break; | |
| 437 } | |
| 438 break; | 444 break; |
| 439 } | 445 } |
| 440 case COMBOBOX_ID_SOURCE_LANGUAGE: { | 446 case COMBOBOX_ID_SOURCE_LANGUAGE: { |
| 441 if (model_->GetOriginalLanguageIndex() == | 447 if (model_->GetOriginalLanguageIndex() == |
| 442 source_language_combobox_->selected_index()) { | 448 source_language_combobox_->selected_index()) { |
| 443 break; | 449 break; |
| 444 } | 450 } |
| 445 model_->UpdateOriginalLanguageIndex( | 451 model_->UpdateOriginalLanguageIndex( |
| 446 source_language_combobox_->selected_index()); | 452 source_language_combobox_->selected_index()); |
| 447 UpdateAdvancedView(); | 453 UpdateAdvancedView(); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 470 views::View* TranslateBubbleView::CreateViewBeforeTranslate() { | 476 views::View* TranslateBubbleView::CreateViewBeforeTranslate() { |
| 471 views::Label* message_label = new views::Label( | 477 views::Label* message_label = new views::Label( |
| 472 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_BEFORE_TRANSLATE)); | 478 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_BEFORE_TRANSLATE)); |
| 473 | 479 |
| 474 string16 original_language_name = | 480 string16 original_language_name = |
| 475 model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); | 481 model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); |
| 476 denial_combobox_ = new views::Combobox( | 482 denial_combobox_ = new views::Combobox( |
| 477 new TranslateDenialComboboxModel(original_language_name)); | 483 new TranslateDenialComboboxModel(original_language_name)); |
| 478 denial_combobox_->set_id(COMBOBOX_ID_DENIAL); | 484 denial_combobox_->set_id(COMBOBOX_ID_DENIAL); |
| 479 denial_combobox_->set_listener(this); | 485 denial_combobox_->set_listener(this); |
| 486 denial_combobox_->SetStyle(views::Combobox::STYLE_NOTIFY_ON_CLICK); |
| 480 | 487 |
| 481 views::View* view = new views::View(); | 488 views::View* view = new views::View(); |
| 482 views::GridLayout* layout = new views::GridLayout(view); | 489 views::GridLayout* layout = new views::GridLayout(view); |
| 483 view->SetLayoutManager(layout); | 490 view->SetLayoutManager(layout); |
| 484 | 491 |
| 485 using views::GridLayout; | 492 using views::GridLayout; |
| 486 | 493 |
| 487 enum { | 494 enum { |
| 488 COLUMN_SET_ID_MESSAGE, | 495 COLUMN_SET_ID_MESSAGE, |
| 489 COLUMN_SET_ID_CONTENT, | 496 COLUMN_SET_ID_CONTENT, |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 model_->ShouldAlwaysTranslate()); | 792 model_->ShouldAlwaysTranslate()); |
| 786 } | 793 } |
| 787 | 794 |
| 788 string16 label; | 795 string16 label; |
| 789 if (model_->IsPageTranslatedInCurrentLanguages()) | 796 if (model_->IsPageTranslatedInCurrentLanguages()) |
| 790 label = l10n_util::GetStringUTF16(IDS_DONE); | 797 label = l10n_util::GetStringUTF16(IDS_DONE); |
| 791 else | 798 else |
| 792 label = l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT); | 799 label = l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT); |
| 793 advanced_done_button_->SetText(label); | 800 advanced_done_button_->SetText(label); |
| 794 } | 801 } |
| OLD | NEW |