author | sandman <sandman> | 2002-10-21 12:13:18 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-10-21 12:13:18 (UTC) |
commit | cdaf60fdf5dc19e88db4faa319daacfe4e879518 (patch) (side-by-side diff) | |
tree | 39ef0f3b4505cddb7f7eca2f2a1b14528c937bf2 | |
parent | 3774660eaa50fe7adab39564ded7a2e1f296724b (diff) | |
download | opie-cdaf60fdf5dc19e88db4faa319daacfe4e879518.zip opie-cdaf60fdf5dc19e88db4faa319daacfe4e879518.tar.gz opie-cdaf60fdf5dc19e88db4faa319daacfe4e879518.tar.bz2 |
Language settings didn't let you de-select a language (i.e. if you have
opie-i18n-de, but NOT opie-i18n-en installed, you can't go back to english)
Now there's always a "English (default)" entry, as long as opie-i18n-en is
not installed.
-rw-r--r-- | noncore/settings/language/language.cpp | 124 |
1 files changed, 67 insertions, 57 deletions
diff --git a/noncore/settings/language/language.cpp b/noncore/settings/language/language.cpp index 397d372..5c4284b 100644 --- a/noncore/settings/language/language.cpp +++ b/noncore/settings/language/language.cpp @@ -45,106 +45,116 @@ #include <qdir.h> #if QT_VERSION >= 300 #include <qstylefactory.h> #endif #if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) #include <unistd.h> #include <linux/fb.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #endif #include <stdlib.h> -LanguageSettings::LanguageSettings( QWidget* parent, const char* name, WFlags fl ) - : LanguageSettingsBase( parent, name, TRUE, fl ) +LanguageSettings::LanguageSettings( QWidget* parent, const char* name, WFlags fl ) + : LanguageSettingsBase( parent, name, TRUE, fl ) { - if ( FontManager::hasUnicodeFont() ) - languages->setFont(FontManager::unicodeFont(FontManager::Proportional)); - - QString tfn = QPEApplication::qpeDir()+"/i18n/"; - QDir langDir = tfn; - QStringList list = langDir.entryList("*", QDir::Dirs ); - - QStringList::Iterator it; - - for( it = list.begin(); it != list.end(); ++it ) { - QString name = (*it); - QFileInfo desktopFile( tfn + "/" + name + "/.directory" ); - if( desktopFile.exists() ) { - langAvail.append(name); - Config conf( desktopFile.filePath(), Config::File ); - QString langName = conf.readEntry( "Name" ); - QString ownName = conf.readEntryDirect( "Name["+name+"]" ); - if ( ownName.isEmpty() ) - ownName = conf.readEntryDirect( "Name" ); - if ( !ownName.isEmpty() && ownName != langName ) - langName = langName + " [" + ownName + "]"; - languages->insertItem( langName ); - + if ( FontManager::hasUnicodeFont() ) + languages->setFont(FontManager::unicodeFont(FontManager::Proportional)); + + + QString tfn = QPEApplication::qpeDir() + "/i18n/"; + QDir langDir = tfn; + QStringList list = langDir.entryList("*", QDir::Dirs ); + + QStringList::Iterator it; + + for ( it = list.begin(); it != list.end(); ++it ) { + QString name = (*it); + QFileInfo desktopFile( tfn + "/" + name + "/.directory" ); + if ( desktopFile.exists() ) { + langAvail.append(name); + Config conf( desktopFile.filePath(), Config::File ); + QString langName = conf.readEntry( "Name" ); + QString ownName = conf.readEntryDirect( "Name[" + name + "]" ); + if ( ownName.isEmpty() ) + ownName = conf.readEntryDirect( "Name" ); + if ( !ownName.isEmpty() && ownName != langName ) + langName = langName + " [" + ownName + "]"; + languages->insertItem( langName ); + + } } - } - - dl = new QPEDialogListener(this); - reset(); + if ( langAvail. find ( "en" ) == -1 ) { + langAvail. prepend ( "" ); // no tr + languages-> insertItem ( QString ( "English [%1] (%2)" /* no tr (!) */ ). arg ( tr ( "English" )). arg ( tr( "default" )), 0 ); + } + + dl = new QPEDialogListener(this); + reset(); } LanguageSettings::~LanguageSettings() -{ -} +{} void LanguageSettings::accept() { - applyLanguage(); - QDialog::accept(); + applyLanguage(); + QDialog::accept(); } void LanguageSettings::applyLanguage() { - QString lang = langAvail.at( languages->currentItem() ); - setLanguage( lang ); + setLanguage ( langAvail. at ( languages-> currentItem ( ))); } void LanguageSettings::reject() { - reset(); - QDialog::reject(); + reset(); + QDialog::reject(); } void LanguageSettings::reset() { - QString l = getenv("LANG"); - Config config("language"); - l = config.readEntry( "Language", l ); - if(l.isEmpty()) l = "en"; - actualLanguage = l; - - int n = langAvail.find( l ); - languages->setCurrentItem( n ); + QString l = getenv("LANG"); + Config config("locale"); + config.setGroup("Language"); + l = config.readEntry( "Language", l ); + if (l.isEmpty()) + l = "en"; + actualLanguage = l; + + int n = langAvail.find( l ); + languages->setCurrentItem( n ); } QString LanguageSettings::actualLanguage; void LanguageSettings::setLanguage(const QString& lang) { - if( lang != actualLanguage ) { - Config config("locale"); - config.setGroup( "Language" ); - config.writeEntry( "Language", lang ); - config.write(); - + if ( lang != actualLanguage ) { + Config config("locale"); + config.setGroup( "Language" ); + if ( lang. isEmpty ( )) + config. removeEntry ( "Language" ); + else + config.writeEntry( "Language", lang ); + config.write(); + #if defined(Q_WS_QWS) && !defined(QT_NO_COP) - QCopEnvelope e("QPE/System","language(QString)"); - e << lang; + + QCopEnvelope e("QPE/System", "language(QString)"); + e << lang; #endif - } + + } } -void LanguageSettings::done(int r) +void LanguageSettings::done(int r) { - QDialog::done(r); - close(); + QDialog::done(r); + close(); } |