File indexing completed on 2024-05-12 03:54:30

0001 /*
0002     This file is part of the KDE libraries.
0003 
0004     SPDX-FileCopyrightText: 2003 Cornelius Schumacher <schumacher@kde.org>
0005     SPDX-FileCopyrightText: 2003 Waldo Bastian <bastian@kde.org>
0006     SPDX-FileCopyrightText: 2003 Zack Rusin <zack@kde.org>
0007     SPDX-FileCopyrightText: 2006 Michaƫl Larouche <michael.larouche@kdemail.net>
0008     SPDX-FileCopyrightText: 2008 Allen Winter <winter@kde.org>
0009     SPDX-FileCopyrightText: 2020 Tomaz Cananbrava <tcanabrava@kde.org>
0010 
0011     SPDX-License-Identifier: LGPL-2.0-or-later
0012 */
0013 
0014 #include "KConfigParameters.h"
0015 
0016 #include <QDebug>
0017 #include <QFileInfo>
0018 
0019 #include <iostream>
0020 
0021 KConfigParameters::KConfigParameters(const QString &codegenFilename)
0022 {
0023     if (!codegenFilename.endsWith(QLatin1String(".kcfgc"))) {
0024         std::cerr << "Codegen options file must have extension .kcfgc" << std::endl;
0025         exit(1);
0026     }
0027 
0028     baseName = QFileInfo(codegenFilename).fileName();
0029     baseName = baseName.left(baseName.length() - 6);
0030 
0031     // Configure the compiler with some settings
0032     QSettings codegenConfig(codegenFilename, QSettings::IniFormat);
0033 
0034     nameSpace = codegenConfig.value(QStringLiteral("NameSpace")).toString();
0035     className = codegenConfig.value(QStringLiteral("ClassName")).toString();
0036     if (className.isEmpty()) {
0037         std::cerr << "Class name missing" << std::endl;
0038         exit(1);
0039     }
0040     inherits = codegenConfig.value(QStringLiteral("Inherits")).toString();
0041     if (inherits.isEmpty()) {
0042         inherits = QStringLiteral("KConfigSkeleton");
0043     }
0044     visibility = codegenConfig.value(QStringLiteral("Visibility")).toString();
0045     if (!visibility.isEmpty()) {
0046         visibility += QLatin1Char(' ');
0047     }
0048     parentInConstructor = codegenConfig.value(QStringLiteral("ParentInConstructor"), false).toBool();
0049     forceStringFilename = codegenConfig.value(QStringLiteral("ForceStringFilename"), false).toBool();
0050     singleton = codegenConfig.value(QStringLiteral("Singleton"), false).toBool();
0051     staticAccessors = singleton;
0052     customAddons = codegenConfig.value(QStringLiteral("CustomAdditions"), false).toBool();
0053     memberVariables = codegenConfig.value(QStringLiteral("MemberVariables")).toString();
0054     dpointer = (memberVariables == QLatin1String("dpointer"));
0055     headerIncludes = codegenConfig.value(QStringLiteral("IncludeFiles"), QStringList()).toStringList();
0056     sourceIncludes = codegenConfig.value(QStringLiteral("SourceIncludeFiles"), QStringList()).toStringList();
0057     mutators = codegenConfig.value(QStringLiteral("Mutators"), QStringList()).toStringList();
0058     allMutators = ((mutators.count() == 1) && (mutators.at(0).toLower() == QLatin1String("true")));
0059     itemAccessors = codegenConfig.value(QStringLiteral("ItemAccessors"), false).toBool();
0060     setUserTexts = codegenConfig.value(QStringLiteral("SetUserTexts"), false).toBool();
0061     defaultGetters = codegenConfig.value(QStringLiteral("DefaultValueGetters"), QStringList()).toStringList();
0062     allDefaultGetters = (defaultGetters.count() == 1) && (defaultGetters.at(0).toLower() == QLatin1String("true"));
0063     notifiers = codegenConfig.value(QStringLiteral("Notifiers"), QStringList()).toStringList();
0064     allNotifiers = ((notifiers.count() == 1) && (notifiers.at(0).toLower() == QLatin1String("true")));
0065     globalEnums = codegenConfig.value(QStringLiteral("GlobalEnums"), false).toBool();
0066     useEnumTypes = codegenConfig.value(QStringLiteral("UseEnumTypes"), false).toBool();
0067     const QString trString = codegenConfig.value(QStringLiteral("TranslationSystem")).toString().toLower();
0068     generateProperties = codegenConfig.value(QStringLiteral("GenerateProperties"), false).toBool();
0069     if (trString == QLatin1String("kde")) {
0070         translationSystem = KdeTranslation;
0071         translationDomain = codegenConfig.value(QStringLiteral("TranslationDomain")).toString();
0072     } else {
0073         if (!trString.isEmpty() && trString != QLatin1String("qt")) {
0074             std::cerr << "Unknown translation system, falling back to Qt tr()" << std::endl;
0075         }
0076         translationSystem = QtTranslation;
0077     }
0078     qCategoryLoggingName = codegenConfig.value(QStringLiteral("CategoryLoggingName"), QString()).toString();
0079     headerExtension = codegenConfig.value(QStringLiteral("HeaderExtension"), QStringLiteral("h")).toString();
0080 }