halcyon/pinnedmodel: build singleton type using static method

This commit is contained in:
Yari Polla 2023-03-06 16:21:35 +01:00
parent 8b5ec57d0b
commit ed87f57938
3 changed files with 9 additions and 3 deletions

View file

@ -18,9 +18,8 @@ void HalcyonPlugin::registerTypes(const char *uri)
return ApplicationListModel::self();
});
PinnedModel *pinnedModel = new PinnedModel{this};
qmlRegisterSingletonType<PinnedModel>(uri, 1, 0, "PinnedModel", [pinnedModel](QQmlEngine *, QJSEngine *) -> QObject * {
return pinnedModel;
qmlRegisterSingletonType<PinnedModel>(uri, 1, 0, "PinnedModel", [](QQmlEngine *, QJSEngine *) -> QObject * {
return PinnedModel::self();
});
qmlRegisterType<Application>(uri, 1, 0, "Application");

View file

@ -15,6 +15,12 @@ PinnedModel::PinnedModel(QObject *parent)
PinnedModel::~PinnedModel() = default;
PinnedModel *PinnedModel::self()
{
static PinnedModel *inst = new PinnedModel();
return inst;
}
int PinnedModel::rowCount(const QModelIndex &parent) const
{
return m_applications.count();

View file

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