Fixed: Ryzom Configuration language can be different from Ryzom language

--HG--
branch : develop
This commit is contained in:
kervala 2015-12-06 19:42:18 +01:00
parent c4b933d1bd
commit 926af19e1a
17 changed files with 31 additions and 184 deletions

View file

@ -111,26 +111,6 @@ void CClientConfigDialog::closeEvent( QCloseEvent *event )
event->ignore();
}
void CClientConfigDialog::changeEvent( QEvent *event )
{
if( event->type() == QEvent::LanguageChange )
{
int pageIndex = CategoryStackedWidget->currentIndex();
// Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget
disconnect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
retranslateUi( this );
connect( treeWidget, SIGNAL( itemClicked( QTreeWidgetItem *, int ) ),
this, SLOT( onClickCategory( QTreeWidgetItem * ) ) );
CategoryStackedWidget->setCurrentIndex( pageIndex );
}
QDialog::changeEvent( event );
}
void CClientConfigDialog::onClickOK()
{
saveChanges();

View file

@ -30,11 +30,10 @@ class CClientConfigDialog : public QDialog, public Ui::client_config_dialog
public:
CClientConfigDialog( QWidget *parent = NULL );
~CClientConfigDialog();
virtual ~CClientConfigDialog();
protected:
void closeEvent( QCloseEvent *event );
void changeEvent( QEvent *event );
private slots:
//////////////////////////// Main dialog buttons /////////////////////

View file

@ -76,13 +76,3 @@ void CDisplaySettingsAdvancedWidget::save()
else
s.config.setInt( "DisableTextureShdr", 0 );
}
void CDisplaySettingsAdvancedWidget::changeEvent( QEvent *event )
{
if( event->type() == QEvent::LanguageChange )
{
retranslateUi( this );
}
QWidget::changeEvent( event );
}

View file

@ -28,14 +28,10 @@ class CDisplaySettingsAdvancedWidget : public CWidgetBase, public Ui::display_se
Q_OBJECT
public:
CDisplaySettingsAdvancedWidget( QWidget *parent );
~CDisplaySettingsAdvancedWidget();
virtual ~CDisplaySettingsAdvancedWidget();
void load();
void save();
protected:
void changeEvent( QEvent *event );
};
#endif // DISPLAYSETTINGSADVANCEDWIDGET_H

View file

