@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user