- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / infobars / translate_language_menu_model.cc
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/views/infobars/translate_language_menu_model.h"
6
7 #include "chrome/browser/translate/translate_infobar_delegate.h"
8 #include "chrome/browser/ui/views/infobars/translate_infobar_base.h"
9
10 TranslateLanguageMenuModel::TranslateLanguageMenuModel(
11     LanguageType language_type,
12     TranslateInfoBarDelegate* infobar_delegate,
13     TranslateInfoBarBase* infobar,
14     views::MenuButton* button,
15     bool translate_on_change)
16     : ui::SimpleMenuModel(this),
17       language_type_(language_type),
18       infobar_delegate_(infobar_delegate),
19       infobar_(infobar),
20       button_(button),
21       translate_on_change_(translate_on_change) {
22   for (size_t i = 0; i < infobar_delegate_->num_languages(); ++i)
23     AddCheckItem(static_cast<int>(i), infobar_delegate_->language_name_at(i));
24 }
25
26 TranslateLanguageMenuModel::~TranslateLanguageMenuModel() {
27 }
28
29 bool TranslateLanguageMenuModel::IsCommandIdChecked(int command_id) const {
30   return static_cast<size_t>(command_id) == GetLanguageIndex();
31 }
32
33 bool TranslateLanguageMenuModel::IsCommandIdEnabled(int command_id) const {
34   // Prevent the same language from being selectable in original and target.
35   return static_cast<size_t>(command_id) != ((language_type_ == ORIGINAL) ?
36       infobar_delegate_->target_language_index() :
37       infobar_delegate_->original_language_index());
38 }
39
40 bool TranslateLanguageMenuModel::GetAcceleratorForCommandId(
41     int command_id,
42     ui::Accelerator* accelerator) {
43   return false;
44 }
45
46 void TranslateLanguageMenuModel::ExecuteCommand(int command_id,
47                                                 int event_flags) {
48   size_t command_id_size_t = static_cast<size_t>(command_id);
49   if (language_type_ == ORIGINAL)
50     infobar_delegate_->UpdateOriginalLanguageIndex(command_id_size_t);
51   else
52     infobar_delegate_->UpdateTargetLanguageIndex(command_id_size_t);
53
54   infobar_->UpdateLanguageButtonText(button_,
55       infobar_delegate_->language_name_at(GetLanguageIndex()));
56   if (translate_on_change_)
57     infobar_delegate_->Translate();
58 }
59
60 size_t TranslateLanguageMenuModel::GetLanguageIndex() const {
61   return (language_type_ == ORIGINAL) ?
62       infobar_delegate_->original_language_index() :
63       infobar_delegate_->target_language_index();
64 }