From 47a3ffb15abe74db60ae6804169e593424d3d575 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Mon, 9 Nov 2015 11:56:40 -0800 Subject: [PATCH] Insulate ui::Context a bit from its clients. Add accessor methods. --- firmware/application/main.cpp | 10 +++++----- firmware/application/ui_audio.cpp | 4 ++-- firmware/application/ui_baseband_stats_view.cpp | 4 ++-- firmware/application/ui_channel.cpp | 4 ++-- firmware/application/ui_receiver.cpp | 6 ++++-- firmware/application/ui_rssi.cpp | 4 ++-- firmware/application/ui_spectrum.hpp | 4 ++-- firmware/common/ui_widget.cpp | 6 +++--- firmware/common/ui_widget.hpp | 16 +++++++++++++--- 9 files changed, 35 insertions(+), 23 deletions(-) diff --git a/firmware/application/main.cpp b/firmware/application/main.cpp index 39d1128e..3b10085e 100755 --- a/firmware/application/main.cpp +++ b/firmware/application/main.cpp @@ -125,7 +125,7 @@ private: void handle_application_queue() { std::array message_buffer; while(Message* const message = shared_memory.application_queue.pop(message_buffer)) { - context.message_map.send(message); + context.message_map().send(message); } } @@ -192,7 +192,7 @@ private: if( switches_state[i] ) { const auto event = static_cast(i); if( !event_bubble_key(event) ) { - context.focus_manager.update(top_widget, event); + context.focus_manager().update(top_widget, event); } } } @@ -211,7 +211,7 @@ private: } bool event_bubble_key(const ui::KeyEvent event) { - auto target = context.focus_manager.focus_widget(); + auto target = context.focus_manager().focus_widget(); while( (target != nullptr) && !target->on_key(event) ) { target = target->parent(); } @@ -221,7 +221,7 @@ private: } void event_bubble_encoder(const ui::EncoderEvent event) { - auto target = context.focus_manager.focus_widget(); + auto target = context.focus_manager().focus_widget(); while( (target != nullptr) && !target->on_encoder(event) ) { target = target->parent(); } @@ -251,7 +251,7 @@ int main(void) { ui::Painter painter; EventDispatcher event_dispatcher { &system_view, painter, context }; - auto& message_handlers = context.message_map; + auto& message_handlers = context.message_map(); message_handlers.register_handler(Message::ID::Shutdown, [&event_dispatcher](const Message* const) { event_dispatcher.request_stop(); diff --git a/firmware/application/ui_audio.cpp b/firmware/application/ui_audio.cpp index 25f06d70..0dd698e2 100644 --- a/firmware/application/ui_audio.cpp +++ b/firmware/application/ui_audio.cpp @@ -26,7 +26,7 @@ namespace ui { void Audio::on_show() { - context().message_map.register_handler(Message::ID::AudioStatistics, + context().message_map().register_handler(Message::ID::AudioStatistics, [this](const Message* const p) { this->on_statistics_update(static_cast(p)->statistics); } @@ -34,7 +34,7 @@ void Audio::on_show() { } void Audio::on_hide() { - context().message_map.unregister_handler(Message::ID::AudioStatistics); + context().message_map().unregister_handler(Message::ID::AudioStatistics); } void Audio::paint(Painter& painter) { diff --git a/firmware/application/ui_baseband_stats_view.cpp b/firmware/application/ui_baseband_stats_view.cpp index 2e54b67b..fcf0816e 100644 --- a/firmware/application/ui_baseband_stats_view.cpp +++ b/firmware/application/ui_baseband_stats_view.cpp @@ -38,7 +38,7 @@ BasebandStatsView::BasebandStatsView() { } void BasebandStatsView::on_show() { - context().message_map.register_handler(Message::ID::BasebandStatistics, + context().message_map().register_handler(Message::ID::BasebandStatistics, [this](const Message* const p) { this->on_statistics_update(static_cast(p)->statistics); } @@ -46,7 +46,7 @@ void BasebandStatsView::on_show() { } void BasebandStatsView::on_hide() { - context().message_map.unregister_handler(Message::ID::BasebandStatistics); + context().message_map().unregister_handler(Message::ID::BasebandStatistics); } diff --git a/firmware/application/ui_channel.cpp b/firmware/application/ui_channel.cpp index 0369c5ae..a5c8a568 100644 --- a/firmware/application/ui_channel.cpp +++ b/firmware/application/ui_channel.cpp @@ -26,7 +26,7 @@ namespace ui { void Channel::on_show() { - context().message_map.register_handler(Message::ID::ChannelStatistics, + context().message_map().register_handler(Message::ID::ChannelStatistics, [this](const Message* const p) { this->on_statistics_update(static_cast(p)->statistics); } @@ -34,7 +34,7 @@ void Channel::on_show() { } void Channel::on_hide() { - context().message_map.unregister_handler(Message::ID::ChannelStatistics); + context().message_map().unregister_handler(Message::ID::ChannelStatistics); } void Channel::paint(Painter& painter) { diff --git a/firmware/application/ui_receiver.cpp b/firmware/application/ui_receiver.cpp index 7f6ff3cf..bf33cb25 100644 --- a/firmware/application/ui_receiver.cpp +++ b/firmware/application/ui_receiver.cpp @@ -496,7 +496,8 @@ ReceiverView::~ReceiverView() { } void ReceiverView::on_show() { - context().message_map.register_handler(Message::ID::FSKPacket, + auto& message_map = context().message_map(); + message_map.register_handler(Message::ID::FSKPacket, [this](Message* const p) { const auto message = static_cast(p); this->on_packet_ais(*message); @@ -505,7 +506,8 @@ void ReceiverView::on_show() { } void ReceiverView::on_hide() { - context().message_map.unregister_handler(Message::ID::FSKPacket); + auto& message_map = context().message_map(); + message_map.unregister_handler(Message::ID::FSKPacket); } void ReceiverView::on_packet_ais(const FSKPacketMessage& message) { diff --git a/firmware/application/ui_rssi.cpp b/firmware/application/ui_rssi.cpp index 72e58d97..7cbba2a1 100644 --- a/firmware/application/ui_rssi.cpp +++ b/firmware/application/ui_rssi.cpp @@ -26,7 +26,7 @@ namespace ui { void RSSI::on_show() { - context().message_map.register_handler(Message::ID::RSSIStatistics, + context().message_map().register_handler(Message::ID::RSSIStatistics, [this](const Message* const p) { this->on_statistics_update(static_cast(p)->statistics); } @@ -34,7 +34,7 @@ void RSSI::on_show() { } void RSSI::on_hide() { - context().message_map.unregister_handler(Message::ID::RSSIStatistics); + context().message_map().unregister_handler(Message::ID::RSSIStatistics); } void RSSI::paint(Painter& painter) { diff --git a/firmware/application/ui_spectrum.hpp b/firmware/application/ui_spectrum.hpp index e481d45f..6a10088f 100644 --- a/firmware/application/ui_spectrum.hpp +++ b/firmware/application/ui_spectrum.hpp @@ -252,7 +252,7 @@ public: } void on_show() override { - context().message_map.register_handler(Message::ID::ChannelSpectrum, + context().message_map().register_handler(Message::ID::ChannelSpectrum, [this](const Message* const p) { this->on_channel_spectrum(reinterpret_cast(p)->spectrum); } @@ -260,7 +260,7 @@ public: } void on_hide() override { - context().message_map.unregister_handler(Message::ID::ChannelSpectrum); + context().message_map().unregister_handler(Message::ID::ChannelSpectrum); } void set_parent_rect(const Rect new_parent_rect) override { diff --git a/firmware/common/ui_widget.cpp b/firmware/common/ui_widget.cpp index 576d52a3..79ddafe1 100644 --- a/firmware/common/ui_widget.cpp +++ b/firmware/common/ui_widget.cpp @@ -200,7 +200,7 @@ void Widget::hidden(bool hide) { } void Widget::focus() { - context().focus_manager.set_focus_widget(this); + context().focus_manager().set_focus_widget(this); } void Widget::on_focus() { @@ -208,7 +208,7 @@ void Widget::on_focus() { } void Widget::blur() { - context().focus_manager.set_focus_widget(nullptr); + context().focus_manager().set_focus_widget(nullptr); } void Widget::on_blur() { @@ -220,7 +220,7 @@ bool Widget::focusable() const { } bool Widget::has_focus() { - return (context().focus_manager.focus_widget() == this); + return (context().focus_manager().focus_widget() == this); } Widget* Widget::last_child_focus() const { diff --git a/firmware/common/ui_widget.hpp b/firmware/common/ui_widget.hpp index 45b20cad..f54bc677 100644 --- a/firmware/common/ui_widget.hpp +++ b/firmware/common/ui_widget.hpp @@ -47,9 +47,19 @@ std::string to_string_dec_uint(const uint32_t n, const int32_t l = 0, const char std::string to_string_dec_int(const int32_t n, const int32_t l = 0, const char fill = 0); std::string to_string_hex(const uint32_t n, const int32_t l = 0); -struct Context { - FocusManager focus_manager; - MessageHandlerMap message_map; +class Context { +public: + FocusManager& focus_manager() { + return focus_manager_; + } + + MessageHandlerMap& message_map() { + return message_map_; + } + +private: + FocusManager focus_manager_; + MessageHandlerMap message_map_; }; class Widget {