flipbip39_scene_settings.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #include "../flipbip39.h"
  2. #include <lib/toolbox/value_index.h>
  3. enum SettingsIndex {
  4. SettingsIndexHaptic = 10,
  5. SettingsIndexValue1,
  6. SettingsIndexValue2,
  7. };
  8. const char* const haptic_text[2] = {
  9. "OFF",
  10. "ON",
  11. };
  12. const uint32_t haptic_value[2] = {
  13. FlipBip39HapticOff,
  14. FlipBip39HapticOn,
  15. };
  16. const char* const speaker_text[2] = {
  17. "OFF",
  18. "ON",
  19. };
  20. const uint32_t speaker_value[2] = {
  21. FlipBip39SpeakerOff,
  22. FlipBip39SpeakerOn,
  23. };
  24. const char* const led_text[2] = {
  25. "OFF",
  26. "ON",
  27. };
  28. const uint32_t led_value[2] = {
  29. FlipBip39LedOff,
  30. FlipBip39LedOn,
  31. };
  32. static void flipbip39_scene_settings_set_haptic(VariableItem* item) {
  33. FlipBip39* app = variable_item_get_context(item);
  34. uint8_t index = variable_item_get_current_value_index(item);
  35. variable_item_set_current_value_text(item, haptic_text[index]);
  36. app->haptic = haptic_value[index];
  37. }
  38. static void flipbip39_scene_settings_set_speaker(VariableItem* item) {
  39. FlipBip39* app = variable_item_get_context(item);
  40. uint8_t index = variable_item_get_current_value_index(item);
  41. variable_item_set_current_value_text(item, speaker_text[index]);
  42. app->speaker = speaker_value[index];
  43. }
  44. static void flipbip39_scene_settings_set_led(VariableItem* item) {
  45. FlipBip39* app = variable_item_get_context(item);
  46. uint8_t index = variable_item_get_current_value_index(item);
  47. variable_item_set_current_value_text(item, led_text[index]);
  48. app->led = led_value[index];
  49. }
  50. void flipbip39_scene_settings_submenu_callback(void* context, uint32_t index) {
  51. FlipBip39* app = context;
  52. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  53. }
  54. void flipbip39_scene_settings_on_enter(void* context) {
  55. FlipBip39* app = context;
  56. VariableItem* item;
  57. uint8_t value_index;
  58. // Vibro on/off
  59. item = variable_item_list_add(
  60. app->variable_item_list,
  61. "Vibro/Haptic:",
  62. 2,
  63. flipbip39_scene_settings_set_haptic,
  64. app);
  65. value_index = value_index_uint32(app->haptic, haptic_value, 2);
  66. variable_item_set_current_value_index(item, value_index);
  67. variable_item_set_current_value_text(item, haptic_text[value_index]);
  68. // Sound on/off
  69. item = variable_item_list_add(
  70. app->variable_item_list,
  71. "Sound:",
  72. 2,
  73. flipbip39_scene_settings_set_speaker,
  74. app);
  75. value_index = value_index_uint32(app->speaker, speaker_value, 2);
  76. variable_item_set_current_value_index(item, value_index);
  77. variable_item_set_current_value_text(item, speaker_text[value_index]);
  78. // LED Effects on/off
  79. item = variable_item_list_add(
  80. app->variable_item_list,
  81. "LED FX:",
  82. 2,
  83. flipbip39_scene_settings_set_led,
  84. app);
  85. value_index = value_index_uint32(app->led, led_value, 2);
  86. variable_item_set_current_value_index(item, value_index);
  87. variable_item_set_current_value_text(item, led_text[value_index]);
  88. view_dispatcher_switch_to_view(app->view_dispatcher, FlipBip39ViewIdSettings);
  89. }
  90. bool flipbip39_scene_settings_on_event(void* context, SceneManagerEvent event) {
  91. FlipBip39* app = context;
  92. UNUSED(app);
  93. bool consumed = false;
  94. if(event.type == SceneManagerEventTypeCustom) {
  95. }
  96. return consumed;
  97. }
  98. void flipbip39_scene_settings_on_exit(void* context) {
  99. FlipBip39* app = context;
  100. variable_item_list_set_selected_item(app->variable_item_list, 0);
  101. variable_item_list_reset(app->variable_item_list);
  102. }