scened_app_scene_start.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "scened_app_scene_start.h"
  2. typedef enum {
  3. SubmenuByteInput,
  4. } SubmenuIndex;
  5. void ScenedAppSceneStart::on_enter(ScenedApp* app, bool need_restore) {
  6. auto submenu = app->view_controller.get<SubmenuVM>();
  7. auto callback = cbc::obtain_connector(this, &ScenedAppSceneStart::submenu_callback);
  8. submenu->add_item("Byte Input", SubmenuByteInput, callback, app);
  9. if(need_restore) {
  10. submenu->set_selected_item(submenu_item_selected);
  11. }
  12. app->view_controller.switch_to<SubmenuVM>();
  13. }
  14. bool ScenedAppSceneStart::on_event(ScenedApp* app, ScenedApp::Event* event) {
  15. bool consumed = false;
  16. if(event->type == ScenedApp::EventType::MenuSelected) {
  17. submenu_item_selected = event->payload.menu_index;
  18. switch(event->payload.menu_index) {
  19. case SubmenuByteInput:
  20. app->scene_controller.switch_to_next_scene(ScenedApp::SceneType::ByteInputScene);
  21. break;
  22. }
  23. consumed = true;
  24. }
  25. return consumed;
  26. }
  27. void ScenedAppSceneStart::on_exit(ScenedApp* app) {
  28. app->view_controller.get<SubmenuVM>()->clean();
  29. }
  30. void ScenedAppSceneStart::submenu_callback(void* context, uint32_t index) {
  31. ScenedApp* app = static_cast<ScenedApp*>(context);
  32. ScenedApp::Event event;
  33. event.type = ScenedApp::EventType::MenuSelected;
  34. event.payload.menu_index = index;
  35. app->view_controller.send_event(&event);
  36. }