#ifndef SERVICEITEMMODEL_H #define SERVICEITEMMODEL_H #include "serviceitem.h" #include #include #include #include #include class ServiceItemModel : public QAbstractListModel { Q_OBJECT public: explicit ServiceItemModel(QObject *parent = nullptr); enum Roles { NameRole = Qt::UserRole, TypeRole, BackgroundRole, BackgroundTypeRole, TextRole, AudioRole, FontRole, FontSizeRole, ActiveRole, SelectedRole }; // Basic functionality: int rowCount(const QModelIndex &parent = QModelIndex()) const override; // int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QHash roleNames() const override; // Q_INVOKABLE int index(int row, int column, // const QModelIndex &parent = QModelIndex()) const override; // Q_INVOKABLE QModelIndex parent(const QModelIndex &index) const override; // Editable: bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; Qt::ItemFlags flags(const QModelIndex &index) const override; // Helper methods void addItem(ServiceItem *item); void insertItem(const int &index, ServiceItem *item); Q_INVOKABLE void addItem(const QString &name, const QString &type); // Q_INVOKABLE void addItem(const QString &name, const QString &type, // const QString &background); Q_INVOKABLE void addItem(const QString &name, const QString &type, const QString &background, const QString &backgroundType); Q_INVOKABLE void addItem(const QString &name, const QString &type, const QString &background, const QString &backgroundType, const QStringList &text); Q_INVOKABLE void addItem(const QString &name, const QString &type, const QString &background, const QString &backgroundType, const QStringList &text, const QString &audio); Q_INVOKABLE void addItem(const QString &name, const QString &type, const QString &background, const QString &backgroundType, const QStringList &text, const QString &audio, const QString &font, const int &fontSize); Q_INVOKABLE void insertItem(const int &index, const QString &name, const QString &type); Q_INVOKABLE void insertItem(const int &index, const QString &name, const QString &type, const QString &background, const QString &backgroundType); Q_INVOKABLE void insertItem(const int &index, const QString &name, const QString &type, const QString &background, const QString &backgroundType, const QStringList &text); Q_INVOKABLE void insertItem(const int &index, const QString &name, const QString &type, const QString &background, const QString &backgroundType, const QStringList &text, const QString &audio); Q_INVOKABLE void insertItem(const int &index, const QString &name, const QString &type, const QString &background, const QString &backgroundType, const QStringList &text, const QString &audio, const QString &font, const int &fontSize); Q_INVOKABLE void removeItem(int index); Q_INVOKABLE bool move(int sourceIndex, int destIndex); Q_INVOKABLE bool moveDown(int index); Q_INVOKABLE bool moveUp(int index); Q_INVOKABLE bool select(int id); Q_INVOKABLE bool activate(int id); Q_INVOKABLE QVariantMap getItem(int index) const; Q_INVOKABLE QVariantList getItems(); Q_INVOKABLE bool save(QUrl file); Q_INVOKABLE bool load(QUrl file); private: QList m_items; }; #endif // SERVICEITEMMODEL_H