author | ar <ar> | 2004-08-21 10:08:44 (UTC) |
---|---|---|
committer | ar <ar> | 2004-08-21 10:08:44 (UTC) |
commit | 2304c546ec73f2643621f04d61128c2686812cd1 (patch) (side-by-side diff) | |
tree | 9ab2b011fcdd376fbbd70000bb035e7521ef5490 | |
parent | e67b6a8748af0856d77eeb46048d36e58314793e (diff) | |
download | opie-2304c546ec73f2643621f04d61128c2686812cd1.zip opie-2304c546ec73f2643621f04d61128c2686812cd1.tar.gz opie-2304c546ec73f2643621f04d61128c2686812cd1.tar.bz2 |
- BugFix: #1383 - Language settings doesn't warn about losing open apps (Thanks to Markus Litz for the patch)
-rw-r--r-- | noncore/settings/language/language.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/noncore/settings/language/language.cpp b/noncore/settings/language/language.cpp index d30a041..8dff063 100644 --- a/noncore/settings/language/language.cpp +++ b/noncore/settings/language/language.cpp @@ -1,152 +1,165 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "settings.h" #include <qpe/global.h> #include <qpe/fontmanager.h> #include <qpe/config.h> #include <qpe/applnk.h> #include <qpe/qpedialog.h> #include <qpe/qpeapplication.h> #if defined(Q_WS_QWS) && !defined(QT_NO_COP) #include <qpe/qcopenvelope_qws.h> #endif #include <qlabel.h> #include <qcheckbox.h> #include <qradiobutton.h> #include <qtabwidget.h> #include <qslider.h> #include <qfile.h> #include <qtextstream.h> #include <qdatastream.h> #include <qmessagebox.h> #include <qcombobox.h> #include <qspinbox.h> #include <qlistbox.h> #include <qdir.h> #if QT_VERSION >= 300 #include <qstylefactory.h> #endif #include <stdlib.h> 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 ( 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(); + switch( QMessageBox::warning( this, "Language", + "Attention, all windows will be closed\n" + "by changing the language\n" + "without saving the Data.\n\n" + "Go on?", + "Ok", "Cancel", 0, + 0, 1 )) + { + case 0: // OK + applyLanguage(); + QDialog::accept(); + break; + case 1: // Abbruch + break; + } } void LanguageSettings::applyLanguage() { setLanguage ( langAvail. at ( languages-> currentItem ( ))); } void LanguageSettings::reject() { reset(); QDialog::reject(); } void LanguageSettings::reset() { QString l = getenv("LANG"); Config config("locale"); config.setGroup("Language"); l = config.readEntry( "Language", l ); actualLanguage = l; if (l.isEmpty()) l = "en"; 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" ); 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; #endif } } void LanguageSettings::done(int r) { QDialog::done(r); close(); } |