diff --git a/escher/include/escher/warning_controller.h b/escher/include/escher/warning_controller.h index c45c0304e..f89f9ffc6 100644 --- a/escher/include/escher/warning_controller.h +++ b/escher/include/escher/warning_controller.h @@ -10,6 +10,7 @@ class WarningController : public ViewController { public: WarningController(Responder * parentResponder, I18n::Message warningMessage); void setLabel(I18n::Message message); + void setLabelAndSpecialExitKeys(I18n::Message message); const char * title() override; View * view() override; bool handleEvent(Ion::Events::Event event) override; @@ -30,6 +31,7 @@ private: ContentView m_contentView; I18n::Message m_warningMessage; + bool m_exitOnOKBackEXE; }; #endif diff --git a/escher/src/app.cpp b/escher/src/app.cpp index b2b8ec5d0..638cace85 100644 --- a/escher/src/app.cpp +++ b/escher/src/app.cpp @@ -97,7 +97,7 @@ void App::dismissModalViewController() { } void App::displayWarning(I18n::Message warningMessage) { - m_warningController.setLabel(warningMessage); + m_warningController.setLabelAndSpecialExitKeys(warningMessage); m_modalViewController.displayModalViewController(&m_warningController, 0.5f, 0.5f); } diff --git a/escher/src/warning_controller.cpp b/escher/src/warning_controller.cpp index 371d4cc78..cd36ec22f 100644 --- a/escher/src/warning_controller.cpp +++ b/escher/src/warning_controller.cpp @@ -31,12 +31,19 @@ KDSize WarningController::ContentView::minimalSizeForOptimalDisplay() const { WarningController::WarningController(Responder * parentResponder, I18n::Message warningMessage) : ViewController(parentResponder), m_contentView(), - m_warningMessage(warningMessage) + m_warningMessage(warningMessage), + m_exitOnOKBackEXE(false) { } void WarningController::setLabel(I18n::Message label) { m_contentView.setLabel(label); + m_exitOnOKBackEXE = false; +} + +void WarningController::setLabelAndSpecialExitKeys(I18n::Message message) { + setLabel(message); + m_exitOnOKBackEXE = true; } const char * WarningController::title() { @@ -48,6 +55,14 @@ View * WarningController::view() { } bool WarningController::handleEvent(Ion::Events::Event event) { + if (m_exitOnOKBackEXE) { + if (event != Ion::Events::OK + && event != Ion::Events::EXE + && event != Ion::Events::Back) + { + return false; + } + } app()->dismissModalViewController(); return true; }