Changeset View
Changeset View
Standalone View
Standalone View
src/quickaddons/configmodule.cpp
Show All 30 Lines | |||||
31 | #include <QUrl> | 31 | #include <QUrl> | ||
32 | #include <QQmlEngine> | 32 | #include <QQmlEngine> | ||
33 | #include <QQmlContext> | 33 | #include <QQmlContext> | ||
34 | #include <QQuickItem> | 34 | #include <QQuickItem> | ||
35 | #include <QQmlEngine> | 35 | #include <QQmlEngine> | ||
36 | 36 | | |||
37 | #include <kaboutdata.h> | 37 | #include <kaboutdata.h> | ||
38 | #include <klocalizedstring.h> | 38 | #include <klocalizedstring.h> | ||
39 | #include <kdeclarative/qmlobject.h> | ||||
39 | #include <kdeclarative/qmlobjectsharedengine.h> | 40 | #include <kdeclarative/qmlobjectsharedengine.h> | ||
40 | 41 | | |||
41 | #include <KPackage/Package> | 42 | #include <KPackage/Package> | ||
42 | #include <KPackage/PackageLoader> | 43 | #include <KPackage/PackageLoader> | ||
43 | 44 | | |||
44 | namespace KQuickAddons { | 45 | namespace KQuickAddons { | ||
45 | 46 | | |||
46 | class ConfigModulePrivate | 47 | class ConfigModulePrivate | ||
47 | { | 48 | { | ||
48 | public: | 49 | public: | ||
49 | ConfigModulePrivate(ConfigModule *module): | 50 | ConfigModulePrivate(ConfigModule *module): | ||
50 | _q(module), | 51 | _q(module), | ||
51 | _qmlObject(nullptr), | 52 | _qmlObject(nullptr), | ||
52 | _buttons(ConfigModule::Help | ConfigModule::Default | ConfigModule::Apply), | 53 | _buttons(ConfigModule::Help | ConfigModule::Default | ConfigModule::Apply), | ||
53 | _about(nullptr), | 54 | _about(nullptr), | ||
54 | _useRootOnlyMessage(false), | 55 | _useRootOnlyMessage(false), | ||
55 | _needsAuthorization(false), | 56 | _needsAuthorization(false), | ||
56 | _needsSave(false) | 57 | _needsSave(false) | ||
57 | { | 58 | { | ||
58 | } | 59 | } | ||
59 | 60 | | |||
60 | void authStatusChanged(int status); | 61 | void authStatusChanged(int status); | ||
61 | 62 | | |||
62 | ConfigModule *_q; | 63 | ConfigModule *_q; | ||
63 | KDeclarative::QmlObjectSharedEngine *_qmlObject; | 64 | KDeclarative::QmlObject *_qmlObject; | ||
64 | ConfigModule::Buttons _buttons; | 65 | ConfigModule::Buttons _buttons; | ||
65 | const KAboutData *_about; | 66 | const KAboutData *_about; | ||
66 | QString _rootOnlyMessage; | 67 | QString _rootOnlyMessage; | ||
67 | QString _quickHelp; | 68 | QString _quickHelp; | ||
68 | bool _useRootOnlyMessage : 1; | 69 | bool _useRootOnlyMessage : 1; | ||
69 | 70 | | |||
70 | bool _needsAuthorization : 1; | 71 | bool _needsAuthorization : 1; | ||
71 | bool _needsSave :1; | 72 | bool _needsSave :1; | ||
▲ Show 20 Lines • Show All 63 Lines • ▼ Show 20 Line(s) | 118 | { | |||
135 | } | 136 | } | ||
136 | } | 137 | } | ||
137 | 138 | | |||
138 | QQuickItem *ConfigModule::mainUi() | 139 | QQuickItem *ConfigModule::mainUi() | ||
139 | { | 140 | { | ||
140 | if (d->_qmlObject) { | 141 | if (d->_qmlObject) { | ||
141 | return qobject_cast<QQuickItem *>(d->_qmlObject->rootObject()); | 142 | return qobject_cast<QQuickItem *>(d->_qmlObject->rootObject()); | ||
142 | } | 143 | } | ||
144 | | ||||
145 | // if we have a qml context, hook up to it and use its engine | ||||
146 | // this ensure that in e.g. Plasma config dialogs that use a different engine | ||||
147 | // so they can have different QtQuick Controls styles, we don't end up using | ||||
148 | // the shared engine that is used by the rest of plasma | ||||
149 | | ||||
150 | QQmlContext *ctx = QQmlEngine::contextForObject(this); | ||||
151 | | ||||
152 | if (ctx && ctx->engine()) { | ||||
153 | d->_qmlObject = new KDeclarative::QmlObject(ctx->engine(), ctx, this); | ||||
154 | } else { | ||||
143 | d->_qmlObject = new KDeclarative::QmlObjectSharedEngine(this); | 155 | d->_qmlObject = new KDeclarative::QmlObjectSharedEngine(this); | ||
156 | } | ||||
157 | | ||||
144 | ConfigModulePrivate::s_rootObjects[d->_qmlObject->rootContext()] = this; | 158 | ConfigModulePrivate::s_rootObjects[d->_qmlObject->rootContext()] = this; | ||
145 | d->_qmlObject->setTranslationDomain(aboutData()->componentName()); | 159 | d->_qmlObject->setTranslationDomain(aboutData()->componentName()); | ||
146 | d->_qmlObject->setInitializationDelayed(true); | 160 | d->_qmlObject->setInitializationDelayed(true); | ||
147 | 161 | | |||
148 | KPackage::Package package = KPackage::PackageLoader::self()->loadPackage(QStringLiteral("KPackage/GenericQML")); | 162 | KPackage::Package package = KPackage::PackageLoader::self()->loadPackage(QStringLiteral("KPackage/GenericQML")); | ||
149 | package.setDefaultPackageRoot(QStringLiteral("kpackage/kcms")); | 163 | package.setDefaultPackageRoot(QStringLiteral("kpackage/kcms")); | ||
150 | package.setPath(aboutData()->componentName()); | 164 | package.setPath(aboutData()->componentName()); | ||
151 | 165 | | |||
▲ Show 20 Lines • Show All 177 Lines • Show Last 20 Lines |