| Index: chrome/browser/translate/options_menu_model2.cc
|
| diff --git a/chrome/browser/translate/options_menu_model2.cc b/chrome/browser/translate/options_menu_model2.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5fb225f8daf521d4a3ad57fd113ea5638591cde6
|
| --- /dev/null
|
| +++ b/chrome/browser/translate/options_menu_model2.cc
|
| @@ -0,0 +1,114 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/translate/options_menu_model2.h"
|
| +
|
| +#include "app/l10n_util.h"
|
| +#include "base/histogram.h"
|
| +#include "chrome/app/chrome_dll_resource.h"
|
| +#include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/tab_contents/tab_contents.h"
|
| +#include "chrome/browser/translate/translate_infobar_delegate2.h"
|
| +#include "grit/generated_resources.h"
|
| +#include "grit/locale_settings.h"
|
| +
|
| +OptionsMenuModel2::OptionsMenuModel2(
|
| + TranslateInfoBarDelegate2* translate_delegate)
|
| + : ALLOW_THIS_IN_INITIALIZER_LIST(menus::SimpleMenuModel(this)),
|
| + translate_infobar_delegate_(translate_delegate) {
|
| + string16 original_language = translate_delegate->GetLanguageDisplayableNameAt(
|
| + translate_delegate->original_language_index());
|
| + string16 target_language = translate_delegate->GetLanguageDisplayableNameAt(
|
| + translate_delegate->target_language_index());
|
| +
|
| + // Populate the menu.
|
| + AddCheckItem(IDC_TRANSLATE_OPTIONS_ALWAYS,
|
| + l10n_util::GetStringFUTF16(IDS_TRANSLATE_INFOBAR_OPTIONS_ALWAYS,
|
| + original_language, target_language));
|
| + AddCheckItem(IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_LANG,
|
| + l10n_util::GetStringFUTF16(
|
| + IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_LANG,
|
| + original_language));
|
| + AddCheckItem(IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_SITE,
|
| + l10n_util::GetStringUTF16(
|
| + IDS_TRANSLATE_INFOBAR_OPTIONS_NEVER_TRANSLATE_SITE));
|
| + AddItemWithStringId(IDC_TRANSLATE_OPTIONS_ABOUT,
|
| + IDS_TRANSLATE_INFOBAR_OPTIONS_ABOUT);
|
| +}
|
| +
|
| +OptionsMenuModel2::~OptionsMenuModel2() {
|
| +}
|
| +
|
| +bool OptionsMenuModel2::IsCommandIdChecked(int command_id) const {
|
| + switch (command_id) {
|
| + case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_LANG:
|
| + return translate_infobar_delegate_->IsLanguageBlacklisted();
|
| +
|
| + case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_SITE:
|
| + return translate_infobar_delegate_->IsSiteBlacklisted();
|
| +
|
| + case IDC_TRANSLATE_OPTIONS_ALWAYS:
|
| + return translate_infobar_delegate_->ShouldAlwaysTranslate();
|
| +
|
| + default:
|
| + NOTREACHED() << "Invalid command_id from menu";
|
| + break;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +bool OptionsMenuModel2::IsCommandIdEnabled(int command_id) const {
|
| + switch (command_id) {
|
| + case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_LANG :
|
| + case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_SITE :
|
| + return !translate_infobar_delegate_->ShouldAlwaysTranslate();
|
| +
|
| + case IDC_TRANSLATE_OPTIONS_ALWAYS :
|
| + return (!translate_infobar_delegate_->IsLanguageBlacklisted() &&
|
| + !translate_infobar_delegate_->IsSiteBlacklisted());
|
| +
|
| + default:
|
| + break;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +bool OptionsMenuModel2::GetAcceleratorForCommandId(
|
| + int command_id, menus::Accelerator* accelerator) {
|
| + return false;
|
| +}
|
| +
|
| +void OptionsMenuModel2::ExecuteCommand(int command_id) {
|
| + switch (command_id) {
|
| + case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_LANG:
|
| + UMA_HISTOGRAM_COUNTS("Translate.NeverTranslateLang", 1);
|
| + translate_infobar_delegate_->ToggleLanguageBlacklist();
|
| + break;
|
| +
|
| + case IDC_TRANSLATE_OPTIONS_NEVER_TRANSLATE_SITE:
|
| + UMA_HISTOGRAM_COUNTS("Translate.NeverTranslateSite", 1);
|
| + translate_infobar_delegate_->ToggleSiteBlacklist();
|
| + break;
|
| +
|
| + case IDC_TRANSLATE_OPTIONS_ALWAYS:
|
| + UMA_HISTOGRAM_COUNTS("Translate.AlwaysTranslateLang", 1);
|
| + translate_infobar_delegate_->ToggleAlwaysTranslate();
|
| + break;
|
| +
|
| + case IDC_TRANSLATE_OPTIONS_ABOUT: {
|
| + TabContents* tab_contents = translate_infobar_delegate_->tab_contents();
|
| + if (tab_contents) {
|
| + string16 url = l10n_util::GetStringUTF16(
|
| + IDS_ABOUT_GOOGLE_TRANSLATE_URL);
|
| + tab_contents->OpenURL(GURL(url), GURL(), NEW_FOREGROUND_TAB,
|
| + PageTransition::LINK);
|
| + }
|
| + break;
|
| + }
|
| +
|
| + default:
|
| + NOTREACHED() << "Invalid command id from menu.";
|
| + break;
|
| + }
|
| +}
|
|
|