diff --git a/firmware/application/apps/ui_recon.hpp b/firmware/application/apps/ui_recon.hpp index 9b369df6..0fd4b5ce 100644 --- a/firmware/application/apps/ui_recon.hpp +++ b/firmware/application/apps/ui_recon.hpp @@ -266,7 +266,7 @@ namespace ui { }; RSSI rssi { - { 0 * 16, 2 * 16, 15 * 16, 8 }, + { 0 * 16, 2 * 16, 240 - 4 * 8 , 16 }, }; Text text_cycle { @@ -278,7 +278,7 @@ namespace ui { }; Text desc_cycle { - {0, 4 * 16, 240, 16 }, + {0, 4 * 16, 240 , 16 }, }; /* BigFrequency big_display { //Show frequency in glamour @@ -299,12 +299,12 @@ namespace ui { }; Button button_recon_setup { - { 240 - 4 * 8 , 2 * 16 + 8 , 4 * 8, 28 }, + { 240 - 4 * 8 , 2 * 16 , 4 * 8, 28 }, "OPT" }; Button button_looking_glass { - { 240 - 5 * 8 , 6 * 16 , 5 * 8, 28 }, + { 240 - 5 * 8 , 6 * 16 - 4 , 5 * 8, 28 }, "GLASS" }; @@ -314,7 +314,7 @@ namespace ui { }; Text file_name { //Show file used - { 0 , 8 * 16 + 4 , 21 * 8, 16 }, + { 0 , 8 * 16 + 6 , 21 * 8, 16 }, }; ButtonWithEncoder button_manual_start { diff --git a/firmware/application/ui/ui_rssi.cpp b/firmware/application/ui/ui_rssi.cpp index 1cfc2d0f..8721c715 100644 --- a/firmware/application/ui/ui_rssi.cpp +++ b/firmware/application/ui/ui_rssi.cpp @@ -32,6 +32,14 @@ namespace ui { + RSSI::RSSI( + Rect parent_rect, + bool instant_exec + ) : Widget { parent_rect }, + instant_exec_ { instant_exec } + { + } + void RSSI::paint(Painter& painter) { const auto r = screen_rect(); @@ -352,6 +360,9 @@ namespace ui { if( on_touch_press) { on_touch_press(*this); } + if( on_select && instant_exec_ ) { + on_select(*this); + } return true; case TouchEvent::Type::End: set_highlighted(false); @@ -359,6 +370,9 @@ namespace ui { if( on_touch_release) { on_touch_release(*this); } + if( on_select && !instant_exec_ ) { + on_select(*this); + } return true; default: return false; diff --git a/firmware/application/ui/ui_rssi.hpp b/firmware/application/ui/ui_rssi.hpp index bd64244f..d4adf6ce 100644 --- a/firmware/application/ui/ui_rssi.hpp +++ b/firmware/application/ui/ui_rssi.hpp @@ -39,12 +39,15 @@ namespace ui { std::function on_dir { }; std::function on_highlight { }; + RSSI(Rect parent_rect, bool instant_exec); // instant_exec: Execute on_select when you touching instead of releasing RSSI( - const Rect parent_rect - ) : Widget { parent_rect }, - min_ { 0 }, - avg_ { 0 }, - max_ { 0 } + Rect parent_rect + ) : RSSI { parent_rect, false } + { + } + + RSSI( + ) : RSSI { { }, { } } { } @@ -54,19 +57,19 @@ namespace ui { int32_t get_delta(); void set_vertical_rssi(bool enabled); void set_peak(bool enabled, size_t duration); - + void paint(Painter& painter) override; void on_focus() override; bool on_key(const KeyEvent key) override; bool on_touch(const TouchEvent event) override; private: - int32_t min_; - int32_t avg_; - int32_t max_; + int32_t min_ = 0; + int32_t avg_ = 0; + int32_t max_ = 0; int32_t peak_ = 0 ; size_t peak_duration_ = 0 ; - bool instant_exec_ { false }; + bool instant_exec_ { false }; bool pitch_rssi_enabled = false; bool vertical_rssi_enabled = false; // scale [vertically/from bottom to top]