Show input methods for selected language correctly

Remove redundant calls to prepareInputmethods
and redundant button styling.

Rename firstLanguauge to the clearer currentLanguage.

Switch checking for imeLanguage and the prereferences language
to make sure that the last one is shown.

Done in pair programming with Santhosh.

Bug: 48163
Change-Id: Ie8441f29eb20caa05534c8589481a26cb415a27f
This commit is contained in:
Amir E. Aharoni
2013-05-27 13:36:26 +03:00
parent 540ada592d
commit 282b6c7644

View File

@@ -95,7 +95,6 @@
this.$template.find( '.enabled-only' ).addClass( 'hide' );
}
this.prepareLanguages();
this.prepareInputmethods( $.ime.preferences.getLanguage() );
this.prepareToggleButton();
this.$template.i18n();
this.listen();
@@ -196,7 +195,7 @@
prepareLanguages: function () {
var inputSettings = this,
SUGGESTED_LANGUAGES_NUMBER = 3,
firstLanguage = this.contentLanguage,
currentLanguage = this.contentLanguage,
selectedImeLanguage = $.ime.preferences.getLanguage(),
languagesForButtons, $languages, suggestedLanguages,
lang, i, language, $button, $caret;
@@ -216,21 +215,21 @@
// after selecting a different language
$languages.empty();
// UI language must always be present
if ( this.imeLanguage !== this.contentLanguage &&
$.uls.data.languages[this.imeLanguage]
) {
languagesForButtons.push( this.imeLanguage );
firstLanguage = this.imeLanguage;
}
// Selected IME language may be different, and it must
// be present, too
if ( $.inArray( selectedImeLanguage, languagesForButtons ) === -1 &&
$.uls.data.languages[selectedImeLanguage]
) {
languagesForButtons.push( selectedImeLanguage );
firstLanguage = selectedImeLanguage;
currentLanguage = selectedImeLanguage;
}
// UI language must always be present
if ( this.imeLanguage !== this.contentLanguage &&
$.uls.data.languages[this.imeLanguage]
) {
languagesForButtons.push( this.imeLanguage );
currentLanguage = this.imeLanguage;
}
for ( lang in suggestedLanguages ) {
@@ -251,7 +250,10 @@
return function () {
var selectedLanguage = button.data( 'language' ) || inputSettings.imeLanguage;
if ( selectedLanguage !== inputSettings.imeLanguage ) {
inputSettings.enableApplyButton();
}
$.ime.preferences.setLanguage( selectedLanguage );
$( '.uls-ui-languages .button' ).removeClass( 'down' );
button.addClass( 'down' );
@@ -270,16 +272,16 @@
dir: $.uls.data.getDir( language )
} );
if ( language === firstLanguage ) {
$button.addClass( 'down' );
}
$button.data( 'language', language );
$caret = $( '<span>' ).addClass( 'uls-input-settings-caret' );
$languages.append( $button, $caret );
$button.on( 'click', buttonHandler( $button ) );
if ( language === currentLanguage ) {
$button.click();
}
}
this.prepareMoreLanguages();
@@ -333,7 +335,6 @@
inputSettings.imeLanguage = langCode;
inputSettings.$parent.show();
inputSettings.prepareLanguages();
inputSettings.prepareInputmethods( langCode );
},
languages: mw.ime.getLanguagesWithIME(),
lazyload: false