diff options
author | Martin Gräßlin <mgraesslin@kde.org> | 2016-11-16 14:59:28 +0100 |
---|---|---|
committer | Martin Gräßlin <mgraesslin@kde.org> | 2017-01-06 09:52:45 +0100 |
commit | e0db2422362260a2fea3a8e1de4c64011d2f183d (patch) | |
tree | 59b5ba0e74c5d24d27156e51e54eb1fc0eb02623 /autotests/kconfig_compiler/test8c.cpp.ref | |
parent | 7d53de59b6e65b0cbdf6eaad4f5dbcd341307003 (diff) | |
download | kconfig-e0db2422362260a2fea3a8e1de4c64011d2f183d.tar.gz kconfig-e0db2422362260a2fea3a8e1de4c64011d2f183d.tar.bz2 |
Generate an instance with KSharedConfig::Ptr for singleton and arg
Summary:
In case a kcfg with arg="true" was used and singleton the static
instance method only accepted a QString config name. This made it
impossible to combine a singleton config with an already existing and
open KSharedConfig::Ptr.
With this change an overloaded instance method is added which takes a
KSharedConfig::Ptr as argument. The private ctor, though, only takes a
KSharedConfig::Ptr and the instance method taking a QString argument
uses KSharedConfig::openConfig on the config file name.
The change is source-incompatible in the following situation:
* kcfgfile arg="true"
* Singleton = true
* Inherits is specified
In this situation the previous revision created an instance method with
a QString argument and passed that to the parent constructor. This is
not in accordance with the documentation. Any user of this behavior was
relying on a bug. With this change now the call to the parent
constructor carries a KSharedConfigPtr.
Test Plan:
kconfigcompiler tests still pass and a config with singleton
and arg="true" generates the code as I need it
Reviewers: #frameworks, dfaure, mdawson
Differential Revision: https://phabricator.kde.org/D3690
Diffstat (limited to 'autotests/kconfig_compiler/test8c.cpp.ref')
-rw-r--r-- | autotests/kconfig_compiler/test8c.cpp.ref | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/autotests/kconfig_compiler/test8c.cpp.ref b/autotests/kconfig_compiler/test8c.cpp.ref new file mode 100644 index 00000000..90305c1f --- /dev/null +++ b/autotests/kconfig_compiler/test8c.cpp.ref @@ -0,0 +1,65 @@ +// This file is generated by kconfig_compiler_kf5 from test8c.kcfg. +// All changes you do to this file will be lost. + +#include "test8c.h" + +#include <qglobal.h> +#include <QtCore/QFile> + +#include <QDebug> + +class Test8cHelper +{ + public: + Test8cHelper() : q(0) {} + ~Test8cHelper() { delete q; } + Test8c *q; +}; +Q_GLOBAL_STATIC(Test8cHelper, s_globalTest8c) +Test8c *Test8c::self() +{ + if (!s_globalTest8c()->q) + qFatal("you need to call Test8c::instance before using"); + return s_globalTest8c()->q; +} + +void Test8c::instance(const QString& cfgfilename) +{ + if (s_globalTest8c()->q) { + qDebug() << "Test8c::instance called after the first use - ignoring"; + return; + } + new Test8c(KSharedConfig::openConfig(cfgfilename)); + s_globalTest8c()->q->read(); +} + +void Test8c::instance(KSharedConfig::Ptr config) +{ + if (s_globalTest8c()->q) { + qDebug() << "Test8c::instance called after the first use - ignoring"; + return; + } + new Test8c(config); + s_globalTest8c()->q->read(); +} + +Test8c::Test8c( KSharedConfig::Ptr config ) + : KConfigSkeleton( config ) +{ + Q_ASSERT(!s_globalTest8c()->q); + s_globalTest8c()->q = this; + setCurrentGroup( QStringLiteral( "Group" ) ); + + KConfigSkeleton::ItemFont *itemFont; + itemFont = new KConfigSkeleton::ItemFont( currentGroup(), QStringLiteral( "Font" ), mFont, QFont() ); + addItem( itemFont, QStringLiteral( "Font" ) ); + KConfigSkeleton::ItemFont *itemTitleFont; + itemTitleFont = new KConfigSkeleton::ItemFont( currentGroup(), QStringLiteral( "TitleFont" ), mTitleFont, QFont() ); + addItem( itemTitleFont, QStringLiteral( "TitleFont" ) ); +} + +Test8c::~Test8c() +{ + s_globalTest8c()->q = 0; +} + |