OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 | 6 |
7 const OptionsPage = options.OptionsPage; | 7 const OptionsPage = options.OptionsPage; |
8 const AddLanguageOverlay = options.language.AddLanguageOverlay; | 8 const AddLanguageOverlay = options.language.AddLanguageOverlay; |
9 const LanguageList = options.language.LanguageList; | 9 const LanguageList = options.language.LanguageList; |
10 | 10 |
(...skipping 82 matching lines...) Loading... |
93 label.languageCode = inputMethod.languageCode; | 93 label.languageCode = inputMethod.languageCode; |
94 | 94 |
95 inputMethodList.appendChild(label); | 95 inputMethodList.appendChild(label); |
96 } | 96 } |
97 // Listen to pref change once the input method list is initialized. | 97 // Listen to pref change once the input method list is initialized. |
98 Preferences.getInstance().addEventListener(this.preloadEnginesPref, | 98 Preferences.getInstance().addEventListener(this.preloadEnginesPref, |
99 cr.bind(this.handlePreloadEnginesPrefChange_, this)); | 99 cr.bind(this.handlePreloadEnginesPrefChange_, this)); |
100 }, | 100 }, |
101 | 101 |
102 /** | 102 /** |
103 * Handler for languageOptionsList's change event. | 103 * Handles languageOptionsList's change event. |
104 * @param {Event} e Change event. | 104 * @param {Event} e Change event. |
105 * @private | 105 * @private |
106 */ | 106 */ |
107 handleLanguageOptionsListChange_: function(e) { | 107 handleLanguageOptionsListChange_: function(e) { |
108 var languageOptionsList = $('language-options-list'); | 108 var languageOptionsList = $('language-options-list'); |
109 var index = languageOptionsList.selectionModel.selectedIndex; | 109 var index = languageOptionsList.selectionModel.selectedIndex; |
110 if (index == -1) | 110 if (index == -1) |
111 return; | 111 return; |
112 | 112 |
113 var languageCode = languageOptionsList.getLanguageCodes()[index]; | 113 var languageCode = languageOptionsList.getLanguageCodes()[index]; |
| 114 this.updateSelectedLanguageName_(languageCode); |
| 115 this.updateUiLanguageButton_(languageCode); |
| 116 this.updateInputMethodList_(); |
| 117 this.updateLanguageListInAddLanguageOverlay_(); |
| 118 }, |
| 119 |
| 120 /** |
| 121 * Updates the currently selected language name. |
| 122 * @param {string} languageCode Language code (ex. "fr"). |
| 123 * @private |
| 124 */ |
| 125 updateSelectedLanguageName_: function(languageCode) { |
114 var languageDisplayName = LanguageList.getDisplayNameFromLanguageCode( | 126 var languageDisplayName = LanguageList.getDisplayNameFromLanguageCode( |
115 languageCode); | 127 languageCode); |
| 128 // Update the currently selected language name. |
| 129 $('language-options-language-name').textContent = languageDisplayName; |
| 130 }, |
116 | 131 |
117 $('language-options-language-name').textContent = languageDisplayName; | 132 /** |
118 // TODO(satorux): The button text should be changed to | 133 * Updates the UI language button. |
119 // 'is_displayed_in_this_language', depending on the current UI | 134 * @param {string} languageCode Language code (ex. "fr"). |
120 // language. | 135 * @private |
121 $('language-options-ui-language-button').textContent = ( | 136 */ |
122 localStrings.getString('display_in_this_language')); | 137 updateUiLanguageButton_: function(languageCode) { |
| 138 var uiLanguageButton = $('language-options-ui-language-button'); |
| 139 // Check if the language code matches the current UI language. |
| 140 if (languageCode == templateData.currentUiLanguageCode) { |
| 141 // If it matches, the button just says that the UI language is |
| 142 // currently in use. |
| 143 uiLanguageButton.textContent = |
| 144 localStrings.getString('is_displayed_in_this_language'); |
| 145 // Make it look like a text label. |
| 146 uiLanguageButton.className = 'text-button'; |
| 147 // Remove the event listner. |
| 148 uiLanguageButton.onclick = undefined; |
| 149 } else { |
| 150 // Otherwise, users can click on the button to change the UI language. |
| 151 uiLanguageButton.textContent = |
| 152 localStrings.getString('display_in_this_language'); |
| 153 uiLanguageButton.className = ''; |
| 154 // Send the change request to Chrome. |
| 155 uiLanguageButton.onclick = function(e) { |
| 156 chrome.send('uiLanguageChange', [languageCode]); |
| 157 } |
| 158 } |
| 159 }, |
123 | 160 |
| 161 /** |
| 162 * Updates the input method list. |
| 163 * @param {string} languageCode Language code (ex. "fr"). |
| 164 * @private |
| 165 */ |
| 166 updateInputMethodList_: function(languageCode) { |
124 // Change the visibility of the input method list. Input methods that | 167 // Change the visibility of the input method list. Input methods that |
125 // matches |languageCode| will become visible. | 168 // matches |languageCode| will become visible. |
126 var inputMethodList = $('language-options-input-method-list'); | 169 var inputMethodList = $('language-options-input-method-list'); |
127 var labels = inputMethodList.querySelectorAll('label'); | 170 var labels = inputMethodList.querySelectorAll('label'); |
128 for (var i = 0; i < labels.length; i++) { | 171 for (var i = 0; i < labels.length; i++) { |
129 if (labels[i].languageCode == languageCode) { | 172 if (labels[i].languageCode == languageCode) { |
130 labels[i].style.display = 'block'; | 173 labels[i].style.display = 'block'; |
131 } else { | 174 } else { |
132 labels[i].style.display = 'none'; | 175 labels[i].style.display = 'none'; |
133 } | 176 } |
134 } | 177 } |
| 178 }, |
135 | 179 |
| 180 /** |
| 181 * Updates the language list in the add language overlay. |
| 182 * @param {string} languageCode Language code (ex. "fr"). |
| 183 * @private |
| 184 */ |
| 185 updateLanguageListInAddLanguageOverlay_: function(languageCode) { |
136 // Change the visibility of the language list in the add language | 186 // Change the visibility of the language list in the add language |
137 // overlay. Languages that are already active will become invisible, | 187 // overlay. Languages that are already active will become invisible, |
138 // so that users don't add the same language twice. | 188 // so that users don't add the same language twice. |
| 189 var languageOptionsList = $('language-options-list'); |
139 var languageCodes = languageOptionsList.getLanguageCodes(); | 190 var languageCodes = languageOptionsList.getLanguageCodes(); |
140 var languageCodeSet = {}; | 191 var languageCodeSet = {}; |
141 for (var i = 0; i < languageCodes.length; i++) { | 192 for (var i = 0; i < languageCodes.length; i++) { |
142 languageCodeSet[languageCodes[i]] = true; | 193 languageCodeSet[languageCodes[i]] = true; |
143 } | 194 } |
144 var addLanguageList = $('add-language-overlay-language-list'); | 195 var addLanguageList = $('add-language-overlay-language-list'); |
145 var lis = addLanguageList.querySelectorAll('li'); | 196 var lis = addLanguageList.querySelectorAll('li'); |
146 for (var i = 0; i < lis.length; i++) { | 197 for (var i = 0; i < lis.length; i++) { |
147 // The first child button knows the language code. | 198 // The first child button knows the language code. |
148 var button = lis[i].childNodes[0]; | 199 var button = lis[i].childNodes[0]; |
(...skipping 136 matching lines...) Loading... |
285 // Check if the preload engine is present in the | 336 // Check if the preload engine is present in the |
286 // dictionary. Otherwise, skip it. | 337 // dictionary. Otherwise, skip it. |
287 if (preloadEngines[i] in dictionary) { | 338 if (preloadEngines[i] in dictionary) { |
288 filteredPreloadEngines.push(preloadEngines[i]); | 339 filteredPreloadEngines.push(preloadEngines[i]); |
289 } | 340 } |
290 } | 341 } |
291 return filteredPreloadEngines; | 342 return filteredPreloadEngines; |
292 } | 343 } |
293 }; | 344 }; |
294 | 345 |
| 346 /** |
| 347 * Chrome callback for when the UI language preference is saved. |
| 348 */ |
| 349 LanguageOptions.uiLanguageSaved = function() { |
| 350 // TODO(satorux): Show the message in a nicer way once we get a mock |
| 351 // from UX. |
| 352 alert(localStrings.getString('restart_required')); |
| 353 }; |
| 354 |
295 // Export | 355 // Export |
296 return { | 356 return { |
297 LanguageOptions: LanguageOptions | 357 LanguageOptions: LanguageOptions |
298 }; | 358 }; |
299 | 359 |
300 }); | 360 }); |
OLD | NEW |