From 4a2f92d6cbc15f8f03ca7b3c9de245b3fbc9b3fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Thu, 3 Nov 2016 14:02:20 +0100 Subject: [PATCH] [escher] create a class warning controller Change-Id: I93dabe0d47a7b197cb32cf5ccac8411a181afbb7 --- escher/Makefile | 1 + escher/include/escher.h | 1 + escher/include/escher/warning_controller.h | 33 ++++++++++++++ escher/src/warning_controller.cpp | 52 ++++++++++++++++++++++ 4 files changed, 87 insertions(+) create mode 100644 escher/include/escher/warning_controller.h create mode 100644 escher/src/warning_controller.cpp diff --git a/escher/Makefile b/escher/Makefile index 7c2eafbc8..03198cfee 100644 --- a/escher/Makefile +++ b/escher/Makefile @@ -40,6 +40,7 @@ objs += $(addprefix escher/src/,\ tiled_view.o\ view.o\ view_controller.o\ + warning_controller.o\ window.o\ ) diff --git a/escher/include/escher.h b/escher/include/escher.h index db3bec0af..36b671309 100644 --- a/escher/include/escher.h +++ b/escher/include/escher.h @@ -39,6 +39,7 @@ #include #include #include +#include #include #endif diff --git a/escher/include/escher/warning_controller.h b/escher/include/escher/warning_controller.h new file mode 100644 index 000000000..8ea8bb5f4 --- /dev/null +++ b/escher/include/escher/warning_controller.h @@ -0,0 +1,33 @@ +#ifndef ESCHER_WARNING_CONTROLLER_H +#define ESCHER_WARNING_CONTROLLER_H + +#include +#include +#include + +class WarningController : public ViewController { +public: + WarningController(Responder * parentResponder); + void setLabel(const char *); + const char * title() const override; + View * view() override; + bool handleEvent(Ion::Events::Event event) override; +private: + class ContentView : public SolidColorView { + public: + ContentView(); + void setLabel(const char *); + int numberOfSubviews() const override; + View * subviewAtIndex(int index) override; + void layoutSubviews() override; + KDSize minimalSizeForOptimalDisplay() override; + private: + constexpr static KDCoordinate k_verticalMargin = 40; + constexpr static KDCoordinate k_horizontalMargin = 20; + PointerTextView m_textView; + }; + + ContentView m_contentView; +}; + +#endif diff --git a/escher/src/warning_controller.cpp b/escher/src/warning_controller.cpp new file mode 100644 index 000000000..10a726293 --- /dev/null +++ b/escher/src/warning_controller.cpp @@ -0,0 +1,52 @@ +#include +#include + +WarningController::ContentView::ContentView() : + SolidColorView(KDColorBlack), + m_textView(PointerTextView("", 0.5f, 0.5f, KDColorWhite, KDColorBlack)) +{ +} + +void WarningController::ContentView::setLabel(const char * label) { + m_textView.setText(label); +} + +int WarningController::ContentView::numberOfSubviews() const { + return 1; +} + +View * WarningController::ContentView::subviewAtIndex(int index) { + return &m_textView; +} + +void WarningController::ContentView::layoutSubviews() { + m_textView.setFrame(bounds()); +} + +KDSize WarningController::ContentView::minimalSizeForOptimalDisplay() { + KDSize textSize = m_textView.minimalSizeForOptimalDisplay(); + return KDSize(textSize.width() + k_horizontalMargin, textSize.height() + k_verticalMargin); +} + +WarningController::WarningController(Responder * parentResponder) : + ViewController(parentResponder), + m_contentView(ContentView()) +{ +} + +void WarningController::setLabel(const char * label) { + m_contentView.setLabel(label); +} + +const char * WarningController::title() const { + return "Attention"; +} + +View * WarningController::view() { + return &m_contentView; +} + +bool WarningController::handleEvent(Ion::Events::Event event) { + app()->dismissModalViewController(); + return true; +}