Browse Source

WIP settings config loader test

pull/2/head
Skycoder42 7 years ago
parent
commit
5be9eae0de
No known key found for this signature in database GPG Key ID: 8E01AD9EF0578D2B
  1. 7
      src/mvvmcore/settingsconfigloader_p.h
  2. 10
      src/settingsconfig/prefix_p.h
  3. 3
      src/settingsconfig/settingsconfig.pri
  4. 2
      src/settingsconfig/settingsconfig.xsd
  5. 2
      src/settingsconfig/settingsconfigimpl.cpp
  6. 2
      src/settingsconfig/settingsconfigimpl_p.h
  7. 2
      tests/auto/mvvmcore/binding/tst_binding.cpp
  8. 3
      tests/auto/mvvmcore/mvvmcore.pro
  9. 31
      tests/auto/mvvmcore/settingsconfigloader/categoryDocument.xml
  10. 36
      tests/auto/mvvmcore/settingsconfigloader/entryDocument.xml
  11. 14
      tests/auto/mvvmcore/settingsconfigloader/groupDocument.xml
  12. 17
      tests/auto/mvvmcore/settingsconfigloader/sectionDocument.xml
  13. 30
      tests/auto/mvvmcore/settingsconfigloader/selectorDocument.xml
  14. 26
      tests/auto/mvvmcore/settingsconfigloader/settingsconfigloader.pro
  15. 570
      tests/auto/mvvmcore/settingsconfigloader/tst_settingsconfigloader.cpp
  16. 2
      tools/settingsgenerator/settingsgeneratorimpl.h
  17. 2
      tools/settingsgenerator/settingstranslator.h

7
src/mvvmcore/settingsconfigloader_p.h

