Sort external templates locale-aware

Fixes: #10738
This commit is contained in:
Juergen Spitzmueller 2017-08-09 16:09:50 +02:00
parent c2b6d1aedb
commit 9a36ffd1e3
3 changed files with 18 additions and 3 deletions

View File

@ -202,10 +202,16 @@ GuiExternal::GuiExternal(GuiView & lv)
external::TemplateManager::Templates::const_iterator i1, i2;
i1 = external::TemplateManager::get().getTemplates().begin();
i2 = external::TemplateManager::get().getTemplates().end();
QMap<QString, QString> localizedTemplates;
for (; i1 != i2; ++i1)
externalCO->addItem(qt_(i1->second.guiName), toqstr(i1->second.lyxName));
// Sort alphabetically by(localized) GUI name
externalCO->model()->sort(0);
localizedTemplates.insert(qt_(i1->second.guiName), toqstr(i1->second.lyxName));
// Sort alphabetically by (localized) GUI name
QStringList keys = localizedTemplates.keys();
qSort(keys.begin(), keys.end(), SortLocaleAware);
for (QString & key : keys) {
QString const value = localizedTemplates[key];
externalCO->addItem(key, value);
}
// Fill the origins combo
for (size_t i = 0; i != sizeof(origins) / sizeof(origins[0]); ++i)

View File

@ -214,6 +214,12 @@ QString formatLocFPNumber(double d)
}
bool SortLocaleAware(QString const & lhs, QString const & rhs)
{
return QString::localeAwareCompare(lhs, rhs) < 0;
}
bool ColorSorter(ColorCode lhs, ColorCode rhs)
{
return compare_no_case(lcolor.getGUIName(lhs), lcolor.getGUIName(rhs)) < 0;

View File

@ -76,6 +76,9 @@ void doubleToWidget(QLineEdit * input, std::string const & value,
*/
QString formatLocFPNumber(double d);
/// Method to sort QStrings locale-aware (e.g. in combo widgets)
bool SortLocaleAware(QString const & lhs, QString const & rhs);
/// Method to sort colors by GUI name in combo widgets
bool ColorSorter(ColorCode lhs, ColorCode rhs);