diff --git a/src/gui/preferences/settingsfileexporterpdfpswidget.cpp b/src/gui/preferences/settingsfileexporterpdfpswidget.cpp --- a/src/gui/preferences/settingsfileexporterpdfpswidget.cpp +++ b/src/gui/preferences/settingsfileexporterpdfpswidget.cpp @@ -18,6 +18,7 @@ #include "settingsfileexporterpdfpswidget.h" #include +#include #include #include @@ -34,7 +35,6 @@ SettingsFileExporterPDFPSWidget *p; KComboBox *comboBoxPaperSize; - QMap paperSizeLabelToName; KComboBox *comboBoxBabelLanguage; KComboBox *comboBoxBibliographyStyle; @@ -46,17 +46,14 @@ SettingsFileExporterPDFPSWidgetPrivate(SettingsFileExporterPDFPSWidget *parent) : p(parent), config(KSharedConfig::openConfig(QStringLiteral("kbibtexrc"))), configGroupName(QStringLiteral("FileExporterPDFPS")), configGroupNameGeneral(QStringLiteral("General")) { - paperSizeLabelToName.insert(i18n("A4"), QStringLiteral("a4")); - paperSizeLabelToName.insert(i18n("Letter"), QStringLiteral("letter")); - paperSizeLabelToName.insert(i18n("Legal"), QStringLiteral("legal")); setupGUI(); } void loadState() { KConfigGroup configGroupGeneral(config, configGroupNameGeneral); const QString paperSizeName = configGroupGeneral.readEntry(FileExporter::keyPaperSize, FileExporter::defaultPaperSize); - int row = GUIHelper::selectValue(comboBoxPaperSize->model(), paperSizeLabelToName.key(paperSizeName)); + int row = GUIHelper::selectValue(comboBoxPaperSize->model(), paperSizeName, Qt::UserRole); comboBoxPaperSize->setCurrentIndex(row); KConfigGroup configGroup(config, configGroupName); @@ -70,7 +67,9 @@ void saveState() { KConfigGroup configGroupGeneral(config, configGroupNameGeneral); - const QString paperSizeName = paperSizeLabelToName.value(comboBoxPaperSize->currentText(), FileExporter::defaultPaperSize); + QString paperSizeName = comboBoxPaperSize->currentData().toString(); + if (paperSizeName.isEmpty()) + paperSizeName = FileExporter::defaultPaperSize; configGroupGeneral.writeEntry(FileExporter::keyPaperSize, paperSizeName); KConfigGroup configGroup(config, configGroupName); @@ -80,7 +79,7 @@ } void resetToDefaults() { - int row = GUIHelper::selectValue(comboBoxPaperSize->model(), FileExporter::defaultPaperSize); + int row = GUIHelper::selectValue(comboBoxPaperSize->model(), FileExporter::defaultPaperSize, Qt::UserRole); comboBoxPaperSize->setCurrentIndex(row); row = GUIHelper::selectValue(comboBoxBabelLanguage->model(), FileExporterToolchain::defaultBabelLanguage); comboBoxBabelLanguage->setCurrentIndex(row); @@ -94,10 +93,14 @@ comboBoxPaperSize = new KComboBox(false, p); comboBoxPaperSize->setObjectName(QStringLiteral("comboBoxPaperSize")); layout->addRow(i18n("Paper Size:"), comboBoxPaperSize); - QStringList paperSizeLabelToNameKeys = paperSizeLabelToName.keys(); - paperSizeLabelToNameKeys.sort(); - for (const QString &labelText : const_cast(paperSizeLabelToNameKeys)) { - comboBoxPaperSize->addItem(labelText, paperSizeLabelToName[labelText]); + static const QMap paperSizes = { + { QPageSize::name(QPageSize::A4), QStringLiteral("a4") }, + { QPageSize::name(QPageSize::Letter), QStringLiteral("letter") }, + { QPageSize::name(QPageSize::Legal), QStringLiteral("legal") }, + }; + /// already sorted by key, i.e. the labels + for (QMap::ConstIterator it = paperSizes.begin(); it != paperSizes.end(); ++it) { + comboBoxPaperSize->addItem(it.key(), it.value()); } connect(comboBoxPaperSize, static_cast(&QComboBox::currentIndexChanged), p, &SettingsAbstractWidget::changed);