Simplify the cancel logic for input and display settings

Change-Id: I2afe78edad31b00a35d0589384e4091b61091275
This commit is contained in:
Nikerabbit
2013-08-29 10:35:02 +00:00
committed by Niklas Laxström
parent f14161a0cd
commit ef826e0e75
3 changed files with 14 additions and 45 deletions

View File

@@ -113,9 +113,11 @@
this.$parent.$settingsPanel.empty(); this.$parent.$settingsPanel.empty();
this.$webfonts = $( 'body' ).data( 'webfonts' ); this.$webfonts = $( 'body' ).data( 'webfonts' );
this.$parent.$settingsPanel.append( this.$template ); this.$parent.$settingsPanel.append( this.$template );
this.disableApplyButton();
this.prepareLanguages(); this.prepareLanguages();
this.prepareUIFonts(); this.prepareUIFonts();
this.prepareContentFonts(); this.prepareContentFonts();
$.i18n().locale = this.uiLanguage;
this.i18n(); this.i18n();
this.$webfonts.refresh(); this.$webfonts.refresh();
this.listen(); this.listen();
@@ -620,48 +622,20 @@
* Cancel the changes done by user for display settings * Cancel the changes done by user for display settings
*/ */
cancel: function () { cancel: function () {
var displaySettings = this, if ( !this.dirty ) {
origUILanguage = this.getUILanguage();
if ( !displaySettings.dirty ) {
// Nothing changed
return; return;
} }
// Reload preferences // Reload preferences
mw.webfonts.preferences = $.extend( true, {}, displaySettings.savedRegistry ); mw.webfonts.preferences = $.extend( true, {}, this.savedRegistry );
if ( displaySettings.$webfonts ) {
displaySettings.$webfonts.refresh();
}
if ( $.i18n().locale !== origUILanguage ) { // Restore fonts
// restore UI localization for display settings panel if ( this.$webfonts ) {
$.i18n().locale = origUILanguage; this.$webfonts.refresh();
this.i18n();
} }
// Clear the dirty bit
displaySettings.dirty = false;
displaySettings.disableApplyButton();
// Restore content and UI language // Restore content and UI language
displaySettings.uiLanguage = displaySettings.getUILanguage(); this.uiLanguage = this.getUILanguage();
displaySettings.contentLanguage = displaySettings.getContentLanguage(); this.contentLanguage = this.getContentLanguage();
// Restore the font dropdowns
displaySettings.prepareUIFonts();
displaySettings.prepareContentFonts();
// Restore the visual state of selected language button
displaySettings.$template.find( 'div.uls-ui-languages button.button' ).each( function () {
var $button = $( this );
if ( $button.attr( 'lang' ) === displaySettings.uiLanguage ) {
$button.addClass( 'down' );
} else {
$button.removeClass( 'down' );
}
} );
} }
}; };

View File

@@ -75,7 +75,6 @@
this.contentLanguage = this.getContentLanguage(); this.contentLanguage = this.getContentLanguage();
this.$imes = null; this.$imes = null;
this.$parent = $parent; this.$parent = $parent;
this.dirty = false;
this.savedRegistry = $.extend( true, {}, $.ime.preferences.registry ); this.savedRegistry = $.extend( true, {}, $.ime.preferences.registry );
} }
@@ -88,11 +87,10 @@
*/ */
render: function () { render: function () {
var $enabledOnly; var $enabledOnly;
this.dirty = false;
this.$parent.$settingsPanel.empty(); this.$parent.$settingsPanel.empty();
this.$imes = $( 'body' ).data( 'ime' ); this.$imes = $( 'body' ).data( 'ime' );
this.$parent.$settingsPanel.append( this.$template ); this.$parent.$settingsPanel.append( this.$template );
$enabledOnly = this.$template.find( '.enabled-only' ); $enabledOnly = this.$template.find( '.enabled-only' );
// ime system is lazy loaded, make sure it is initialized // ime system is lazy loaded, make sure it is initialized
mw.ime.init(); mw.ime.init();
@@ -106,6 +104,7 @@
this.prepareLanguages(); this.prepareLanguages();
this.prepareToggleButton(); this.prepareToggleButton();
this.$template.i18n(); this.$template.i18n();
this.disableApplyButton();
$( 'body' ).data( 'webfonts' ).refresh(); $( 'body' ).data( 'webfonts' ).refresh();
this.listen(); this.listen();
}, },
@@ -454,8 +453,6 @@
inputSettings.$template.find( 'button.uls-input-settings-cancel' ).on( 'click', function () { inputSettings.$template.find( 'button.uls-input-settings-cancel' ).on( 'click', function () {
inputSettings.cancel(); inputSettings.cancel();
// Redraw the panel according to the state
inputSettings.render();
inputSettings.close(); inputSettings.close();
} ); } );
@@ -569,12 +566,10 @@
if ( !this.dirty ) { if ( !this.dirty ) {
return; return;
} }
this.dirty = false;
this.disableApplyButton();
// Reload preferences // Reload preferences
$.ime.preferences.registry = $.extend( true, {}, this.savedRegistry ); $.ime.preferences.registry = $.extend( true, {}, this.savedRegistry );
this.uiLanguage = this.getInterfaceLanguage();
this.contentLanguage = this.getContentLanguage();
// Restore the state of IME // Restore the state of IME
if ( $.ime.preferences.isEnabled() ) { if ( $.ime.preferences.isEnabled() ) {
mw.ime.setup(); mw.ime.setup();

View File

@@ -173,7 +173,7 @@
// Every time we show this window, make sure the current // Every time we show this window, make sure the current
// settings panels is upto date. So just click on active menu item. // settings panels is upto date. So just click on active menu item.
this.$window.find( '.input-settings-block.active' ).click(); this.$window.find( '.settings-menu-items > .active' ).click();
this.position(); this.position();
this.visible(); this.visible();
}, },