Home | History | Annotate | Download | only in chromeos
      1 // Copyright (c) 2012 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/keyboard_handler.h"
      6 
      7 #include "base/command_line.h"
      8 #include "base/values.h"
      9 #include "chromeos/chromeos_switches.h"
     10 #include "chromeos/ime/xkeyboard.h"
     11 #include "content/public/browser/web_ui.h"
     12 #include "grit/generated_resources.h"
     13 #include "ui/base/l10n/l10n_util.h"
     14 
     15 namespace {
     16 const struct ModifierKeysSelectItem {
     17   int message_id;
     18   chromeos::input_method::ModifierKey value;
     19 } kModifierKeysSelectItems[] = {
     20   { IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_SEARCH,
     21     chromeos::input_method::kSearchKey },
     22   { IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_LEFT_CTRL,
     23     chromeos::input_method::kControlKey },
     24   { IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_LEFT_ALT,
     25     chromeos::input_method::kAltKey },
     26   { IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_VOID,
     27     chromeos::input_method::kVoidKey },
     28   { IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_CAPS_LOCK,
     29     chromeos::input_method::kCapsLockKey },
     30 };
     31 
     32 const char* kDataValuesNames[] = {
     33   "remapSearchKeyToValue",
     34   "remapControlKeyToValue",
     35   "remapAltKeyToValue",
     36   "remapCapsLockKeyToValue",
     37   "remapDiamondKeyToValue",
     38 };
     39 }  // namespace
     40 
     41 namespace chromeos {
     42 namespace options {
     43 
     44 KeyboardHandler::KeyboardHandler() {
     45 }
     46 
     47 KeyboardHandler::~KeyboardHandler() {
     48 }
     49 
     50 void KeyboardHandler::GetLocalizedValues(DictionaryValue* localized_strings) {
     51   DCHECK(localized_strings);
     52 
     53   localized_strings->SetString("keyboardOverlayTitle",
     54       l10n_util::GetStringUTF16(IDS_OPTIONS_KEYBOARD_OVERLAY_TITLE));
     55   localized_strings->SetString("remapSearchKeyToContent",
     56       l10n_util::GetStringUTF16(
     57           IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_SEARCH_LABEL));
     58   localized_strings->SetString("remapControlKeyToContent",
     59       l10n_util::GetStringUTF16(
     60           IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_LEFT_CTRL_LABEL));
     61   localized_strings->SetString("remapAltKeyToContent",
     62       l10n_util::GetStringUTF16(
     63           IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_LEFT_ALT_LABEL));
     64   localized_strings->SetString("remapCapsLockKeyToContent",
     65       l10n_util::GetStringUTF16(
     66           IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_CAPS_LOCK_LABEL));
     67   localized_strings->SetString("remapDiamondKeyToContent",
     68       l10n_util::GetStringUTF16(
     69           IDS_OPTIONS_SETTINGS_LANGUAGES_KEY_DIAMOND_KEY_LABEL));
     70   localized_strings->SetString("changeLanguageAndInputSettings",
     71       l10n_util::GetStringUTF16(
     72           IDS_OPTIONS_SETTINGS_CHANGE_LANGUAGE_AND_INPUT_SETTINGS));
     73 
     74   for (size_t i = 0; i < arraysize(kDataValuesNames); ++i) {
     75     ListValue* list_value = new ListValue();
     76     for (size_t j = 0; j < arraysize(kModifierKeysSelectItems); ++j) {
     77       const input_method::ModifierKey value =
     78           kModifierKeysSelectItems[j].value;
     79       const int message_id = kModifierKeysSelectItems[j].message_id;
     80       // Only the seach key can be remapped to the caps lock key.
     81       if (kDataValuesNames[i] != std::string("remapSearchKeyToValue") &&
     82           kDataValuesNames[i] != std::string("remapCapsLockKeyToValue") &&
     83           value == input_method::kCapsLockKey) {
     84         continue;
     85       }
     86       ListValue* option = new ListValue();
     87       option->Append(new base::FundamentalValue(value));
     88       option->Append(new base::StringValue(l10n_util::GetStringUTF16(
     89           message_id)));
     90       list_value->Append(option);
     91     }
     92     localized_strings->Set(kDataValuesNames[i], list_value);
     93   }
     94 }
     95 
     96 void KeyboardHandler::InitializePage() {
     97   bool chromeos_keyboard = CommandLine::ForCurrentProcess()->HasSwitch(
     98       chromeos::switches::kHasChromeOSKeyboard);
     99   const base::FundamentalValue show_caps_lock_options(!chromeos_keyboard);
    100 
    101   bool has_diamond_key = CommandLine::ForCurrentProcess()->HasSwitch(
    102       chromeos::switches::kHasChromeOSDiamondKey);
    103   const base::FundamentalValue show_diamond_key_options(has_diamond_key);
    104 
    105   web_ui()->CallJavascriptFunction(
    106       "options.KeyboardOverlay.showCapsLockOptions",
    107       show_caps_lock_options);
    108   web_ui()->CallJavascriptFunction(
    109       "options.KeyboardOverlay.showDiamondKeyOptions",
    110       show_diamond_key_options);
    111 }
    112 
    113 }  // namespace options
    114 }  // namespace chromeos
    115