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

Side by Side Diff: chrome/browser/resources/options/language_list.js

Issue 6296017: dom-ui settings: enable languages & spell checker settings for all platforms.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: code review tweak Created 9 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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.language', function() { 5 cr.define('options.language', function() {
6 const ArrayDataModel = cr.ui.ArrayDataModel; 6 const ArrayDataModel = cr.ui.ArrayDataModel;
7 const LanguageOptions = options.LanguageOptions; 7 const LanguageOptions = options.LanguageOptions;
8 const List = cr.ui.List; 8 const List = cr.ui.List;
9 const ListItem = cr.ui.ListItem; 9 const ListItem = cr.ui.ListItem;
10 const ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; 10 const ListSingleSelectionModel = cr.ui.ListSingleSelectionModel;
11 11
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 85
86 /** @inheritDoc */ 86 /** @inheritDoc */
87 decorate: function() { 87 decorate: function() {
88 List.prototype.decorate.call(this); 88 List.prototype.decorate.call(this);
89 this.selectionModel = new ListSingleSelectionModel; 89 this.selectionModel = new ListSingleSelectionModel;
90 90
91 // HACK(arv): http://crbug.com/40902 91 // HACK(arv): http://crbug.com/40902
92 window.addEventListener('resize', this.redraw.bind(this)); 92 window.addEventListener('resize', this.redraw.bind(this));
93 93
94 // Listen to pref change. 94 // Listen to pref change.
95 Preferences.getInstance().addEventListener(this.preferredLanguagesPref, 95 if (cr.isChromeOS) {
96 this.handlePreferredLanguagesPrefChange_.bind(this)); 96 Preferences.getInstance().addEventListener(this.preferredLanguagesPref,
97 this.handlePreferredLanguagesPrefChange_.bind(this));
98 } else {
99 Preferences.getInstance().addEventListener(this.acceptLanguagesPref,
100 this.handleAcceptLanguagesPrefChange_.bind(this));
101 }
97 102
98 // Listen to drag and drop events. 103 // Listen to drag and drop events.
99 this.addEventListener('dragstart', this.handleDragStart_.bind(this)); 104 this.addEventListener('dragstart', this.handleDragStart_.bind(this));
100 this.addEventListener('dragenter', this.handleDragEnter_.bind(this)); 105 this.addEventListener('dragenter', this.handleDragEnter_.bind(this));
101 this.addEventListener('dragover', this.handleDragOver_.bind(this)); 106 this.addEventListener('dragover', this.handleDragOver_.bind(this));
102 this.addEventListener('drop', this.handleDrop_.bind(this)); 107 this.addEventListener('drop', this.handleDrop_.bind(this));
103 }, 108 },
104 109
105 createItem: function(languageCode) { 110 createItem: function(languageCode) {
106 var languageDisplayName = 111 var languageDisplayName =
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 * @param {Event} e The dragstart event. 182 * @param {Event} e The dragstart event.
178 * @private 183 * @private
179 */ 184 */
180 handleDragStart_: function(e) { 185 handleDragStart_: function(e) {
181 var target = e.target; 186 var target = e.target;
182 // ListItem should be the only draggable element type in the page, 187 // ListItem should be the only draggable element type in the page,
183 // but just in case. 188 // but just in case.
184 if (target instanceof ListItem) { 189 if (target instanceof ListItem) {
185 this.draggedItem = target; 190 this.draggedItem = target;
186 e.dataTransfer.effectAllowed = 'move'; 191 e.dataTransfer.effectAllowed = 'move';
192 // We need to put some kind of data in the drag or it will be
193 // ignored. Use the display name in case the user drags to a text
194 // field or the desktop.
195 e.dataTransfer.setData('text/plain', target.title);
187 } 196 }
188 }, 197 },
189 198
190 /* 199 /*
191 * Handles the dragenter event. 200 * Handles the dragenter event.
192 * @param {Event} e The dragenter event. 201 * @param {Event} e The dragenter event.
193 * @private 202 * @private
194 */ 203 */
195 handleDragEnter_: function(e) { 204 handleDragEnter_: function(e) {
196 e.preventDefault(); 205 e.preventDefault();
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 * @private 258 * @private
250 */ 259 */
251 handlePreferredLanguagesPrefChange_: function(e) { 260 handlePreferredLanguagesPrefChange_: function(e) {
252 var languageCodesInCsv = e.value.value; 261 var languageCodesInCsv = e.value.value;
253 var languageCodes = this.filterBadLanguageCodes_( 262 var languageCodes = this.filterBadLanguageCodes_(
254 languageCodesInCsv.split(',')); 263 languageCodesInCsv.split(','));
255 this.load_(languageCodes); 264 this.load_(languageCodes);
256 }, 265 },
257 266
258 /** 267 /**
268 * Handles accept languages pref change.
269 * @param {Event} e The change event object.
270 * @private
271 */
272 handleAcceptLanguagesPrefChange_: function(e) {
273 var languageCodesInCsv = e.value.value;
274 var languageCodes = this.filterBadLanguageCodes_(
275 languageCodesInCsv.split(','));
276 this.load_(languageCodes);
277 },
278
279 /**
259 * Loads given language list. 280 * Loads given language list.
260 * @param {Array} languageCodes List of language codes. 281 * @param {Array} languageCodes List of language codes.
261 * @private 282 * @private
262 */ 283 */
263 load_: function(languageCodes) { 284 load_: function(languageCodes) {
264 // Preserve the original selected index. See comments below. 285 // Preserve the original selected index. See comments below.
265 var originalSelectedIndex = (this.selectionModel ? 286 var originalSelectedIndex = (this.selectionModel ?
266 this.selectionModel.selectedIndex : -1); 287 this.selectionModel.selectedIndex : -1);
267 this.dataModel = new ArrayDataModel(languageCodes); 288 this.dataModel = new ArrayDataModel(languageCodes);
268 if (originalSelectedIndex >= 0 && 289 if (originalSelectedIndex >= 0 &&
(...skipping 10 matching lines...) Expand all
279 // automatically, hence we manually select the first item here. 300 // automatically, hence we manually select the first item here.
280 this.selectionModel.selectedIndex = 0; 301 this.selectionModel.selectedIndex = 0;
281 } 302 }
282 }, 303 },
283 304
284 /** 305 /**
285 * Saves the preference. 306 * Saves the preference.
286 */ 307 */
287 savePreference_: function() { 308 savePreference_: function() {
288 // Encode the language codes into a CSV string. 309 // Encode the language codes into a CSV string.
289 Preferences.setStringPref(this.preferredLanguagesPref, 310 if (cr.isChromeOS)
290 this.dataModel.slice().join(',')); 311 Preferences.setStringPref(this.preferredLanguagesPref,
312 this.dataModel.slice().join(','));
291 // Save the same language list as accept languages preference as 313 // Save the same language list as accept languages preference as
292 // well, but we need to expand the language list, to make it more 314 // well, but we need to expand the language list, to make it more
293 // acceptable. For instance, some web sites don't understand 'en-US' 315 // acceptable. For instance, some web sites don't understand 'en-US'
294 // but 'en'. See crosbug.com/9884. 316 // but 'en'. See crosbug.com/9884.
295 var acceptLanguages = this.expandLanguageCodes(this.dataModel.slice()); 317 var acceptLanguages = this.expandLanguageCodes(this.dataModel.slice());
296 Preferences.setStringPref(this.acceptLanguagesPref, 318 Preferences.setStringPref(this.acceptLanguagesPref,
297 acceptLanguages.join(',')); 319 acceptLanguages.join(','));
298 cr.dispatchSimpleEvent(this, 'save'); 320 cr.dispatchSimpleEvent(this, 'save');
299 }, 321 },
300 322
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 } 364 }
343 } 365 }
344 return filteredLanguageCodes; 366 return filteredLanguageCodes;
345 }, 367 },
346 }; 368 };
347 369
348 return { 370 return {
349 LanguageList: LanguageList 371 LanguageList: LanguageList
350 }; 372 };
351 }); 373 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698