#include <QRegExp>
#include <QSessionManager>
#include <QSocketNotifier>
+#include <QSortFilterProxyModel>
#include <QStandardItemModel>
#include <QTextCodec>
#include <QTimer>
GuiApplication::GuiApplication(int & argc, char ** argv)
- : QApplication(argc, argv), Application(), current_view_(0), global_menubar_(0)
+ : QApplication(argc, argv), Application(), current_view_(0),
+ global_menubar_(0), language_model_(0)
{
QString app_name = "LyX";
QCoreApplication::setOrganizationName(app_name);
}
-GuiApplication::~GuiApplication()
-{}
-
-
FuncStatus GuiApplication::getStatus(FuncRequest const & cmd)
{
FuncStatus flag;
void GuiApplication::execBatchCommands()
{
LyX::ref().execBatchCommands();
+}
+
+QAbstractItemModel * GuiApplication::languageModel()
+{
+ if (language_model_)
+ return language_model_;
- language_model_ = new QStandardItemModel(this);
- language_model_->insertColumns(0, 1);
+ QStandardItemModel * lang_model = new QStandardItemModel(this);
+ lang_model->insertColumns(0, 1);
int current_row;
Languages::const_iterator it = languages.begin();
Languages::const_iterator end = languages.end();
for (; it != end; ++it) {
- current_row = language_model_->rowCount();
- language_model_->insertRows(current_row, 1);
- QModelIndex item = language_model_->index(current_row, 0);
- language_model_->setData(item, qt_(it->second.display()), Qt::DisplayRole);
- language_model_->setData(item, toqstr(it->second.lang()), Qt::UserRole);
+ current_row = lang_model->rowCount();
+ lang_model->insertRows(current_row, 1);
+ QModelIndex item = lang_model->index(current_row, 0);
+ lang_model->setData(item, qt_(it->second.display()), Qt::DisplayRole);
+ lang_model->setData(item, toqstr(it->second.lang()), Qt::UserRole);
}
- language_model_->sort(0);
+ language_model_ = new QSortFilterProxyModel(this);
+ language_model_->setSourceModel(lang_model);
+ language_model_->setSortLocaleAware(true);
+ return language_model_;
}
#include <vector>
class QSessionManager;
-class QStandardItemModel;
+class QAbstractItemModel;
namespace lyx {
public:
GuiApplication(int & argc, char ** argv);
- ///
- virtual ~GuiApplication();
/// Method inherited from \c Application class
//@{
///
ColorCache & colorCache() { return color_cache_; }
- QStandardItemModel * languageModel() { return language_model_; }
+ QAbstractItemModel * languageModel();
/// return a suitable serif font name.
virtual QString const romanFontName();
///
ColorCache color_cache_;
///
- QStandardItemModel * language_model_;
+ QSortFilterProxyModel * language_model_;
///
QTranslator qt_trans_;
///
#include "frontends/alert.h"
+#include <QAbstractItemModel>
#include <QCloseEvent>
#include <QScrollBar>
-#include <QStandardItemModel>
#include <QTextCursor>
#include <sstream>
connect(langModule->quoteStyleCO, SIGNAL(activated(int)),
this, SLOT(change_adaptor()));
// language & quotes
- langModule->languageCO->setModel(guiApp->languageModel());
+ 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.
#include "frontends/alert.h"
#include "frontends/Application.h"
+#include <QAbstractItemModel>
#include <QCheckBox>
#include <QColorDialog>
#include <QFontDatabase>
#include <QPixmapCache>
#include <QPushButton>
#include <QSpinBox>
-#include <QStandardItemModel>
#include <QString>
#include <QTreeWidget>
#include <QTreeWidgetItem>
defaultLanguageCO->clear();
- defaultLanguageCO->setModel(guiApp->languageModel());
+ QAbstractItemModel * language_model = guiApp->languageModel();
+ // FIXME: it would be nice if sorting was enabled/disabled via a checkbox.
+ language_model->sort(0);
+ defaultLanguageCO->setModel(language_model);
}