settings_scene.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #include <gui/modules/menu.h>
  2. #include <gui/modules/popup.h>
  3. #include "settings_scene.h"
  4. #include "../app_context.h"
  5. #include "../tone_gen.h"
  6. #include "../utils/linked_list.h"
  7. /** indices for menu items */
  8. typedef enum {
  9. SettingsMenuOptions_WaveType,
  10. SettingsMenuOptions_Amplitude,
  11. SettingsMenuOptions_Period,
  12. } SettingsMenuOptions;
  13. /** main menu callback - sends a custom event to the scene manager based on the menu selection */
  14. void menu_callback_settings_scene(void* context, uint32_t index) {
  15. UNUSED(context);
  16. // struct AppContext_t* app = context;
  17. switch(index) {
  18. case SettingsMenuOptions_WaveType:
  19. FURI_LOG_I(TAG, "selection one");
  20. // scene_manager_handle_custom_event(app->scene_manager, ToneGenAppEvent_StartPlayback);
  21. break;
  22. case SettingsMenuOptions_Amplitude:
  23. FURI_LOG_I(TAG, "selection two");
  24. // scene_manager_handle_custom_event(app->scene_manager, ToneGenAppEvent_AdjustTone);
  25. break;
  26. case SettingsMenuOptions_Period:
  27. FURI_LOG_I(TAG, "selection three");
  28. // scene_manager_handle_custom_event(app->scene_manager, ToneGenAppEvent_AdjustTone);
  29. break;
  30. }
  31. }
  32. /** resets the menu, gives it content, callbacks and selection enums */
  33. void scene_on_enter_settings_scene(void* context) {
  34. FURI_LOG_I(TAG, "scene_on_enter_settings_scene");
  35. struct AppContext_t* app = (struct AppContext_t*)context;
  36. // Setup our menu
  37. FURI_LOG_D(TAG, "Adding view menu");
  38. struct View_t* menuView = app->activeViews[ToneGenAppView_SharedMenu];
  39. // Set the currently active view
  40. menu_reset(menuView->viewData);
  41. FURI_LOG_D(TAG, "Adding menu options for settings");
  42. menu_add_item(
  43. menuView->viewData,
  44. "Wave Type",
  45. NULL,
  46. SettingsMenuOptions_WaveType,
  47. menu_callback_settings_scene,
  48. app);
  49. menu_add_item(
  50. menuView->viewData,
  51. "Amplitude",
  52. NULL,
  53. SettingsMenuOptions_Amplitude,
  54. menu_callback_settings_scene,
  55. app);
  56. menu_add_item(
  57. menuView->viewData,
  58. "Period",
  59. NULL,
  60. SettingsMenuOptions_Period,
  61. menu_callback_settings_scene,
  62. app);
  63. view_dispatcher_switch_to_view(app->view_dispatcher, ToneGenAppView_SharedMenu);
  64. }
  65. /** main menu event handler - switches scene based on the event */
  66. bool scene_on_event_settings_scene(void* context, SceneManagerEvent event) {
  67. FURI_LOG_I(TAG, "scene_on_event_settings_scene");
  68. UNUSED(context);
  69. // struct AppContext_t* app = context;
  70. bool consumed = false;
  71. switch(event.type) {
  72. case SceneManagerEventTypeCustom:
  73. // switch(event.event) {
  74. // case ToneGenAppEvent_StartPlayback:
  75. // scene_manager_next_scene(app->scene_manager, ToneGenAppScene_Playback);
  76. // consumed = true;
  77. // break;
  78. // case ToneGenAppEvent_AdjustTone:
  79. // scene_manager_next_scene(app->scene_manager, ToneGenAppScene_AdjustTone);
  80. // consumed = true;
  81. // break;
  82. // }
  83. break;
  84. default: // eg. SceneManagerEventTypeBack, SceneManagerEventTypeTick
  85. consumed = false;
  86. break;
  87. }
  88. return consumed;
  89. }
  90. void scene_on_exit_settings_scene(void* context) {
  91. FURI_LOG_I(TAG, "scene_on_exit_settings_scene");
  92. UNUSED(context);
  93. }