| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 }); |
| OLD | NEW |