| 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 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 width = std::max(width, child->GetPreferredSize().width()); | 259 width = std::max(width, child->GetPreferredSize().width()); |
| 262 } | 260 } |
| 263 int height = GetCurrentView()->GetPreferredSize().height(); | 261 int height = GetCurrentView()->GetPreferredSize().height(); |
| 264 return gfx::Size(width, height); | 262 return gfx::Size(width, height); |
| 265 } | 263 } |
| 266 | 264 |
| 267 void TranslateBubbleView::OnSelectedIndexChanged(views::Combobox* combobox) { | 265 void TranslateBubbleView::OnSelectedIndexChanged(views::Combobox* combobox) { |
| 268 HandleComboboxSelectedIndexChanged(static_cast<ComboboxID>(combobox->id())); | 266 HandleComboboxSelectedIndexChanged(static_cast<ComboboxID>(combobox->id())); |
| 269 } | 267 } |
| 270 | 268 |
| 269 void TranslateBubbleView::OnComboboxTextButtonClicked( |
| 270 views::Combobox* combobox) { |
| 271 if (combobox != denial_combobox_) |
| 272 return; |
| 273 |
| 274 int index = combobox->selected_index(); |
| 275 switch (index) { |
| 276 case TranslateDenialComboboxModel::INDEX_NOPE: |
| 277 if (!translate_executed_) |
| 278 model_->TranslationDeclined(); |
| 279 StartFade(false); |
| 280 break; |
| 281 case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE: |
| 282 model_->SetNeverTranslateLanguage(true); |
| 283 StartFade(false); |
| 284 break; |
| 285 case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE: |
| 286 model_->SetNeverTranslateSite(true); |
| 287 StartFade(false); |
| 288 break; |
| 289 default: |
| 290 NOTREACHED(); |
| 291 break; |
| 292 } |
| 293 } |
| 294 |
| 271 void TranslateBubbleView::LinkClicked(views::Link* source, int event_flags) { | 295 void TranslateBubbleView::LinkClicked(views::Link* source, int event_flags) { |
| 272 HandleLinkClicked(static_cast<LinkID>(source->id())); | 296 HandleLinkClicked(static_cast<LinkID>(source->id())); |
| 273 } | 297 } |
| 274 | 298 |
| 275 void TranslateBubbleView::WebContentsDestroyed( | 299 void TranslateBubbleView::WebContentsDestroyed( |
| 276 content::WebContents* web_contents) { | 300 content::WebContents* web_contents) { |
| 277 GetWidget()->CloseNow(); | 301 GetWidget()->CloseNow(); |
| 278 } | 302 } |
| 279 | 303 |
| 280 TranslateBubbleModel::ViewState TranslateBubbleView::GetViewState() const { | 304 TranslateBubbleModel::ViewState TranslateBubbleView::GetViewState() const { |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 false)); | 410 false)); |
| 387 break; | 411 break; |
| 388 } | 412 } |
| 389 } | 413 } |
| 390 } | 414 } |
| 391 | 415 |
| 392 void TranslateBubbleView::HandleComboboxSelectedIndexChanged( | 416 void TranslateBubbleView::HandleComboboxSelectedIndexChanged( |
| 393 TranslateBubbleView::ComboboxID sender_id) { | 417 TranslateBubbleView::ComboboxID sender_id) { |
| 394 switch (sender_id) { | 418 switch (sender_id) { |
| 395 case COMBOBOX_ID_DENIAL: { | 419 case COMBOBOX_ID_DENIAL: { |
| 396 int index = denial_combobox_->selected_index(); | 420 // do nothing |
| 397 switch (index) { | |
| 398 case TranslateDenialComboboxModel::INDEX_NOPE: | |
| 399 if (!translate_executed_) | |
| 400 model_->TranslationDeclined(); | |
| 401 StartFade(false); | |
| 402 break; | |
| 403 case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE: | |
| 404 model_->SetNeverTranslateLanguage(true); | |
| 405 StartFade(false); | |
| 406 break; | |
| 407 case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE: | |
| 408 model_->SetNeverTranslateSite(true); | |
| 409 StartFade(false); | |
| 410 break; | |
| 411 default: | |
| 412 NOTREACHED(); | |
| 413 break; | |
| 414 } | |
| 415 break; | 421 break; |
| 416 } | 422 } |
| 417 case COMBOBOX_ID_SOURCE_LANGUAGE: { | 423 case COMBOBOX_ID_SOURCE_LANGUAGE: { |
| 418 if (model_->GetOriginalLanguageIndex() == | 424 if (model_->GetOriginalLanguageIndex() == |
| 419 source_language_combobox_->selected_index()) { | 425 source_language_combobox_->selected_index()) { |
| 420 break; | 426 break; |
| 421 } | 427 } |
| 422 model_->UpdateOriginalLanguageIndex( | 428 model_->UpdateOriginalLanguageIndex( |
| 423 source_language_combobox_->selected_index()); | 429 source_language_combobox_->selected_index()); |
| 424 UpdateAdvancedView(); | 430 UpdateAdvancedView(); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 447 views::View* TranslateBubbleView::CreateViewBeforeTranslate() { | 453 views::View* TranslateBubbleView::CreateViewBeforeTranslate() { |
| 448 views::Label* message_label = new views::Label( | 454 views::Label* message_label = new views::Label( |
| 449 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_BEFORE_TRANSLATE)); | 455 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_BEFORE_TRANSLATE)); |
| 450 | 456 |
| 451 string16 original_language_name = | 457 string16 original_language_name = |
| 452 model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); | 458 model_->GetLanguageNameAt(model_->GetOriginalLanguageIndex()); |
| 453 denial_combobox_ = new views::Combobox( | 459 denial_combobox_ = new views::Combobox( |
| 454 new TranslateDenialComboboxModel(original_language_name)); | 460 new TranslateDenialComboboxModel(original_language_name)); |
| 455 denial_combobox_->set_id(COMBOBOX_ID_DENIAL); | 461 denial_combobox_->set_id(COMBOBOX_ID_DENIAL); |
| 456 denial_combobox_->set_listener(this); | 462 denial_combobox_->set_listener(this); |
| 463 denial_combobox_->SetStyle(views::Combobox::STYLE_NOTIFY_ON_CLICK); |
| 457 | 464 |
| 458 views::View* view = new views::View(); | 465 views::View* view = new views::View(); |
| 459 views::GridLayout* layout = new views::GridLayout(view); | 466 views::GridLayout* layout = new views::GridLayout(view); |
| 460 view->SetLayoutManager(layout); | 467 view->SetLayoutManager(layout); |
| 461 | 468 |
| 462 using views::GridLayout; | 469 using views::GridLayout; |
| 463 | 470 |
| 464 enum { | 471 enum { |
| 465 COLUMN_SET_ID_MESSAGE, | 472 COLUMN_SET_ID_MESSAGE, |
| 466 COLUMN_SET_ID_CONTENT, | 473 COLUMN_SET_ID_CONTENT, |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 model_->GetLanguageNameAt(model_->GetTargetLanguageIndex()); | 759 model_->GetLanguageNameAt(model_->GetTargetLanguageIndex()); |
| 753 | 760 |
| 754 // "Always translate" checkbox doesn't exist in an incognito window. | 761 // "Always translate" checkbox doesn't exist in an incognito window. |
| 755 if (always_translate_checkbox_) { | 762 if (always_translate_checkbox_) { |
| 756 always_translate_checkbox_->SetText( | 763 always_translate_checkbox_->SetText( |
| 757 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ALWAYS)); | 764 l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ALWAYS)); |
| 758 always_translate_checkbox_->SetChecked( | 765 always_translate_checkbox_->SetChecked( |
| 759 model_->ShouldAlwaysTranslate()); | 766 model_->ShouldAlwaysTranslate()); |
| 760 } | 767 } |
| 761 } | 768 } |
| OLD | NEW |