diff --git a/src/qmlregister.cpp b/src/qmlregister.cpp index 47a2d06bbab739ba5602cbc30cd5f8ec3518236f..b5bb3390486643ae0c494e3232380ccf1357c22d 100644 --- a/src/qmlregister.cpp +++ b/src/qmlregister.cpp @@ -1,4 +1,4 @@ -/*! +/* * Copyright (C) 2020 by Savoir-faire Linux * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> * @@ -62,8 +62,8 @@ #define QML_REGISTERTYPE(NS, T) qmlRegisterType<T>(NS, VER_MAJ, VER_MIN, #T); -#define QML_REGISTERNAMESPACE(T, NAME) \ - qmlRegisterUncreatableMetaObject(T, NS_MODELS, VER_MAJ, VER_MIN, NAME, "") +#define QML_REGISTERNAMESPACE(NS, T, NAME) \ + qmlRegisterUncreatableMetaObject(T, NS, VER_MAJ, VER_MIN, NAME, "") #define QML_REGISTERUNCREATABLE(N, T) \ qmlRegisterUncreatableType<T>(N, VER_MAJ, VER_MIN, #T, "Don't try to add to a qml definition of " #T); @@ -81,6 +81,16 @@ namespace Utils { void registerTypes() { + // Hack for QtCreator autocomplete (part 2) + // https://bugreports.qt.io/browse/QTCREATORBUG-20569 + // Use a dummy object to register the import namespace. + // This occurs when we register from within MainApplication + QML_REGISTERNAMESPACE(NS_MODELS, dummy::staticMetaObject, ""); + QML_REGISTERNAMESPACE(NS_ADAPTERS, dummy::staticMetaObject, ""); + QML_REGISTERNAMESPACE(NS_CONSTANTS, dummy::staticMetaObject, ""); + QML_REGISTERNAMESPACE(NS_HELPERS, dummy::staticMetaObject, ""); + QML_REGISTERNAMESPACE(NS_ENUMS, dummy::staticMetaObject, ""); + // QAbstractListModels QML_REGISTERTYPE(NS_MODELS, AccountListModel); QML_REGISTERTYPE(NS_MODELS, DeviceItemListModel); @@ -112,13 +122,13 @@ registerTypes() QML_REGISTERSINGLETONTYPE_WITH_INSTANCE(NameDirectory); // Lrc namespaces, models, and singletons - QML_REGISTERNAMESPACE(lrc::api::staticMetaObject, "Lrc"); - QML_REGISTERNAMESPACE(lrc::api::account::staticMetaObject, "Account"); - QML_REGISTERNAMESPACE(lrc::api::call::staticMetaObject, "Call"); - QML_REGISTERNAMESPACE(lrc::api::datatransfer::staticMetaObject, "Datatransfer"); - QML_REGISTERNAMESPACE(lrc::api::interaction::staticMetaObject, "Interaction"); - QML_REGISTERNAMESPACE(lrc::api::video::staticMetaObject, "Video"); - QML_REGISTERNAMESPACE(lrc::api::profile::staticMetaObject, "Profile"); + QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::staticMetaObject, "Lrc"); + QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::account::staticMetaObject, "Account"); + QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::call::staticMetaObject, "Call"); + QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::datatransfer::staticMetaObject, "Datatransfer"); + QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::interaction::staticMetaObject, "Interaction"); + QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::video::staticMetaObject, "Video"); + QML_REGISTERNAMESPACE(NS_MODELS, lrc::api::profile::staticMetaObject, "Profile"); // Same as QML_REGISTERUNCREATABLE but omit the namespace in Qml QML_REGISTERUNCREATABLE_IN_NAMESPACE(NewAccountModel, lrc::api); diff --git a/src/qmlregister.h b/src/qmlregister.h index a77d6bcb97c0410337a686e1fcaaeac2b887e45e..896a2dc2f7ad5493ad60d896213de39de414dc44 100644 --- a/src/qmlregister.h +++ b/src/qmlregister.h @@ -1,4 +1,4 @@ -/*! +/* * Copyright (C) 2020 by Savoir-faire Linux * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> * @@ -30,6 +30,13 @@ #define VER_MAJ 1 #define VER_MIN 0 +// Hack for QtCreator autocomplete (part 1) +// https://bugreports.qt.io/browse/QTCREATORBUG-20569 +namespace dummy { +Q_NAMESPACE +Q_CLASSINFO("RegisterEnumClassesUnscoped", "false") +} // namespace dummy + // clang-format off #define QML_REGISTERSINGLETONTYPE_POBJECT(NS, I, N) \ QQmlEngine::setObjectOwnership(I, QQmlEngine::CppOwnership); \