@ -4,13 +4,14 @@
#include <QtCore/QObject> #include <QtCore/QObject>
#include <QtCore/QCache> #include <QtCore/QCache>
#include "qtmvvmcore_global.h"
#include "settingssetup.h" #include "settingssetup.h"
#include <settingsconfigimpl.h> #include <settingsconfigimpl_p.h>
namespace QtMvvm { namespace QtMvvm {
class SettingsConfigLoader : public QObject, public ISettingsSetupLoader, public SettingsConfigImpl class Q_MVVMCORE_EXPORT SettingsConfigLoader : public QObject, public ISettingsSetupLoader, public SettingsConfigImpl
{ {
Q_OBJECT Q_OBJECT
Q_INTERFACES(QtMvvm::ISettingsSetupLoader) Q_INTERFACES(QtMvvm::ISettingsSetupLoader)
@ -48,7 +49,7 @@ private:
TType trIf(const optional<QString> &text, bool allowTr, const TType &defaultValue = {}) const; TType trIf(const optional<QString> &text, bool allowTr, const TType &defaultValue = {}) const;
}; };
class SettingsConfigException : public SettingsLoaderException class Q_MVVMCORE_EXPORT SettingsConfigException : public SettingsLoaderException
{ {
public: public:
SettingsConfigException(SettingsConfigBase::Exception &exception); SettingsConfigException(SettingsConfigBase::Exception &exception);

10
src/settingsconfig/prefix_p.h

@ -0,0 +1,10 @@
#ifndef PREFIX_P_H
#define PREFIX_P_H
#if defined(BUILD_QSETTINGSGENERATOR)
#define Q_MVVMCORE_EXPORT
#else
#include "qtmvvmcore_global.h"
#endif
#endif // PREFIX_P_H

3
src/settingsconfig/settingsconfig.pri

@ -1,7 +1,8 @@
HEADERS += \ HEADERS += \
$$PWD/../3rdparty/optional-lite/optional.hpp \ $$PWD/../3rdparty/optional-lite/optional.hpp \
$$PWD/../3rdparty/variant-lite/variant.hpp \ $$PWD/../3rdparty/variant-lite/variant.hpp \
$$PWD/settingsconfigimpl.h $$PWD/prefix_p.h \
$$PWD/settingsconfigimpl_p.h
SOURCES += $$PWD/settingsconfigimpl.cpp SOURCES += $$PWD/settingsconfigimpl.cpp

2
src/settingsconfig/settingsconfig.xsd

@ -3,10 +3,12 @@
xmlns:qxg="https://skycoder42.de/xml/schemas/QXmlCodeGen"> xmlns:qxg="https://skycoder42.de/xml/schemas/QXmlCodeGen">
<!-- QXG Definitions --> <!-- QXG Definitions -->
<qxg:config class="SettingsConfigBase" <qxg:config class="SettingsConfigBase"
prefix="Q_MVVMCORE_EXPORT"
stdcompat="true" stdcompat="true"
schemaUrl="qrc:/schemas/settingsconfig.xsd" schemaUrl="qrc:/schemas/settingsconfig.xsd"
visibility="public"> visibility="public">
<qxg:include>QtCore/QHash</qxg:include> <qxg:include>QtCore/QHash</qxg:include>
<qxg:include local="true">prefix_p.h</qxg:include>
</qxg:config> </qxg:config>
<qxg:method name="finish_group_content" type="GroupContentGroup" asGroup="true"/> <qxg:method name="finish_group_content" type="GroupContentGroup" asGroup="true"/>
<qxg:method name="finish_section_content" type="SectionContentGroup" asGroup="true"/> <qxg:method name="finish_section_content" type="SectionContentGroup" asGroup="true"/>

2
src/settingsconfig/settingsconfigimpl.cpp

@ -1,4 +1,4 @@
#include "settingsconfigimpl.h" #include "settingsconfigimpl_p.h"
#include <QtCore/QFileInfo> #include <QtCore/QFileInfo>
#include <QtCore/QDir> #include <QtCore/QDir>

2
src/settingsconfig/settingsconfigimpl.h → src/settingsconfig/settingsconfigimpl_p.h

@ -5,7 +5,7 @@
class QFileSelector; class QFileSelector;
class SettingsConfigImpl : public SettingsConfigBase class Q_MVVMCORE_EXPORT SettingsConfigImpl : public SettingsConfigBase
{ {
public: public:
bool isUsable(const SelectableContrainerInfo &element) const; bool isUsable(const SelectableContrainerInfo &element) const;

2
tests/auto/mvvmcore/binding/tst_binding.cpp

@ -1,6 +1,4 @@
#include <QString>
#include <QtTest> #include <QtTest>
#include <QCoreApplication>
#include <QtMvvmCore/Binding> #include <QtMvvmCore/Binding>
using namespace QtMvvm; using namespace QtMvvm;

3
tests/auto/mvvmcore/mvvmcore.pro

@ -5,7 +5,8 @@ SUBDIRS += \
serviceregistry \ serviceregistry \
serviceregistrytestplugin \ serviceregistrytestplugin \
binding \ binding \
qsettingsaccessor qsettingsaccessor \
settingsconfigloader
serviceregistry.depends += serviceregistrytestplugin serviceregistry.depends += serviceregistrytestplugin

31
tests/auto/mvvmcore/settingsconfigloader/categoryDocument.xml

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<SettingsConfig allowSearch="false" allowRestore="false">
<Category/>
<Category>
<Entry key="direct"
type="double"/>
</Category>
<Category>
<Group/>
<Group>
<Entry key="indirect"
type="double"/>
</Group>
</Category>
<Category title="main"
icon="http://example.com/favicon.png"
tooltip="another tooltip">
<Section/>
<Section>
<Entry key="subdirect"
type="double"/>
</Section>
<Section>
<Group/>
<Group>
<Entry key="fardirect"
type="double"/>
</Group>
</Section>
</Category>
</SettingsConfig>

36
tests/auto/mvvmcore/settingsconfigloader/entryDocument.xml

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<SettingsConfig allowSearch="true" allowRestore="true">
<Entry key="minimal"
type="bool"/>
<Entry key="full"
type="string"
title="FULL"
tooltip="full tip"
default="hello world"
trdefault="false"/>
<Entry key="search"
type="int">
<SearchKey>hello</SearchKey>
<SearchKey>world</SearchKey>
</Entry>
<Entry key="elements"
type="double">
<Property key="simple" type="int">42</Property>
<Property key="literal" type="string">baum42</Property>
<Property key="list" type="list">
<Element type="int">13</Element>
<Element type="list">
<Element type="number">4.2</Element>
</Element>
<Element type="object">
<Property key="simple" type="int">42</Property>
</Element>
</Property>
<Property key="map" type="object">
<Property key="simple" type="int">42</Property>
<Property key="list" type="list">
<Element type="number">4.2</Element>
</Property>
</Property>
</Entry>
</SettingsConfig>

14
tests/auto/mvvmcore/settingsconfigloader/groupDocument.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<SettingsConfig allowSearch="true" allowRestore="true">
<Group/>
<Group>
<Entry key="minimal"
type="bool"/>
</Group>
<Group title="FULL" tooltip="full">
<Entry key="a"
type="bool"/>
<Entry key="b"
type="bool"/>
</Group>
</SettingsConfig>

17
tests/auto/mvvmcore/settingsconfigloader/sectionDocument.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<SettingsConfig allowSearch="false" allowRestore="false">
<Section/>
<Section>
<Entry key="direct"
type="double"/>
</Section>
<Section title="master"
icon="file:///path/to/vengance.png"
tooltip="ruler">
<Group/>
<Group>
<Entry key="indirect"
type="double"/>
</Group>
</Section>
</SettingsConfig>

30
tests/auto/mvvmcore/settingsconfigloader/selectorDocument.xml

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<SettingsConfig allowSearch="false" allowRestore="false">
<Category frontends="widgets" />
<Category>
<Section frontends="quick" />
<Section>
<Group frontends="widgets|console"/>
<Group>
<Entry key="t1"
type="bool"
frontends="quick|console"/>
</Group>
</Section>
</Category>
<Category selectors="b1" />
<Category>
<Section selectors="b2|a2" />
<Section>
<Group selectors="a1&amp;a2"/>
<Group>
<Entry key="t2"
type="bool"
selectors="a1&amp;a2|b2&amp;a3"/>
</Group>
</Section>
</Category>
<Category frontends="console|widgets" selectors="a1&amp;a2|b1"/>
</SettingsConfig>

26
tests/auto/mvvmcore/settingsconfigloader/settingsconfigloader.pro

@ -0,0 +1,26 @@
TEMPLATE = app
QT += testlib mvvmcore mvvmcore-private
QT -= gui
CONFIG += console
CONFIG -= app_bundle
TARGET = tst_settingsconfigloader
DEFINES += SRCDIR=\\\"$$_PRO_FILE_PWD_\\\"
INCLUDEPATH += \
../../../../src/settingsconfig \
$$shadowed(../../../../src/mvvmcore) \
../../../../src/3rdparty/optional-lite \
../../../../src/3rdparty/variant-lite
SOURCES += \
tst_settingsconfigloader.cpp
DISTFILES += \
entryDocument.xml \
groupDocument.xml \
sectionDocument.xml \
categoryDocument.xml \
selectorDocument.xml

570
tests/auto/mvvmcore/settingsconfigloader/tst_settingsconfigloader.cpp

@ -0,0 +1,570 @@
#include <QtTest>
#include <QtMvvmCore/private/settingsconfigloader_p.h>
using namespace QtMvvm;
using namespace QtMvvm::SettingsElements;
class SettingsConfigLoaderTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void testConfigLoader_data();
void testConfigLoader();
private:
Setup createEntryDocumentSetup();
Setup createGroupDocumentSetup();
Setup createSectionDocumentSetup();
Setup createCategoryDocumentSetup();
Setup createSelectorsSetup0();
Setup createSelectorsSetup1();
Setup createSelectorsSetup2();
Setup createSelectorsSetup3();
Setup createSelectorsSetup4();
Setup createIncludesSetup();
Setup createCustomTypesSetup();
Setup createIconChangeSetup();
Setup createTranslationsSetup();
};
void SettingsConfigLoaderTest::testConfigLoader_data()
{
QTest::addColumn<QString>("path");
QTest::addColumn<QString>("frontend");
QTest::addColumn<QStringList>("selectors");
QTest::addColumn<bool>("success");
QTest::addColumn<Setup>("setup");
QTest::newRow("entryDocument") << QStringLiteral(SRCDIR "/entryDocument.xml")
<< QStringLiteral("dummy")
<< QStringList{}
<< true
<< createEntryDocumentSetup();
QTest::newRow("groupDocument") << QStringLiteral(SRCDIR "/groupDocument.xml")
<< QStringLiteral("dummy")
<< QStringList{}
<< true
<< createGroupDocumentSetup();
QTest::newRow("sectionDocument") << QStringLiteral(SRCDIR "/sectionDocument.xml")
<< QStringLiteral("dummy")
<< QStringList{}
<< true
<< createSectionDocumentSetup();
QTest::newRow("categoryDocument") << QStringLiteral(SRCDIR "/categoryDocument.xml")
<< QStringLiteral("dummy")
<< QStringList{}
<< true
<< createCategoryDocumentSetup();
QTest::newRow("selectorDocument.frontend.widgets") << QStringLiteral(SRCDIR "/selectorDocument.xml")
<< QStringLiteral("widgets")
<< QStringList{}
<< true
<< createSelectorsSetup0();
QTest::newRow("selectorDocument.frontend.quick") << QStringLiteral(SRCDIR "/selectorDocument.xml")
<< QStringLiteral("quick")
<< QStringList{}
<< true
<< createSelectorsSetup1();
QTest::newRow("selectorDocument.selector.typeA") << QStringLiteral(SRCDIR "/selectorDocument.xml")
<< QStringLiteral("dummy")
<< QStringList{
QStringLiteral("a1"),
QStringLiteral("b2"),
QStringLiteral("a3")
}
<< true
<< createSelectorsSetup2();
QTest::newRow("selectorDocument.selector.typeB") << QStringLiteral(SRCDIR "/selectorDocument.xml")
<< QStringLiteral("dummy")
<< QStringList{
QStringLiteral("b1"),
QStringLiteral("a2"),
QStringLiteral("b3")
}
<< true
<< createSelectorsSetup3();
QTest::newRow("selectorDocument.combined") << QStringLiteral(SRCDIR "/selectorDocument.xml")
<< QStringLiteral("console")
<< QStringList{
QStringLiteral("a1"),
QStringLiteral("a2"),
QStringLiteral("a3")
}
<< true
<< createSelectorsSetup4();
}
void SettingsConfigLoaderTest::testConfigLoader()
{
QFETCH(QString, path);
QFETCH(QString, frontend);
QFETCH(QStringList, selectors);
QFETCH(bool, success);
QFETCH(Setup, setup);
try {
QFileSelector selector;
selector.setExtraSelectors(selectors);
SettingsConfigLoader loader;
loader.changeDefaultIcon(QStringLiteral("qrc:/baum"));
if(success) {
auto res = loader.loadSetup(path, frontend, &selector);
// compare low-level to be able to catch where errors happend easier
QCOMPARE(res.allowRestore, setup.allowRestore);
QCOMPARE(res.allowSearch, setup.allowSearch);
QCOMPARE(res.categories.size(), setup.categories.size());
for(auto i = 0; i < setup.categories.size(); i++) {
const auto &resCat = res.categories[i];
const auto &category = setup.categories[i];
QCOMPARE(resCat.title, category.title);
QCOMPARE(resCat.icon, category.icon);
QCOMPARE(resCat.tooltip, category.tooltip);
QCOMPARE(resCat.sections.size(), category.sections.size());
for(auto j = 0; j < category.sections.size(); j++) {
const auto &resSec = resCat.sections[j];
const auto &section = category.sections[j];
QCOMPARE(resSec.title, section.title);
QCOMPARE(resSec.icon, section.icon);
QCOMPARE(resSec.tooltip, section.tooltip);
QCOMPARE(resSec.groups.size(), section.groups.size());
for(auto k = 0; k < section.groups.size(); k++) {
const auto &resGrp = resSec.groups[k];
const auto &group = section.groups[k];
QCOMPARE(resGrp.title, group.title);
QCOMPARE(resGrp.tooltip, group.tooltip);
QCOMPARE(resGrp.entries.size(), group.entries.size());
for(auto l = 0; l < group.entries.size(); l++) {
const auto &resEnt = resGrp.entries[l];
const auto &entry = group.entries[l];
QCOMPARE(resEnt.key, entry.key);
QCOMPARE(resEnt.type, entry.type);
QCOMPARE(resEnt.title, entry.title);
QCOMPARE(resEnt.tooltip, entry.tooltip);
QCOMPARE(resEnt.defaultValue, entry.defaultValue);
QCOMPARE(resEnt.searchKeys, entry.searchKeys);
QCOMPARE(resEnt.properties, entry.properties);
}
}
}
}
} else
QVERIFY_EXCEPTION_THROWN(loader.loadSetup(path, frontend, &selector), SettingsConfigException);
} catch(std::exception &e) {
if(success)
QFAIL(e.what());
}
}
Setup SettingsConfigLoaderTest::createEntryDocumentSetup()
{
return Setup {
true, true, {
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General"), {}, {}, {
Group {
{}, {}, {
Entry {
QStringLiteral("minimal"), "bool"
},
Entry {
QStringLiteral("full"), "string",
QStringLiteral("FULL"), QStringLiteral("full tip"),
QStringLiteral("hello world")
},
Entry {
QStringLiteral("search"), "int",
{}, {}, {},
{QStringLiteral("hello"), QStringLiteral("world")}
}, Entry {
QStringLiteral("elements"), "double",
{}, {}, {}, {},
{
{QStringLiteral("simple"), 42},
{QStringLiteral("literal"), QStringLiteral("baum42")},
{QStringLiteral("list"), QVariantList {
13,
QVariantList{4.2},
QVariantMap{{QStringLiteral("simple"), 42}}
}},
{QStringLiteral("map"), QVariantMap{
{QStringLiteral("simple"), 42},
{QStringLiteral("list"), QVariantList{4.2}}
}}
}
}
}
}
}
}
}
}
}
};
}
Setup SettingsConfigLoaderTest::createGroupDocumentSetup()
{
return Setup {
true, true, {
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General"), {}, {}, {
Group {},
Group {
{}, {}, {
Entry {
QStringLiteral("minimal"), "bool"
}
}
},
Group {
QStringLiteral("FULL"), QStringLiteral("full"), {
Entry {
QStringLiteral("a"), "bool"
},
Entry {
QStringLiteral("b"), "bool"
}
}
}
}
}
}
}
}
};
}
Setup SettingsConfigLoaderTest::createSectionDocumentSetup()
{
return Setup {
false, false, {
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General")
},
Section {
QStringLiteral("General"), {}, {}, {
Group {
{}, {}, {
Entry {
QStringLiteral("direct"), "double"
}
}
}
}
},
Section {
QStringLiteral("master"), QStringLiteral("file:///path/to/vengance.png"),
QStringLiteral("ruler"), {
Group {},
Group {
{}, {}, {
Entry {
QStringLiteral("indirect"), "double"
}
}
}
}
}
}
}
}
};
}
Setup SettingsConfigLoaderTest::createCategoryDocumentSetup()
{
return Setup {
false, false, {
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum")
},
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General"), {}, {}, {
Group {
{}, {}, {
Entry {
QStringLiteral("direct"), "double"
}
}
}
}
}
}
},
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General"), {}, {}, {
Group {},
Group {
{}, {}, {
Entry {
QStringLiteral("indirect"), "double"
}
}
}
}
}
}
},
Category {
QStringLiteral("main"), QStringLiteral("http://example.com/favicon.png"),
QStringLiteral("another tooltip"), {
Section {
QStringLiteral("General")
},
Section {
QStringLiteral("General"), {}, {}, {
Group {
{}, {}, {
Entry {
QStringLiteral("subdirect"), "double"
}
}
}
}
},
Section {
QStringLiteral("General"), {}, {}, {
Group {},
Group {
{}, {}, {
Entry {
QStringLiteral("fardirect"), "double"
}
}
}
}
}
}
}
}
};
}
Setup SettingsConfigLoaderTest::createSelectorsSetup0()
{
return Setup {
false, false, {
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum")
},
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General"), {}, {}, {
Group {},
Group {}
}
}
}
},
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General"), {}, {}, {
Group {}
}
}
}
}
}
};
}
Setup SettingsConfigLoaderTest::createSelectorsSetup1()
{
return Setup {
false, false, {
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General")
},
Section {
QStringLiteral("General"), {}, {}, {
Group {
{}, {}, {
Entry {
QStringLiteral("t1"), "bool"
}
}
}
}
}
}
},
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General"), {}, {}, {
Group {}
}
}
}
}
}
};
}
Setup SettingsConfigLoaderTest::createSelectorsSetup2()
{
return Setup {
false, false, {
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General"), {}, {}, {
Group {}
}
}
}
},
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General")
},
Section {
QStringLiteral("General"), {}, {}, {
Group {
{}, {}, {
Entry {
QStringLiteral("t2"), "bool"
}
}
}
}
}
}
}
}
};
}
Setup SettingsConfigLoaderTest::createSelectorsSetup3()
{
return Setup {
false, false, {
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General"), {}, {}, {
Group {}
}
}
}
},
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum")
},
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General")
},
Section {
QStringLiteral("General"), {}, {}, {
Group {}
}
}
}
}
}
};
}
Setup SettingsConfigLoaderTest::createSelectorsSetup4()
{
return Setup {
false, false, {
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General"), {}, {}, {
Group {},
Group {
{}, {}, {
Entry {
QStringLiteral("t1"), "bool"
}
}
}
}
}
}
},
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum"), {}, {
Section {
QStringLiteral("General")
},
Section {
QStringLiteral("General"), {}, {}, {
Group {},
Group {
{}, {}, {
Entry {
QStringLiteral("t2"), "bool"
}
}
}
}
}
}
},
Category {
QStringLiteral("General Settings"), QStringLiteral("qrc:/baum")
}
}
};
}
Setup SettingsConfigLoaderTest::createIncludesSetup()
{
return Setup{};
}
Setup SettingsConfigLoaderTest::createCustomTypesSetup()
{
return Setup{};
}
Setup SettingsConfigLoaderTest::createIconChangeSetup()
{
return Setup{};
}
Setup SettingsConfigLoaderTest::createTranslationsSetup()
{
return Setup{};
}
QTEST_MAIN(SettingsConfigLoaderTest)
#include "tst_settingsconfigloader.moc"

2
tools/settingsgenerator/settingsgeneratorimpl.h

@ -5,7 +5,7 @@
#include <QTextStream> #include <QTextStream>
#include "qsettingsgenerator.h" #include "qsettingsgenerator.h"
#include "settingsconfigimpl.h" #include "settingsconfigimpl_p.h"
class SettingsGeneratorImpl : public SettingsGeneratorBase class SettingsGeneratorImpl : public SettingsGeneratorBase
{ {

2
tools/settingsgenerator/settingstranslator.h

@ -4,7 +4,7 @@
#include <QFile> #include <QFile>
#include <QTextStream> #include <QTextStream>
#include "settingsconfigimpl.h" #include "settingsconfigimpl_p.h"
class SettingsTranslator : public SettingsConfigImpl class SettingsTranslator : public SettingsConfigImpl
{ {

Loading…
Cancel
Save