@ -108,21 +108,6 @@ void CDisplaySettingsDetailsWidget::save()
s.config.setInt( "DivideTextureSizeBy2", 1 );
}
void CDisplaySettingsDetailsWidget::changeEvent( QEvent *event )
{
if( event->type() == QEvent::LanguageChange )
{
retranslateUi( this );
landscapeLabel->setText( getQualityString( landscapeSlider->value() ) );
characterLabel->setText( getQualityString( charactersSlider->value() ) );
fxLabel->setText( getQualityString( fxSlider->value() ) );
textureLabel->setText( getTextureQualityString( texturesSlider->value() ) );
}
QWidget::changeEvent( event );
}
void CDisplaySettingsDetailsWidget::onLandscapeSliderChange( int value )
{
if( ( value < 0 ) || ( value > 3 ) )

View file

@ -45,14 +45,11 @@ class CDisplaySettingsDetailsWidget : public CWidgetBase, public Ui::display_set
Q_OBJECT
public:
CDisplaySettingsDetailsWidget( QWidget *parent = NULL );
~CDisplaySettingsDetailsWidget();
virtual ~CDisplaySettingsDetailsWidget();
void load();
void save();
protected:
void changeEvent( QEvent *event );
private slots:
void onLandscapeSliderChange( int value );
void onCharactersSliderChange( int value );

View file

@ -142,17 +142,6 @@ void CDisplaySettingsWidget::save()
s.config.setInt( "PositionY", ypositionLineEdit->text().toInt() );
}
void CDisplaySettingsWidget::changeEvent( QEvent *event )
{
if( event->type() == QEvent::LanguageChange )
{
disconnect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
retranslateUi( this );
connect( videomodeComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
}
QWidget::changeEvent( event );
}
void CDisplaySettingsWidget::updateVideoModes()
{
CSystem &s = CSystem::GetInstance();

View file

@ -38,14 +38,11 @@ class CDisplaySettingsWidget : public CWidgetBase, public Ui::display_settings_w
Q_OBJECT
public:
CDisplaySettingsWidget( QWidget *parent = NULL );
~CDisplaySettingsWidget();
virtual ~CDisplaySettingsWidget();
void load();
void save();
protected:
void changeEvent( QEvent *event );
private slots:
/**
@brief Updates the video modes combo box, based on the current driver selection.

View file

@ -20,22 +20,15 @@
#include "system.h"
#include <QTranslator>
const QString CGeneralSettingsWidget::languageCodes[ NUM_LANGUAGE_CODES ] =
{
"en",
"fr",
"de",
"hu"
};
#include <nel/misc/i18n.h>
CGeneralSettingsWidget::CGeneralSettingsWidget( QWidget *parent ) :
CWidgetBase( parent )
{
currentTranslator = NULL;
setupUi( this );
load();
connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onSomethingChanged() ) );
connect( saveConfigOnQuitCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) );
connect( lowPriorityProcessCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( onSomethingChanged() ) );
}
@ -48,26 +41,37 @@ void CGeneralSettingsWidget::load()
{
CSystem &s = CSystem::GetInstance();
sint32 cbIndex = getIndexForLanguageCode( QString::fromUtf8( s.config.getString( "LanguageCode" ).c_str() ) );
if( cbIndex != -1 ){
languageComboBox->setCurrentIndex( cbIndex );
onLanguageChanged();
std::vector<std::string> codes = NLMISC::CI18N::getLanguageCodes();
std::vector<ucstring> names = NLMISC::CI18N::getLanguageNames();
languageComboBox->clear();
for(uint i = 0; i < codes.size(); ++i)
{
languageComboBox->addItem(QString::fromUtf16(names[i].c_str()), QString::fromUtf8(codes[i].c_str()));
}
if( s.config.getInt( "SaveConfig" ) )
sint32 cbIndex = getIndexForLanguageCode( QString::fromUtf8( s.config.getString( "LanguageCode" ).c_str() ) );
if (cbIndex != -1)
{
languageComboBox->setCurrentIndex( cbIndex );
}
if (s.config.getInt("SaveConfig"))
saveConfigOnQuitCheckBox->setChecked( true );
if( s.config.getInt( "ProcessPriority" ) == -1 )
lowPriorityProcessCheckBox->setChecked( true );
if (s.config.getInt("ProcessPriority") == -1)
lowPriorityProcessCheckBox->setChecked(true);
else
lowPriorityProcessCheckBox->setChecked( false );
lowPriorityProcessCheckBox->setChecked(false);
}
void CGeneralSettingsWidget::save()
{
CSystem &s = CSystem::GetInstance();
s.config.setString( "LanguageCode", std::string( languageCodes[ languageComboBox->currentIndex() ].toUtf8() ) );
s.config.setString( "LanguageCode", std::string(languageComboBox->itemData(languageComboBox->currentIndex()).toString().toUtf8()));
if( saveConfigOnQuitCheckBox->isChecked() )
s.config.setInt( "SaveConfig", 1 );
@ -80,43 +84,10 @@ void CGeneralSettingsWidget::save()
s.config.setInt( "ProcessPriority", 0 );
}
void CGeneralSettingsWidget::onLanguageChanged()
{
sint32 i = languageComboBox->currentIndex();
if( currentTranslator != NULL )
{
qApp->removeTranslator( currentTranslator );
delete currentTranslator;
currentTranslator = NULL;
}
currentTranslator = new QTranslator();
if( currentTranslator->load( QString( ":/translations/ryzom_configuration_%1" ).arg( languageCodes[ i ] ) ) )
qApp->installTranslator( currentTranslator );
emit changed();
}
void CGeneralSettingsWidget::changeEvent( QEvent *event )
{
if( event->type() == QEvent::LanguageChange )
{
sint32 i = languageComboBox->currentIndex();
// Signals that are emitted on index change need to be disconnected, since retranslation cleans the widget
disconnect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
retranslateUi( this );
languageComboBox->setCurrentIndex( i );
connect( languageComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( onLanguageChanged() ) );
}
QWidget::changeEvent( event );
}
int CGeneralSettingsWidget::getIndexForLanguageCode(const QString &languageCode)
{
for( sint32 i = 0; i < NUM_LANGUAGE_CODES; i++ )
if( languageCode.compare( languageCodes[ i ] ) == 0 )
for( sint32 i = 0; i < languageComboBox->count(); i++ )
if( languageCode.compare(languageComboBox->itemData(i).toString()) == 0 )
return i;
return -1;

View file

@ -22,11 +22,6 @@
class QTranslator;
enum
{
NUM_LANGUAGE_CODES = 4
};
/**
@brief The general settings page of the configuration tool
*/
@ -41,12 +36,6 @@ public:
void load();
void save();
private slots:
void onLanguageChanged();
protected:
void changeEvent( QEvent *event );
private:
/**
@brief Retrieves the language combobox index for the language code provided.
@ -54,12 +43,6 @@ private:
@return Returns the index on success, returns -1 if the language code cannot be found.
*/
sint32 getIndexForLanguageCode(const QString &languageCode);
// Contains the language codes used in the config file
// They are in the same order as the options in languageComboBox
static const QString languageCodes[ NUM_LANGUAGE_CODES ];
QTranslator *currentTranslator;
};
#endif // GENERALSETTINGWIDGET_H

View file

@ -28,14 +28,11 @@ class CSoundSettingsWidget : public CWidgetBase, public Ui::sound_settings_widge
Q_OBJECT
public:
CSoundSettingsWidget( QWidget *parent = NULL );
~CSoundSettingsWidget();
virtual ~CSoundSettingsWidget();
void load();
void save();
protected:
void changeEvent( QEvent *event );
private slots:
void onTracksSliderChange();

View file

@ -34,12 +34,3 @@ CSysInfoD3DWidget::CSysInfoD3DWidget( QWidget *parent ) :
CSysInfoD3DWidget::~CSysInfoD3DWidget()
{
}
void CSysInfoD3DWidget::changeEvent( QEvent *event )
{
if( event->type() == QEvent::LanguageChange )
{
retranslateUi( this );
}
QWidget::changeEvent( event );
}

View file

@ -29,10 +29,6 @@ class CSysInfoD3DWidget : public QWidget, public Ui::sys_info_d3d_widget
public:
CSysInfoD3DWidget( QWidget *parent = NULL );
virtual ~CSysInfoD3DWidget();
protected:
void changeEvent( QEvent *event );
};

