dtmf_dolphin_scene_start.c 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "../dtmf_dolphin_i.h"
  2. static void dtmf_dolphin_scene_start_main_menu_enter_callback(void* context, uint32_t index) {
  3. DTMFDolphinApp* app = context;
  4. if (index == DTMFDolphinSceneStateDialer) {
  5. view_dispatcher_send_custom_event(
  6. app->view_dispatcher,
  7. DTMFDolphinEventStartDialer
  8. );
  9. } else if (index == DTMFDolphinSceneStateBluebox) {
  10. view_dispatcher_send_custom_event(
  11. app->view_dispatcher,
  12. DTMFDolphinEventStartBluebox
  13. );
  14. }
  15. }
  16. void dtmf_dolphin_scene_start_on_enter(void* context) {
  17. DTMFDolphinApp* app = context;
  18. VariableItemList* var_item_list = app->main_menu_list;
  19. // VariableItem* item;
  20. variable_item_list_set_enter_callback(
  21. var_item_list,
  22. dtmf_dolphin_scene_start_main_menu_enter_callback,
  23. app);
  24. variable_item_list_add(var_item_list, "Dialer", 0, NULL, NULL);
  25. variable_item_list_add(var_item_list, "Bluebox", 0, NULL, NULL);
  26. variable_item_list_add(var_item_list, "Misc", 0, NULL, NULL);
  27. variable_item_list_set_selected_item(
  28. var_item_list,
  29. scene_manager_get_scene_state(app->scene_manager, DTMFDolphinSceneStart));
  30. view_dispatcher_switch_to_view(
  31. app->view_dispatcher,
  32. DTMFDolphinViewMainMenu);
  33. }
  34. bool dtmf_dolphin_scene_start_on_event(void* context, SceneManagerEvent event) {
  35. DTMFDolphinApp* app = context;
  36. UNUSED(app);
  37. bool consumed = false;
  38. if(event.type == SceneManagerEventTypeCustom) {
  39. if (event.event == DTMFDolphinEventStartDialer) {
  40. scene_manager_set_scene_state(app->scene_manager, DTMFDolphinSceneDialer, DTMFDolphinSceneStateDialer);
  41. scene_manager_next_scene(app->scene_manager, DTMFDolphinSceneDialer);
  42. } else if (event.event == DTMFDolphinEventStartBluebox) {
  43. scene_manager_set_scene_state(app->scene_manager, DTMFDolphinSceneDialer, DTMFDolphinSceneStateBluebox);
  44. scene_manager_next_scene(app->scene_manager, DTMFDolphinSceneDialer);
  45. } else if (event.event == DTMFDolphinEventStartMisc) {
  46. scene_manager_set_scene_state(app->scene_manager, DTMFDolphinSceneDialer, DTMFDolphinSceneStateMisc);
  47. scene_manager_next_scene(app->scene_manager, DTMFDolphinSceneDialer);
  48. }
  49. consumed = true;
  50. }
  51. return consumed;
  52. }
  53. void dtmf_dolphin_scene_start_on_exit(void* context) {
  54. DTMFDolphinApp* app = context;
  55. variable_item_list_reset(app->main_menu_list);
  56. }