From 41b756776f8cb2ac5a90f5da444d7db3f5760286 Mon Sep 17 00:00:00 2001 From: Daniel Winzen Date: Thu, 25 Dec 2014 20:54:18 +0100 Subject: [PATCH] Add choose language option --- include/SetupDialog.h | 4 ++++ src/core/main.cpp | 11 ++++++++--- src/gui/SetupDialog.cpp | 31 +++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/include/SetupDialog.h b/include/SetupDialog.h index 96d865f40..a03829a6b 100644 --- a/include/SetupDialog.h +++ b/include/SetupDialog.h @@ -112,6 +112,8 @@ private slots: void toggleDisplayWaveform( bool en ); void toggleDisableAutoquit( bool en ); + void setLanguage( int lang ); + private: TabBar * m_tabBar; @@ -125,6 +127,8 @@ private: bool m_displaydBV; bool m_MMPZ; bool m_hqAudioDev; + QString m_lang; + QStringList m_languages; QLineEdit * m_wdLineEdit; diff --git a/src/core/main.cpp b/src/core/main.cpp index 08042ef89..12ed9da66 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -383,7 +383,14 @@ int main( int argc, char * * argv ) } - QString pos = QLocale::system().name().left( 2 ); + ConfigManager::inst()->loadConfigFile(); + + // set language + QString pos = ConfigManager::inst()->value( "app", "language" ); + if( pos.isEmpty() ) + { + pos = QLocale::system().name().left( 2 ); + } #ifdef LMMS_BUILD_WIN32 #undef QT_TRANSLATIONS_DIR @@ -414,8 +421,6 @@ int main( int argc, char * * argv ) #endif #endif - ConfigManager::inst()->loadConfigFile(); - if( render_out.isEmpty() ) { // init style and palette diff --git a/src/gui/SetupDialog.cpp b/src/gui/SetupDialog.cpp index a29114f8b..bf79b3ab2 100644 --- a/src/gui/SetupDialog.cpp +++ b/src/gui/SetupDialog.cpp @@ -96,6 +96,8 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) : m_MMPZ( !ConfigManager::inst()->value( "app", "nommpz" ).toInt() ), m_hqAudioDev( ConfigManager::inst()->value( "mixer", "hqaudio" ).toInt() ), + m_lang( ConfigManager::inst()->value( "app", + "language" ) ), m_workingDir( ConfigManager::inst()->workingDir() ), m_vstDir( ConfigManager::inst()->vstDir() ), m_artworkDir( ConfigManager::inst()->artworkDir() ), @@ -302,10 +304,33 @@ SetupDialog::SetupDialog( ConfigTabs _tab_to_open ) : misc_tw->setFixedHeight( YDelta*labelNumber + HeaderSize ); + TabWidget * lang_tw = new TabWidget( tr( "LANGUAGE" ), general ); + lang_tw->setFixedHeight( 48 ); + QComboBox * changeLang = new QComboBox( lang_tw ); + changeLang->move( XDelta, YDelta ); + + QDir dir( ConfigManager::inst()->localeDir() ); + QStringList fileNames = dir.entryList( QStringList( "*.qm" ) ); + for( int i = 0; i < fileNames.size(); ++i ) + { + // get locale extracted by filename + fileNames[i].truncate( fileNames[i].lastIndexOf( '.' ) ); + m_languages.append( fileNames[i] ); + QString lang = QLocale( m_languages.last() ).nativeLanguageName(); + changeLang->addItem( lang ); + if( m_lang == m_languages.last() ) + { + changeLang->setCurrentIndex( i ); + } + } + connect( changeLang, SIGNAL( currentIndexChanged( int ) ), + this, SLOT( setLanguage( int ) ) ); gen_layout->addWidget( bufsize_tw ); gen_layout->addSpacing( 10 ); gen_layout->addWidget( misc_tw ); + gen_layout->addSpacing( 10 ); + gen_layout->addWidget( lang_tw ); gen_layout->addStretch(); @@ -826,6 +851,7 @@ void SetupDialog::accept() QString::number( m_displayWaveform ) ); ConfigManager::inst()->setValue( "ui", "disableautoquit", QString::number( m_disableAutoQuit ) ); + ConfigManager::inst()->setValue( "app", "language", m_lang ); ConfigManager::inst()->setWorkingDir( m_workingDir ); @@ -1026,6 +1052,11 @@ void SetupDialog::toggleOneInstrumentTrackWindow( bool _enabled ) m_oneInstrumentTrackWindow = _enabled; } +void SetupDialog::setLanguage( int lang ) +{ + m_lang = m_languages[lang]; +} +