View file

@ -33,12 +33,3 @@ CSysInfoOpenGLWidget::CSysInfoOpenGLWidget( QWidget *parent ) :
CSysInfoOpenGLWidget::~CSysInfoOpenGLWidget()
{
}
void CSysInfoOpenGLWidget::changeEvent( QEvent *event )
{
if( event->type() == QEvent::LanguageChange )
{
retranslateUi( this );
}
QWidget::changeEvent( event );
}

View file

@ -28,10 +28,7 @@ class CSysInfoOpenGLWidget : public QWidget, public Ui::sys_info_opengl_widget
Q_OBJECT
public:
CSysInfoOpenGLWidget( QWidget *parent = NULL );
~CSysInfoOpenGLWidget();
protected:
void changeEvent( QEvent *event );
virtual ~CSysInfoOpenGLWidget();
};

View file

@ -37,12 +37,3 @@ CSysInfoWidget::CSysInfoWidget( QWidget *parent ) :
CSysInfoWidget::~CSysInfoWidget()
{
}
void CSysInfoWidget::changeEvent( QEvent *event )
{
if( event->type() == QEvent::LanguageChange )
{
retranslateUi( this );
}
QWidget::changeEvent( event );
}

View file

@ -28,10 +28,7 @@ class CSysInfoWidget : public QWidget, public Ui::sys_info_widget
Q_OBJECT
public:
CSysInfoWidget( QWidget *parent = NULL );
~CSysInfoWidget();
protected:
void changeEvent( QEvent *event );
virtual ~CSysInfoWidget();
};