OLD | NEW |
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 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 for (var i = 0; i < preloadEngines.length; i++) { | 378 for (var i = 0; i < preloadEngines.length; i++) { |
379 preloadEngineSet[preloadEngines[i]] = true; | 379 preloadEngineSet[preloadEngines[i]] = true; |
380 } | 380 } |
381 | 381 |
382 // Create the new preload engine list per the language codes. | 382 // Create the new preload engine list per the language codes. |
383 var newPreloadEngines = []; | 383 var newPreloadEngines = []; |
384 for (var i = 0; i < languageCodes.length; i++) { | 384 for (var i = 0; i < languageCodes.length; i++) { |
385 var languageCode = languageCodes[i]; | 385 var languageCode = languageCodes[i]; |
386 var inputMethodIds = this.languageCodeToInputMethodIdsMap_[ | 386 var inputMethodIds = this.languageCodeToInputMethodIdsMap_[ |
387 languageCode]; | 387 languageCode]; |
| 388 if (!inputMethodIds) |
| 389 continue; |
| 390 |
388 // Check if we have active input methods associated with the language. | 391 // Check if we have active input methods associated with the language. |
389 for (var j = 0; j < inputMethodIds.length; j++) { | 392 for (var j = 0; j < inputMethodIds.length; j++) { |
390 var inputMethodId = inputMethodIds[j]; | 393 var inputMethodId = inputMethodIds[j]; |
391 if (inputMethodId in preloadEngineSet) { | 394 if (inputMethodId in preloadEngineSet) { |
392 // If we have, add it to the new engine list. | 395 // If we have, add it to the new engine list. |
393 newPreloadEngines.push(inputMethodId); | 396 newPreloadEngines.push(inputMethodId); |
394 // And delete it from the set. This is necessary as one input | 397 // And delete it from the set. This is necessary as one input |
395 // method can be associated with more than one language thus | 398 // method can be associated with more than one language thus |
396 // we should avoid having duplicates in the new list. | 399 // we should avoid having duplicates in the new list. |
397 delete preloadEngineSet[inputMethodId]; | 400 delete preloadEngineSet[inputMethodId]; |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
572 var input = method.querySelector('input'); | 575 var input = method.querySelector('input'); |
573 // Give it focus if the ID matches. | 576 // Give it focus if the ID matches. |
574 if (input.inputMethodId == focusInputMethodId) { | 577 if (input.inputMethodId == focusInputMethodId) { |
575 input.focus(); | 578 input.focus(); |
576 } | 579 } |
577 } else { | 580 } else { |
578 method.hidden = true; | 581 method.hidden = true; |
579 } | 582 } |
580 } | 583 } |
581 | 584 |
| 585 $('language-options-input-method-none').hidden = |
| 586 (languageCode in this.languageCodeToInputMethodIdsMap_); |
| 587 |
582 if (focusInputMethodId == 'add') { | 588 if (focusInputMethodId == 'add') { |
583 $('language-options-add-button').focus(); | 589 $('language-options-add-button').focus(); |
584 } | 590 } |
585 }, | 591 }, |
586 | 592 |
587 /** | 593 /** |
588 * Updates the language list in the add language overlay. | 594 * Updates the language list in the add language overlay. |
589 * @param {string} languageCode Language code (ex. "fr"). | 595 * @param {string} languageCode Language code (ex. "fr"). |
590 * @private | 596 * @private |
591 */ | 597 */ |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 * | 797 * |
792 * @param {string} languageCode Language code (ex. "fr"). | 798 * @param {string} languageCode Language code (ex. "fr"). |
793 * @return {boolean} Returns true on success. | 799 * @return {boolean} Returns true on success. |
794 * @private | 800 * @private |
795 */ | 801 */ |
796 canDeleteLanguage_: function(languageCode) { | 802 canDeleteLanguage_: function(languageCode) { |
797 // First create the set of engines to be removed from input methods | 803 // First create the set of engines to be removed from input methods |
798 // associated with the language code. | 804 // associated with the language code. |
799 var enginesToBeRemovedSet = {}; | 805 var enginesToBeRemovedSet = {}; |
800 var inputMethodIds = this.languageCodeToInputMethodIdsMap_[languageCode]; | 806 var inputMethodIds = this.languageCodeToInputMethodIdsMap_[languageCode]; |
| 807 |
| 808 // If this language doesn't have any input methods, it can be deleted. |
| 809 if (!inputMethodIds) |
| 810 return true; |
| 811 |
801 for (var i = 0; i < inputMethodIds.length; i++) { | 812 for (var i = 0; i < inputMethodIds.length; i++) { |
802 enginesToBeRemovedSet[inputMethodIds[i]] = true; | 813 enginesToBeRemovedSet[inputMethodIds[i]] = true; |
803 } | 814 } |
804 | 815 |
805 // Then eliminate engines that are also used for other active languages. | 816 // Then eliminate engines that are also used for other active languages. |
806 // For instance, if "xkb:us::eng" is used for both English and Filipino. | 817 // For instance, if "xkb:us::eng" is used for both English and Filipino. |
807 var languageCodes = $('language-options-list').getLanguageCodes(); | 818 var languageCodes = $('language-options-list').getLanguageCodes(); |
808 for (var i = 0; i < languageCodes.length; i++) { | 819 for (var i = 0; i < languageCodes.length; i++) { |
809 // Skip the target language code. | 820 // Skip the target language code. |
810 if (languageCodes[i] == languageCode) { | 821 if (languageCodes[i] == languageCode) { |
811 continue; | 822 continue; |
812 } | 823 } |
813 // Check if input methods used in this language are included in | 824 // Check if input methods used in this language are included in |
814 // enginesToBeRemovedSet. If so, eliminate these from the set, so | 825 // enginesToBeRemovedSet. If so, eliminate these from the set, so |
815 // we don't remove this time. | 826 // we don't remove this time. |
816 var inputMethodIdsForAnotherLanguage = | 827 var inputMethodIdsForAnotherLanguage = |
817 this.languageCodeToInputMethodIdsMap_[languageCodes[i]]; | 828 this.languageCodeToInputMethodIdsMap_[languageCodes[i]]; |
| 829 if (!inputMethodIdsForAnotherLanguage) |
| 830 continue; |
| 831 |
818 for (var j = 0; j < inputMethodIdsForAnotherLanguage.length; j++) { | 832 for (var j = 0; j < inputMethodIdsForAnotherLanguage.length; j++) { |
819 var inputMethodId = inputMethodIdsForAnotherLanguage[j]; | 833 var inputMethodId = inputMethodIdsForAnotherLanguage[j]; |
820 if (inputMethodId in enginesToBeRemovedSet) { | 834 if (inputMethodId in enginesToBeRemovedSet) { |
821 delete enginesToBeRemovedSet[inputMethodId]; | 835 delete enginesToBeRemovedSet[inputMethodId]; |
822 } | 836 } |
823 } | 837 } |
824 } | 838 } |
825 | 839 |
826 // Update the preload engine list with the to-be-removed set. | 840 // Update the preload engine list with the to-be-removed set. |
827 var newPreloadEngines = []; | 841 var newPreloadEngines = []; |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1092 | 1106 |
1093 LanguageOptions.onDictionaryDownloadFailure = function(languageCode) { | 1107 LanguageOptions.onDictionaryDownloadFailure = function(languageCode) { |
1094 LanguageOptions.getInstance().onDictionaryDownloadFailure_(languageCode); | 1108 LanguageOptions.getInstance().onDictionaryDownloadFailure_(languageCode); |
1095 }; | 1109 }; |
1096 | 1110 |
1097 // Export | 1111 // Export |
1098 return { | 1112 return { |
1099 LanguageOptions: LanguageOptions | 1113 LanguageOptions: LanguageOptions |
1100 }; | 1114 }; |
1101 }); | 1115 }); |
OLD | NEW |