• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17body {
18  background-color:black;
19  margin: 0;
20  touch-action: none;
21  overscroll-behavior: none;
22}
23
24#device-connection {
25  display: none;
26  max-height: 100vh;
27}
28
29@keyframes spin {
30  0% { transform: rotate(0deg); }
31  100% { transform: rotate(360deg); }
32}
33
34#loader {
35  border-left: 12px solid #4285F4;
36  border-top: 12px solid #34A853;
37  border-right: 12px solid #FBBC05;
38  border-bottom: 12px solid #EA4335;
39  border-radius: 50%;
40  width: 70px;
41  height: 70px;
42  animation: spin 1.2s linear infinite;
43  margin: 100px;
44}
45
46/* Top header row. */
47
48#header {
49  height: 64px;
50  /* Items inside this use a row Flexbox.*/
51  display: flex;
52  align-items: center;
53}
54
55#camera-control {
56  display: none !important;
57}
58#record-video-control {
59  display: none !important;
60}
61
62#app-controls {
63  margin-left: 10px;
64}
65#app-controls > div {
66  display: inline-block;
67  position: relative;
68  margin-right: 6px;
69}
70#device-audio {
71  height: 44px;
72}
73
74#error-message-div {
75  flex-grow: 1;
76}
77#error-message {
78  color: white;
79  font-family: 'Open Sans', sans-serif;
80  padding: 10px;
81  margin: 10px;
82  border-radius: 10px;
83}
84#error-message .close-btn {
85  float: right;
86  cursor: pointer;
87}
88#error-message.hidden {
89  display: none;
90}
91#error-message.warning {
92  /* dark red */
93  background-color: #927836;
94}
95#error-message.error {
96  /* dark red */
97  background-color: #900000;
98}
99#status-div {
100  flex-grow: 1;
101}
102#status-message {
103  color: white;
104  font-family: 'Open Sans', sans-serif;
105  padding: 10px;
106  margin: 10px;
107}
108#status-message.connecting {
109  /* dark yellow */
110  background-color: #927836;
111}
112#status-message.error {
113  /* dark red */
114  background-color: #900000;
115}
116#status-message.connected {
117  /* dark green */
118  background-color: #007000;
119}
120
121/* Control panel buttons and device screen(s). */
122
123#controls-and-displays {
124  height: calc(100% - 84px);
125
126  /* Items inside this use a row Flexbox.*/
127  display: flex;
128}
129
130#controls-and-displays > div {
131  margin-left: 5px;
132  margin-right: 5px;
133}
134
135.modal {
136  /* Start out hidden, and use absolute positioning. */
137  display: none;
138  position: absolute;
139
140  border-radius: 10px;
141  padding: 20px;
142  padding-top: 1px;
143
144  background-color: #5f6368ea; /* Semi-transparent Google grey 500 */
145  color: white;
146  font-family: 'Open Sans', sans-serif;
147}
148.modal-header {
149  cursor: move;
150  /* Items inside this use a row Flexbox.*/
151  display: flex;
152  justify-content: space-between;
153}
154.modal-close {
155  color: white;
156  border: none;
157  outline: none;
158  background-color: transparent;
159}
160.modal-button, .modal-button-highlight {
161  background:    #e8eaed; /* Google grey 200 */
162  border-radius: 10px;
163  box-shadow:    1px 1px #444444;
164  padding:       10px 20px;
165  color:         #000000;
166  display:       inline-block;
167  font:          normal bold 14px/1 "Open Sans", sans-serif;
168  text-align:    center;
169}
170#bluetooth-wizard-mac:valid {
171  border: 2px solid black;
172}
173#bluetooth-wizard-mac:invalid {
174  border: 2px solid red;
175}
176#bluetooth-wizard-mac:invalid + span::before {
177  font-weight: bold;
178  content: 'X';
179  color: red;
180}
181#bluetooth-wizard-mac:valid + span::before {
182  font-weight: bold;
183  content: 'OK';
184  color: green;
185}
186.modal-button {
187  background:    #e8eaed; /* Google grey 200 */
188}
189.modal-button-highlight {
190  background:    #f4cccc;
191}
192#device-details-modal span {
193  white-space: pre;
194}
195#bluetooth-console-input {
196  width: 100%;
197}
198#bluetooth-console-cmd-label {
199  color: white;
200}
201.bluetooth-text, .bluetooth-text-bold, .bluetooth-text-field input {
202  font: normal 18px/1 "Open Sans", sans-serif;
203}
204.bluetooth-text, .bluetooth-text-bold {
205  color: white;
206}
207.bluetooth-text-bold {
208  font: bold;
209}
210.bluetooth-button {
211  text-align: center;
212}
213.bluetooth-drop-down select {
214  font: normal 18px/1 "Open Sans", sans-serif;
215  color: black;
216  width: 500px;
217  margin: 5px;
218  rows: 10;
219  columns: 60;
220}
221.bluetooth-text-field input {
222  color: black;
223  width: 500px;
224  margin: 5px;
225  rows: 10;
226  columns: 60;
227}
228.bluetooth-list-trash {
229  background:    #00000000;
230  border:        0px;
231  color:         #ffffff;
232}
233
234.control-panel-column {
235  width: 50px;
236  /* Items inside this use a column Flexbox.*/
237  display: flex;
238  flex-direction: column;
239}
240#control-panel-custom-buttons {
241  display: none;
242  /* Give the custom buttons column a blue background. */
243  background-color: #1c4587ff;
244  height: fit-content;
245  border-radius: 10px;
246}
247
248.control-panel-column button {
249  margin: 0px 0px 5px 0px;
250  height: 50px;
251  font-size: 32px;
252
253  color: #e8eaed; /* Google grey 200 */
254  border: none;
255  outline: none;
256  background-color: transparent;
257}
258.control-panel-column button:disabled {
259  color: #9aa0a6; /* Google grey 500 */
260}
261.control-panel-column button.modal-button-opened {
262  border-radius: 10px;
263  background-color: #5f6368; /* Google grey 700 */
264}
265
266#device-displays {
267  /* Take up the remaining width of the window.*/
268  flex-grow: 1;
269  /* Don't grow taller than the window.*/
270  max-height: 100vh;
271  /* Allows child elements to be positioned relative to this element. */
272  position: relative;
273}
274
275/*
276 * Container <div> used to wrap each display's <video> element which is used for
277 * maintaining each display's width and height while the display is potentially
278 * rotating.
279 */
280.device-display {
281  /* Prevents #device-displays from using this element when computing flex size. */
282  position: absolute;
283}
284
285/* Container <div> to show info about the individual display. */
286.device-display-info {
287  color: white;
288  /* dark green */
289  background-color: #007000;
290  font-family: 'Open Sans', sans-serif;
291  text-indent: 0px;
292  border-radius: 10px;
293  padding: 10px;
294  margin-bottom: 10px;
295}
296
297/* The actual <video> element for each display. */
298.device-display-video {
299  position: absolute;
300  left:  0px;
301  touch-action: none;
302  object-fit: cover;
303}
304