| // Copyright (c) 2011 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/languages_menu_model.h" |
| |
| #include "base/metrics/histogram.h" |
| #include "chrome/browser/translate/translate_infobar_delegate.h" |
| |
| LanguagesMenuModel::LanguagesMenuModel( |
| TranslateInfoBarDelegate* translate_delegate, |
| LanguageType language_type) |
| : ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)), |
| translate_infobar_delegate_(translate_delegate), |
| language_type_(language_type) { |
| for (size_t i = 0; i < translate_delegate->GetLanguageCount(); ++i) { |
| AddCheckItem(static_cast<int>(i), |
| translate_delegate->GetLanguageDisplayableNameAt(i)); |
| } |
| } |
| |
| LanguagesMenuModel::~LanguagesMenuModel() { |
| } |
| |
| bool LanguagesMenuModel::IsCommandIdChecked(int command_id) const { |
| return static_cast<size_t>(command_id) == ((language_type_ == ORIGINAL) ? |
| translate_infobar_delegate_->original_language_index() : |
| translate_infobar_delegate_->target_language_index()); |
| } |
| |
| bool LanguagesMenuModel::IsCommandIdEnabled(int command_id) const { |
| // Prevent the same language from being selectable in original and target. |
| return static_cast<size_t>(command_id) != ((language_type_ == ORIGINAL) ? |
| translate_infobar_delegate_->target_language_index() : |
| translate_infobar_delegate_->original_language_index()); |
| } |
| |
| bool LanguagesMenuModel::GetAcceleratorForCommandId( |
| int command_id, |
| ui::Accelerator* accelerator) { |
| return false; |
| } |
| |
| void LanguagesMenuModel::ExecuteCommand(int command_id) { |
| size_t command_id_size_t = static_cast<size_t>(command_id); |
| if (language_type_ == ORIGINAL) { |
| UMA_HISTOGRAM_COUNTS("Translate.ModifyOriginalLang", 1); |
| translate_infobar_delegate_->SetOriginalLanguage(command_id_size_t); |
| return; |
| } |
| UMA_HISTOGRAM_COUNTS("Translate.ModifyTargetLang", 1); |
| translate_infobar_delegate_->SetTargetLanguage(command_id_size_t); |
| } |