From 874bd8072a611167512424092947f25a986197fe Mon Sep 17 00:00:00 2001 From: Christian Colglazier Date: Sun, 31 Oct 2021 14:17:44 -0400 Subject: [PATCH] Working menu split and merge --- src/main.cpp | 2 ++ src/menu.cpp | 12 ++++++++++-- src/menu.h | 5 +++++ src/menu_item.h | 13 +++++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 558c3eb..05d2295 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,6 +30,8 @@ void ProcessControls() { // Split selected if(selected_menu->GetState() == MenuState::kSplit) { manager->ToggleSplit(); + left_menu->UpdateMenuState(); + right_menu->UpdateMenuState(); // Enable split if (manager->GetSplitMode()) { droplet_left->UpdateState(DropletState::kLeft); diff --git a/src/menu.cpp b/src/menu.cpp index d6f3c3d..ffc75a8 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -16,13 +16,12 @@ Menu::Menu(DaisyPatch* m_patch, buffer = selected; highlighted = selected; - head->SetStateVisibility(MenuState::kChange, false); - if (state == DropletState::kLeft) { head->SetStateTitle(MenuState::kChange, "Right"); } else if (state == DropletState::kRight) { head->SetStateTitle(MenuState::kChange, "Left"); } + this->UpdateMenuState(); } bool Menu::InMenu() { @@ -106,3 +105,12 @@ MenuState Menu::GetState() { return highlighted->GetState(); } +void Menu::UpdateMenuState() { + if (manager->GetSplitMode()) { + head->SetStateVisibility(MenuState::kChange, true); + head->SetStateTitle(MenuState::kSplit, "Merge"); + } else { + head->SetStateVisibility(MenuState::kChange, false); + head->SetStateTitle(MenuState::kSplit, "Split"); + } +} diff --git a/src/menu.h b/src/menu.h index 4d1e50c..b7c1d73 100644 --- a/src/menu.h +++ b/src/menu.h @@ -84,6 +84,11 @@ class Menu { * @return menu state */ MenuState GetState(); + + /* + * Updates the menu upon a split or a merge. + */ + void UpdateMenuState(); }; #endif // CASCADE_MENU_H_ diff --git a/src/menu_item.h b/src/menu_item.h index e9c00fa..eb95ada 100644 --- a/src/menu_item.h +++ b/src/menu_item.h @@ -91,7 +91,20 @@ class MenuItem { */ void ToggleVisibility(); + /* + * Set the visibility of all menu items with a given state. + * + * @param state + * @param visibility + */ void SetStateVisibility(MenuState m_state, bool visibility); + + /* + * Set the title of all menu items with a given state. + * + * @param state + * @param title + */ void SetStateTitle(MenuState m_state, std::string m_title); /*