diff --git a/apps/on_boarding/update_controller.cpp b/apps/on_boarding/update_controller.cpp index 72b2a86a5..e94b13777 100644 --- a/apps/on_boarding/update_controller.cpp +++ b/apps/on_boarding/update_controller.cpp @@ -3,18 +3,12 @@ #include UpdateController::UpdateController() : - ViewController(nullptr), - m_contentView() + MessageController(I18n::Message::UpdateAvailable, I18n::Message::UpdateMessage1, I18n::Message::UpdateMessage2, I18n::Message::UpdateMessage3, I18n::Message::UpdateMessage4) { } -View * UpdateController::view() { - return &m_contentView; -} - bool UpdateController::handleEvent(Ion::Events::Event event) { - if (event != Ion::Events::Back && event != Ion::Events::OnOff) { - app()->dismissModalViewController(); + if (MessageController::handleEvent(event)) { AppsContainer * appsContainer = (AppsContainer *)app()->container(); if (appsContainer->activeApp()->snapshot() == appsContainer->onBoardingAppSnapshot()) { appsContainer->refreshPreferences(); @@ -25,58 +19,3 @@ bool UpdateController::handleEvent(Ion::Events::Event event) { return false; } -UpdateController::ContentView::ContentView() : - m_titleTextView(KDText::FontSize::Large, I18n::Message::UpdateAvailable, 0.5f, 0.5f), - m_messageTextView1(KDText::FontSize::Small, I18n::Message::UpdateMessage1, 0.5f, 0.5f), - m_messageTextView2(KDText::FontSize::Small, I18n::Message::UpdateMessage2, 0.5f, 0.5f), - m_messageTextView3(KDText::FontSize::Small, I18n::Message::UpdateMessage3, 0.5f, 0.5f), - m_messageTextView4(KDText::FontSize::Small, I18n::Message::UpdateMessage4, 0.5f, 0.5f, Palette::YellowDark), - m_skipView(KDText::FontSize::Small, I18n::Message::Skip, 1.0f, 0.5f), - m_okView() -{ -} - -void UpdateController::ContentView::drawRect(KDContext * ctx, KDRect rect) const { - ctx->fillRect(bounds(), KDColorWhite); -} - -int UpdateController::ContentView::numberOfSubviews() const { - return 7; -} - -View * UpdateController::ContentView::subviewAtIndex(int index) { - switch (index) { - case 0: - return &m_titleTextView; - case 1: - return &m_messageTextView1; - case 2: - return &m_messageTextView2; - case 3: - return &m_messageTextView3; - case 4: - return &m_messageTextView4; - case 5: - return &m_skipView; - case 6: - return &m_okView; - default: - assert(false); - return nullptr; - } -} - -void UpdateController::ContentView::layoutSubviews() { - KDCoordinate height = bounds().height(); - KDCoordinate width = bounds().width(); - KDCoordinate titleHeight = m_titleTextView.minimalSizeForOptimalDisplay().height(); - KDCoordinate textHeight = KDText::charSize(KDText::FontSize::Small).height(); - m_titleTextView.setFrame(KDRect(0, k_titleMargin, width, titleHeight)); - m_messageTextView1.setFrame(KDRect(0, k_paragraphHeight, width, textHeight)); - m_messageTextView2.setFrame(KDRect(0, k_paragraphHeight+textHeight, width, textHeight)); - m_messageTextView3.setFrame(KDRect(0, k_paragraphHeight+2*textHeight+k_paragraphMargin, width, textHeight)); - m_messageTextView4.setFrame(KDRect(0, k_paragraphHeight+3*textHeight+k_paragraphMargin, width, textHeight)); - KDSize okSize = m_okView.minimalSizeForOptimalDisplay(); - m_skipView.setFrame(KDRect(0, height-k_bottomMargin-textHeight, width-okSize.width()-k_okMargin-k_skipMargin, textHeight)); - m_okView.setFrame(KDRect(width - okSize.width()-k_okMargin, height-okSize.height()-k_okMargin, okSize)); -} diff --git a/apps/on_boarding/update_controller.h b/apps/on_boarding/update_controller.h index 1c06fe5da..aa98726b3 100644 --- a/apps/on_boarding/update_controller.h +++ b/apps/on_boarding/update_controller.h @@ -1,38 +1,12 @@ #ifndef ON_BOARDING_UPDATE_CONTROLLER_H #define ON_BOARDING_UPDATE_CONTROLLER_H -#include -#include "../shared/ok_view.h" +#include "../shared/message_controller.h" -class UpdateController : public ViewController { +class UpdateController : public MessageController { public: UpdateController(); - View * view() override; bool handleEvent(Ion::Events::Event event) override; -private: - class ContentView : public View { - public: - ContentView(); - void drawRect(KDContext * ctx, KDRect rect) const override; - private: - constexpr static KDCoordinate k_titleMargin = 40; - constexpr static KDCoordinate k_paragraphHeight = 100; - constexpr static KDCoordinate k_paragraphMargin = 13; - constexpr static KDCoordinate k_bottomMargin = 13; - constexpr static KDCoordinate k_okMargin = 10; - constexpr static KDCoordinate k_skipMargin = 4; - int numberOfSubviews() const override; - View * subviewAtIndex(int index) override; - void layoutSubviews() override; - MessageTextView m_titleTextView; - MessageTextView m_messageTextView1; - MessageTextView m_messageTextView2; - MessageTextView m_messageTextView3; - MessageTextView m_messageTextView4; - MessageTextView m_skipView; - Shared::OkView m_okView; - }; - ContentView m_contentView; }; #endif diff --git a/apps/shared/Makefile b/apps/shared/Makefile index d50e647c5..e4dcebb7f 100644 --- a/apps/shared/Makefile +++ b/apps/shared/Makefile @@ -27,6 +27,7 @@ app_objs += $(addprefix apps/shared/,\ list_controller.o\ list_parameter_controller.o\ memoized_curve_view_range.o\ + message_controller.o\ new_function_cell.o\ ok_view.o\ range_parameter_controller.o\ diff --git a/apps/shared/message_controller.cpp b/apps/shared/message_controller.cpp new file mode 100644 index 000000000..e9331ef3f --- /dev/null +++ b/apps/shared/message_controller.cpp @@ -0,0 +1,77 @@ +#include "message_controller.h" +#include "../apps_container.h" +#include + +MessageController::MessageController(I18n::Message title, I18n::Message message1, I18n::Message message2, I18n::Message message3, I18n::Message message4) : + ViewController(nullptr), + m_contentView(title, message1, message2, message3, message4) +{ +} + +View * MessageController::view() { + return &m_contentView; +} + +bool MessageController::handleEvent(Ion::Events::Event event) { + if (event != Ion::Events::Back && event != Ion::Events::OnOff) { + app()->dismissModalViewController(); + return true; + } + return false; +} + +MessageController::ContentView::ContentView(I18n::Message title, I18n::Message message1, I18n::Message message2, I18n::Message message3, I18n::Message message4) : + m_titleTextView(KDText::FontSize::Large, title, 0.5f, 0.5f), + m_messageTextView1(KDText::FontSize::Small, message1, 0.5f, 0.5f), + m_messageTextView2(KDText::FontSize::Small, message2, 0.5f, 0.5f), + m_messageTextView3(KDText::FontSize::Small, message3, 0.5f, 0.5f), + m_messageTextView4(KDText::FontSize::Small, message4, 0.5f, 0.5f, Palette::YellowDark), + m_skipView(KDText::FontSize::Small, I18n::Message::Skip, 1.0f, 0.5f), + m_okView() +{ +} + +void MessageController::ContentView::drawRect(KDContext * ctx, KDRect rect) const { + ctx->fillRect(bounds(), KDColorWhite); +} + +int MessageController::ContentView::numberOfSubviews() const { + return 7; +} + +View * MessageController::ContentView::subviewAtIndex(int index) { + switch (index) { + case 0: + return &m_titleTextView; + case 1: + return &m_messageTextView1; + case 2: + return &m_messageTextView2; + case 3: + return &m_messageTextView3; + case 4: + return &m_messageTextView4; + case 5: + return &m_skipView; + case 6: + return &m_okView; + default: + assert(false); + return nullptr; + } +} + +void MessageController::ContentView::layoutSubviews() { + KDCoordinate height = bounds().height(); + KDCoordinate width = bounds().width(); + KDCoordinate titleHeight = m_titleTextView.minimalSizeForOptimalDisplay().height(); + KDCoordinate textHeight = KDText::charSize(KDText::FontSize::Small).height(); + m_titleTextView.setFrame(KDRect(0, k_titleMargin, width, titleHeight)); + m_messageTextView1.setFrame(KDRect(0, k_paragraphHeight, width, textHeight)); + m_messageTextView2.setFrame(KDRect(0, k_paragraphHeight+textHeight, width, textHeight)); + m_messageTextView3.setFrame(KDRect(0, k_paragraphHeight+2*textHeight+k_paragraphMargin, width, textHeight)); + m_messageTextView4.setFrame(KDRect(0, k_paragraphHeight+3*textHeight+k_paragraphMargin, width, textHeight)); + KDSize okSize = m_okView.minimalSizeForOptimalDisplay(); + m_skipView.setFrame(KDRect(0, height-k_bottomMargin-textHeight, width-okSize.width()-k_okMargin-k_skipMargin, textHeight)); + m_okView.setFrame(KDRect(width - okSize.width()-k_okMargin, height-okSize.height()-k_okMargin, okSize)); +} diff --git a/apps/shared/message_controller.h b/apps/shared/message_controller.h new file mode 100644 index 000000000..414ac0aae --- /dev/null +++ b/apps/shared/message_controller.h @@ -0,0 +1,39 @@ +#ifndef SHARED_MESSAGE_CONTROLLER_H +#define SHARED_MESSAGE_CONTROLLER_H + +#include +#include "ok_view.h" + +class MessageController : public ViewController { +public: + MessageController(I18n::Message title, I18n::Message message1, I18n::Message message2, I18n::Message message3, I18n::Message message4); + View * view() override; + bool handleEvent(Ion::Events::Event event) override; +private: + class ContentView : public View { + public: + ContentView(I18n::Message title, I18n::Message message1, I18n::Message message2, I18n::Message message3, I18n::Message message4); + void drawRect(KDContext * ctx, KDRect rect) const override; + private: + constexpr static KDCoordinate k_titleMargin = 40; + constexpr static KDCoordinate k_paragraphHeight = 100; + constexpr static KDCoordinate k_paragraphMargin = 13; + constexpr static KDCoordinate k_bottomMargin = 13; + constexpr static KDCoordinate k_okMargin = 10; + constexpr static KDCoordinate k_skipMargin = 4; + int numberOfSubviews() const override; + View * subviewAtIndex(int index) override; + void layoutSubviews() override; + MessageTextView m_titleTextView; + MessageTextView m_messageTextView1; + MessageTextView m_messageTextView2; + MessageTextView m_messageTextView3; + MessageTextView m_messageTextView4; + MessageTextView m_skipView; + Shared::OkView m_okView; + }; + ContentView m_contentView; +}; + +#endif +