Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3780)

Unified Diff: chrome/browser/translate/options_menu_model2.cc

Issue 2602003: Refactored the translate infobars. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Synced Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+ }
+}
« no previous file with comments | « chrome/browser/translate/options_menu_model2.h ('k') | chrome/browser/translate/translate_infobar_delegate2.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698