]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiDocument.cpp
Hopefully fix locale aware language sorting in document and prefs dialogs.
[lyx.git] / src / frontends / qt4 / GuiDocument.cpp
index 136fa3096c5521a358bea8e6b0d820654603cc42..a36e8226f0c57dd5a0804283ae7fc10a1ee95b86 100644 (file)
 
 #include "GuiDocument.h"
 
+#include "GuiApplication.h"
+#include "GuiBranches.h"
+#include "LaTeXHighlighter.h"
+#include "LengthCombo.h"
+#include "PanelStack.h"
+#include "Validator.h"
+
 #include "LayoutFile.h"
 #include "BranchList.h"
 #include "buffer_funcs.h"
 #include "Encoding.h"
 #include "FloatPlacement.h"
 #include "FuncRequest.h"
-#include "support/gettext.h"
-#include "GuiBranches.h"
 #include "Language.h"
 #include "LaTeXFeatures.h"
-#include "LaTeXHighlighter.h"
 #include "Layout.h"
-#include "LengthCombo.h"
 #include "LyXRC.h" // defaultUnit
 #include "ModuleList.h"
 #include "OutputParams.h"
-#include "PanelStack.h"
 #include "PDFOptions.h"
 #include "qt_helpers.h"
 #include "Spacing.h"
-#include "Validator.h"
 
 #include "insets/InsetListingsParams.h"
 
 #include "support/debug.h"
 #include "support/FileName.h"
 #include "support/filetools.h"
+#include "support/gettext.h"
 #include "support/lstrings.h"
 
 #include "frontends/alert.h"
 
+#include <QAbstractItemModel>
 #include <QCloseEvent>
 #include <QScrollBar>
 #include <QTextCursor>
@@ -510,10 +513,6 @@ GuiDocument::GuiDocument(GuiView & lv)
 {
        setupUi(this);
 
-       QList<LanguagePair> langs = languageData();     
-       for (int i = 0; i != langs.size(); ++i)
-               lang_.append(langs[i].second);
-
        connect(okPB, SIGNAL(clicked()), this, SLOT(slotOK()));
        connect(applyPB, SIGNAL(clicked()), this, SLOT(slotApply()));
        connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose()));
@@ -789,11 +788,10 @@ GuiDocument::GuiDocument(GuiView & lv)
        connect(langModule->quoteStyleCO, SIGNAL(activated(int)),
                this, SLOT(change_adaptor()));
        // language & quotes
-
-       QList<LanguagePair>::const_iterator lit  = langs.begin();
-       QList<LanguagePair>::const_iterator lend = langs.end();
-       for (; lit != lend; ++lit)
-               langModule->languageCO->addItem(lit->first);
+       QAbstractItemModel * language_model = guiApp->languageModel();
+       // FIXME: it would be nice if sorting was enabled/disabled via a checkbox.
+       language_model->sort(0);
+       langModule->languageCO->setModel(language_model);
 
        // Always put the default encoding in the first position.
        // It is special because the displayed text is translated.
@@ -1510,8 +1508,9 @@ void GuiDocument::apply(BufferParams & params)
        }
        params.quotes_language = lga;
 
-       int const pos = langModule->languageCO->currentIndex();
-       params.language = lyx::languages.getLanguage(fromqstr(lang_[pos]));
+       QString const lang = langModule->languageCO->itemData(
+               langModule->languageCO->currentIndex()).toString();
+       params.language = lyx::languages.getLanguage(fromqstr(lang));
 
        // numbering
        if (params.documentClass().hasTocLevels()) {
@@ -1734,15 +1733,6 @@ void GuiDocument::apply(BufferParams & params)
 }
 
 
-static int findPos(QStringList const & vec, QString const & val)
-{
-       for (int i = 0; i != vec.size(); ++i)
-               if (vec[i] == val)
-                       return i;
-       return 0;
-}
-
-
 void GuiDocument::updateParams()
 {
        updateParams(bp_);
@@ -1795,7 +1785,8 @@ void GuiDocument::updateParams(BufferParams const & params)
                params.use_bibtopic);
 
        // language & quotes
-       int const pos = findPos(lang_, toqstr(params.language->lang()));
+       int const pos = langModule->languageCO->findData(toqstr(
+               params.language->lang()));
        langModule->languageCO->setCurrentIndex(pos);
 
        langModule->quoteStyleCO->setCurrentIndex(