diff options
author | Kimmo Ollila <kimmo.ollila@theqtcompany.com> | 2016-03-10 09:46:40 +0200 |
---|---|---|
committer | Kimmo Ollila <kimmo.ollila@theqtcompany.com> | 2016-03-16 13:43:57 +0000 |
commit | 7c9fe368de133a6b4e256392e0db0d6c3dc1cf9a (patch) | |
tree | e2462fe843cb8ed41c1261fed07cb8713a5d48e1 /src | |
parent | c6b5855b446c73f8a60cc3d4427fc445e0ba400d (diff) |
Use qmlRegisterSingletonType instead of setContextProperty in plugins
Change-Id: Ib6c6c7bc5e5e1db005dd43222163fceb50c8894a
Reviewed-by: Teemu Holappa <teemu.holappa@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/bluetoothsettings/plugin.cpp | 16 | ||||
-rw-r--r-- | src/imports/localesettings/plugin.cpp | 15 | ||||
-rw-r--r-- | src/imports/networksettings/plugin.cpp | 20 | ||||
-rw-r--r-- | src/imports/networksettings/plugin.h | 1 | ||||
-rw-r--r-- | src/imports/timedatesettings/plugin.cpp | 16 | ||||
-rw-r--r-- | src/localesettings/localefiltermodel.cpp | 2 | ||||
-rw-r--r-- | src/timedatesettings/timezonefiltermodel.cpp | 2 |
7 files changed, 26 insertions, 46 deletions
diff --git a/src/imports/bluetoothsettings/plugin.cpp b/src/imports/bluetoothsettings/plugin.cpp index d0a25c3..20f5b28 100644 --- a/src/imports/bluetoothsettings/plugin.cpp +++ b/src/imports/bluetoothsettings/plugin.cpp @@ -43,6 +43,13 @@ #include "bluetoothdevice.h" #include "discoverymodel.h" +template <typename T> +QObject *instance(QQmlEngine *engine, QJSEngine *) { + T *t = new T(engine); + t->setObjectName(T::staticMetaObject.className()); + return t; +} + class BluetoothSettingsQmlPlugin : public QQmlExtensionPlugin { Q_OBJECT @@ -53,14 +60,7 @@ public: { Q_ASSERT(QLatin1String(uri) == QLatin1String("com.theqtcompany.settings.bluetooth")); qmlRegisterUncreatableType<BtDeviceItem>(uri, 1, 0, "BtDeviceItem", "Cannot be instantiated directly."); - - } - - void initializeEngine(QQmlEngine * engine, const char * uri) - { - Q_ASSERT(QLatin1String(uri) == QLatin1String("com.theqtcompany.settings.bluetooth")); - BluetoothDevice *device = new BluetoothDevice(engine); - engine->rootContext()->setContextProperty("BtDevice", device); + qmlRegisterSingletonType<BluetoothDevice>(uri, 1, 0, "BtDevice", &instance<BluetoothDevice>); } }; diff --git a/src/imports/localesettings/plugin.cpp b/src/imports/localesettings/plugin.cpp index 7edd2c5..1c2bcca 100644 --- a/src/imports/localesettings/plugin.cpp +++ b/src/imports/localesettings/plugin.cpp @@ -41,8 +41,7 @@ #include <QQmlContext> #include <systemlocale.h> -#include <localemodel.h> -#include <localefiltermodel.h> +#include "localefiltermodel.h" template <typename T> QObject *instance(QQmlEngine *engine, QJSEngine *) { @@ -59,16 +58,8 @@ class LanguageSettingsQmlPlugin : public QQmlExtensionPlugin public: void registerTypes(const char *uri) { - qmlRegisterSingletonType<SystemLocale>(uri, 1, 0, "LocaleManager", &instance<SystemLocale>); - } - - void initializeEngine(QQmlEngine * engine, const char * uri) - { - Q_ASSERT(QLatin1String(uri) == QLatin1String("com.theqtcompany.settings.locale")); - LocaleModel*localeModel = new LocaleModel(engine); - LocaleFilterModel* filter = new LocaleFilterModel(engine); - filter->setSourceModel(localeModel); - engine->rootContext()->setContextProperty("LocaleFilter", filter); + qmlRegisterSingletonType<SystemLocale>(uri, 1, 0, "LocaleManager", &instance<SystemLocale>); + qmlRegisterSingletonType<LocaleFilterModel>(uri, 1, 0, "LocaleFilter", &instance<LocaleFilterModel>); } }; diff --git a/src/imports/networksettings/plugin.cpp b/src/imports/networksettings/plugin.cpp index eeee147..ab81e31 100644 --- a/src/imports/networksettings/plugin.cpp +++ b/src/imports/networksettings/plugin.cpp @@ -43,6 +43,13 @@ #include <QQmlEngine> #include <QQmlContext> +template <typename T> +QObject *instance(QQmlEngine *engine, QJSEngine *) { + T *t = new T(engine); + t->setObjectName(T::staticMetaObject.className()); + return t; +} + void NetworksettingspluginPlugin::registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String("com.theqtcompany.settings.network")); @@ -52,16 +59,7 @@ void NetworksettingspluginPlugin::registerTypes(const char *uri) qmlRegisterUncreatableType<QNetworkSettingsProxy>(uri, 1, 0, "NetworkSettingsProxy", "Cannot be instantiated directly."); qmlRegisterUncreatableType<QNetworkSettingsType>(uri, 1, 0, "NetworkSettingsType", "Cannot be instantiated directly."); qmlRegisterUncreatableType<QNetworkSettingsState>(uri, 1, 0, "NetworkSettingsState", "Cannot be instantiated directly."); -} - - -void NetworksettingspluginPlugin::initializeEngine(QQmlEngine * engine, const char * uri) -{ - Q_ASSERT(QLatin1String(uri) == QLatin1String("com.theqtcompany.settings.network")); - QNetworkSettingsManager* networkManager = new QNetworkSettingsManager(engine); - QNetworkSettingsUserAgent* userAgent = new QNetworkSettingsUserAgent(engine); - networkManager->setUserAgent(userAgent); - engine->rootContext()->setContextProperty("NetworkSettingsManager", networkManager); - engine->rootContext()->setContextProperty("NetworkSettingsUserAgent", userAgent); + qmlRegisterSingletonType<QNetworkSettingsManager>(uri, 1, 0, "NetworkSettingsManager", &instance<QNetworkSettingsManager>); + qmlRegisterSingletonType<QNetworkSettingsUserAgent>(uri, 1, 0, "NetworkSettingsUserAgent", &instance<QNetworkSettingsUserAgent>); } diff --git a/src/imports/networksettings/plugin.h b/src/imports/networksettings/plugin.h index f47b964..40e02e2 100644 --- a/src/imports/networksettings/plugin.h +++ b/src/imports/networksettings/plugin.h @@ -45,7 +45,6 @@ class NetworksettingspluginPlugin : public QQmlExtensionPlugin public: void registerTypes(const char *uri); - void initializeEngine(QQmlEngine * engine, const char * uri); }; #endif // NETWORKSETTINGSPLUGIN_PLUGIN_H diff --git a/src/imports/timedatesettings/plugin.cpp b/src/imports/timedatesettings/plugin.cpp index e55cddc..0f67699 100644 --- a/src/imports/timedatesettings/plugin.cpp +++ b/src/imports/timedatesettings/plugin.cpp @@ -33,7 +33,6 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ - #include <QtQml/QQmlExtensionPlugin> #include <QtQml/qqml.h> #include <qcoreapplication.h> @@ -41,8 +40,7 @@ #include <QQmlContext> #include <systemtime.h> -#include <timezonemodel.h> -#include <timezonefiltermodel.h> +#include "timezonefiltermodel.h" template <typename T> QObject *instance(QQmlEngine *engine, QJSEngine *) { @@ -60,17 +58,7 @@ public: void registerTypes(const char *uri) { qmlRegisterSingletonType<SystemTime>(uri, 1, 0, "TimeManager", &instance<SystemTime>); - } - - void initializeEngine(QQmlEngine * engine, const char * uri) - { - Q_ASSERT(QLatin1String(uri) == QLatin1String("com.theqtcompany.settings.timedate")); - TimezoneModel* timezoneModel = new TimezoneModel(engine); - TimezoneFilterModel* filter = new TimezoneFilterModel(engine); - filter->setSourceModel(timezoneModel); - - engine->rootContext()->setContextProperty("Timezones", timezoneModel); - engine->rootContext()->setContextProperty("TimezonesFilter", filter); + qmlRegisterSingletonType<TimezoneFilterModel>(uri, 1, 0, "TimezonesFilter", &instance<TimezoneFilterModel>); } }; diff --git a/src/localesettings/localefiltermodel.cpp b/src/localesettings/localefiltermodel.cpp index a45c568..e13d49b 100644 --- a/src/localesettings/localefiltermodel.cpp +++ b/src/localesettings/localefiltermodel.cpp @@ -40,6 +40,8 @@ LocaleFilterModel::LocaleFilterModel(QObject* parent) :QSortFilterProxyModel(parent) { connect(this, &LocaleFilterModel::filterChanged, this, &LocaleFilterModel::invalidate); + LocaleModel *localeModel = new LocaleModel(this); + setSourceModel(localeModel); } LocaleFilterModel::~LocaleFilterModel() diff --git a/src/timedatesettings/timezonefiltermodel.cpp b/src/timedatesettings/timezonefiltermodel.cpp index 69ed0c7..472ec9f 100644 --- a/src/timedatesettings/timezonefiltermodel.cpp +++ b/src/timedatesettings/timezonefiltermodel.cpp @@ -40,6 +40,8 @@ TimezoneFilterModel::TimezoneFilterModel(QObject* parent) :QSortFilterProxyModel(parent) { connect(this, &TimezoneFilterModel::filterChanged, this, &TimezoneFilterModel::invalidate); + TimezoneModel* timezoneModel = new TimezoneModel(this); + setSourceModel(timezoneModel); } TimezoneFilterModel::~TimezoneFilterModel() |