15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/options/chromeos/pointer_handler.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/generated_resources.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_ui.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace options {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PointerHandler::PointerHandler()
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  : has_touchpad_(false),
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    has_mouse_(false) {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PointerHandler::~PointerHandler() {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void PointerHandler::GetLocalizedValues(
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    base::DictionaryValue* localized_strings) {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(localized_strings);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static OptionsStringResource resources[] = {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    { "pointerOverlayTitleTouchpadOnly",
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        IDS_OPTIONS_POINTER_TOUCHPAD_OVERLAY_TITLE },
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    { "pointerOverlayTitleMouseOnly",
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        IDS_OPTIONS_POINTER_MOUSE_OVERLAY_TITLE },
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    { "pointerOverlayTitleTouchpadMouse",
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        IDS_OPTIONS_POINTER_TOUCHPAD_MOUSE_OVERLAY_TITLE },
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    { "pointerOverlaySectionTitleTouchpad",
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDS_OPTIONS_POINTER_OVERLAY_SECTION_TITLE_TOUCHPAD },
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    { "pointerOverlaySectionTitleMouse",
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDS_OPTIONS_POINTER_OVERLAY_SECTION_TITLE_MOUSE },
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    { "enableTapToClick",
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDS_OPTIONS_SETTINGS_TAP_TO_CLICK_ENABLED_DESCRIPTION },
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    { "primaryMouseRight",
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IDS_OPTIONS_SETTINGS_PRIMARY_MOUSE_RIGHT_DESCRIPTION },
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    { "traditionalScroll",
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      IDS_OPTIONS_SETTINGS_TRADITIONAL_SCROLL_DESCRIPTION },
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  localized_strings->SetString("naturalScroll",
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      l10n_util::GetStringFUTF16(
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          IDS_OPTIONS_SETTINGS_NATURAL_SCROLL_DESCRIPTION,
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          base::ASCIIToUTF16(chrome::kNaturalScrollHelpURL)));
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RegisterStrings(localized_strings, resources, arraysize(resources));
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PointerHandler::TouchpadExists(bool exists) {
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  has_touchpad_ = exists;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::FundamentalValue val(exists);
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  web_ui()->CallJavascriptFunction("PointerOverlay.showTouchpadControls", val);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateTitle();
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PointerHandler::MouseExists(bool exists) {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  has_mouse_ = exists;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::FundamentalValue val(exists);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  web_ui()->CallJavascriptFunction("PointerOverlay.showMouseControls", val);
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UpdateTitle();
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PointerHandler::UpdateTitle() {
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string label;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (has_touchpad_) {
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    label = has_mouse_ ? "pointerOverlayTitleTouchpadMouse" :
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        "pointerOverlayTitleTouchpadOnly";
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    label = has_mouse_ ? "pointerOverlayTitleMouseOnly" : "";
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::StringValue val(label);
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  web_ui()->CallJavascriptFunction("PointerOverlay.setTitle", val);
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace options
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chromeos
86