Implemented loopstation preset model

This commit is contained in:
2022-12-28 00:09:51 +01:00
parent e2a2980c4f
commit 5613fc553b
11 changed files with 419 additions and 33 deletions

View File

@ -37,49 +37,49 @@ DrumPadPresetsModel::DrumPadPresetsModel(QObject *parent) :
{
}
DrumPadPresetsModel::DrumPadPresetsModel(const std::map<QString, drumpad_presets::Preset> &drumpad_presets, QObject *parent) :
DrumPadPresetsModel::DrumPadPresetsModel(const std::map<QString, drumpad_presets::Preset> &presets, QObject *parent) :
QAbstractTableModel{parent}
{
m_drumpad_presets.reserve(std::size(drumpad_presets));
for (const auto &pair : drumpad_presets)
m_drumpad_presets.emplace_back(pair.second);
m_presets.reserve(std::size(presets));
for (const auto &pair : presets)
m_presets.emplace_back(pair.second);
}
DrumPadPresetsModel::DrumPadPresetsModel(std::vector<drumpad_presets::Preset> &&drumpad_presets, QObject *parent) :
DrumPadPresetsModel::DrumPadPresetsModel(std::vector<drumpad_presets::Preset> &&presets, QObject *parent) :
QAbstractTableModel{parent}
{
m_drumpad_presets = std::move(drumpad_presets);
m_presets = std::move(presets);
}
DrumPadPresetsModel::DrumPadPresetsModel(const std::vector<drumpad_presets::Preset> &drumpad_presets, QObject *parent) :
DrumPadPresetsModel::DrumPadPresetsModel(const std::vector<drumpad_presets::Preset> &presets, QObject *parent) :
QAbstractTableModel{parent}
{
m_drumpad_presets = drumpad_presets;
m_presets = presets;
}
DrumPadPresetsModel::~DrumPadPresetsModel() = default;
void DrumPadPresetsModel::setPresets(const std::map<QString, drumpad_presets::Preset> &drumpad_presets)
void DrumPadPresetsModel::setPresets(const std::map<QString, drumpad_presets::Preset> &presets)
{
beginResetModel();
m_drumpad_presets.clear();
m_drumpad_presets.reserve(std::size(drumpad_presets));
for (const auto &pair : drumpad_presets)
m_drumpad_presets.emplace_back(pair.second);
m_presets.clear();
m_presets.reserve(std::size(presets));
for (const auto &pair : presets)
m_presets.emplace_back(pair.second);
endResetModel();
}
void DrumPadPresetsModel::setPresets(std::vector<drumpad_presets::Preset> &&drumpad_presets)
void DrumPadPresetsModel::setPresets(std::vector<drumpad_presets::Preset> &&presets)
{
beginResetModel();
m_drumpad_presets = std::move(drumpad_presets);
m_presets = std::move(presets);
endResetModel();
}
void DrumPadPresetsModel::setPresets(const std::vector<drumpad_presets::Preset> &drumpad_presets)
void DrumPadPresetsModel::setPresets(const std::vector<drumpad_presets::Preset> &presets)
{
beginResetModel();
m_drumpad_presets = drumpad_presets;
m_presets = presets;
endResetModel();
}
@ -90,18 +90,18 @@ const drumpad_presets::Preset &DrumPadPresetsModel::getPreset(const QModelIndex
const drumpad_presets::Preset &DrumPadPresetsModel::getPreset(int row) const
{
Q_ASSERT(row >= 0 && row < int(std::size(m_drumpad_presets)));
return m_drumpad_presets.at(row);
Q_ASSERT(row >= 0 && row < int(std::size(m_presets)));
return m_presets.at(row);
}
QModelIndex DrumPadPresetsModel::findPresetById(const QString &id) const
{
for (auto iter = std::cbegin(m_drumpad_presets); iter != std::cend(m_drumpad_presets); iter++)
for (auto iter = std::cbegin(m_presets); iter != std::cend(m_presets); iter++)
{
if (iter->id != id)
continue;
return createIndex(std::distance(std::cbegin(m_drumpad_presets), iter), 0);
return createIndex(std::distance(std::cbegin(m_presets), iter), 0);
}
return {};
@ -111,7 +111,7 @@ int DrumPadPresetsModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent)
return std::size(m_drumpad_presets);
return std::size(m_presets);
}
int DrumPadPresetsModel::columnCount(const QModelIndex &parent) const
@ -132,7 +132,7 @@ QVariant DrumPadPresetsModel::data(const QModelIndex &index, int role) const
return {};
if (index.row() < 0)
return {};
if (index.row() >= int(std::size(m_drumpad_presets)))
if (index.row() >= int(std::size(m_presets)))
return {};
const auto &preset = getPreset(index);