tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

SettingsMenu.js (3370B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 const {
      8  PureComponent,
      9 } = require("resource://devtools/client/shared/vendor/react.mjs");
     10 const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js");
     11 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.mjs");
     12 const {
     13  connect,
     14 } = require("resource://devtools/client/shared/vendor/react-redux.js");
     15 
     16 const {
     17  getStr,
     18 } = require("resource://devtools/client/responsive/utils/l10n.js");
     19 
     20 loader.lazyRequireGetter(
     21  this,
     22  "showMenu",
     23  "resource://devtools/client/shared/components/menu/utils.js",
     24  true
     25 );
     26 
     27 class SettingsMenu extends PureComponent {
     28  static get propTypes() {
     29    return {
     30      leftAlignmentEnabled: PropTypes.bool.isRequired,
     31      onToggleLeftAlignment: PropTypes.func.isRequired,
     32      onToggleReloadOnTouchSimulation: PropTypes.func.isRequired,
     33      onToggleReloadOnUserAgent: PropTypes.func.isRequired,
     34      onToggleUserAgentInput: PropTypes.func.isRequired,
     35      reloadOnTouchSimulation: PropTypes.bool.isRequired,
     36      reloadOnUserAgent: PropTypes.bool.isRequired,
     37      showUserAgentInput: PropTypes.bool.isRequired,
     38    };
     39  }
     40 
     41  constructor(props) {
     42    super(props);
     43    this.onToggleSettingMenu = this.onToggleSettingMenu.bind(this);
     44  }
     45 
     46  onToggleSettingMenu(event) {
     47    const {
     48      leftAlignmentEnabled,
     49      onToggleLeftAlignment,
     50      onToggleReloadOnTouchSimulation,
     51      onToggleReloadOnUserAgent,
     52      onToggleUserAgentInput,
     53      reloadOnTouchSimulation,
     54      reloadOnUserAgent,
     55      showUserAgentInput,
     56    } = this.props;
     57 
     58    const menuItems = [
     59      {
     60        id: "toggleLeftAlignment",
     61        checked: leftAlignmentEnabled,
     62        label: getStr("responsive.leftAlignViewport"),
     63        type: "checkbox",
     64        click: () => {
     65          onToggleLeftAlignment();
     66        },
     67      },
     68      "-",
     69      {
     70        id: "toggleUserAgentInput",
     71        checked: showUserAgentInput,
     72        label: getStr("responsive.showUserAgentInput"),
     73        type: "checkbox",
     74        click: () => {
     75          onToggleUserAgentInput();
     76        },
     77      },
     78      "-",
     79      {
     80        id: "touchSimulation",
     81        checked: reloadOnTouchSimulation,
     82        label: getStr("responsive.reloadConditions.touchSimulation"),
     83        type: "checkbox",
     84        click: () => {
     85          onToggleReloadOnTouchSimulation();
     86        },
     87      },
     88      {
     89        id: "userAgent",
     90        checked: reloadOnUserAgent,
     91        label: getStr("responsive.reloadConditions.userAgent"),
     92        type: "checkbox",
     93        click: () => {
     94          onToggleReloadOnUserAgent();
     95        },
     96      },
     97    ];
     98 
     99    showMenu(menuItems, {
    100      button: event.target,
    101    });
    102  }
    103 
    104  render() {
    105    return dom.button({
    106      id: "settings-button",
    107      className: "devtools-button",
    108      onClick: this.onToggleSettingMenu,
    109    });
    110  }
    111 }
    112 
    113 const mapStateToProps = state => {
    114  return {
    115    leftAlignmentEnabled: state.ui.leftAlignmentEnabled,
    116    reloadOnTouchSimulation: state.ui.reloadOnTouchSimulation,
    117    reloadOnUserAgent: state.ui.reloadOnUserAgent,
    118    showUserAgentInput: state.ui.showUserAgentInput,
    119  };
    120 };
    121 
    122 module.exports = connect(mapStateToProps)(SettingsMenu);