Working menu split and merge

This commit is contained in:
Christian Colglazier 2021-10-31 14:17:44 -04:00
parent 1298c79196
commit 874bd8072a
4 changed files with 30 additions and 2 deletions

View File

@ -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);

View File

@ -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");
}
}

View File

@ -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_

View File

@ -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);
/*