diff --git a/firmware/application/analog_audio_app.cpp b/firmware/application/analog_audio_app.cpp index 408b13beb..44d72c426 100644 --- a/firmware/application/analog_audio_app.cpp +++ b/firmware/application/analog_audio_app.cpp @@ -140,7 +140,7 @@ AnalogAudioView::AnalogAudioView( }; record_view.on_error = [&nav](std::string message) { - nav.display_error(message); + nav.display_modal("Error", message); }; audio::output::start(); diff --git a/firmware/application/capture_app.cpp b/firmware/application/capture_app.cpp index 160066b02..cff3bf0b4 100644 --- a/firmware/application/capture_app.cpp +++ b/firmware/application/capture_app.cpp @@ -71,7 +71,7 @@ CaptureAppView::CaptureAppView(NavigationView& nav) { record_view.set_sampling_rate(sampling_rate / 8); record_view.on_error = [&nav](std::string message) { - nav.display_error(message); + nav.display_modal("Error", message); }; } diff --git a/firmware/application/ui_navigation.cpp b/firmware/application/ui_navigation.cpp index 6fb735af9..3841cb979 100644 --- a/firmware/application/ui_navigation.cpp +++ b/firmware/application/ui_navigation.cpp @@ -131,10 +131,13 @@ void NavigationView::pop() { } } -void NavigationView::display_error(const std::string& message) { +void NavigationView::display_modal( + const std::string& title, + const std::string& message +) { /* If a modal view is already visible, don't display another */ if( !modal_view ) { - modal_view = push(message); + modal_view = push(title, message); } } @@ -290,7 +293,12 @@ void NotImplementedView::focus() { /* ModalMessageView ******************************************************/ -ModalMessageView::ModalMessageView(NavigationView& nav, std::string message) { +ModalMessageView::ModalMessageView( + NavigationView& nav, + const std::string& title, + const std::string& message +) : title_ { title } +{ button_done.on_select = [&nav](Button&){ nav.pop(); }; diff --git a/firmware/application/ui_navigation.hpp b/firmware/application/ui_navigation.hpp index b103189b2..b53a237cf 100644 --- a/firmware/application/ui_navigation.hpp +++ b/firmware/application/ui_navigation.hpp @@ -102,7 +102,7 @@ public: void pop(); - void display_error(const std::string& message); + void display_modal(const std::string& title, const std::string& message); void focus() override; @@ -210,11 +210,19 @@ private: class ModalMessageView : public View { public: - ModalMessageView(NavigationView& nav, std::string message); + ModalMessageView( + NavigationView& nav, + const std::string& title, + const std::string& message + ); void focus() override; + std::string title() const override { return title_; }; + private: + const std::string title_; + Text text_message { { 0 * 8, 7 * 16, 30 * 8, 16 }, ""