irda-app-scene-start.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "../irda-app.hpp"
  2. typedef enum {
  3. SubmenuIndexUniversalLibrary,
  4. SubmenuIndexLearnNewRemote,
  5. SubmenuIndexSavedRemotes,
  6. } SubmenuIndex;
  7. static void submenu_callback(void* context, uint32_t index) {
  8. IrdaApp* app = static_cast<IrdaApp*>(context);
  9. IrdaAppEvent event;
  10. event.type = IrdaAppEvent::Type::MenuSelected;
  11. event.payload.menu_index = index;
  12. app->get_view_manager()->send_event(&event);
  13. }
  14. void IrdaAppSceneStart::on_enter(IrdaApp* app) {
  15. IrdaAppViewManager* view_manager = app->get_view_manager();
  16. Submenu* submenu = view_manager->get_submenu();
  17. submenu_add_item(
  18. submenu, "Universal library", SubmenuIndexUniversalLibrary, submenu_callback, app);
  19. submenu_add_item(
  20. submenu, "Learn new remote", SubmenuIndexLearnNewRemote, submenu_callback, app);
  21. submenu_add_item(submenu, "Saved remotes", SubmenuIndexSavedRemotes, submenu_callback, app);
  22. view_manager->switch_to(IrdaAppViewManager::ViewType::Submenu);
  23. }
  24. bool IrdaAppSceneStart::on_event(IrdaApp* app, IrdaAppEvent* event) {
  25. bool consumed = false;
  26. if(event->type == IrdaAppEvent::Type::MenuSelected) {
  27. switch(event->payload.menu_index) {
  28. case SubmenuIndexUniversalLibrary:
  29. app->switch_to_next_scene(IrdaApp::Scene::Universal);
  30. break;
  31. case SubmenuIndexLearnNewRemote:
  32. app->set_learn_new_remote(true);
  33. app->switch_to_next_scene(IrdaApp::Scene::Learn);
  34. break;
  35. case SubmenuIndexSavedRemotes:
  36. app->switch_to_next_scene(IrdaApp::Scene::RemoteList);
  37. break;
  38. }
  39. consumed = true;
  40. }
  41. return consumed;
  42. }
  43. void IrdaAppSceneStart::on_exit(IrdaApp* app) {
  44. IrdaAppViewManager* view_manager = app->get_view_manager();
  45. Submenu* submenu = view_manager->get_submenu();
  46. submenu_clean(submenu);
  47. }