19#include "DBusGreeter.h"
20#include "DBusGreeterList.h"
22#include "PromptsModel.h"
23#include "SessionsModel.h"
24#include "UsersModel.h"
25#include <libusermetricsoutput/ColorTheme.h>
26#include <libusermetricsoutput/UserMetrics.h>
27#include <QLightDM/SessionsModel>
28#include <QLightDM/UsersModel>
30#include <QAbstractItemModel>
31#include <QDBusConnection>
32#include <QtQml/qqml.h>
34static QObject *greeter_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
36 Q_UNUSED(scriptEngine)
38 Greeter *greeter = Greeter::instance();
39 new DBusGreeter(greeter, QStringLiteral(
"/com/lomiri/LomiriGreeter"));
40 new DBusGreeterList(greeter, QStringLiteral(
"/com/lomiri/LomiriGreeter/list"));
42 engine->setObjectOwnership(greeter, QQmlEngine::CppOwnership);
47static QObject *prompts_provider(QQmlEngine *engine, QJSEngine *)
49 auto model = Greeter::instance()->promptsModel();
50 engine->setObjectOwnership(model, QQmlEngine::CppOwnership);
54static QObject *sessions_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
57 Q_UNUSED(scriptEngine)
58 return new SessionsModel();
61static QObject *users_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
64 Q_UNUSED(scriptEngine)
65 return new UsersModel();
68static QObject *infographic_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
71 Q_UNUSED(scriptEngine)
72 return UserMetricsOutput::UserMetrics::getInstance();
75void PLUGIN_CLASSNAME::registerTypes(
const char *uri)
77#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
78 qmlRegisterAnonymousType<QAbstractItemModel>(uri, 0);
79 qmlRegisterAnonymousType<UserMetricsOutput::ColorTheme>(uri, 0);
81 qmlRegisterType<QAbstractItemModel>();
82 qmlRegisterType<UserMetricsOutput::ColorTheme>();
85#if defined INTEGRATED_LIGHTDM
86 Q_ASSERT(uri == QLatin1String(
"LightDM.IntegratedLightDM"));
87 qmlRegisterSingletonType<Greeter>(uri, 0, 1,
"Greeter", greeter_provider);
88#elif defined FULL_LIGHTDM
89 Q_ASSERT(uri == QLatin1String(
"LightDM.FullLightDM"));
90 qmlRegisterSingletonType<QLightDM::Greeter>(uri, 0, 1,
"Greeter", greeter_provider);
92 #error No library defined in LightDM plugin
95 qmlRegisterSingletonType<PromptsModel>(uri, 0, 1,
"Prompts", prompts_provider);
97 qmlRegisterSingletonType<SessionsModel>(uri, 0, 1,
"Sessions", sessions_provider);
98 qmlRegisterUncreatableType<QLightDM::SessionsModel>(uri, 0, 1,
"SessionRoles", QStringLiteral(
"Type is not instantiable"));
100 qmlRegisterSingletonType<UsersModel>(uri, 0, 1,
"Users", users_provider);
101 qmlRegisterUncreatableType<QLightDM::UsersModel>(uri, 0, 1,
"UserRoles", QStringLiteral(
"Type is not instantiable"));
103 qmlRegisterSingletonType<UserMetricsOutput::UserMetrics>(uri, 0, 1,
"Infographic", infographic_provider);