menu.cpp (1081B)
1 2 #include "menu.hpp" 3 4 using namespace bogaudio; 5 6 #define SUBMENUS 1 7 8 void OptionsMenuItem::addItem(const OptionMenuItem& item) { 9 _items.push_back(item); 10 } 11 12 void OptionsMenuItem::addSpacer() { 13 _items.push_back(SpacerOptionMenuItem()); 14 } 15 16 Menu* OptionsMenuItem::createChildMenu() { 17 Menu* menu = new Menu; 18 for (const OptionMenuItem& item : _items) { 19 if (item.text == "<spacer>") { 20 menu->addChild(new MenuLabel()); 21 } 22 else { 23 menu->addChild(new OptionMenuItem(item)); 24 } 25 } 26 return menu; 27 } 28 29 void OptionsMenuItem::addToMenu(OptionsMenuItem* item, Menu* menu) { 30 // one way or another, this will cause item to eventually be deleted; call only one per item. 31 #ifdef SUBMENUS 32 menu->addChild(item); 33 #else 34 std::string label(item->text); 35 label += ":"; 36 menu->addChild(createMenuLabel(label.c_str())); 37 for (const OptionMenuItem& omi : item->_items) { 38 if (omi.text == "<spacer>") { 39 menu->addChild(new MenuLabel()); 40 } 41 else { 42 auto nomi = new OptionMenuItem(omi); 43 nomi->text = std::string("\t") + nomi->text; 44 menu->addChild(nomi); 45 } 46 } 47 delete item; 48 #endif 49 }