// Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef BIRTHDAYPARTY_H #define BIRTHDAYPARTY_H #include "person.h" #include #include class BirthdayParty : public QObject { Q_OBJECT Q_PROPERTY(Person *host READ host WRITE setHost NOTIFY hostChanged FINAL) Q_PROPERTY(QQmlListProperty guests READ guests NOTIFY guestsChanged FINAL) Q_CLASSINFO("DefaultProperty", "guests") QML_ELEMENT public: using QObject::QObject; Person *host() const; void setHost(Person *); QQmlListProperty guests(); void appendGuest(Person *); qsizetype guestCount() const; Person *guest(qsizetype) const; void clearGuests(); void replaceGuest(qsizetype, Person *); void removeLastGuest(); signals: void hostChanged(); void guestsChanged(); private: static void appendGuest(QQmlListProperty *list, Person *); static qsizetype guestCount(QQmlListProperty *); static Person *guest(QQmlListProperty *, qsizetype); static void clearGuests(QQmlListProperty *); static void replaceGuest(QQmlListProperty *, qsizetype, Person *); static void removeLastGuest(QQmlListProperty *); Person *m_host = nullptr; QList m_guests; }; #endif // BIRTHDAYPARTY_H