File indexing completed on 2024-05-19 05:05:18
0001 /*************************************************************************** 0002 * SPDX-License-Identifier: GPL-2.0-or-later 0003 * * 0004 * SPDX-FileCopyrightText: 2004-2022 Thomas Fischer <fischer@unix-ag.uni-kl.de> 0005 * * 0006 * This program is free software; you can redistribute it and/or modify * 0007 * it under the terms of the GNU General Public License as published by * 0008 * the Free Software Foundation; either version 2 of the License, or * 0009 * (at your option) any later version. * 0010 * * 0011 * This program is distributed in the hope that it will be useful, * 0012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0014 * GNU General Public License for more details. * 0015 * * 0016 * You should have received a copy of the GNU General Public License * 0017 * along with this program; if not, see <https://www.gnu.org/licenses/>. * 0018 ***************************************************************************/ 0019 0020 #include "bibtexfields.h" 0021 0022 #include <QExplicitlySharedDataPointer> 0023 #include <QStandardPaths> 0024 0025 #ifdef HAVE_KF 0026 #include <KSharedConfig> 0027 #include <KConfigGroup> 0028 #endif // HAVE KF5 0029 #ifdef HAVE_KFI18N 0030 #include <KLocalizedString> 0031 #else // HAVE_KFI18N 0032 #include <QObject> 0033 #define i18n(text) QObject::tr(text) 0034 #endif // HAVE_KFI18N 0035 0036 #include "preferences.h" 0037 #include "logging_config.h" 0038 0039 bool operator==(const FieldDescription &a, const FieldDescription &b) 0040 { 0041 return a.upperCamelCase == b.upperCamelCase; 0042 } 0043 uint qHash(const FieldDescription &a) 0044 { 0045 return qHash(a.upperCamelCase); 0046 } 0047 0048 class BibTeXFields::BibTeXFieldsPrivate 0049 { 0050 public: 0051 static const QVector<FieldDescription> fieldDescriptionsBibTeX; 0052 static const QVector<FieldDescription> fieldDescriptionsBibLaTeX; 0053 0054 BibTeXFields *p; 0055 0056 #ifdef HAVE_KF 0057 KSharedConfigPtr layoutConfig; 0058 #endif // HAVE_KF 0059 0060 BibTeXFieldsPrivate(const QString &style, BibTeXFields *parent) 0061 : p(parent) { 0062 #ifdef HAVE_KF 0063 const QString stylefile = style + QStringLiteral(".kbstyle"); 0064 layoutConfig = KSharedConfig::openConfig(stylefile, KConfig::FullConfig, QStandardPaths::AppDataLocation); 0065 if (layoutConfig->groupList().isEmpty()) 0066 qCWarning(LOG_KBIBTEX_CONFIG) << "The configuration file for layout of type" << style << "could not be located or is empty"; 0067 #else // HAVE_KF 0068 Q_UNUSED(style) 0069 #endif // HAVE_KF 0070 } 0071 0072 #ifdef HAVE_KF 0073 void load() { 0074 int logicalIndex = 0; 0075 for (BibTeXFields::Iterator it = p->begin(); it != p->end(); ++logicalIndex, ++it) { 0076 auto &fd = *it; 0077 const QString groupName = QStringLiteral("Column") + fd.upperCamelCase + fd.upperCamelCaseAlt; 0078 KConfigGroup configGroup(layoutConfig, groupName); 0079 0080 fd.visible.clear(); 0081 fd.width.clear(); 0082 fd.visualIndex.clear(); 0083 if (configGroup.exists()) { 0084 const QStringList keyList = configGroup.keyList(); 0085 for (const QString &key : keyList) { 0086 if (key.startsWith(QStringLiteral("Visible_"))) { 0087 const QString treeViewName = key.mid(8); 0088 fd.visible.insert(treeViewName, configGroup.readEntry(key, fd.defaultVisible)); 0089 } else if (key.startsWith(QStringLiteral("Width_"))) { 0090 const QString treeViewName = key.mid(14); 0091 /// Fall-back value of '0' means in BasicFileView to enable automatic column balancing if all fields have width 0 0092 fd.width.insert(treeViewName, configGroup.readEntry(key, 0)); 0093 } else if (key.startsWith(QStringLiteral("VisualIndex_"))) { 0094 const QString treeViewName = key.mid(12); 0095 /// By default, visual index == logical index 0096 fd.visualIndex.insert(treeViewName, configGroup.readEntry(key, logicalIndex)); 0097 } 0098 } 0099 } 0100 } 0101 } 0102 0103 void save() { 0104 int logicalIndex = 0; 0105 for (const auto &fd : const_cast<const BibTeXFields &>(*p)) { 0106 const QString groupName = QStringLiteral("Column") + fd.upperCamelCase + fd.upperCamelCaseAlt; 0107 KConfigGroup configGroup(layoutConfig, groupName); 0108 0109 const QList<QString> keys = fd.visible.keys(); ///< Assuming the keys are the same as for 'width' and 'visualIndex' 0110 for (const QString &treeViewName : keys) { 0111 const QString keyVisible = QStringLiteral("Visible_") + treeViewName; 0112 configGroup.writeEntry(keyVisible, fd.visible.value(treeViewName, fd.defaultVisible)); 0113 const QString keyWidth = QStringLiteral("Width_") + treeViewName; 0114 /// Fall-back value of '0' means in BasicFileView to enable automatic column balancing if all fields have width 0 0115 configGroup.writeEntry(keyWidth, fd.width.value(treeViewName, 0)); 0116 const QString keyVisualIndex = QStringLiteral("VisualIndex_") + treeViewName; 0117 /// By default, visual index == logical index 0118 configGroup.writeEntry(keyVisualIndex, fd.visualIndex.value(treeViewName, logicalIndex)); 0119 } 0120 ++logicalIndex; 0121 } 0122 0123 layoutConfig->sync(); 0124 } 0125 0126 void resetToDefaults(const QString &treeViewName) { 0127 for (BibTeXFields::Iterator it = p->begin(); it != p->end(); ++it) { 0128 const QString groupName = QStringLiteral("Column") + it->upperCamelCase + it->upperCamelCaseAlt; 0129 KConfigGroup configGroup(layoutConfig, groupName); 0130 configGroup.deleteEntry(QStringLiteral("Visible_") + treeViewName); 0131 configGroup.deleteEntry(QStringLiteral("Width_") + treeViewName); 0132 configGroup.deleteEntry(QStringLiteral("VisualIndex_") + treeViewName); 0133 } 0134 layoutConfig->sync(); 0135 load(); 0136 } 0137 #endif // HAVE_KF 0138 }; 0139 0140 0141 BibTeXFields::BibTeXFields(const QString &style, const QVector<FieldDescription> &other) 0142 : QVector<FieldDescription>(other), d(new BibTeXFieldsPrivate(style, this)) 0143 { 0144 #ifdef HAVE_KF 0145 d->load(); 0146 #endif // HAVE_KF 0147 } 0148 0149 BibTeXFields::~BibTeXFields() 0150 { 0151 delete d; 0152 } 0153 0154 /// This function cannot return a 'const' BibTeXFields object 0155 /// similarly like BibTeXEntries::instance as the FieldDescription's 0156 /// QMap visible will be modified. 0157 BibTeXFields &BibTeXFields::instance() 0158 { 0159 static const QVector<FieldDescription> fieldDescriptionsBibTeX { 0160 FieldDescription {QStringLiteral("^type"), QString(), {}, i18n("Element Type"), KBibTeX::TypeFlag::Source, KBibTeX::TypeFlag::Source, {}, {}, 5, {}, true, true}, 0161 FieldDescription {QStringLiteral("^id"), QString(), {}, i18n("Identifier"), KBibTeX::TypeFlag::Source, KBibTeX::TypeFlag::Source, {}, {}, 6, {}, true, true}, 0162 FieldDescription {QStringLiteral("Title"), QString(), {}, i18n("Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0163 FieldDescription {QStringLiteral("Title"), QStringLiteral("BookTitle"), {}, i18n("Title or Book Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, true, false}, 0164 FieldDescription {QStringLiteral("Author"), QStringLiteral("Editor"), {}, i18n("Author or Editor"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 7, {}, true, false}, 0165 FieldDescription {QStringLiteral("Author"), QString(), {}, i18n("Author"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0166 FieldDescription {QStringLiteral("Editor"), QString(), {}, i18n("Editor"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0167 FieldDescription {QStringLiteral("Month"), QString(), {}, i18n("Month"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 3, {}, false, false}, 0168 FieldDescription {QStringLiteral("Year"), QString(), {}, i18n("Year"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, true, false}, 0169 FieldDescription {QStringLiteral("Journal"), QString(), {}, i18n("Journal"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 4, {}, false, false}, 0170 FieldDescription {QStringLiteral("Volume"), QString(), {}, i18n("Volume"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0171 FieldDescription {QStringLiteral("Number"), QString(), {}, i18n("Number"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0172 FieldDescription {QStringLiteral("ISSN"), QString(), {}, i18n("ISSN"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0173 FieldDescription {QStringLiteral("ISBN"), QString(), {}, i18n("ISBN"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0174 FieldDescription {QStringLiteral("ISBN"), QStringLiteral("ISSN"), {}, i18n("ISBN or ISSN"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0175 FieldDescription {QStringLiteral("HowPublished"), QString(), {}, i18n("How Published"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 5, {}, false, false}, 0176 FieldDescription {QStringLiteral("Note"), QString(), {}, i18n("Note"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 5, {}, false, false}, 0177 FieldDescription {QStringLiteral("Abstract"), QString(), {}, i18n("Abstract"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 7, {}, false, true}, 0178 FieldDescription {QStringLiteral("Pages"), QString(), {}, i18n("Pages"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, true, false}, 0179 FieldDescription {QStringLiteral("Publisher"), QString(), {}, i18n("Publisher"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 5, {}, false, false}, 0180 FieldDescription {QStringLiteral("Institution"), QString(), {}, i18n("Institution"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 5, {}, false, false}, 0181 FieldDescription {QStringLiteral("BookTitle"), QString(), {}, i18n("Book Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0182 FieldDescription {QStringLiteral("Series"), QString(), {}, i18n("Series"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 12, {}, false, false}, 0183 FieldDescription {QStringLiteral("Edition"), QString(), {}, i18n("Edition"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0184 FieldDescription {QStringLiteral("Chapter"), QString(), {}, i18n("Chapter"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0185 FieldDescription {QStringLiteral("Organization"), QString(), {}, i18n("Organization"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0186 FieldDescription {QStringLiteral("School"), QString(), {}, i18n("School"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0187 FieldDescription {QStringLiteral("Keywords"), QString(), {}, i18n("Keywords"), KBibTeX::TypeFlag::Keyword, KBibTeX::TypeFlag::Keyword | KBibTeX::TypeFlag::Source, {}, {}, 3, {}, false, true}, 0188 FieldDescription {QStringLiteral("CrossRef"), QString(), {}, i18n("Cross Reference"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim, {}, {}, 3, {}, false, true}, 0189 FieldDescription {QStringLiteral("DOI"), QString(), {}, i18n("DOI"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim, {}, {}, 1, {}, false, true}, 0190 FieldDescription {QStringLiteral("URL"), QString(), {}, i18n("URL"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim, {}, {}, 3, {}, false, true}, 0191 FieldDescription {QStringLiteral("Location"), QString(), {}, i18n("Location"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 3, {}, false, false}, 0192 FieldDescription {QStringLiteral("Address"), QString(), {}, i18n("Address"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 3, {}, false, false}, 0193 FieldDescription {QStringLiteral("Type"), QString(), {}, i18n("Type"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0194 FieldDescription {QStringLiteral("Key"), QString(), {}, i18n("Key"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0195 FieldDescription {QStringLiteral("X-Color"), QString(), {}, i18n("Color"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0196 FieldDescription {QStringLiteral("X-Stars"), QString(), {}, i18n("Stars"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim | KBibTeX::TypeFlag::Source, {}, {}, 4, {}, false, true}, 0197 }; 0198 static const QVector<FieldDescription> fieldDescriptionsBibLaTeX { 0199 FieldDescription {QStringLiteral("^type"), QString(), {}, i18n("Element Type"), KBibTeX::TypeFlag::Source, KBibTeX::TypeFlag::Source, {}, {}, 5, {}, true, true}, 0200 FieldDescription {QStringLiteral("^id"), QString(), {}, i18n("Identifier"), KBibTeX::TypeFlag::Source, KBibTeX::TypeFlag::Source, {}, {}, 6, {}, true, true}, 0201 FieldDescription {QStringLiteral("Title"), QString(), {}, i18n("Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0202 FieldDescription {QStringLiteral("Title"), QStringLiteral("BookTitle"), {}, i18n("Title or Book Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, true, false}, 0203 FieldDescription {QStringLiteral("SubTitle"), QString(), {}, i18n("Subtitle"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0204 FieldDescription {QStringLiteral("TitleAddon"), QString(), {}, i18n("Title Addon"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0205 FieldDescription {QStringLiteral("ShortTitle"), QString(), {}, i18n("Shortitle"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 4, {}, false, false}, 0206 FieldDescription {QStringLiteral("OrigTitle"), QString(), {}, i18n("Original Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0207 FieldDescription {QStringLiteral("ReprintTitle"), QString(), {}, i18n("Reprint Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0208 FieldDescription {QStringLiteral("MainTitle"), QString(), {}, i18n("Main Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0209 FieldDescription {QStringLiteral("MainSubTitle"), QString(), {}, i18n("Main Subtitle"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0210 FieldDescription {QStringLiteral("MainTitleAddon"), QString(), {}, i18n("Maintitle Addon"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0211 FieldDescription {QStringLiteral("Author"), QStringLiteral("Editor"), {}, i18n("Author or Editor"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 7, {}, true, false}, 0212 FieldDescription {QStringLiteral("Author"), QString(), {}, i18n("Author"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0213 FieldDescription {QStringLiteral("ShortAuthor"), QString(), {}, i18n("Short Author"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0214 FieldDescription {QStringLiteral("NameAddon"), QString(), {}, i18n("Name Addon"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0215 FieldDescription {QStringLiteral("AuthorType"), QString(), {}, i18n("Author Type"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0216 FieldDescription {QStringLiteral("BookAuthor"), QString(), {}, i18n("Book Author"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0217 FieldDescription {QStringLiteral("Editor"), QString(), {}, i18n("Editor"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0218 FieldDescription {QStringLiteral("ShortEditor"), QString(), {}, i18n("Short Editor"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0219 FieldDescription {QStringLiteral("EditorType"), QString(), {}, i18n("Editor Type"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0220 FieldDescription {QStringLiteral("EditorA"), QString(), {}, i18n("Editor A"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0221 FieldDescription {QStringLiteral("EditorAType"), QString(), {}, i18n("Editor A Type"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0222 FieldDescription {QStringLiteral("EditorB"), QString(), {}, i18n("Editor B"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0223 FieldDescription {QStringLiteral("EditorBType"), QString(), {}, i18n("Editor B Type"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0224 FieldDescription {QStringLiteral("EditorC"), QString(), {}, i18n("Editor C"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0225 FieldDescription {QStringLiteral("EditorCType"), QString(), {}, i18n("Editor C Type"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0226 FieldDescription {QStringLiteral("Translator"), QString(), {}, i18n("Translator"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0227 FieldDescription {QStringLiteral("Afterword"), QString(), {}, i18n("Afterword Author"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0228 FieldDescription {QStringLiteral("Introduction"), QString(), {}, i18n("Introduction Author"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0229 FieldDescription {QStringLiteral("Foreword"), QString(), {}, i18n("Foreword Author"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0230 FieldDescription {QStringLiteral("Annotator"), QString(), {}, i18n("Annotator"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0231 FieldDescription {QStringLiteral("Commentator"), QString(), {}, i18n("Commentator"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0232 FieldDescription {QStringLiteral("Holder"), QString(), {}, i18n("Patent Holder"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0233 FieldDescription {QStringLiteral("Month"), QString(), {}, i18n("Month"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 3, {}, false, false}, 0234 FieldDescription {QStringLiteral("Year"), QString(), {}, i18n("Year"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0235 FieldDescription {QStringLiteral("Date"), QString(), {}, i18n("Date"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0236 FieldDescription {QStringLiteral("Year"), QStringLiteral("Date"), {}, i18n("Date or Year"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, true, false}, 0237 FieldDescription {QStringLiteral("EventDate"), QString(), {}, i18n("Event Date"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0238 FieldDescription {QStringLiteral("OrigDate"), QString(), {}, i18n("Original Date"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0239 FieldDescription {QStringLiteral("JournalTitle"), QString(), {QStringLiteral("Journal")}, i18n("Journal Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 4, {}, false, false}, 0240 FieldDescription {QStringLiteral("JournalSubTitle"), QString(), {}, i18n("Journal Subtitle"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 4, {}, false, false}, 0241 FieldDescription {QStringLiteral("ShortJournal"), QString(), {}, i18n("Journal Shortitle"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 4, {}, false, false}, 0242 FieldDescription {QStringLiteral("Volume"), QString(), {}, i18n("Volume"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0243 FieldDescription {QStringLiteral("Volumes"), QString(), {}, i18n("Number of Volumes"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0244 FieldDescription {QStringLiteral("Number"), QString(), {}, i18n("Number"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0245 FieldDescription {QStringLiteral("Version"), QString(), {}, i18n("Version"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0246 FieldDescription {QStringLiteral("Part"), QString(), {}, i18n("Part"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0247 FieldDescription {QStringLiteral("Issue"), QString(), {}, i18n("Issue"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0248 FieldDescription {QStringLiteral("IASN"), QString(), {}, i18n("IASN"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0249 FieldDescription {QStringLiteral("ISMN"), QString(), {}, i18n("ISMN"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0250 FieldDescription {QStringLiteral("ISRN"), QString(), {}, i18n("ISRN"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0251 FieldDescription {QStringLiteral("ISSN"), QString(), {}, i18n("ISSN"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0252 FieldDescription {QStringLiteral("ISBN"), QString(), {}, i18n("ISBN"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0253 FieldDescription {QStringLiteral("ISBN"), QStringLiteral("ISSN"), {}, i18n("ISBN or ISSN"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0254 FieldDescription {QStringLiteral("ISWC"), QString(), {}, i18n("ISWC"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0255 FieldDescription {QStringLiteral("HowPublished"), QString(), {}, i18n("How Published"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 5, {}, false, false}, 0256 FieldDescription {QStringLiteral("Note"), QString(), {}, i18n("Note"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 5, {}, false, false}, 0257 FieldDescription {QStringLiteral("Addendum"), QString(), {}, i18n("Addendum"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 5, {}, false, false}, 0258 FieldDescription {QStringLiteral("Annotation"), QString(), {QStringLiteral("Annote")}, i18n("Annotation"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 5, {}, false, false}, 0259 FieldDescription {QStringLiteral("Abstract"), QString(), {}, i18n("Abstract"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 7, {}, false, true}, 0260 FieldDescription {QStringLiteral("Pages"), QString(), {}, i18n("Pages"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, true, false}, 0261 FieldDescription {QStringLiteral("PageTotal"), QString(), {}, i18n("Total Pages"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0262 FieldDescription {QStringLiteral("Pagination"), QString(), {}, i18n("Pagination"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0263 FieldDescription {QStringLiteral("BookPagination"), QString(), {}, i18n("Book Pagination"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0264 FieldDescription {QStringLiteral("Publisher"), QString(), {}, i18n("Publisher"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 5, {}, false, false}, 0265 FieldDescription {QStringLiteral("OrigPublisher"), QString(), {}, i18n("Original Publisher"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0266 FieldDescription {QStringLiteral("Institution"), QString(), {QStringLiteral("School")}, i18n("Institution"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 5, {}, false, false}, 0267 FieldDescription {QStringLiteral("BookTitle"), QString(), {}, i18n("Book Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0268 FieldDescription {QStringLiteral("BookSubTitle"), QString(), {}, i18n("Book Subtitle"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0269 FieldDescription {QStringLiteral("IssueTitle"), QString(), {}, i18n("Issue Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0270 FieldDescription {QStringLiteral("IssueSubTitle"), QString(), {}, i18n("Issue Subtitle"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0271 FieldDescription {QStringLiteral("BookTitleAddon"), QString(), {}, i18n("Booktitle Addon"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 14, {}, false, false}, 0272 FieldDescription {QStringLiteral("Series"), QString(), {}, i18n("Series"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 12, {}, false, false}, 0273 FieldDescription {QStringLiteral("ShortSeries"), QString(), {}, i18n("Series Shortitle"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 4, {}, false, false}, 0274 FieldDescription {QStringLiteral("Edition"), QString(), {}, i18n("Edition"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0275 FieldDescription {QStringLiteral("Chapter"), QString(), {}, i18n("Chapter"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 1, {}, false, false}, 0276 FieldDescription {QStringLiteral("Organization"), QString(), {}, i18n("Organization"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0277 FieldDescription {QStringLiteral("EventTitle"), QString(), {}, i18n("Event Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0278 FieldDescription {QStringLiteral("Venue"), QString(), {}, i18n("Venue"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0279 FieldDescription {QStringLiteral("IndexTitle"), QString(), {}, i18n("Index Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0280 FieldDescription {QStringLiteral("Keywords"), QString(), {}, i18n("Keywords"), KBibTeX::TypeFlag::Keyword, KBibTeX::TypeFlag::Keyword | KBibTeX::TypeFlag::Source, {}, {}, 3, {}, false, true}, 0281 FieldDescription {QStringLiteral("CrossRef"), QString(), {}, i18n("Cross Reference"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim, {}, {}, 3, {}, false, true}, 0282 FieldDescription {QStringLiteral("XRef"), QString(), {}, i18n("XRef"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim, {}, {}, 3, {}, false, true}, 0283 FieldDescription {QStringLiteral("DOI"), QString(), {}, i18n("DOI"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim, {}, {}, 1, {}, false, false}, 0284 FieldDescription {QStringLiteral("EPrint"), QString(), {}, i18n("E-Print"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim, {}, {}, 1, {}, false, false}, 0285 FieldDescription {QStringLiteral("EPrintClass"), QString(), {QStringLiteral("PrimaryClass")}, i18n("E-Print Class"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0286 FieldDescription {QStringLiteral("EPrintType"), QString(), {QStringLiteral("ArchivePrefix")}, i18n("E-Print Type"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0287 FieldDescription {QStringLiteral("URL"), QString(), {}, i18n("URL"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim, {}, {}, 3, {}, false, false}, 0288 FieldDescription {QStringLiteral("URLDate"), QString(), {}, i18n("URL Date"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 3, {}, false, false}, 0289 FieldDescription {QStringLiteral("File"), QString(), {QStringLiteral("PDF")}, i18n("Local File URL"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim, {}, {}, 3, {}, false, true}, 0290 FieldDescription {QStringLiteral("Location"), QString(), {QStringLiteral("Address")}, i18n("Location"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 3, {}, false, false}, 0291 FieldDescription {QStringLiteral("OrigLocation"), QString(), {}, i18n("Original Location"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0292 FieldDescription {QStringLiteral("Type"), QString(), {}, i18n("Type"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0293 FieldDescription {QStringLiteral("EID"), QString(), {}, i18n("EID"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0294 FieldDescription {QStringLiteral("Label"), QString(), {}, i18n("Label"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0295 FieldDescription {QStringLiteral("ShortHand"), QString(), {}, i18n("Shorthand"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0296 FieldDescription {QStringLiteral("ShortHandIntro"), QString(), {}, i18n("Shorthand Intro"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0297 FieldDescription {QStringLiteral("PubState"), QString(), {}, i18n("Publication State"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0298 FieldDescription {QStringLiteral("Language"), QString(), {}, i18n("Language"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0299 FieldDescription {QStringLiteral("OrigLanguage"), QString(), {}, i18n("Original Language"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0300 FieldDescription {QStringLiteral("Library"), QString(), {}, i18n("Library"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0301 FieldDescription {QStringLiteral("X-Color"), QString(), {}, i18n("Color"), KBibTeX::TypeFlag::Verbatim, KBibTeX::TypeFlag::Verbatim | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0302 FieldDescription {QStringLiteral("Gender"), QString(), {}, i18n("Gender"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0303 FieldDescription {QStringLiteral("Hyphenation"), QString(), {}, i18n("Hyphenation"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0304 FieldDescription {QStringLiteral("IndexSortTitle"), QString(), {}, i18n("Index Sorttitle"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0305 FieldDescription {QStringLiteral("Options"), QString(), {}, i18n("Entry Options"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0306 FieldDescription {QStringLiteral("Presort"), QString(), {}, i18n("Presort"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0307 FieldDescription {QStringLiteral("SortKey"), QString(), {QStringLiteral("Key")}, i18n("Sort Key"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0308 FieldDescription {QStringLiteral("SortName"), QString(), {}, i18n("Sort Names"), KBibTeX::TypeFlag::Person, KBibTeX::TypeFlag::Person | KBibTeX::TypeFlag::Reference, {}, {}, 7, {}, false, false}, 0309 FieldDescription {QStringLiteral("SortShortHand"), QString(), {}, i18n("Sort Shorthand"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0310 FieldDescription {QStringLiteral("SortTitle"), QString(), {}, i18n("Sort Title"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0311 FieldDescription {QStringLiteral("SortYear"), QString(), {}, i18n("Sort Year"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, true}, 0312 FieldDescription {QStringLiteral("ISAN"), QString(), {}, i18n("ISAN"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 2, {}, false, false}, 0313 FieldDescription {QStringLiteral("Location"), QString(), {}, i18n("Location"), KBibTeX::TypeFlag::PlainText, KBibTeX::TypeFlag::PlainText | KBibTeX::TypeFlag::Reference | KBibTeX::TypeFlag::Source, {}, {}, 3, {}, false, false}, 0314 }; 0315 0316 static BibTeXFields singletonBibTeX(QStringLiteral("bibtex"), fieldDescriptionsBibTeX), singletonBibLaTeX(QStringLiteral("biblatex"), fieldDescriptionsBibLaTeX); 0317 0318 return Preferences::instance().bibliographySystem() == Preferences::BibliographySystem::BibLaTeX ? singletonBibLaTeX : singletonBibTeX; 0319 } 0320 0321 #ifdef HAVE_KF 0322 void BibTeXFields::save() 0323 { 0324 d->save(); 0325 } 0326 0327 void BibTeXFields::resetToDefaults(const QString &treeViewName) 0328 { 0329 d->resetToDefaults(treeViewName); 0330 } 0331 #endif // HAVE_KF 0332 0333 QString BibTeXFields::format(const QString &name, KBibTeX::Casing casing) const 0334 { 0335 QString iName = name.toLower(); 0336 0337 switch (casing) { 0338 case KBibTeX::Casing::LowerCase: return iName; 0339 case KBibTeX::Casing::UpperCase: return name.toUpper(); 0340 case KBibTeX::Casing::InitialCapital: 0341 iName[0] = iName[0].toUpper(); 0342 return iName; 0343 case KBibTeX::Casing::LowerCamelCase: { 0344 for (const auto &fd : const_cast<const BibTeXFields &>(*this)) { 0345 /// configuration file uses camel-case 0346 QString itName = fd.upperCamelCase.toLower(); 0347 if (itName == iName && fd.upperCamelCaseAlt.isEmpty()) { 0348 iName = fd.upperCamelCase; 0349 break; 0350 } 0351 } 0352 0353 /// make an educated guess how camel-case would look like 0354 iName[0] = iName[0].toLower(); 0355 return iName; 0356 } 0357 case KBibTeX::Casing::UpperCamelCase: { 0358 for (const auto &fd : const_cast<const BibTeXFields &>(*this)) { 0359 /// configuration file uses camel-case 0360 QString itName = fd.upperCamelCase.toLower(); 0361 if (itName == iName && fd.upperCamelCaseAlt.isEmpty()) { 0362 iName = fd.upperCamelCase; 0363 break; 0364 } 0365 } 0366 0367 /// make an educated guess how camel-case would look like 0368 iName[0] = iName[0].toUpper(); 0369 return iName; 0370 } 0371 } 0372 return name; 0373 } 0374 0375 const FieldDescription BibTeXFields::find(const QString &name) const 0376 { 0377 const QString iName = name.toLower(); 0378 for (const auto &fd : const_cast<const BibTeXFields &>(*this)) { 0379 if (fd.upperCamelCase.toLower() == iName && fd.upperCamelCaseAlt.isEmpty()) 0380 return fd; 0381 } 0382 qCWarning(LOG_KBIBTEX_CONFIG) << "No field description for " << name << "(" << iName << ")"; 0383 return FieldDescription {QString(), QString(), {}, QString(), KBibTeX::TypeFlag::Source, KBibTeX::TypeFlag::Source, {}, {}, 0, {}, false, false}; 0384 } 0385 0386 KBibTeX::TypeFlag BibTeXFields::typeFlagFromString(const QString &typeFlagString) 0387 { 0388 KBibTeX::TypeFlag result = KBibTeX::TypeFlag::Invalid; 0389 0390 if (typeFlagString == QStringLiteral("Text")) 0391 result = KBibTeX::TypeFlag::PlainText; 0392 else if (typeFlagString == QStringLiteral("Source")) 0393 result = KBibTeX::TypeFlag::Source; 0394 else if (typeFlagString == QStringLiteral("Person")) 0395 result = KBibTeX::TypeFlag::Person; 0396 else if (typeFlagString == QStringLiteral("Keyword")) 0397 result = KBibTeX::TypeFlag::Keyword; 0398 else if (typeFlagString == QStringLiteral("Reference")) 0399 result = KBibTeX::TypeFlag::Reference; 0400 else if (typeFlagString == QStringLiteral("Verbatim")) 0401 result = KBibTeX::TypeFlag::Verbatim; 0402 else 0403 qCWarning(LOG_KBIBTEX_CONFIG) << "Could not interpret string" << typeFlagString << "into a KBibTeX::TypeFlag value"; 0404 0405 return result; 0406 } 0407 0408 KBibTeX::TypeFlags BibTeXFields::typeFlagsFromString(const QString &typeFlagsString) 0409 { 0410 KBibTeX::TypeFlags result; 0411 0412 const QStringList list = typeFlagsString.split(QLatin1Char(';')); 0413 for (const QString &s : list) 0414 result |= typeFlagFromString(s); 0415 0416 return result; 0417 } 0418 0419 QString BibTeXFields::typeFlagsToString(KBibTeX::TypeFlags typeFlags) 0420 { 0421 QStringList resultList; 0422 if (typeFlags & KBibTeX::TypeFlag::PlainText) resultList << QStringLiteral("Text"); 0423 if (typeFlags & KBibTeX::TypeFlag::Source) resultList << QStringLiteral("Source"); 0424 if (typeFlags & KBibTeX::TypeFlag::Person) resultList << QStringLiteral("Person"); 0425 if (typeFlags & KBibTeX::TypeFlag::Keyword) resultList << QStringLiteral("Keyword"); 0426 if (typeFlags & KBibTeX::TypeFlag::Reference) resultList << QStringLiteral("Reference"); 0427 if (typeFlags & KBibTeX::TypeFlag::Verbatim) resultList << QStringLiteral("Verbatim"); 0428 return resultList.join(QChar(QLatin1Char(';'))); 0429 } 0430 0431 QString BibTeXFields::typeFlagToString(KBibTeX::TypeFlag typeFlag) 0432 { 0433 if (typeFlag == KBibTeX::TypeFlag::PlainText) return QStringLiteral("Text"); 0434 if (typeFlag == KBibTeX::TypeFlag::Source) return QStringLiteral("Source"); 0435 if (typeFlag == KBibTeX::TypeFlag::Person) return QStringLiteral("Person"); 0436 if (typeFlag == KBibTeX::TypeFlag::Keyword) return QStringLiteral("Keyword"); 0437 if (typeFlag == KBibTeX::TypeFlag::Reference) return QStringLiteral("Reference"); 0438 if (typeFlag == KBibTeX::TypeFlag::Verbatim) return QStringLiteral("Verbatim"); 0439 return QString(); 0440 }