#pragma once #include #include namespace drumpad_presets { struct Preset; } class DrumPadPresetsModel : public QAbstractTableModel { Q_OBJECT public: DrumPadPresetsModel(QObject *parent = nullptr); DrumPadPresetsModel(const std::map &presets, QObject *parent = nullptr); DrumPadPresetsModel(std::vector &&presets, QObject *parent = nullptr); DrumPadPresetsModel(const std::vector &presets, QObject *parent = nullptr); ~DrumPadPresetsModel() override; void setPresets(const std::map &presets); void setPresets(std::vector &&presets); void setPresets(const std::vector &presets); const drumpad_presets::Preset &getPreset(const QModelIndex &index) const; const drumpad_presets::Preset &getPreset(int row) const; QModelIndex findPresetById(const QString &id) const; int rowCount(const QModelIndex &parent) const override; int columnCount(const QModelIndex &parent) const override; QVariant data(const QModelIndex &index, int role) const override; QVariant headerData(int section, Qt::Orientation orientation, int role) const override; private: std::vector m_presets; };