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)cr.define('options', function() {
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /** @const */ var SettingsDialog = options.SettingsDialog;
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * PointerOverlay class
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Dialog that allows users to set pointer settings (touchpad/mouse).
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   * @constructor
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci   * @extends {options.SettingsDialog}
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  function PointerOverlay() {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // The title is updated dynamically in the setTitle method as pointer
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // devices are discovered or removed.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SettingsDialog.call(this, 'pointer-overlay',
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        '', 'pointer-overlay',
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        assertInstanceof($('pointer-overlay-confirm'), HTMLButtonElement),
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        assertInstanceof($('pointer-overlay-cancel'), HTMLButtonElement));
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cr.addSingletonGetter(PointerOverlay);
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PointerOverlay.prototype = {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    __proto__: SettingsDialog.prototype,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Sets the visibility state of the touchpad group.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {boolean} show True to show, false to hide.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PointerOverlay.showTouchpadControls = function(show) {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $('pointer-section-touchpad').hidden = !show;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Sets the visibility state of the mouse group.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {boolean} show True to show, false to hide.
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PointerOverlay.showMouseControls = function(show) {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $('pointer-section-mouse').hidden = !show;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Updates the title of the pointer dialog.  The title is set dynamically
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * based on whether a touchpad, mouse or both are present.  The label on the
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * button that activates the overlay is also updated to stay in sync. A
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * message is displayed in the main settings page if no pointer devices are
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * available.
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   * @param {string} label i18n key for the overlay title.
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PointerOverlay.setTitle = function(label) {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var button = $('pointer-settings-button');
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var noPointersLabel = $('no-pointing-devices');
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (label.length > 0) {
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var title = loadTimeData.getString(label);
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      button.textContent = title;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      button.hidden = false;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      noPointersLabel.hidden = true;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } else {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      button.hidden = true;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      noPointersLabel.hidden = false;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Export
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return {
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PointerOverlay: PointerOverlay
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
72