From 7af2b45f1df7f31390a716b53bd687fccf42a2ba Mon Sep 17 00:00:00 2001 From: Laury Date: Sun, 23 Jan 2022 21:11:02 +0100 Subject: [PATCH] [geometry] Make the app multi-tabs --- apps/geometry/app.cpp | 10 ++++++-- apps/geometry/app.h | 20 +++++++++------ apps/geometry/base.universal.i18n | 3 +++ apps/geometry/graph/graph_controller.h | 28 +++++++++++++++++++++ apps/geometry/list/figures_controller.h | 3 ++- apps/geometry/other/other_view_controller.h | 16 ++++++++++++ 6 files changed, 69 insertions(+), 11 deletions(-) create mode 100644 apps/geometry/graph/graph_controller.h create mode 100644 apps/geometry/other/other_view_controller.h diff --git a/apps/geometry/app.cpp b/apps/geometry/app.cpp index 7213d79cb..d46d48555 100644 --- a/apps/geometry/app.cpp +++ b/apps/geometry/app.cpp @@ -33,9 +33,15 @@ App::Descriptor * App::Snapshot::descriptor() } App::App(Snapshot * snapshot) : - TextFieldDelegateApp(snapshot, &m_stackViewController), + TextFieldDelegateApp(snapshot, &m_tabViewController), m_figuresController(&m_stackViewController), - m_stackViewController(&m_modalViewController, &m_figuresController) + m_stackViewController(&m_tabViewController, &m_figuresController), + m_graphController(&m_graphAlternateEmptyViewController), + m_graphAlternateEmptyViewController(&m_graphHeader, &m_graphController, &m_graphController), + m_graphHeader(&m_graphStackViewController, &m_graphAlternateEmptyViewController, &m_graphController), + m_graphStackViewController(&m_tabViewController, &m_graphHeader), + m_otherViewController(&m_tabViewController), + m_tabViewController(&m_modalViewController, snapshot, &m_stackViewController, &m_graphAlternateEmptyViewController, &m_otherViewController) { } diff --git a/apps/geometry/app.h b/apps/geometry/app.h index 8d3f903c1..ed01fffd1 100644 --- a/apps/geometry/app.h +++ b/apps/geometry/app.h @@ -3,23 +3,21 @@ #include #include "list/figures_controller.h" +#include "graph/graph_controller.h" +#include "other/other_view_controller.h" #include "../shared/text_field_delegate_app.h" -namespace Geometry -{ +namespace Geometry { -class App : public Shared::TextFieldDelegateApp -{ +class App : public Shared::TextFieldDelegateApp { public: - class Descriptor : public ::App::Descriptor - { + class Descriptor : public ::App::Descriptor { public: I18n::Message name() override; I18n::Message upperName() override; const Image * icon() override; }; - class Snapshot : public ::App::Snapshot - { + class Snapshot : public ::App::Snapshot, public TabViewDataSource { public: App * unpack(Container * container) override; Descriptor * descriptor() override; @@ -29,6 +27,12 @@ private: FiguresController m_figuresController; StackViewController m_stackViewController; + GraphController m_graphController; + AlternateEmptyViewController m_graphAlternateEmptyViewController; + StackViewController m_graphStackViewController; + ButtonRowController m_graphHeader; + OtherViewController m_otherViewController; + TabViewController m_tabViewController; }; } diff --git a/apps/geometry/base.universal.i18n b/apps/geometry/base.universal.i18n index febf1df13..ed3603839 100644 --- a/apps/geometry/base.universal.i18n +++ b/apps/geometry/base.universal.i18n @@ -1,3 +1,6 @@ +FiguresTab = "Figures" +NoFigures = "Aucune figure à dessiner" +OtherTab = "TODO" Coordinates = "Coordonnées" Middle = "Milieu" VectorProject = "Projeté vectoriel" diff --git a/apps/geometry/graph/graph_controller.h b/apps/geometry/graph/graph_controller.h new file mode 100644 index 000000000..c0159cea0 --- /dev/null +++ b/apps/geometry/graph/graph_controller.h @@ -0,0 +1,28 @@ +#ifndef GRAPH_VIEW_CONTROLLER_H +#define GRAPH_VIEW_CONTROLLER_H + +#include "../shared/interactive_curve_view_controller.h" +#include "../shared/curve_view_cursor.h" +#include "../shared/cursor_view.h" +#include "../shared/round_cursor_view.h" + +namespace Geometry { + +class GraphController : public ViewController, public ButtonRowDelegate, public AlternateEmptyViewDefaultDelegate { +public: + GraphController(Responder * parentResponder): + ViewController(parentResponder), + ButtonRowDelegate(nullptr, nullptr) {} + /* ViewController */ + View * view() override { return nullptr; } + const char * title() override { return I18n::translate(I18n::Message::GraphTab); } + + /* AlternateEmptyViewDefaultDelegate */ + virtual bool isEmpty() const override { return true; } + virtual Responder * defaultController() override { return nullptr; } + virtual I18n::Message emptyMessage() override { return I18n::Message::NoFigures; } +}; + +} + +#endif \ No newline at end of file diff --git a/apps/geometry/list/figures_controller.h b/apps/geometry/list/figures_controller.h index 1c9e44cbb..c344da3ef 100644 --- a/apps/geometry/list/figures_controller.h +++ b/apps/geometry/list/figures_controller.h @@ -15,7 +15,8 @@ public: /* ViewController */ View * view() override { return &m_selectableTableView; } - + const char * title() override { return I18n::translate(I18n::Message::FiguresTab); } + virtual DisplayParameter displayParameter() override { return DisplayParameter::DoNotShowOwnTitle; } /* Responder */ bool handleEvent(Ion::Events::Event event) override; // TO IMPLEMENT void didBecomeFirstResponder() override; diff --git a/apps/geometry/other/other_view_controller.h b/apps/geometry/other/other_view_controller.h new file mode 100644 index 000000000..df80868f8 --- /dev/null +++ b/apps/geometry/other/other_view_controller.h @@ -0,0 +1,16 @@ +#ifndef OTHER_VIEW_CONTROLLER_H +#define OTHER_VIEW_CONTROLLER_H + +namespace Geometry { + +class OtherViewController : public ViewController { +public: + OtherViewController(Responder * parentResponder): + ViewController(parentResponder) {} + View * view() override { return nullptr; } + const char * title() override { return I18n::translate(I18n::Message::OtherTab); } +}; + +} + +#endif \ No newline at end of file