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 base::string16& original_language_name) { | 93 const base::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 base::string16 original_language_name = | 480 base::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 base::string16 label; | 795 base::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 |