<?--
 Copyright (C) 2019 The Android Open Source Project

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 -->

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="style.css" >
        <link rel="stylesheet" type="text/css" href="controls.css" >
        <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons+Outlined">
        <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    </head>

    <body>
      <div id="loader"></div>
      <div id="error-message-div">
        <h3 id="error-message" class="hidden">
          <span class="material-icons close-btn">close</span>
        </h3>
      </div>
      <section id="device-connection">
        <div id='header'>
          <div id='app-controls'>
            <div id="keyboard-capture-control" title="Capture Keyboard"></div>
            <div id="mic-capture-control" title="Capture Microphone"></div>
            <div id="camera-control" title="Capture Camera"></div>
            <div id="audio-playback-control" title="Play audio">
              <audio id="device-audio"></audio>
            </div>
            <div id="record-video-control" title="Capture Display as Webm"></div>
          </div>
          <div id='status-div'>
            <h3 id='status-message' class='connecting'>Connecting to device</h3>
          </div>
        </div>
        <div id='controls-and-displays'>
          <div id='control-panel-default-buttons' class='control-panel-column'>
            <button id='device-details-button' title='Device Details' class='material-icons'>
              settings
            </button>
            <button id='bluetooth-modal-button' title='Bluetooth console' class='material-icons'>
              settings_bluetooth
            </button>
          </div>
          <div id='control-panel-custom-buttons' class='control-panel-column'></div>
          <div id='device-displays'>
          </div>
        </div>
      </section>
      <div id='device-details-modal' class='modal'>
        <div id='device-details-modal-header' class='modal-header'>
          <h2>Device Details</h2>
          <button id='device-details-close' title='Close' class='material-icons modal-close'>close</button>
        </div>
        <hr>
        <h3>Hardware Configuration</h3>
        <span id='device-details-hardware'>unknown</span>
      </div>

      <div id='bluetooth-modal' class='modal-wrapper'>
        <div id='bluetooth-prompt' class='modal'>
          <div id='bluetooth-prompt-header' class='modal-header'>
            <h2>Bluetooth</h2>
            <button id='bluetooth-prompt-close' title='Close' class='material-icons modal-close'>close</button>
          </div>
          <div>
            <div id='bluetooth-prompt-text' class='bluetooth-text'>
            We have enabled a BT Wizard to simplify adding a<br>bluetooth device.<br>
            Alternatively, you can enter the BT Console if you<br>want to exercise full control.</div><br>
            <div class='bluetooth-button'>
              <button id='bluetooth-prompt-wizard' title='Start Wizard' class='modal-button-highlight'>Start Wizard</button>
              <button id='bluetooth-prompt-list' title='Device List' class='modal-button'>Device List</button>
              <button id='bluetooth-prompt-console' title='BT Console' class='modal-button'>BT Console</button>
            </div>
          </div>
        </div>
        <div id='bluetooth-wizard' class='modal'>
          <div id='bluetooth-wizard-modal-header' class='modal-header'>
            <h2>BT Wizard</h2>
            <button id='bluetooth-wizard-close' title='Close' class='material-icons modal-close'>close</button>
          </div>
          <div>
            <div class='bluetooth-text-field'><input type="text" id='bluetooth-wizard-name' placeholder="Device Name"></input></div>
            <div class='bluetooth-drop-down'>
              <select id='bluetooth-wizard-type' validate-mac="true" required>
                <option value="beacon">Beacon</option>
                <option value="beacon_swarm">Beacon Swarm</option>
                <!-- Disabled because they were "started but never finished" (according to mylesgw@)
                <option value="car_kit">Car Kit</option>
                <option value="classic">Classic</option> -->
                <option value="keyboard">Keyboard</option>
                <option value="remote_loopback">Remote Loopback</option>
                <option value="scripted_beacon">Scripted Beacon</option>
                <!-- Disabled because it will never show up in the UI
                <option value="sniffer">Sniffer</option> -->
              </select>
            </div>
            <div class='bluetooth-text-field'><input type="text" id='bluetooth-wizard-mac' placeholder="Device MAC" validate-mac="true" required></input><span></span></div>
            <div class='bluetooth-button'>
              <button id='bluetooth-wizard-device' title='Add Device' class='modal-button-highlight' disabled>Add Device</button>
              <button id='bluetooth-wizard-cancel' title='Cancel' class='modal-button'>Cancel</button>
            </div>
          </div>
        </div>
        <div id='bluetooth-wizard-confirm' class='modal'>
          <div id='bluetooth-wizard-confirm-header' class='modal-header'>
            <h2>BT Wizard</h2>
            <button id='bluetooth-wizard-confirm-close' title='Close' class='material-icons modal-close'>close</button>
          </div>
          <div id='bluetooth-wizard-text' class='bluetooth-text'>Device added. See device details below.</div><br>
          <div class='bluetooth-text'>
            <p>Name: <b>GKeyboard</b></p>
            <p>Type: <b>Keyboard</b></p>
            <p>MAC Addr: <b>be:ac:01:55:00:03</b></p>
          </div>
          <div class='bluetooth-button'><button id='bluetooth-wizard-another' title='Add Another' class='modal-button-highlight'>Add Another</button></div>
        </div>
        <div id='bluetooth-list' class='modal'>
          <div id='bluetooth-list-header' class='modal-header'>
            <h2>Device List</h2>
            <button id='bluetooth-list-close' title='Close' class='material-icons modal-close'>close</button>
          </div>
          <div class='bluetooth-text'>
            <div><button title="Delete" data-device-id="delete" class="bluetooth-list-trash material-icons">delete</button>GKeyboard | Keyboard | be:ac:01:55:00:03</div>
            <div><button title="Delete" data-device-id="delete" class="bluetooth-list-trash material-icons">delete</button>GHeadphones | Audio | dc:fa:32:00:55:02</div>
          </div>
        </div>
        <div id='bluetooth-console' class='modal'>
          <div id='bluetooth-console-modal-header' class='modal-header'>
            <h2>BT Console</h2>
            <button id='bluetooth-console-close' title='Close' class='material-icons modal-close'>close</button>
          </div>
          <div>
            <div colspan='2'><textarea id='bluetooth-console-view' readonly rows='10' cols='60'></textarea></div>
            <div width='1'><p id='bluetooth-console-cmd-label'>Command:</p></div>
            <div width='100'><input id='bluetooth-console-input' type='text'></input></div>
          </div>
        </div>
      </div>
       <script src="js/adb.js"></script>
       <script src="js/rootcanal.js"></script>
       <script src="js/cf_webrtc.js" type="module"></script>
       <script src="js/controls.js"></script>
       <script src="js/app.js"></script>
    </body>
</html>
