#pragma once #include #include namespace loopstation_presets { struct Preset; } class LoopStationPresetsModel : public QAbstractTableModel { Q_OBJECT public: LoopStationPresetsModel(QObject *parent = nullptr); LoopStationPresetsModel(const std::map &presets, QObject *parent = nullptr); LoopStationPresetsModel(std::vector &&presets, QObject *parent = nullptr); LoopStationPresetsModel(const std::vector &presets, QObject *parent = nullptr); ~LoopStationPresetsModel() override; void setPresets(const std::map &presets); void setPresets(std::vector &&presets); void setPresets(const std::vector &presets); const loopstation_presets::Preset &getPreset(const QModelIndex &index) const; const loopstation_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; };