Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(259)

Side by Side Diff: chrome/browser/resources/options/chromeos/display_options.js

Issue 1126933004: Allow switching between extended and unified (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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.exportPath('options'); 5 cr.exportPath('options');
6 6
7 /** 7 /**
8 * @typedef {{ 8 * @typedef {{
9 * availableColorProfiles: Array<{profileId: number, name: string}>, 9 * availableColorProfiles: Array<{profileId: number, name: string}>,
10 * colorProfile: number, 10 * colorProfile: number,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 109
110 DisplayOptions.prototype = { 110 DisplayOptions.prototype = {
111 __proto__: Page.prototype, 111 __proto__: Page.prototype,
112 112
113 /** 113 /**
114 * Whether the current output status is mirroring displays or not. 114 * Whether the current output status is mirroring displays or not.
115 * @private 115 * @private
116 */ 116 */
117 mirroring_: false, 117 mirroring_: false,
118 118
119 /*
120 * Whether the unified desktop is enable or not.
121 * @private
122 */
123 unified_desktop_enabled_: false,
124
125 /*
126 * Whether the unified desktop option should be present.
127 * @private
128 */
129 show_unified_desktop_option_: false,
130
119 /** 131 /**
120 * The current secondary display layout. 132 * The current secondary display layout.
121 * @private 133 * @private
122 */ 134 */
123 layout_: options.SecondaryDisplayLayout.RIGHT, 135 layout_: options.SecondaryDisplayLayout.RIGHT,
124 136
125 /** 137 /**
126 * The array of current output displays. It also contains the display 138 * The array of current output displays. It also contains the display
127 * rectangles currently rendered on screen. 139 * rectangles currently rendered on screen.
128 * @type {Array<options.DisplayInfo>} 140 * @type {Array<options.DisplayInfo>}
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 var displayOverscan = options.DisplayOverscan.getInstance(); 225 var displayOverscan = options.DisplayOverscan.getInstance();
214 displayOverscan.setDisplayId(this.displays_[this.focusedIndex_].id); 226 displayOverscan.setDisplayId(this.displays_[this.focusedIndex_].id);
215 PageManager.showPageByName('displayOverscan'); 227 PageManager.showPageByName('displayOverscan');
216 chrome.send('coreOptionsUserMetricsAction', 228 chrome.send('coreOptionsUserMetricsAction',
217 ['Options_DisplaySetOverscan']); 229 ['Options_DisplaySetOverscan']);
218 }).bind(this); 230 }).bind(this);
219 231
220 $('display-options-done').onclick = function() { 232 $('display-options-done').onclick = function() {
221 PageManager.closeOverlay(); 233 PageManager.closeOverlay();
222 }; 234 };
235
236 $('display-options-toggle-unified-desktop').onclick = (function() {
237 this.unified_desktop_enabled_ = !this.unified_desktop_enabled_;
238 chrome.send('setUnifiedDesktopEnabled',
239 [this.unified_desktop_enabled_]);
240 }).bind(this);
223 }, 241 },
224 242
225 /** @override */ 243 /** @override */
226 didShowPage: function() { 244 didShowPage: function() {
227 var optionTitles = document.getElementsByClassName( 245 var optionTitles = document.getElementsByClassName(
228 'selected-display-option-title'); 246 'selected-display-option-title');
229 var maxSize = 0; 247 var maxSize = 0;
230 for (var i = 0; i < optionTitles.length; i++) 248 for (var i = 0; i < optionTitles.length; i++)
231 maxSize = Math.max(maxSize, optionTitles[i].clientWidth); 249 maxSize = Math.max(maxSize, optionTitles[i].clientWidth);
232 for (var i = 0; i < optionTitles.length; i++) 250 for (var i = 0; i < optionTitles.length; i++)
233 optionTitles[i].style.width = maxSize + 'px'; 251 optionTitles[i].style.width = maxSize + 'px';
234 chrome.send('getDisplayInfo'); 252 chrome.send('getDisplayInfo');
235 }, 253 },
236 254
237 /** @override */ 255 /** @override */
238 canShowPage: function() { 256 canShowPage: function() {
239 return this.enabled_; 257 return this.enabled_;
240 }, 258 },
241 259
242 /** 260 /**
243 * Enables or disables the page. When disabled, the page will not be able to 261 * Enables or disables the page. When disabled, the page will not be able to
244 * open, and will close if currently opened. 262 * open, and will close if currently opened.
245 * @param {boolean} enabled Whether the page should be enabled. 263 * @param {boolean} enabled Whether the page should be enabled.
264 * @param {boolean} showUnifiedDesktop Whether the unified desktop option
265 * should be present.
246 */ 266 */
247 setEnabled: function(enabled) { 267 setEnabled: function(enabled, showUnifiedDesktop) {
248 if (this.enabled_ == enabled) 268 if (this.enabled_ == enabled &&
269 this.show_unified_desktop_option_ == showUnifiedDesktop) {
Jun Mukai 2015/05/20 02:47:49 name should be camelcased. showUnifiedDesktopOptio
oshima 2015/05/20 06:40:01 Done.
249 return; 270 return;
271 }
250 this.enabled_ = enabled; 272 this.enabled_ = enabled;
273 this.show_unified_desktop_option_ = showUnifiedDesktop;
251 if (!enabled && this.visible) 274 if (!enabled && this.visible)
252 PageManager.closeOverlay(); 275 PageManager.closeOverlay();
253 }, 276 },
254 277
255 /** 278 /**
256 * Mouse move handler for dragging display rectangle. 279 * Mouse move handler for dragging display rectangle.
257 * @param {Event} e The mouse move event. 280 * @param {Event} e The mouse move event.
258 * @private 281 * @private
259 */ 282 */
260 onMouseMove_: function(e) { 283 onMouseMove_: function(e) {
(...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 offset.y + 'px'; 947 offset.y + 'px';
925 break; 948 break;
926 } 949 }
927 this.secondaryDisplay_.originalPosition = { 950 this.secondaryDisplay_.originalPosition = {
928 x: secondaryDiv.offsetLeft, y: secondaryDiv.offsetTop}; 951 x: secondaryDiv.offsetLeft, y: secondaryDiv.offsetTop};
929 } 952 }
930 }, 953 },
931 954
932 /** 955 /**
933 * Called when the display arrangement has changed. 956 * Called when the display arrangement has changed.
934 * @param {boolean} mirroring Whether current mode is mirroring or not. 957 * @param {string} multi display mode: one of 'mirror', 'unified',
Jun Mukai 2015/05/20 02:47:49 It's better to be an enum rather than a string. S
oshima 2015/05/20 06:40:01 Done.
958 * 'extended'.
935 * @param {Array<options.DisplayInfo>} displays The list of the display 959 * @param {Array<options.DisplayInfo>} displays The list of the display
936 * information. 960 * information.
937 * @param {options.SecondaryDisplayLayout} layout The layout strategy. 961 * @param {options.SecondaryDisplayLayout} layout The layout strategy.
938 * @param {number} offset The offset of the secondary display. 962 * @param {number} offset The offset of the secondary display.
939 * @private 963 * @private
940 */ 964 */
941 onDisplayChanged_: function(mirroring, displays, layout, offset) { 965 onDisplayChanged_: function(mode, displays, layout, offset) {
942 if (!this.visible) 966 if (!this.visible)
943 return; 967 return;
944 968
945 var hasExternal = false; 969 var hasExternal = false;
946 for (var i = 0; i < displays.length; i++) { 970 for (var i = 0; i < displays.length; i++) {
947 if (!displays[i].isInternal) { 971 if (!displays[i].isInternal) {
948 hasExternal = true; 972 hasExternal = true;
949 break; 973 break;
950 } 974 }
951 } 975 }
952 976
953 this.layout_ = layout; 977 this.layout_ = layout;
954 978
979 var mirroring = mode == 'mirror';
980 var unifiedDesktopEnabled = mode == 'unified';
981
955 $('display-options-toggle-mirroring').textContent = 982 $('display-options-toggle-mirroring').textContent =
956 loadTimeData.getString( 983 loadTimeData.getString(
957 mirroring ? 'stopMirroring' : 'startMirroring'); 984 mirroring ? 'stopMirroring' : 'startMirroring');
958 985
959 // Focus to the first display next to the primary one when |displays| list 986 // Focus to the first display next to the primary one when |displays| list
960 // is updated. 987 // is updated.
961 if (mirroring) { 988 if (mirroring || unifiedDesktopEnabled) {
962 this.focusedIndex_ = null; 989 this.focusedIndex_ = null;
963 } else if (this.mirroring_ != mirroring || 990 } else if (this.mirroring_ != mirroring ||
991 this.unified_desktop_enabled_ != unifiedDesktopEnabled ||
964 this.displays_.length != displays.length) { 992 this.displays_.length != displays.length) {
965 this.focusedIndex_ = 0; 993 this.focusedIndex_ = 0;
966 } 994 }
967 995
968 this.mirroring_ = mirroring; 996 this.mirroring_ = mirroring;
997 this.unified_desktop_enabled_ = unifiedDesktopEnabled;
969 this.displays_ = displays; 998 this.displays_ = displays;
970 999
971 this.resetDisplaysView_(); 1000 this.resetDisplaysView_();
972 if (this.mirroring_) 1001 if (this.mirroring_)
973 this.layoutMirroringDisplays_(); 1002 this.layoutMirroringDisplays_();
974 else 1003 else
975 this.layoutDisplays_(); 1004 this.layoutDisplays_();
976 1005
1006 $('display-options-unified-desktop').hidden =
1007 !this.show_unified_desktop_option_;
1008
1009 $('display-options-toggle-unified-desktop').checked =
1010 this.unified_desktop_enabled_;
1011
1012 var disableUnifiedDesktopOption =
1013 (this.mirroring_ ||
1014 (!this.unified_desktop_enabled_ &&
1015 this.displays_.length == 1));
1016
1017 $('display-options-toggle-unified-desktop').disabled =
1018 disableUnifiedDesktopOption;
1019
977 this.updateSelectedDisplayDescription_(); 1020 this.updateSelectedDisplayDescription_();
978 } 1021 }
979 }; 1022 };
980 1023
981 DisplayOptions.setDisplayInfo = function( 1024 DisplayOptions.setDisplayInfo = function(
982 mirroring, displays, layout, offset) { 1025 mode, displays, layout, offset) {
983 DisplayOptions.getInstance().onDisplayChanged_( 1026 DisplayOptions.getInstance().onDisplayChanged_(
984 mirroring, displays, layout, offset); 1027 mode, displays, layout, offset);
985 }; 1028 };
986 1029
987 // Export 1030 // Export
988 return { 1031 return {
989 DisplayOptions: DisplayOptions 1032 DisplayOptions: DisplayOptions
990 }; 1033 };
991 }); 1034 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698