Improve Catalog
ci / checks (push) Successful in 46m42s

This commit is contained in:
khodowany
2026-09-27 11:03:43 -05:00
parent a416a80dd9
commit 142d843fac
418 changed files with 440 additions and 324488 deletions
+6 -62
View File
@@ -3,23 +3,15 @@
#include <vamp_zero/navigation.hpp>
namespace {
auto menu_row_count(std::size_t item_count) -> std::size_t {
return item_count + 1U;
}
}
auto vamp_zero::selected_group(vamp_zero::app_state const &state) -> vamp_zero::song_group const * {
if (state.selected_song_index == 0U || state.catalog->performance.groups.empty()) {
if (state.selected_song_index == 0U || state.catalog->groups.empty()) {
return nullptr;
}
auto index = state.selected_song_index - 1U;
if (index >= state.catalog->performance.groups.size()) {
if (index >= state.catalog->groups.size()) {
return nullptr;
}
return &state.catalog->performance.groups[index];
return &state.catalog->groups[index];
}
auto vamp_zero::selected_part(vamp_zero::app_state const &state) -> vamp_zero::library_part const * {
@@ -32,60 +24,17 @@ auto vamp_zero::selected_part(vamp_zero::app_state const &state) -> vamp_zero::l
return nullptr;
}
auto part_index = group->parts[index];
return part_index < state.catalog->performance.parts.size() ? &state.catalog->performance.parts[part_index] : nullptr;
return part_index < state.catalog->parts.size() ? &state.catalog->parts[part_index] : nullptr;
}
auto vamp_zero::active_part(vamp_zero::app_state const &state) -> vamp_zero::library_part const * {
if (state.active_part_id.empty()) {
return nullptr;
}
auto found = std::find_if(state.catalog->performance.parts.begin(), state.catalog->performance.parts.end(), [&](auto const &part) {
auto found = std::find_if(state.catalog->parts.begin(), state.catalog->parts.end(), [&](auto const &part) {
return part.id == state.active_part_id;
});
return found == state.catalog->performance.parts.end() ? nullptr : &*found;
}
auto vamp_zero::selected_practice_exercise(vamp_zero::app_state const &state) -> vamp_zero::practice_exercise const * {
if (state.selected_practice_exercise_index == 0U) {
return nullptr;
}
auto index = state.selected_practice_exercise_index - 1U;
if (index >= state.catalog->practice.exercises.size()) {
return nullptr;
}
return &state.catalog->practice.exercises[index];
}
auto vamp_zero::active_practice(vamp_zero::app_state const &state) -> vamp_zero::practice_exercise const * {
if (state.active_practice_id.empty()) {
return nullptr;
}
auto found = std::find_if(state.catalog->practice.exercises.begin(),
state.catalog->practice.exercises.end(),
[&](auto const &exercise) { return exercise.id == state.active_practice_id; });
return found == state.catalog->practice.exercises.end() ? nullptr : &*found;
}
auto vamp_zero::selected_practice_part(vamp_zero::app_state const &state, vamp_zero::practice_exercise const &exercise) -> vamp_zero::library_part const * {
if (exercise.parts.empty()) {
return nullptr;
}
if (state.selected_practice_part_index == 0U) {
return nullptr;
}
auto index = state.selected_practice_part_index - 1U;
if (index >= exercise.parts.size()) {
return nullptr;
}
return &exercise.parts[index];
}
auto vamp_zero::practice_part_row_count(vamp_zero::app_state const &state) -> std::size_t {
auto const *exercise = vamp_zero::selected_practice_exercise(state);
if (exercise == nullptr) {
return 1U;
}
return menu_row_count(exercise->parts.size());
return found == state.catalog->parts.end() ? nullptr : &*found;
}
auto vamp_zero::active_pages(vamp_zero::app_state const &state) -> std::size_t {
@@ -93,10 +42,5 @@ auto vamp_zero::active_pages(vamp_zero::app_state const &state) -> std::size_t {
auto const *part = vamp_zero::active_part(state);
return part == nullptr ? 0U : part->total_pages;
}
if (state.mode == vamp_zero::app_mode::PRACTICE_SCORE) {
auto const *exercise = vamp_zero::active_practice(state);
auto const *practice_part = exercise == nullptr ? nullptr : vamp_zero::selected_practice_part(state, *exercise);
return practice_part == nullptr ? 0U : practice_part->total_pages;
}
return 0U;
}