subghz-view-spectrum-settings.cpp 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #include "subghz-view-spectrum-settings.h"
  2. #include <callback-connector.h>
  3. struct SpectrumSettingsModel {
  4. uint32_t start_freq;
  5. };
  6. /***************************************************************************************/
  7. static void draw_callback(Canvas* canvas, void* _model) {
  8. SpectrumSettingsModel* model = static_cast<SpectrumSettingsModel*>(_model);
  9. const uint8_t str_size = 64;
  10. char str_buffer[str_size];
  11. canvas_clear(canvas);
  12. snprintf(str_buffer, str_size, "Start freq < %ld > MHz", model->start_freq);
  13. canvas_draw_str_aligned(canvas, 64, 32, AlignCenter, AlignCenter, str_buffer);
  14. }
  15. static bool input_callback(InputEvent* event, void* context) {
  16. SubghzViewSpectrumSettings* _this = static_cast<SubghzViewSpectrumSettings*>(context);
  17. bool consumed = false;
  18. // Process key presses only
  19. if(event->type == InputTypeShort) {
  20. if(event->key == InputKeyOk) {
  21. _this->call_ok_callback();
  22. consumed = true;
  23. } else if(event->key == InputKeyLeft) {
  24. with_view_model_cpp(_this->get_view(), SpectrumSettingsModel, model, {
  25. model->start_freq--;
  26. return true;
  27. });
  28. consumed = true;
  29. } else if(event->key == InputKeyRight) {
  30. with_view_model_cpp(_this->get_view(), SpectrumSettingsModel, model, {
  31. model->start_freq++;
  32. return true;
  33. });
  34. consumed = true;
  35. }
  36. }
  37. return consumed;
  38. }
  39. /***************************************************************************************/
  40. View* SubghzViewSpectrumSettings::get_view() {
  41. return view;
  42. }
  43. void SubghzViewSpectrumSettings::set_ok_callback(OkCallback callback, void* context) {
  44. ok_callback = callback;
  45. ok_callback_context = context;
  46. }
  47. void SubghzViewSpectrumSettings::call_ok_callback() {
  48. if(ok_callback != nullptr) {
  49. ok_callback(ok_callback_context);
  50. }
  51. }
  52. void SubghzViewSpectrumSettings::set_start_freq(uint32_t start_freq) {
  53. with_view_model_cpp(view, SpectrumSettingsModel, model, {
  54. model->start_freq = start_freq;
  55. return true;
  56. });
  57. }
  58. uint32_t SubghzViewSpectrumSettings::get_start_freq() {
  59. uint32_t result;
  60. with_view_model_cpp(view, SpectrumSettingsModel, model, {
  61. result = model->start_freq;
  62. return false;
  63. });
  64. return result;
  65. }
  66. SubghzViewSpectrumSettings::SubghzViewSpectrumSettings() {
  67. view = view_alloc();
  68. view_set_context(view, this);
  69. view_allocate_model(view, ViewModelTypeLocking, sizeof(SpectrumSettingsModel));
  70. view_set_draw_callback(view, draw_callback);
  71. view_set_input_callback(view, input_callback);
  72. }
  73. SubghzViewSpectrumSettings::~SubghzViewSpectrumSettings() {
  74. view_free(view);
  75. }