halcyon: use static method to register object

This commit is contained in:
Yari Polla 2023-03-06 02:11:58 +01:00 committed by Devin Lin
parent 1d46f88e6e
commit 348d7821cc
3 changed files with 9 additions and 3 deletions

View file

@ -30,6 +30,12 @@ ApplicationListModel::ApplicationListModel(QObject *parent)
ApplicationListModel::~ApplicationListModel() = default;
ApplicationListModel *ApplicationListModel::self()
{
static ApplicationListModel *inst = new ApplicationListModel(nullptr);
return inst;
}
QHash<int, QByteArray> ApplicationListModel::roleNames() const
{
return {{ApplicationRole, QByteArrayLiteral("application")}};

View file

@ -24,6 +24,7 @@ public:
ApplicationListModel(QObject *parent = nullptr);
~ApplicationListModel() override;
static ApplicationListModel *self();
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;

View file

@ -14,9 +14,8 @@ void HalcyonPlugin::registerTypes(const char *uri)
WindowListener::instance(); // ensure it is created
ApplicationListModel *applicationListModel = new ApplicationListModel{this};
qmlRegisterSingletonType<ApplicationListModel>(uri, 1, 0, "ApplicationListModel", [applicationListModel](QQmlEngine *, QJSEngine *) -> QObject * {
return applicationListModel;
qmlRegisterSingletonType<ApplicationListModel>(uri, 1, 0, "ApplicationListModel", [](QQmlEngine *, QJSEngine *) -> QObject * {
return ApplicationListModel::self();
});
PinnedModel *pinnedModel = new PinnedModel{this};