Skip to content

Commit

Permalink
Add v::Model::Columns::addChannel() method, more generic
Browse files Browse the repository at this point in the history
  • Loading branch information
gvnnz committed May 15, 2024
1 parent 74dcdf5 commit e8f52f4
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 32 deletions.
15 changes: 4 additions & 11 deletions src/glue/channel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -188,10 +188,7 @@ void loadChannel(ID channelId, const std::string& fname)
void addChannel(int columnIndex, ChannelType type, ID groupChannelId)
{
const m::Channel& ch = g_engine->getChannelsApi().add(type, columnIndex, groupChannelId);
if (groupChannelId > 0)
g_ui->model.columns.addChannelToGroup(ch.id, groupChannelId);
else
g_ui->model.columns.addChannelToColumn(ch.id, columnIndex);
g_ui->model.columns.addChannel(ch.id, columnIndex, groupChannelId);
}

/* -------------------------------------------------------------------------- */
Expand All @@ -212,7 +209,7 @@ void addAndLoadChannels(int columnIndex, const std::vector<std::string>& fnames)
if (res != G_RES_OK)
errors = true;
else
g_ui->model.columns.addChannelToColumn(ch.id, columnIndex);
g_ui->model.columns.addChannel(ch.id, columnIndex);
}

if (errors)
Expand Down Expand Up @@ -259,15 +256,11 @@ void setOverdubProtection(ID channelId, bool value)
void cloneChannel(ID channelId, int columnIndex)
{
const m::Channel& ch = g_engine->getChannelsApi().clone(channelId);

if (ch.grouped)
g_ui->model.columns.addChannelToGroup(ch.id, ch.parentId);
else
g_ui->model.columns.addChannelToColumn(ch.id, columnIndex);
g_ui->model.columns.addChannel(ch.id, columnIndex, ch.grouped ? ch.parentId : 0);

if (ch.type == ChannelType::GROUP)
for (const m::Channel& child : ch.groupChannel->channels->getAll())
g_ui->model.columns.addChannelToGroup(child.id, ch.id);
g_ui->model.columns.addChannel(child.id, columnIndex, ch.id);
}

/* -------------------------------------------------------------------------- */
Expand Down
2 changes: 1 addition & 1 deletion src/glue/sampleEditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ void toNewChannel(ID channelId, Frame a, Frame b)
{
const int columnIndex = g_ui->mainWindow->keyboard->getChannelColumnIndex(channelId);
const m::Channel& newChannel = g_engine->getSampleEditorApi().toNewChannel(channelId, a, b);
g_ui->model.columns.addChannelToColumn(newChannel.id, columnIndex);
g_ui->model.columns.addChannel(newChannel.id, columnIndex);
}

/* -------------------------------------------------------------------------- */
Expand Down
24 changes: 6 additions & 18 deletions src/gui/model.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,27 +99,15 @@ void Model::Columns::moveChannel(ID channelId, std::size_t newColumnIndex, int n

/* -------------------------------------------------------------------------- */

void Model::Columns::addChannelToColumn(ID channelId, std::size_t columnIndex, int position)
void Model::Columns::addChannel(ID channelId, std::size_t columnIndex, ID groupId)
{
Column& column = getColumnByIndex(columnIndex);
Channel channel = {channelId, /*groupId=*/0, columnIndex};
if (position == -1)
column.add(std::move(channel));
else
column.insert(std::move(channel), position);
}
Channel channel = {channelId, groupId, columnIndex};
Column& column = getByIndex(columnIndex);

/* -------------------------------------------------------------------------- */

void Model::Columns::addChannelToGroup(ID channelId, ID groupId, int position)
{
Column& column = getColumnByChannelId(groupId);
Channel& group = column.getById(groupId);
Channel channel = {channelId, groupId, column.index};
if (position == -1)
group.add(std::move(channel));
if (groupId == 0)
column.add(std::move(channel));
else
group.insert(std::move(channel), position);
column.getById(groupId).add(std::move(channel));
}

/* -------------------------------------------------------------------------- */
Expand Down
3 changes: 1 addition & 2 deletions src/gui/model.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,7 @@ struct Model
void addColumn();
void removeColumn(int columnIndex);
void moveChannel(ID channelId, std::size_t newColumnIndex, int newPosition);
void addChannelToColumn(ID channelId, std::size_t columnIndex, int position = -1);
void addChannelToGroup(ID channelId, ID groupId, int position = -1);
void addChannel(ID channelId, std::size_t columnIndex, ID groupId = 0);
void removeChannelFromColumn(ID channelId);
};

Expand Down

0 comments on commit e8f52f4

Please sign in to comment.