camera_suite_scene_settings.c 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #include "../camera_suite.h"
  2. #include <lib/toolbox/value_index.h>
  3. // Camera orientation, in degrees.
  4. const char* const orientation_text[4] = {
  5. "0",
  6. "90",
  7. "180",
  8. "270",
  9. };
  10. const uint32_t orientation_value[4] = {
  11. CameraSuiteOrientation0,
  12. CameraSuiteOrientation90,
  13. CameraSuiteOrientation180,
  14. CameraSuiteOrientation270,
  15. };
  16. // Possible dithering types for the camera.
  17. const char* const dither_text[28] = {
  18. "Floyd-Steinberg",
  19. "Stucki",
  20. "Jarvis-Judice-Ninke",
  21. };
  22. const uint32_t dither_value[4] = {
  23. CameraSuiteDitherFloydSteinberg,
  24. CameraSuiteDitherStucki,
  25. CameraSuiteDitherJarvisJudiceNinke,
  26. };
  27. const char* const flash_text[2] = {
  28. "OFF",
  29. "ON",
  30. };
  31. const uint32_t flash_value[2] = {
  32. CameraSuiteFlashOff,
  33. CameraSuiteFlashOn,
  34. };
  35. const char* const haptic_text[2] = {
  36. "OFF",
  37. "ON",
  38. };
  39. const uint32_t haptic_value[2] = {
  40. CameraSuiteHapticOff,
  41. CameraSuiteHapticOn,
  42. };
  43. const char* const speaker_text[2] = {
  44. "OFF",
  45. "ON",
  46. };
  47. const uint32_t speaker_value[2] = {
  48. CameraSuiteSpeakerOff,
  49. CameraSuiteSpeakerOn,
  50. };
  51. const char* const led_text[2] = {
  52. "OFF",
  53. "ON",
  54. };
  55. const uint32_t led_value[2] = {
  56. CameraSuiteLedOff,
  57. CameraSuiteLedOn,
  58. };
  59. static void camera_suite_scene_settings_set_camera_orientation(VariableItem* item) {
  60. CameraSuite* app = variable_item_get_context(item);
  61. uint8_t index = variable_item_get_current_value_index(item);
  62. variable_item_set_current_value_text(item, orientation_text[index]);
  63. app->orientation = orientation_value[index];
  64. }
  65. static void camera_suite_scene_settings_set_camera_dither(VariableItem* item) {
  66. CameraSuite* app = variable_item_get_context(item);
  67. uint8_t index = variable_item_get_current_value_index(item);
  68. variable_item_set_current_value_text(item, dither_text[index]);
  69. app->dither = dither_value[index];
  70. }
  71. static void camera_suite_scene_settings_set_flash(VariableItem* item) {
  72. CameraSuite* app = variable_item_get_context(item);
  73. uint8_t index = variable_item_get_current_value_index(item);
  74. variable_item_set_current_value_text(item, flash_text[index]);
  75. app->flash = flash_value[index];
  76. }
  77. static void camera_suite_scene_settings_set_haptic(VariableItem* item) {
  78. CameraSuite* app = variable_item_get_context(item);
  79. uint8_t index = variable_item_get_current_value_index(item);
  80. variable_item_set_current_value_text(item, haptic_text[index]);
  81. app->haptic = haptic_value[index];
  82. }
  83. static void camera_suite_scene_settings_set_speaker(VariableItem* item) {
  84. CameraSuite* app = variable_item_get_context(item);
  85. uint8_t index = variable_item_get_current_value_index(item);
  86. variable_item_set_current_value_text(item, speaker_text[index]);
  87. app->speaker = speaker_value[index];
  88. }
  89. static void camera_suite_scene_settings_set_led(VariableItem* item) {
  90. CameraSuite* app = variable_item_get_context(item);
  91. uint8_t index = variable_item_get_current_value_index(item);
  92. variable_item_set_current_value_text(item, led_text[index]);
  93. app->led = led_value[index];
  94. }
  95. void camera_suite_scene_settings_submenu_callback(void* context, uint32_t index) {
  96. CameraSuite* app = context;
  97. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  98. }
  99. void camera_suite_scene_settings_on_enter(void* context) {
  100. CameraSuite* app = context;
  101. VariableItem* item;
  102. uint8_t value_index;
  103. // Camera Orientation
  104. item = variable_item_list_add(
  105. app->variable_item_list,
  106. "Orientation:",
  107. 4,
  108. camera_suite_scene_settings_set_camera_orientation,
  109. app);
  110. value_index = value_index_uint32(app->orientation, orientation_value, 4);
  111. variable_item_set_current_value_index(item, value_index);
  112. variable_item_set_current_value_text(item, orientation_text[value_index]);
  113. // Camera Dither Type
  114. item = variable_item_list_add(
  115. app->variable_item_list,
  116. "Dithering Type:",
  117. 3,
  118. camera_suite_scene_settings_set_camera_dither,
  119. app);
  120. value_index = value_index_uint32(app->dither, dither_value, 3);
  121. variable_item_set_current_value_index(item, value_index);
  122. variable_item_set_current_value_text(item, dither_text[value_index]);
  123. // Flash ON/OFF
  124. item = variable_item_list_add(
  125. app->variable_item_list, "Flash:", 2, camera_suite_scene_settings_set_flash, app);
  126. value_index = value_index_uint32(app->flash, flash_value, 2);
  127. variable_item_set_current_value_index(item, value_index);
  128. variable_item_set_current_value_text(item, flash_text[value_index]);
  129. // Haptic FX ON/OFF
  130. item = variable_item_list_add(
  131. app->variable_item_list, "Haptic FX:", 2, camera_suite_scene_settings_set_haptic, app);
  132. value_index = value_index_uint32(app->haptic, haptic_value, 2);
  133. variable_item_set_current_value_index(item, value_index);
  134. variable_item_set_current_value_text(item, haptic_text[value_index]);
  135. // Sound FX ON/OFF
  136. item = variable_item_list_add(
  137. app->variable_item_list, "Sound FX:", 2, camera_suite_scene_settings_set_speaker, app);
  138. value_index = value_index_uint32(app->speaker, speaker_value, 2);
  139. variable_item_set_current_value_index(item, value_index);
  140. variable_item_set_current_value_text(item, speaker_text[value_index]);
  141. // LED FX ON/OFF
  142. item = variable_item_list_add(
  143. app->variable_item_list, "LED FX:", 2, camera_suite_scene_settings_set_led, app);
  144. value_index = value_index_uint32(app->led, led_value, 2);
  145. variable_item_set_current_value_index(item, value_index);
  146. variable_item_set_current_value_text(item, led_text[value_index]);
  147. view_dispatcher_switch_to_view(app->view_dispatcher, CameraSuiteViewIdSettings);
  148. }
  149. bool camera_suite_scene_settings_on_event(void* context, SceneManagerEvent event) {
  150. CameraSuite* app = context;
  151. UNUSED(app);
  152. bool consumed = false;
  153. if(event.type == SceneManagerEventTypeCustom) {
  154. }
  155. return consumed;
  156. }
  157. void camera_suite_scene_settings_on_exit(void* context) {
  158. CameraSuite* app = context;
  159. variable_item_list_set_selected_item(app->variable_item_list, 0);
  160. variable_item_list_reset(app->variable_item_list);
  161. }