| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/translate/options_menu_model.h" | 5 #include "components/translate/core/browser/options_menu_model.h" |
| 6 | 6 |
| 7 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
| 8 #include "chrome/app/chrome_command_ids.h" | |
| 9 #include "chrome/browser/translate/translate_infobar_delegate.h" | |
| 10 #include "components/translate/core/browser/translate_driver.h" | 8 #include "components/translate/core/browser/translate_driver.h" |
| 9 #include "components/translate/core/browser/translate_infobar_delegate.h" |
| 11 #include "grit/components_strings.h" | 10 #include "grit/components_strings.h" |
| 12 #include "grit/locale_settings.h" | |
| 13 #include "ui/base/l10n/l10n_util.h" | 11 #include "ui/base/l10n/l10n_util.h" |
| 14 | 12 |
| 15 namespace { | 13 namespace { |
| 16 | 14 |
| 17 const char kAboutGoogleTranslateURL[] = | 15 const char kAboutGoogleTranslateURL[] = |
| 18 #if defined(OS_CHROMEOS) | 16 #if defined(OS_CHROMEOS) |
| 19 "https://support.google.com/chromeos/?p=ib_translation_bar"; | 17 "https://support.google.com/chromeos/?p=ib_translation_bar"; |
| 20 #else | 18 #else |
| 21 "https://support.google.com/chrome/?p=ib_translation_bar"; | 19 "https://support.google.com/chrome/?p=ib_translation_bar"; |
| 22 #endif | 20 #endif |
| 23 | 21 |
| 24 } // namespace | 22 } // namespace |
| 25 | 23 |
| 26 OptionsMenuModel::OptionsMenuModel( | 24 OptionsMenuModel::OptionsMenuModel(TranslateInfoBarDelegate* translate_delegate) |
| 27 TranslateInfoBarDelegate* translate_delegate) | |
| 28 : ui::SimpleMenuModel(this), | 25 : ui::SimpleMenuModel(this), |
| 29 translate_infobar_delegate_(translate_delegate) { | 26 translate_infobar_delegate_(translate_delegate) { |
| 30 // |translate_delegate| must already be owned. | 27 // |translate_delegate| must already be owned. |
| 31 DCHECK(translate_infobar_delegate_->GetTranslateDriver()); | 28 DCHECK(translate_infobar_delegate_->GetTranslateDriver()); |
| 32 | 29 |
| 33 base::string16 original_language = translate_delegate->language_name_at( | 30 base::string16 original_language = translate_delegate->language_name_at( |
| 34 translate_delegate->original_language_index()); | 31 translate_delegate->original_language_index()); |
| 35 base::string16 target_language = translate_delegate->language_name_at( | 32 base::string16 target_language = translate_delegate->language_name_at( |
| 36 translate_delegate->target_language_index()); | 33 translate_delegate->target_language_index()); |
| 37 | 34 |
| 38 bool autodetermined_source_language = | 35 bool autodetermined_source_language = |
| 39 translate_delegate->original_language_index() == | 36 translate_delegate->original_language_index() == |
| 40 TranslateInfoBarDelegate::kNoIndex; | 37 TranslateInfoBarDelegate::kNoIndex; |
| 41 | 38 |
| 42 // Populate the menu. | 39 // Populate the menu. |
| 43 // Incognito mode does not get any preferences related items. | 40 // Incognito mode does not get any preferences related items. |
| 44 if (!translate_delegate->is_off_the_record()) { | 41 if (!translate_delegate->is_off_the_record()) { |
| 45 if (!autodetermined_source_language) { | 42 if (!autodetermined_source_language) { |
| 46 AddCheckItem(IDC_TRANSLATE_OPTIONS_ALWAYS, | 43 AddCheckItem(ALWAYS_TRANSLATE, |
| 47 l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_OPTIONS_ALWAYS, | 44 l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_OPTIONS_ALWAYS, |
| 48 original_language, target_language)); | 45 original_language, target_language)); |
| 49 AddCheckItem(IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_LANG, | 46 AddCheckItem(NEVER_TRANSLATE_LANGUAGE, |
| 50 l10n_util::GetStringFUTF16( | 47 l10n_util::GetStringFUTF16( |
| 51 IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_LANG, | 48 IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_LANG, |
| 52 original_language)); | 49 original_language)); |
| 53 } | 50 } |
| 54 AddCheckItem(IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_SITE, | 51 AddCheckItem(NEVER_TRANSLATE_SITE, |
| 55 l10n_util::GetStringUTF16( | 52 l10n_util::GetStringUTF16( |
| 56 IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_SITE)); | 53 IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_SITE)); |
| 57 AddSeparator(ui::NORMAL_SEPARATOR); | 54 AddSeparator(ui::NORMAL_SEPARATOR); |
| 58 } | 55 } |
| 59 if (!autodetermined_source_language) { | 56 if (!autodetermined_source_language) { |
| 60 AddItem(IDC_TRANSLATE_REPORT_BAD_LANGUAGE_DETECTION, | 57 AddItem(REPORT_BAD_DETECTION, |
| 61 l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_OPTIONS_REPORT_ERROR, | 58 l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_OPTIONS_REPORT_ERROR, |
| 62 original_language)); | 59 original_language)); |
| 63 } | 60 } |
| 64 AddItemWithStringId(IDC_TRANSLATE_OPTIONS_ABOUT, | 61 AddItemWithStringId(ABOUT_TRANSLATE, IDS_TRANSLATE_INFOBAR_OPTIONS_ABOUT); |
| 65 IDS_TRANSLATE_INFOBAR_OPTIONS_ABOUT); | |
| 66 } | 62 } |
| 67 | 63 |
| 68 OptionsMenuModel::~OptionsMenuModel() { | 64 OptionsMenuModel::~OptionsMenuModel() { |
| 69 } | 65 } |
| 70 | 66 |
| 71 bool OptionsMenuModel::IsCommandIdChecked(int command_id) const { | 67 bool OptionsMenuModel::IsCommandIdChecked(int command_id) const { |
| 72 switch (command_id) { | 68 switch (command_id) { |
| 73 case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_LANG: | 69 case NEVER_TRANSLATE_LANGUAGE: |
| 74 return !translate_infobar_delegate_->IsTranslatableLanguageByPrefs(); | 70 return !translate_infobar_delegate_->IsTranslatableLanguageByPrefs(); |
| 75 | 71 |
| 76 case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_SITE: | 72 case NEVER_TRANSLATE_SITE: |
| 77 return translate_infobar_delegate_->IsSiteBlacklisted(); | 73 return translate_infobar_delegate_->IsSiteBlacklisted(); |
| 78 | 74 |
| 79 case IDC_TRANSLATE_OPTIONS_ALWAYS: | 75 case ALWAYS_TRANSLATE: |
| 80 return translate_infobar_delegate_->ShouldAlwaysTranslate(); | 76 return translate_infobar_delegate_->ShouldAlwaysTranslate(); |
| 81 | 77 |
| 82 default: | 78 default: |
| 83 NOTREACHED() << "Invalid command_id from menu"; | 79 NOTREACHED() << "Invalid command_id from menu"; |
| 84 break; | 80 break; |
| 85 } | 81 } |
| 86 return false; | 82 return false; |
| 87 } | 83 } |
| 88 | 84 |
| 89 bool OptionsMenuModel::IsCommandIdEnabled(int command_id) const { | 85 bool OptionsMenuModel::IsCommandIdEnabled(int command_id) const { |
| 90 switch (command_id) { | 86 switch (command_id) { |
| 91 case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_LANG : | 87 case NEVER_TRANSLATE_LANGUAGE: |
| 92 case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_SITE : | 88 case NEVER_TRANSLATE_SITE: |
| 93 return !translate_infobar_delegate_->ShouldAlwaysTranslate(); | 89 return !translate_infobar_delegate_->ShouldAlwaysTranslate(); |
| 94 | 90 |
| 95 case IDC_TRANSLATE_OPTIONS_ALWAYS : | 91 case ALWAYS_TRANSLATE: |
| 96 return (translate_infobar_delegate_->IsTranslatableLanguageByPrefs() && | 92 return (translate_infobar_delegate_->IsTranslatableLanguageByPrefs() && |
| 97 !translate_infobar_delegate_->IsSiteBlacklisted()); | 93 !translate_infobar_delegate_->IsSiteBlacklisted()); |
| 98 | 94 |
| 99 default: | 95 default: |
| 100 break; | 96 break; |
| 101 } | 97 } |
| 102 return true; | 98 return true; |
| 103 } | 99 } |
| 104 | 100 |
| 105 bool OptionsMenuModel::GetAcceleratorForCommandId( | 101 bool OptionsMenuModel::GetAcceleratorForCommandId( |
| 106 int command_id, ui::Accelerator* accelerator) { | 102 int command_id, |
| 103 ui::Accelerator* accelerator) { |
| 107 return false; | 104 return false; |
| 108 } | 105 } |
| 109 | 106 |
| 110 void OptionsMenuModel::ExecuteCommand(int command_id, int event_flags) { | 107 void OptionsMenuModel::ExecuteCommand(int command_id, int event_flags) { |
| 111 switch (command_id) { | 108 switch (command_id) { |
| 112 case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_LANG: | 109 case NEVER_TRANSLATE_LANGUAGE: |
| 113 translate_infobar_delegate_->ToggleTranslatableLanguageByPrefs(); | 110 translate_infobar_delegate_->ToggleTranslatableLanguageByPrefs(); |
| 114 break; | 111 break; |
| 115 | 112 |
| 116 case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_SITE: | 113 case NEVER_TRANSLATE_SITE: |
| 117 translate_infobar_delegate_->ToggleSiteBlacklist(); | 114 translate_infobar_delegate_->ToggleSiteBlacklist(); |
| 118 break; | 115 break; |
| 119 | 116 |
| 120 case IDC_TRANSLATE_OPTIONS_ALWAYS: | 117 case ALWAYS_TRANSLATE: |
| 121 translate_infobar_delegate_->ToggleAlwaysTranslate(); | 118 translate_infobar_delegate_->ToggleAlwaysTranslate(); |
| 122 break; | 119 break; |
| 123 | 120 |
| 124 case IDC_TRANSLATE_REPORT_BAD_LANGUAGE_DETECTION: | 121 case REPORT_BAD_DETECTION: |
| 125 translate_infobar_delegate_->ReportLanguageDetectionError(); | 122 translate_infobar_delegate_->ReportLanguageDetectionError(); |
| 126 break; | 123 break; |
| 127 | 124 |
| 128 case IDC_TRANSLATE_OPTIONS_ABOUT: { | 125 case ABOUT_TRANSLATE: { |
| 129 TranslateDriver* translate_driver = | 126 TranslateDriver* translate_driver = |
| 130 translate_infobar_delegate_->GetTranslateDriver(); | 127 translate_infobar_delegate_->GetTranslateDriver(); |
| 131 if (translate_driver) | 128 if (translate_driver) |
| 132 translate_driver->OpenUrlInNewTab(GURL(kAboutGoogleTranslateURL)); | 129 translate_driver->OpenUrlInNewTab(GURL(kAboutGoogleTranslateURL)); |
| 133 break; | 130 break; |
| 134 } | 131 } |
| 135 | 132 |
| 136 default: | 133 default: |
| 137 NOTREACHED() << "Invalid command id from menu."; | 134 NOTREACHED() << "Invalid command id from menu."; |
| 138 break; | 135 break; |
| 139 } | 136 } |
| 140 } | 137 } |
| OLD | NEW |