• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/webui/options/chromeos/language_customize_modifier_keys_handler.h"
6 
7 #include "base/values.h"
8 #include "chrome/browser/chromeos/input_method/xkeyboard.h"
9 #include "grit/generated_resources.h"
10 #include "ui/base/l10n/l10n_util.h"
11 
12 namespace {
13 const struct ModifierKeysSelectItem {
14   int message_id;
15   chromeos::input_method::ModifierKey value;
16 } kModifierKeysSelectItems[] = {
17   { IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_SEARCH_LABEL,
18     chromeos::input_method::kSearchKey },
19   { IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_LEFT_CTRL,
20     chromeos::input_method::kLeftControlKey },
21   { IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_LEFT_ALT,
22     chromeos::input_method::kLeftAltKey },
23   { IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_VOID,
24     chromeos::input_method::kVoidKey },
25   { IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_CAPSLOCK,
26     chromeos::input_method::kCapsLockKey },
27 };
28 
29 const char* kDataValuesNames[] = {
30   "xkbRemapSearchKeyToValue",
31   "xkbRemapControlKeyToValue",
32   "xkbRemapAltKeyToValue",
33 };
34 }  // namespace
35 
36 namespace chromeos {
37 
LanguageCustomizeModifierKeysHandler()38 LanguageCustomizeModifierKeysHandler::LanguageCustomizeModifierKeysHandler() {
39 }
40 
~LanguageCustomizeModifierKeysHandler()41 LanguageCustomizeModifierKeysHandler::~LanguageCustomizeModifierKeysHandler() {
42 }
43 
GetLocalizedValues(DictionaryValue * localized_strings)44 void LanguageCustomizeModifierKeysHandler::GetLocalizedValues(
45     DictionaryValue* localized_strings) {
46   DCHECK(localized_strings);
47 
48   localized_strings->SetString("xkbRemapSearchKeyToContent",
49       l10n_util::GetStringUTF16(
50           IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_SEARCH_LABEL));
51   localized_strings->SetString("xkbRemapControlKeyToContent",
52       l10n_util::GetStringUTF16(
53           IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_LEFT_CTRL_LABEL));
54   localized_strings->SetString("xkbRemapAltKeyToContent",
55       l10n_util::GetStringUTF16(
56           IDS_OPTIONS_SETTINGS_LANGUAGES_XKB_KEY_LEFT_ALT_LABEL));
57 
58   for (size_t i = 0; i < arraysize(kDataValuesNames); ++i) {
59     ListValue* list_value = new ListValue();
60     for (size_t j = 0; j < arraysize(kModifierKeysSelectItems); ++j) {
61       const input_method::ModifierKey value =
62           kModifierKeysSelectItems[j].value;
63       const int message_id = kModifierKeysSelectItems[j].message_id;
64       // Only the seach key can be remapped to the caps lock key.
65       if (kDataValuesNames[i] != std::string("xkbRemapSearchKeyToValue") &&
66           value == input_method::kCapsLockKey) {
67         continue;
68       }
69       ListValue* option = new ListValue();
70       option->Append(Value::CreateIntegerValue(value));
71       option->Append(Value::CreateStringValue(l10n_util::GetStringUTF16(
72           message_id)));
73       list_value->Append(option);
74     }
75     localized_strings->Set(kDataValuesNames[i], list_value);
76   }
77 }
78 
79 }  // namespace chromeos
80