[geometry] Make the app multi-tabs

This commit is contained in:
Laury
2022-01-23 21:11:02 +01:00
parent d95785ba42
commit 7af2b45f1d
6 changed files with 69 additions and 11 deletions

View File

@@ -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)
{
}

View File

@@ -3,23 +3,21 @@
#include <escher.h>
#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;
};
}

View File

@@ -1,3 +1,6 @@
FiguresTab = "Figures"
NoFigures = "Aucune figure à dessiner"
OtherTab = "TODO"
Coordinates = "Coordonnées"
Middle = "Milieu"
VectorProject = "Projeté vectoriel"

View File

@@ -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

View File

@@ -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;

View File

@@ -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