Chromium Code Reviews

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

Issue 3080026: Implement "Display Chrome OS in this language" button. (Closed)
Patch Set: address comments Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
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...)
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...)
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 });
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/dom_ui/language_options_handler.cc ('k') | chrome/browser/resources/options/options_page.css » ('j') | no next file with comments »

Powered by Google App Engine