OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 cr.define('options', function() { | 5 cr.define('options', function() { |
6 var OptionsPage = options.OptionsPage; | 6 var OptionsPage = options.OptionsPage; |
7 | 7 |
8 // The scale ratio of the display rectangle to its original size. | 8 // The scale ratio of the display rectangle to its original size. |
9 /** @const */ var VISUAL_SCALE = 1 / 10; | 9 /** @const */ var VISUAL_SCALE = 1 / 10; |
10 | 10 |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
148 * @private | 148 * @private |
149 */ | 149 */ |
150 lastTouchLocation_: null, | 150 lastTouchLocation_: null, |
151 | 151 |
152 /** | 152 /** |
153 * Initialize the page. | 153 * Initialize the page. |
154 */ | 154 */ |
155 initializePage: function() { | 155 initializePage: function() { |
156 OptionsPage.prototype.initializePage.call(this); | 156 OptionsPage.prototype.initializePage.call(this); |
157 | 157 |
158 $('display-options-toggle-mirroring').onclick = (function() { | 158 $('display-options-toggle-mirroring').onclick = function() { |
159 this.mirroring_ = !this.mirroring_; | 159 this.mirroring_ = !this.mirroring_; |
160 chrome.send('setMirroring', [this.mirroring_]); | 160 chrome.send('setMirroring', [this.mirroring_]); |
161 }).bind(this); | 161 }.bind(this); |
162 | 162 |
163 var container = $('display-options-displays-view-host'); | 163 var container = $('display-options-displays-view-host'); |
164 container.onmousemove = this.onMouseMove_.bind(this); | 164 container.onmousemove = this.onMouseMove_.bind(this); |
165 window.addEventListener('mouseup', this.endDragging_.bind(this), true); | 165 window.addEventListener('mouseup', this.endDragging_.bind(this), true); |
166 container.ontouchmove = this.onTouchMove_.bind(this); | 166 container.ontouchmove = this.onTouchMove_.bind(this); |
167 container.ontouchend = this.endDragging_.bind(this); | 167 container.ontouchend = this.endDragging_.bind(this); |
168 | 168 |
169 $('display-options-set-primary').onclick = (function() { | 169 $('display-options-set-primary').onclick = function() { |
170 chrome.send('setPrimary', [this.displays_[this.focusedIndex_].id]); | 170 chrome.send('setPrimary', [this.displays_[this.focusedIndex_].id]); |
171 }).bind(this); | 171 }.bind(this); |
172 | 172 $('display-options-resolution-selection').onchange = function(ev) { |
173 $('selected-display-start-calibrating-overscan').onclick = (function() { | 173 chrome.send('setUIScale', [this.displays_[this.focusedIndex_].id, |
174 ev.target.value]); | |
175 }.bind(this); | |
176 $('display-options-orientation-selection').onchange = function(ev) { | |
177 chrome.send('setOrientation', [this.displays_[this.focusedIndex_].id, | |
178 ev.target.value]); | |
179 }.bind(this); | |
180 $('selected-display-start-calibrating-overscan').onclick = function() { | |
174 // Passes the target display ID. Do not specify it through URL hash, | 181 // Passes the target display ID. Do not specify it through URL hash, |
175 // we do not care back/forward. | 182 // we do not care back/forward. |
176 var displayOverscan = options.DisplayOverscan.getInstance(); | 183 var displayOverscan = options.DisplayOverscan.getInstance(); |
177 displayOverscan.setDisplayId(this.displays_[this.focusedIndex_].id); | 184 displayOverscan.setDisplayId(this.displays_[this.focusedIndex_].id); |
178 OptionsPage.navigateToPage('displayOverscan'); | 185 OptionsPage.navigateToPage('displayOverscan'); |
179 }).bind(this); | 186 }.bind(this); |
180 | 187 |
181 chrome.send('getDisplayInfo'); | 188 chrome.send('getDisplayInfo'); |
182 }, | 189 }, |
183 | 190 |
184 /** @override */ | 191 /** @override */ |
185 onVisibilityChanged_: function() { | 192 onVisibilityChanged_: function() { |
186 OptionsPage.prototype.onVisibilityChanged_(this); | 193 OptionsPage.prototype.onVisibilityChanged_(this); |
187 if (this.visible) | 194 if (this.visible) |
188 chrome.send('getDisplayInfo'); | 195 chrome.send('getDisplayInfo'); |
189 }, | 196 }, |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
458 } | 465 } |
459 | 466 |
460 for (var i = 0; i < this.displays_.length; i++) { | 467 for (var i = 0; i < this.displays_.length; i++) { |
461 var display = this.displays_[i]; | 468 var display = this.displays_[i]; |
462 display.div.className = 'displays-display'; | 469 display.div.className = 'displays-display'; |
463 this.resizeDisplayRectangle_(display, i); | 470 this.resizeDisplayRectangle_(display, i); |
464 if (i != this.focusedIndex_) | 471 if (i != this.focusedIndex_) |
465 continue; | 472 continue; |
466 | 473 |
467 display.div.classList.add('displays-focused'); | 474 display.div.classList.add('displays-focused'); |
468 this.dragging_ = { | 475 if (this.displays_.length > 1) { |
469 display: display, | 476 this.dragging_ = { |
470 originalLocation: { | 477 display: display, |
471 x: display.div.offsetLeft, y: display.div.offsetTop | 478 originalLocation: { |
472 }, | 479 x: display.div.offsetLeft, y: display.div.offsetTop |
473 eventLocation: eventLocation | 480 }, |
474 }; | 481 eventLocation: eventLocation |
482 }; | |
483 } | |
475 } | 484 } |
476 | 485 |
477 this.updateSelectedDisplayDescription_(); | 486 this.updateSelectedDisplayDescription_(); |
478 return false; | 487 return false; |
479 }, | 488 }, |
480 | 489 |
481 /** | 490 /** |
482 * finish the current dragging of displays. | 491 * finish the current dragging of displays. |
483 * @param {Event} e The event which triggers this. | 492 * @param {Event} e The event which triggers this. |
484 * @private | 493 * @private |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
516 } | 525 } |
517 this.updateSelectedDisplayDescription_(); | 526 this.updateSelectedDisplayDescription_(); |
518 return false; | 527 return false; |
519 }, | 528 }, |
520 | 529 |
521 /** | 530 /** |
522 * Updates the description of the selected display section. | 531 * Updates the description of the selected display section. |
523 * @private | 532 * @private |
524 */ | 533 */ |
525 updateSelectedDisplayDescription_: function() { | 534 updateSelectedDisplayDescription_: function() { |
535 var resolution = $('display-options-resolution-selection'); | |
536 resolution.textContent = ''; | |
537 var orientation = $('display-options-orientation-selection'); | |
538 var orientationOptions = orientation.getElementsByTagName('option'); | |
539 for (var i = 0; i < orientationOptions.length; i++) { | |
James Hawkins
2013/05/15 21:55:33
nit: No braces for single-line blocks.
Jun Mukai
2013/05/16 00:04:15
Done.
| |
540 orientationOptions.selected = false; | |
541 } | |
542 | |
526 if (this.mirroring_) { | 543 if (this.mirroring_) { |
James Hawkins
2013/05/15 21:55:33
Each of these blocks is quite long; please break t
Jun Mukai
2013/05/16 00:04:15
Done.
| |
527 $('display-configuration-arrow').hidden = true; | 544 $('display-configuration-arrow').hidden = true; |
528 $('display-options-set-primary').hidden = true; | 545 $('display-options-set-primary').disabled = true; |
529 $('display-options-toggle-mirroring').hidden = false; | 546 $('display-options-toggle-mirroring').disabled = false; |
530 $('selected-display-data-container').hidden = false; | 547 $('selected-display-start-calibrating-overscan').disabled = true; |
548 orientation.disabled = true; | |
531 var display = this.displays_[0]; | 549 var display = this.displays_[0]; |
550 $('selected-display-name').textContent = | |
551 loadTimeData.getString('mirroringDisplay'); | |
552 resolution.appendChild(document.createElement('option')); | |
553 resolution.disabled = true; | |
554 } else if (this.focusedIndex_ == null || | |
555 this.displays_[this.focusedIndex_] == null) { | |
556 $('display-configuration-arrow').hidden = true; | |
557 $('display-options-set-primary').disabled = true; | |
558 $('display-options-toggle-mirroring').disabled = true; | |
559 $('selected-display-start-calibrating-overscan').disabled = true; | |
560 orientation.disabled = true; | |
532 $('selected-display-name').textContent = ''; | 561 $('selected-display-name').textContent = ''; |
533 $('selected-display-resolution').textContent = | 562 resolution.appendChild(document.createElement('option')); |
534 display.width + 'x' + display.height; | 563 resolution.disabled = true; |
535 return; | 564 } else { |
565 var display = this.displays_[this.focusedIndex_]; | |
566 | |
567 var arrow = $('display-configuration-arrow'); | |
568 arrow.hidden = false; | |
569 // Adding 1 px to the position to fit the border line and the border in | |
570 // arrow precisely. | |
571 arrow.style.top = $('display-configurations').offsetTop - | |
572 arrow.offsetHeight / 2 + 'px'; | |
573 arrow.style.left = display.div.offsetLeft + | |
574 display.div.offsetWidth / 2 - arrow.offsetWidth / 2 + 'px'; | |
575 | |
576 $('display-options-set-primary').disabled = display.isPrimary; | |
577 $('display-options-toggle-mirroring').disabled = | |
578 (this.displays_.length <= 1); | |
579 $('selected-display-start-calibrating-overscan').disabled = | |
580 display.isInternal; | |
581 | |
582 orientation.disabled = false; | |
583 orientationOptions[display.orientation].selected = true; | |
584 | |
585 $('selected-display-name').textContent = display.name; | |
586 | |
587 if (display.uiScales.length <= 1) { | |
588 var option = document.createElement('option'); | |
589 option.value = 'default'; | |
590 option.textContent = display.width + 'x' + display.height; | |
591 option.selected = true; | |
592 resolution.appendChild(option); | |
593 resolution.disabled = true; | |
594 } else { | |
595 for (var i = 0; i < display.uiScales.length; i++) { | |
596 var option = document.createElement('option'); | |
597 option.value = display.uiScales[i].scale; | |
598 option.textContent = | |
599 display.uiScales[i].width + 'x' + display.uiScales[i].height; | |
600 if (display.uiScales[i].scale == 1.0) { | |
601 option.textContent += ' ' + | |
602 loadTimeData.getString('annotateBest'); | |
603 } | |
604 option.selected = display.uiScales[i].selected; | |
605 resolution.appendChild(option); | |
606 } | |
607 resolution.disabled = !display.isInternal; | |
608 } | |
536 } | 609 } |
537 | |
538 if (this.focusedIndex_ == null || | |
539 this.displays_[this.focusedIndex_] == null) { | |
540 $('selected-display-data-container').hidden = true; | |
541 $('display-configuration-arrow').hidden = true; | |
542 $('display-options-set-primary').hidden = true; | |
543 $('display-options-toggle-mirroring').hidden = true; | |
544 return; | |
545 } | |
546 | |
547 $('selected-display-data-container').hidden = false; | |
548 var display = this.displays_[this.focusedIndex_]; | |
549 var nameElement = $('selected-display-name'); | |
550 nameElement.textContent = display.name; | |
551 | |
552 var resolutionElement = $('selected-display-resolution'); | |
553 resolutionElement.textContent = display.width + 'x' + display.height; | |
554 | |
555 $('start-calibrating-overscan-control').hidden = display.isInternal; | |
556 | |
557 var arrow = $('display-configuration-arrow'); | |
558 arrow.hidden = false; | |
559 // Adding 1 px to the position to fit the border line and the border in | |
560 // arrow precisely. | |
561 arrow.style.top = $('display-configurations').offsetTop - | |
562 arrow.offsetHeight / 2 + 1 + 'px'; | |
563 arrow.style.left = display.div.offsetLeft + display.div.offsetWidth / 2 - | |
564 arrow.offsetWidth / 2 + 'px'; | |
565 | |
566 $('display-options-set-primary').hidden = | |
567 this.displays_[this.focusedIndex_].isPrimary; | |
568 $('display-options-toggle-mirroring').hidden = | |
569 (this.displays_.length <= 1 && !this.mirroring_); | |
570 }, | 610 }, |
571 | 611 |
572 /** | 612 /** |
573 * Clears the drawing area for display rectangles. | 613 * Clears the drawing area for display rectangles. |
574 * @private | 614 * @private |
575 */ | 615 */ |
576 resetDisplaysView_: function() { | 616 resetDisplaysView_: function() { |
577 var displaysViewHost = $('display-options-displays-view-host'); | 617 var displaysViewHost = $('display-options-displays-view-host'); |
578 displaysViewHost.removeChild(displaysViewHost.firstChild); | 618 displaysViewHost.removeChild(displaysViewHost.firstChild); |
579 this.displaysView_ = document.createElement('div'); | 619 this.displaysView_ = document.createElement('div'); |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
736 if (!this.visible) | 776 if (!this.visible) |
737 return; | 777 return; |
738 | 778 |
739 var hasExternal = false; | 779 var hasExternal = false; |
740 for (var i = 0; i < displays.length; i++) { | 780 for (var i = 0; i < displays.length; i++) { |
741 if (!displays[i].isInternal) { | 781 if (!displays[i].isInternal) { |
742 hasExternal = true; | 782 hasExternal = true; |
743 break; | 783 break; |
744 } | 784 } |
745 } | 785 } |
746 if (!hasExternal && !mirroring) { | |
747 OptionsPage.showDefaultPage(); | |
748 return; | |
749 } | |
750 | 786 |
751 this.mirroring_ = mirroring; | 787 this.mirroring_ = mirroring; |
752 this.layout_ = layout; | 788 this.layout_ = layout; |
753 this.offset_ = offset; | 789 this.offset_ = offset; |
754 this.dirty_ = false; | 790 this.dirty_ = false; |
755 | 791 |
756 $('display-options-toggle-mirroring').textContent = | 792 $('display-options-toggle-mirroring').textContent = |
757 loadTimeData.getString( | 793 loadTimeData.getString( |
758 this.mirroring_ ? 'stopMirroring' : 'startMirroring'); | 794 this.mirroring_ ? 'stopMirroring' : 'startMirroring'); |
759 | 795 |
(...skipping 20 matching lines...) Expand all Loading... | |
780 mirroring, displays, layout, offset) { | 816 mirroring, displays, layout, offset) { |
781 DisplayOptions.getInstance().onDisplayChanged_( | 817 DisplayOptions.getInstance().onDisplayChanged_( |
782 mirroring, displays, layout, offset); | 818 mirroring, displays, layout, offset); |
783 }; | 819 }; |
784 | 820 |
785 // Export | 821 // Export |
786 return { | 822 return { |
787 DisplayOptions: DisplayOptions | 823 DisplayOptions: DisplayOptions |
788 }; | 824 }; |
789 }); | 825 }); |
OLD | NEW |