dtmf_dolphin_scene_start.c 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. } else if (index == DTMFDolphinSceneStateMisc) {
  15. view_dispatcher_send_custom_event(
  16. app->view_dispatcher,
  17. DTMFDolphinEventStartMisc
  18. );
  19. }
  20. }
  21. void dtmf_dolphin_scene_start_on_enter(void* context) {
  22. DTMFDolphinApp* app = context;
  23. VariableItemList* var_item_list = app->main_menu_list;
  24. // VariableItem* item;
  25. variable_item_list_set_enter_callback(
  26. var_item_list,
  27. dtmf_dolphin_scene_start_main_menu_enter_callback,
  28. app);
  29. variable_item_list_add(var_item_list, "Dialer", 0, NULL, NULL);
  30. variable_item_list_add(var_item_list, "Bluebox", 0, NULL, NULL);
  31. variable_item_list_add(var_item_list, "Misc", 0, NULL, NULL);
  32. variable_item_list_set_selected_item(
  33. var_item_list,
  34. scene_manager_get_scene_state(app->scene_manager, DTMFDolphinSceneStart));
  35. view_dispatcher_switch_to_view(
  36. app->view_dispatcher,
  37. DTMFDolphinViewMainMenu);
  38. }
  39. bool dtmf_dolphin_scene_start_on_event(void* context, SceneManagerEvent event) {
  40. DTMFDolphinApp* app = context;
  41. UNUSED(app);
  42. bool consumed = false;
  43. if(event.type == SceneManagerEventTypeCustom) {
  44. if (event.event == DTMFDolphinEventStartDialer) {
  45. scene_manager_set_scene_state(app->scene_manager, DTMFDolphinSceneDialer, DTMFDolphinSceneStateDialer);
  46. scene_manager_next_scene(app->scene_manager, DTMFDolphinSceneDialer);
  47. } else if (event.event == DTMFDolphinEventStartBluebox) {
  48. scene_manager_set_scene_state(app->scene_manager, DTMFDolphinSceneDialer, DTMFDolphinSceneStateBluebox);
  49. scene_manager_next_scene(app->scene_manager, DTMFDolphinSceneDialer);
  50. } else if (event.event == DTMFDolphinEventStartMisc) {
  51. scene_manager_set_scene_state(app->scene_manager, DTMFDolphinSceneDialer, DTMFDolphinSceneStateMisc);
  52. scene_manager_next_scene(app->scene_manager, DTMFDolphinSceneDialer);
  53. }
  54. consumed = true;
  55. }
  56. return consumed;
  57. }
  58. void dtmf_dolphin_scene_start_on_exit(void* context) {
  59. DTMFDolphinApp* app = context;
  60. variable_item_list_reset(app->main_menu_list);
  61. }