Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / translate / translate_bubble_view.cc
index a78f46e..b5a285b 100644 (file)
@@ -20,6 +20,7 @@
 #include "chrome/browser/translate/translate_ui_delegate.h"
 #include "chrome/browser/ui/translate/translate_bubble_model_impl.h"
 #include "chrome/common/url_constants.h"
+#include "components/translate/core/browser/translate_download_manager.h"
 #include "content/public/browser/web_contents.h"
 #include "grit/generated_resources.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -65,6 +66,7 @@ void GetTranslateLanguages(content::WebContents* web_contents,
   TranslateTabHelper* translate_tab_helper =
       TranslateTabHelper::FromWebContents(web_contents);
   *source = translate_tab_helper->GetLanguageState().original_language();
+  *source = TranslateDownloadManager::GetLanguageCode(*source);
 
   Profile* profile =
       Profile::FromBrowserContext(web_contents->GetBrowserContext());
@@ -138,7 +140,7 @@ TranslateBubbleView::~TranslateBubbleView() {
 // static
 void TranslateBubbleView::ShowBubble(views::View* anchor_view,
                                      content::WebContents* web_contents,
-                                     TranslateBubbleModel::ViewState type,
+                                     TranslateTabHelper::TranslateStep step,
                                      TranslateErrors::Type error_type) {
   if (IsShowing()) {
     // When the user reads the advanced setting panel, the bubble should not be
@@ -148,10 +150,13 @@ void TranslateBubbleView::ShowBubble(views::View* anchor_view,
         TranslateBubbleModel::VIEW_STATE_ADVANCED) {
       return;
     }
-    if (type != TranslateBubbleModel::VIEW_STATE_ERROR)
-      translate_bubble_view_->SwitchView(type);
-    else
+    if (step != TranslateTabHelper::TRANSLATE_ERROR) {
+      TranslateBubbleModel::ViewState state =
+          TranslateBubbleModelImpl::TranslateStepToViewState(step);
+      translate_bubble_view_->SwitchView(state);
+    } else {
       translate_bubble_view_->SwitchToErrorView(error_type);
+    }
     return;
   }
 
@@ -162,7 +167,7 @@ void TranslateBubbleView::ShowBubble(views::View* anchor_view,
   scoped_ptr<TranslateUIDelegate> ui_delegate(
       new TranslateUIDelegate(web_contents, source_language, target_language));
   scoped_ptr<TranslateBubbleModel> model(
-      new TranslateBubbleModelImpl(type, ui_delegate.Pass()));
+      new TranslateBubbleModelImpl(step, ui_delegate.Pass()));
   TranslateBubbleView* view = new TranslateBubbleView(anchor_view,
                                                       model.Pass(),
                                                       error_type,
@@ -268,31 +273,8 @@ gfx::Size TranslateBubbleView::GetPreferredSize() {
   return gfx::Size(width, height);
 }
 
-void TranslateBubbleView::OnSelectedIndexChanged(views::Combobox* combobox) {
-  HandleComboboxSelectedIndexChanged(static_cast<ComboboxID>(combobox->id()));
-}
-
-void TranslateBubbleView::OnComboboxTextButtonClicked(
-    views::Combobox* combobox) {
-  if (combobox != denial_combobox_)
-    return;
-
-  denial_button_clicked_ = true;
-  int index = combobox->selected_index();
-  switch (index) {
-    case TranslateDenialComboboxModel::INDEX_NOPE:
-      break;
-    case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE:
-      model_->SetNeverTranslateLanguage(true);
-      break;
-    case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE:
-      model_->SetNeverTranslateSite(true);
-      break;
-    default:
-      NOTREACHED();
-      break;
-  }
-  StartFade(false);
+void TranslateBubbleView::OnPerformAction(views::Combobox* combobox) {
+  HandleComboboxPerformAction(static_cast<ComboboxID>(combobox->id()));
 }
 
 void TranslateBubbleView::LinkClicked(views::Link* source, int event_flags) {
@@ -428,11 +410,26 @@ void TranslateBubbleView::HandleLinkClicked(
   }
 }
 
-void TranslateBubbleView::HandleComboboxSelectedIndexChanged(
+void TranslateBubbleView::HandleComboboxPerformAction(
     TranslateBubbleView::ComboboxID sender_id) {
   switch (sender_id) {
     case COMBOBOX_ID_DENIAL: {
-      // do nothing
+      denial_button_clicked_ = true;
+      int index = denial_combobox_->selected_index();
+      switch (index) {
+        case TranslateDenialComboboxModel::INDEX_NOPE:
+          break;
+        case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_LANGUAGE:
+          model_->SetNeverTranslateLanguage(true);
+          break;
+        case TranslateDenialComboboxModel::INDEX_NEVER_TRANSLATE_SITE:
+          model_->SetNeverTranslateSite(true);
+          break;
+        default:
+          NOTREACHED();
+          break;
+      }
+      StartFade(false);
       break;
     }
     case COMBOBOX_ID_SOURCE_LANGUAGE: {
@@ -475,7 +472,7 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
       new TranslateDenialComboboxModel(original_language_name));
   denial_combobox_->set_id(COMBOBOX_ID_DENIAL);
   denial_combobox_->set_listener(this);
-  denial_combobox_->SetStyle(views::Combobox::STYLE_NOTIFY_ON_CLICK);
+  denial_combobox_->SetStyle(views::Combobox::STYLE_ACTION);
 
   views::View* view = new views::View();
   views::GridLayout* layout = new views::GridLayout(view);
@@ -513,11 +510,11 @@ views::View* TranslateBubbleView::CreateViewBeforeTranslate() {
   layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
 
   layout->StartRow(0, COLUMN_SET_ID_CONTENT);
-  layout->AddView(denial_combobox_);
   layout->AddView(CreateLabelButton(
       this,
       l10n_util::GetStringUTF16(IDS_TRANSLATE_BUBBLE_ACCEPT),
       BUTTON_ID_TRANSLATE));
+  layout->AddView(denial_combobox_);
 
   return view;
 }
@@ -741,13 +738,13 @@ views::View* TranslateBubbleView::CreateViewAdvanced() {
   layout->AddView(CreateLink(this,
                              IDS_TRANSLATE_BUBBLE_LANGUAGE_SETTINGS,
                              LINK_ID_LANGUAGE_SETTINGS));
-  advanced_cancel_button_ = CreateLabelButton(
-      this, l10n_util::GetStringUTF16(IDS_CANCEL), BUTTON_ID_CANCEL);
-  layout->AddView(advanced_cancel_button_);
   advanced_done_button_ = CreateLabelButton(
       this, l10n_util::GetStringUTF16(IDS_DONE), BUTTON_ID_DONE);
   advanced_done_button_->SetIsDefault(true);
+  advanced_cancel_button_ = CreateLabelButton(
+      this, l10n_util::GetStringUTF16(IDS_CANCEL), BUTTON_ID_CANCEL);
   layout->AddView(advanced_done_button_);
+  layout->AddView(advanced_cancel_button_);
 
   UpdateAdvancedView();