changeset 145:3d9339419d81

Changed the language menu to use the setting object instead of its own structure, git-svn-id: svn://svn.code.sf.net/p/universalindent/code/trunk@348 59b1889a-e5ac-428c-b0c7-476e01d41282
author thomas_-_s <thomas_-_s@59b1889a-e5ac-428c-b0c7-476e01d41282>
date Wed, 30 May 2007 19:56:17 +0000
parents d651c9e780d1
children f01b19eacdbe
files src/mainwindow.cpp src/mainwindow.h
diffstat 2 files changed, 67 insertions(+), 91 deletions(-) [+]
line wrap: on
line diff
--- a/src/mainwindow.cpp	Wed May 30 18:58:21 2007 +0000
+++ b/src/mainwindow.cpp	Wed May 30 19:56:17 2007 +0000
@@ -979,49 +979,35 @@
     Searches for available translation files and adds a menu entry for each.
  */
 void MainWindow::createLanguageMenu() {
-    QString languageShort;
-    QStringList languageFileList;
+	QString languageShort;
+	QString languageName;
     QAction *languageAction;
-    LanguageInfo languageInfo;
 
     languageActionGroup = new QActionGroup(this);
 
-    // English is the default language. A translation file does not exist but to have a menu entry, added here.
-    languageFileList << "universalindent_en.qm";
-
-    // Find all translation files in the "translations" directory.
-    QDir dataDirctory = QDir("./translations");
-    languageFileList << dataDirctory.entryList( QStringList("universalindent_*.qm") );
-
     // Loop for each found translation file
-    foreach ( languageShort, languageFileList ) {
-        // Remove the leading string "universalindent_" from the filename.
-        languageShort.remove(0,16);
-        // Remove trailing file extension ".qm".
-        languageShort.chop(3);
-        languageShort = languageShort.toLower();
-
-        languageInfo.languageShort = languageShort;
+    foreach ( languageShort, settings->getAvailableTranslations() ) {
 
         // Identify the language mnemonic and set the full name.
         if ( languageShort == "en" ) {
-            languageInfo.languageName = tr("English");
+            languageName = tr("English");
         }
         else if ( languageShort == "de" ) {
-            languageInfo.languageName = tr("German");
+            languageName = tr("German");
         }
 		else if ( languageShort == "zh" ) {
-			languageInfo.languageName = tr("Chinese");
+			languageName = tr("Chinese");
 		}
 		else if ( languageShort == "ja" ) {
-			languageInfo.languageName = tr("Japanese");
+			languageName = tr("Japanese");
 		}
         else {
-            languageInfo.languageName = tr("Unknown language mnemonic ") + languageShort;
+            languageName = tr("Unknown language mnemonic ") + languageShort;
         }
 
-        languageAction = new QAction(languageInfo.languageName, languageActionGroup);
-        languageAction->setStatusTip(languageInfo.languageName + tr(" as user interface language."));
+        languageAction = new QAction(languageName, languageActionGroup);
+        languageAction->setStatusTip(languageName + tr(" as user interface language."));
+		languageAction->setIcon( QIcon(QString(":/language/language-"+languageShort+".png")) );
         languageAction->setCheckable(true);
 
         // If the language selected in the ini file or no ini exists the system locale is
@@ -1029,9 +1015,6 @@
         if ( languageShort == language ) {
             languageAction->setChecked(true);
         }
-
-        languageInfo.languageAction = languageAction;
-        languageInfos.append( languageInfo );
     }
 
     languageMenu = menuSettings->addMenu( tr("Language") );
@@ -1047,66 +1030,68 @@
     corresponding action in the languageInfoList and sets the language.
  */
 void MainWindow::languageChanged(QAction* languageAction) {
-    LanguageInfo languageInfo;
+	QString languageName;
+
+	int languageIndex = languageActionGroup->actions().indexOf(languageAction);
+	language = settings->getAvailableTranslations().at(languageIndex);
+
+	// Remove the old translation.
+	qApp->removeTranslator( translator );
 
-    // Search for the activated action
-    foreach ( LanguageInfo languageInfo, languageInfos ) {
-        // Set the new language if found in list
-        if ( languageInfo.languageAction == languageAction ) {
-            // remove the old translation
-            qApp->removeTranslator( translator );
-
-            language = languageInfo.languageShort;
-
-            // load the new translation file and add it to the translation list
-            translator->load( QString("./translations/universalindent_") + language );
-            qApp->installTranslator( translator );
-            retranslateUi(this);
-            toolBarWidget->retranslateUi(toolBar);
+	// Load the new translation file and add it to the translation list.
+	translator->load( QString("./translations/universalindent_") + language );
+	qApp->installTranslator( translator );
+	
+	// Translate the language menu.
+	languageMenu->setTitle( tr("Language") );
+	int i = 0;
+	foreach ( QAction* languageAction, languageActionGroup->actions() ) {
+		QString languageShort = settings->getAvailableTranslations().at(i);
 
-            // translate the language menu
-            languageMenu->setTitle( tr("Language") );
-            foreach ( languageInfo, languageInfos ) {
-                // Identify the language mnemonic and set the full name
-                if ( languageInfo.languageShort == "en" ) {
-                    languageInfo.languageName = tr("English");
-                }
-                else if ( languageInfo.languageShort == "de" ) {
-                    languageInfo.languageName = tr("German");
-                }
-				else if ( languageInfo.languageShort == "zh" ) {
-					languageInfo.languageName = tr("Chinese");
-				}
-				else if ( languageInfo.languageShort == "ja" ) {
-					languageInfo.languageName = tr("Japanese");
-				}
-                else {
-                    languageInfo.languageName = tr("Unknown language mnemonic ") + languageInfo.languageShort;
-                }
-                languageInfo.languageAction->setText( languageInfo.languageName );
-                languageInfo.languageAction->setStatusTip( languageInfo.languageName + tr(" as user interface language.") );
-            }
+		// Identify the language mnemonic and set the full name
+		if ( languageShort == "en" ) {
+			languageName = tr("English");
+		}
+		else if ( languageShort == "de" ) {
+			languageName = tr("German");
+		}
+		else if ( languageShort == "zh" ) {
+			languageName = tr("Chinese");
+		}
+		else if ( languageShort == "ja" ) {
+			languageName = tr("Japanese");
+		}
+		else {
+			languageName = tr("Unknown language mnemonic ") + language;
+		}
+		languageAction->setText( languageName );
+		//languageAction->setIcon( QIcon(QString(":/language/language-"+languageShort+".png")) );
+		languageAction->setStatusTip( languageName + tr(" as user interface language.") );
+		i++;
+	}
 
-			// Translate the encoding menu.
-			QStringList encodingsList = QStringList() << "UTF-8" << "UTF-16" << "UTF-16BE" << "UTF-16LE"
-				<< "Apple Roman" << "Big5" << "Big5-HKSCS" << "EUC-JP" << "EUC-KR" << "GB18030-0"
-				<< "IBM 850" << "IBM 866" << "IBM 874" << "ISO 2022-JP" << "ISO 8859-1" << "ISO 8859-13"
-				<< "Iscii-Bng" << "JIS X 0201" << "JIS X 0208" << "KOI8-R" << "KOI8-U" << "MuleLao-1"
-				<< "ROMAN8" << "Shift-JIS" << "TIS-620" << "TSCII" << "Windows-1250" << "WINSAMI2";
+	// Translate the encoding menu.
+	QStringList encodingsList = QStringList() << "UTF-8" << "UTF-16" << "UTF-16BE" << "UTF-16LE"
+		<< "Apple Roman" << "Big5" << "Big5-HKSCS" << "EUC-JP" << "EUC-KR" << "GB18030-0"
+		<< "IBM 850" << "IBM 866" << "IBM 874" << "ISO 2022-JP" << "ISO 8859-1" << "ISO 8859-13"
+		<< "Iscii-Bng" << "JIS X 0201" << "JIS X 0208" << "KOI8-R" << "KOI8-U" << "MuleLao-1"
+		<< "ROMAN8" << "Shift-JIS" << "TIS-620" << "TSCII" << "Windows-1250" << "WINSAMI2";
 
-			encodingMenu->setTitle( tr("Reopen File with other Encoding") );
-			QList<QAction *> encodingActionList = encodingActionGroup->actions();
-			for ( int i = 0; i < encodingActionList.size(); i++ ) {
-				encodingActionList.at(i)->setStatusTip( tr("Reopen the currently opened source code file by using the text encoding scheme ") + encodingsList.at(i) );
-			}
+	encodingMenu->setTitle( tr("Reopen File with other Encoding") );
+	QList<QAction *> encodingActionList = encodingActionGroup->actions();
+	for ( int i = 0; i < encodingActionList.size(); i++ ) {
+		encodingActionList.at(i)->setStatusTip( tr("Reopen the currently opened source code file by using the text encoding scheme ") + encodingsList.at(i) );
+	}
 
-			// Translate the about dialog.
-            aboutDialog->retranslate();
+	retranslateUi(this);
+	toolBarWidget->retranslateUi(toolBar);
 
-            // Translate the highlighter menue.
-            highlighter->retranslate();
-        }
-    }
+	// Translate the about dialog.
+	aboutDialog->retranslate();
+
+	// Translate the highlighter menu.
+	highlighter->retranslate();
+
 }
 
 
--- a/src/mainwindow.h	Wed May 30 18:58:21 2007 +0000
+++ b/src/mainwindow.h	Wed May 30 19:56:17 2007 +0000
@@ -94,15 +94,6 @@
     Ui::toolBarWidget *toolBarWidget;
     IndentHandler *indentHandler;
 
-    //! Stores info about a language, like the full name, mnemonic and a reference to its menu action
-    struct LanguageInfo
-    {
-        QString languageName;
-        QString languageShort;
-        QAction *languageAction;
-    };
-    QVector<LanguageInfo> languageInfos;
-
     QString loadFile(QString filePath);
     QString openFileDialog(QString dialogHeaderStr, QString startPath, QString fileMaskStr);
     void updateWindowTitle();