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

Side by Side Diff: chrome/browser/resources/options2/language_options.js

Issue 10442128: Make UI language change work on chromeos. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update. Created 8 years, 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // TODO(kochi): Generalize the notification as a component and put it 5 // TODO(kochi): Generalize the notification as a component and put it
6 // in js/cr/ui/notification.js . 6 // in js/cr/ui/notification.js .
7 7
8 cr.define('options', function() { 8 cr.define('options', function() {
9 /** @const */ var OptionsPage = options.OptionsPage; 9 /** @const */ var OptionsPage = options.OptionsPage;
10 /** @const */ var LanguageList = options.LanguageList; 10 /** @const */ var LanguageList = options.LanguageList;
(...skipping 22 matching lines...) Expand all
33 loadTimeData.getString('languagePageTabTitle'), 33 loadTimeData.getString('languagePageTabTitle'),
34 'languagePage'); 34 'languagePage');
35 } 35 }
36 36
37 cr.addSingletonGetter(LanguageOptions); 37 cr.addSingletonGetter(LanguageOptions);
38 38
39 // Inherit LanguageOptions from OptionsPage. 39 // Inherit LanguageOptions from OptionsPage.
40 LanguageOptions.prototype = { 40 LanguageOptions.prototype = {
41 __proto__: OptionsPage.prototype, 41 __proto__: OptionsPage.prototype,
42 42
43 /* For recording the prospective language (the next locale after relaunch).
44 * @type {?string}
45 * @private
46 */
47 prospectiveUiLanguageCode_: null,
48
43 /** 49 /**
44 * Initializes LanguageOptions page. 50 * Initializes LanguageOptions page.
45 * Calls base class implementation to starts preference initialization. 51 * Calls base class implementation to start preference initialization.
46 */ 52 */
47 initializePage: function() { 53 initializePage: function() {
48 OptionsPage.prototype.initializePage.call(this); 54 OptionsPage.prototype.initializePage.call(this);
49 55
50 var languageOptionsList = $('language-options-list'); 56 var languageOptionsList = $('language-options-list');
51 LanguageList.decorate(languageOptionsList); 57 LanguageList.decorate(languageOptionsList);
52 58
53 languageOptionsList.addEventListener('change', 59 languageOptionsList.addEventListener('change',
54 this.handleLanguageOptionsListChange_.bind(this)); 60 this.handleLanguageOptionsListChange_.bind(this));
55 languageOptionsList.addEventListener('save', 61 languageOptionsList.addEventListener('save',
56 this.handleLanguageOptionsListSave_.bind(this)); 62 this.handleLanguageOptionsListSave_.bind(this));
57 63
64 this.prospectiveUiLanguageCode_ =
65 loadTimeData.getString('prospectiveUiLanguageCode');
58 this.addEventListener('visibleChange', 66 this.addEventListener('visibleChange',
59 this.handleVisibleChange_.bind(this)); 67 this.handleVisibleChange_.bind(this));
60 68
61 if (cr.isChromeOS) { 69 if (cr.isChromeOS) {
62 $('chewing-confirm').onclick = $('hangul-confirm').onclick = 70 $('chewing-confirm').onclick = $('hangul-confirm').onclick =
63 $('mozc-confirm').onclick = $('pinyin-confirm').onclick = 71 $('mozc-confirm').onclick = $('pinyin-confirm').onclick =
64 OptionsPage.closeOverlay.bind(OptionsPage); 72 OptionsPage.closeOverlay.bind(OptionsPage);
65 73
66 this.initializeInputMethodList_(); 74 this.initializeInputMethodList_();
67 this.initializeLanguageCodeToInputMethodIdsMap_(); 75 this.initializeLanguageCodeToInputMethodIdsMap_();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 113
106 var spellCheckLanguageButton = getRequiredElement( 114 var spellCheckLanguageButton = getRequiredElement(
107 'language-options-spell-check-language-button'); 115 'language-options-spell-check-language-button');
108 spellCheckLanguageButton.addEventListener( 116 spellCheckLanguageButton.addEventListener(
109 'click', 117 'click',
110 this.handleSpellCheckLanguageButtonClick_.bind(this)); 118 this.handleSpellCheckLanguageButtonClick_.bind(this));
111 } 119 }
112 } 120 }
113 121
114 if (cr.isChromeOS) { 122 if (cr.isChromeOS) {
115 $('language-options-ui-restart-button').onclick = 123 $('language-options-ui-restart-button').onclick = function() {
116 chrome.send.bind(chrome, 'uiLanguageRestart'); 124 chrome.send('uiLanguageRestart');
125 };
117 } 126 }
118 127
119 $('language-confirm').onclick = 128 $('language-confirm').onclick =
120 OptionsPage.closeOverlay.bind(OptionsPage); 129 OptionsPage.closeOverlay.bind(OptionsPage);
121 }, 130 },
122 131
123 // The preference is a boolean that enables/disables spell checking. 132 // The preference is a boolean that enables/disables spell checking.
124 enableSpellCheckPref: 'browser.enable_spellchecking', 133 enableSpellCheckPref: 'browser.enable_spellchecking',
125 // The preference is a CSV string that describes preload engines 134 // The preference is a CSV string that describes preload engines
126 // (i.e. active input methods). 135 // (i.e. active input methods).
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 var uiLanguageMessage = $('language-options-ui-language-message'); 372 var uiLanguageMessage = $('language-options-ui-language-message');
364 var uiLanguageNotification = $('language-options-ui-notification-bar'); 373 var uiLanguageNotification = $('language-options-ui-notification-bar');
365 374
366 // Remove the event listener and add it back if useful. 375 // Remove the event listener and add it back if useful.
367 uiLanguageButton.onclick = null; 376 uiLanguageButton.onclick = null;
368 377
369 // Unhide the language button every time, as it could've been previously 378 // Unhide the language button every time, as it could've been previously
370 // hidden by a language change. 379 // hidden by a language change.
371 uiLanguageButton.hidden = false; 380 uiLanguageButton.hidden = false;
372 381
373 if (languageCode == loadTimeData.getString('prospectiveUiLanguageCode')) { 382 if (languageCode == this.prospectiveUiLanguageCode_) {
374 uiLanguageMessage.textContent = 383 uiLanguageMessage.textContent =
375 loadTimeData.getString('is_displayed_in_this_language'); 384 loadTimeData.getString('is_displayed_in_this_language');
376 showMutuallyExclusiveNodes( 385 showMutuallyExclusiveNodes(
377 [uiLanguageButton, uiLanguageMessage, uiLanguageNotification], 1); 386 [uiLanguageButton, uiLanguageMessage, uiLanguageNotification], 1);
378 } else if (languageCode in loadTimeData.getValue('uiLanguageCodeSet')) { 387 } else if (languageCode in loadTimeData.getValue('uiLanguageCodeSet')) {
379 if (cr.isChromeOS && UIAccountTweaks.loggedInAsGuest()) { 388 if (cr.isChromeOS && UIAccountTweaks.loggedInAsGuest()) {
380 // In the guest mode for ChromeOS, changing UI language does not make 389 // In the guest mode for ChromeOS, changing UI language does not make
381 // sense because it does not take effect after browser restart. 390 // sense because it does not take effect after browser restart.
382 uiLanguageButton.hidden = true; 391 uiLanguageButton.hidden = true;
383 uiLanguageMessage.hidden = true; 392 uiLanguageMessage.hidden = true;
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 OptionsPage.closeOverlay(); 582 OptionsPage.closeOverlay();
574 } 583 }
575 }, 584 },
576 585
577 /** 586 /**
578 * Checks if languageCode is deletable or not. 587 * Checks if languageCode is deletable or not.
579 * @param {String} languageCode the languageCode to check for deletability. 588 * @param {String} languageCode the languageCode to check for deletability.
580 */ 589 */
581 languageIsDeletable: function(languageCode) { 590 languageIsDeletable: function(languageCode) {
582 // Don't allow removing the language if it's a UI language. 591 // Don't allow removing the language if it's a UI language.
583 if (languageCode == loadTimeData.getString('prospectiveUiLanguageCode')) 592 if (languageCode == this.prospectiveUiLanguageCode_)
584 return false; 593 return false;
585 return (!cr.isChromeOS || 594 return (!cr.isChromeOS ||
586 this.canDeleteLanguage_(languageCode)); 595 this.canDeleteLanguage_(languageCode));
587 }, 596 },
588 597
589 /** 598 /**
590 * Handles browse.enable_spellchecking change. 599 * Handles browse.enable_spellchecking change.
591 * @param {Event} e Change event. 600 * @param {Event} e Change event.
592 * @private 601 * @private
593 */ 602 */
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 assert(nodes[i] instanceof HTMLElement); // TODO(dbeam): Ignore null? 826 assert(nodes[i] instanceof HTMLElement); // TODO(dbeam): Ignore null?
818 nodes[i].hidden = i != index; 827 nodes[i].hidden = i != index;
819 } 828 }
820 } 829 }
821 830
822 /** 831 /**
823 * Chrome callback for when the UI language preference is saved. 832 * Chrome callback for when the UI language preference is saved.
824 * @param {string} languageCode The newly selected language to use. 833 * @param {string} languageCode The newly selected language to use.
825 */ 834 */
826 LanguageOptions.uiLanguageSaved = function(languageCode) { 835 LanguageOptions.uiLanguageSaved = function(languageCode) {
827 loadTimeData.getString('prospectiveUiLanguageCode') = languageCode; 836 this.prospectiveUiLanguageCode_ = languageCode;
828 837
829 // If the user is no longer on the same language code, ignore. 838 // If the user is no longer on the same language code, ignore.
830 if ($('language-options-list').getSelectedLanguageCode() != languageCode) 839 if ($('language-options-list').getSelectedLanguageCode() != languageCode)
831 return; 840 return;
832 841
833 // Special case for when a user changes to a different language, and changes 842 // Special case for when a user changes to a different language, and changes
834 // back to the same language without having restarted Chrome or logged 843 // back to the same language without having restarted Chrome or logged
835 // in/out of ChromeOS. 844 // in/out of ChromeOS.
836 if (languageCode == loadTimeData.getString('currentUiLanguageCode')) { 845 if (languageCode == loadTimeData.getString('currentUiLanguageCode')) {
837 LanguageOptions.getInstance().currentLocaleWasReselected(); 846 LanguageOptions.getInstance().currentLocaleWasReselected();
838 return; 847 return;
839 } 848 }
840 849
841 // Otherwise, show a notification telling the user that their changes will 850 // Otherwise, show a notification telling the user that their changes will
842 // only take effect after restart. 851 // only take effect after restart.
843 showMutuallyExclusiveNodes([$('language-options-ui-language-button'), 852 showMutuallyExclusiveNodes([$('language-options-ui-language-button'),
844 $('language-options-ui-notification-bar')], 1); 853 $('language-options-ui-notification-bar')], 1);
845 }; 854 };
846 855
847 // Export 856 // Export
848 return { 857 return {
849 LanguageOptions: LanguageOptions 858 LanguageOptions: LanguageOptions
850 }; 859 };
851 }); 860 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698