(bug 39685) Disable the Apply button until there are changes

This commit completes the solution of this bug for Input settings.

Change-Id: Iebabb08bdd4138cff278b811a681d684363ecc12
This commit is contained in:
Amir E. Aharoni
2012-11-22 15:00:35 +02:00
parent 4edd874d2e
commit ac32e53fe6

View File

@@ -62,7 +62,7 @@
+ '<div class="row language-settings-buttons">' + '<div class="row language-settings-buttons">'
+ '<div class="eleven columns">' + '<div class="eleven columns">'
+ '<button class="button uls-input-settings-close" data-i18n="ext-uls-language-settings-cancel"></button>' + '<button class="button uls-input-settings-close" data-i18n="ext-uls-language-settings-cancel"></button>'
+ '<button class="active blue button uls-input-settings-apply" data-i18n="ext-uls-language-settings-apply"></button>' + '<button class="active blue button uls-input-settings-apply" data-i18n="ext-uls-language-settings-apply" disabled></button>'
+ '</div>' + '</div>'
+ '</div>' + '</div>'
+ '</div>'; + '</div>';
@@ -105,6 +105,14 @@
this.listen(); this.listen();
}, },
/**
* Enable the apply button.
* Useful in many places when something changes.
*/
enableApplyButton: function () {
this.$template.find( 'button.uls-input-settings-apply' ).removeAttr( 'disabled' );
},
prepareInputmethods: function ( language ) { prepareInputmethods: function ( language ) {
var index = 0, var index = 0,
inputSettings, $imeListContainer, defaultInputmethod, imes, selected, imeId, inputSettings, $imeListContainer, defaultInputmethod, imes, selected, imeId,
@@ -177,8 +185,9 @@
} }
} }
$imeLabel.append( $( '<strong>' ).text( name ) ).append( $imeLabel
$( '<span>' ).text( description ) ); .append( $( '<strong>' ).text( name ) )
.append( $( '<span>' ).text( description ) );
return $imeLabel; return $imeLabel;
}, },
@@ -231,6 +240,7 @@
return function () { return function () {
var selectedLanguage = button.data( 'language' ) || inputSettings.imeLanguage; var selectedLanguage = button.data( 'language' ) || inputSettings.imeLanguage;
inputSettings.enableApplyButton();
$.ime.preferences.setLanguage( selectedLanguage ); $.ime.preferences.setLanguage( selectedLanguage );
$( 'div.uls-ui-languages button.button' ).removeClass( 'down' ); $( 'div.uls-ui-languages button.button' ).removeClass( 'down' );
button.addClass( 'down' ); button.addClass( 'down' );
@@ -297,6 +307,7 @@
uls.$menu.find( 'div.uls-title' ).append( $back ); uls.$menu.find( 'div.uls-title' ).append( $back );
}, },
onSelect: function ( langCode ) { onSelect: function ( langCode ) {
inputSettings.enableApplyButton();
inputSettings.imeLanguage = langCode; inputSettings.imeLanguage = langCode;
inputSettings.$parent.show(); inputSettings.$parent.show();
inputSettings.prepareLanguages(); inputSettings.prepareLanguages();
@@ -378,14 +389,14 @@
} ); } );
$imeListContainer.on( 'change', 'input:radio[name=ime]:checked', function () { $imeListContainer.on( 'change', 'input:radio[name=ime]:checked', function () {
var ime = $( this ).val(); inputSettings.enableApplyButton();
$.ime.preferences.setLanguage( inputSettings.imeLanguage ); $.ime.preferences.setLanguage( inputSettings.imeLanguage );
$.ime.preferences.setIM( ime ); $.ime.preferences.setIM( $( this ).val() );
} ); } );
inputSettings.$template.find( 'button.uls-input-toggle-button' ) inputSettings.$template.find( 'button.uls-input-toggle-button' )
.on( 'click', function () { .on( 'click', function () {
inputSettings.enableApplyButton();
if ( $.ime.preferences.isEnabled() ) { if ( $.ime.preferences.isEnabled() ) {
inputSettings.disableInputTools(); inputSettings.disableInputTools();
} else { } else {