diff --git a/apps/sequence/Makefile b/apps/sequence/Makefile index 748eb3bff..32f219641 100644 --- a/apps/sequence/Makefile +++ b/apps/sequence/Makefile @@ -1,4 +1,6 @@ app_objs += $(addprefix apps/sequence/,\ + app.o\ + values/values_controller.o\ sequence.o\ sequence_store.o\ ) diff --git a/apps/sequence/app.cpp b/apps/sequence/app.cpp new file mode 100644 index 000000000..7e168e207 --- /dev/null +++ b/apps/sequence/app.cpp @@ -0,0 +1,36 @@ +#include "app.h" +#include "sequence_icon.h" + +using namespace Poincare; + +namespace Sequence { + +App::App(Container * container, Context * context) : + TextFieldDelegateApp(container, &m_inputViewController, "Suites", "SUITES", ImageStore::SequenceIcon), + m_sequenceStore(SequenceStore()), + m_nContext(VariableContext('n', context)), + m_listController(&m_listHeader, &m_sequenceStore, &m_listHeader), + m_listHeader(HeaderViewController(nullptr, &m_listController, &m_listController)), + m_listStackViewController(StackViewController(&m_tabViewController, &m_listHeader)), + m_graphController(&m_graphAlternateEmptyViewController, &m_sequenceStore, &m_graphHeader), + m_graphAlternateEmptyViewController(AlternateEmptyViewController(&m_graphHeader, &m_graphController, &m_graphController)), + m_graphHeader(HeaderViewController(nullptr, &m_graphAlternateEmptyViewController, &m_graphController)), + m_graphStackViewController(StackViewController(&m_tabViewController, &m_graphHeader)), + m_valuesController(&m_valuesAlternateEmptyViewController, &m_sequenceStore, &m_valuesHeader), + m_valuesAlternateEmptyViewController(AlternateEmptyViewController(&m_valuesHeader, &m_valuesController, &m_valuesController)), + m_valuesHeader(HeaderViewController(nullptr, &m_valuesAlternateEmptyViewController, &m_valuesController)), + m_valuesStackViewController(StackViewController(&m_tabViewController, &m_valuesHeader)), + m_tabViewController(&m_inputViewController, &m_listStackViewController, &m_graphStackViewController, &m_valuesStackViewController), + m_inputViewController(&m_modalViewController, &m_tabViewController, this) +{ +} + +InputViewController * App::inputViewController() { + return &m_inputViewController; +} + +Context * App::localContext() { + return &m_nContext; +} + +} diff --git a/apps/sequence/app.h b/apps/sequence/app.h new file mode 100644 index 000000000..7639b334e --- /dev/null +++ b/apps/sequence/app.h @@ -0,0 +1,37 @@ +#ifndef SEQUENCE_APP_H +#define SEQUENCE_APP_H + +#include +#include +#include "sequence_store.h" +#include "values/values_controller.h" +#include "../shared/text_field_delegate_app.h" + +namespace Sequence { + +class App : public Shared::TextFieldDelegateApp { +public: + App(Container * container, Poincare::Context * context); + InputViewController * inputViewController(); + Poincare::Context * localContext() override; +private: + SequenceStore m_sequenceStore; + Poincare::VariableContext m_nContext; + ValuesController m_listController; + HeaderViewController m_listHeader; + StackViewController m_listStackViewController; + ValuesController m_graphController; + AlternateEmptyViewController m_graphAlternateEmptyViewController; + HeaderViewController m_graphHeader; + StackViewController m_graphStackViewController; + ValuesController m_valuesController; + AlternateEmptyViewController m_valuesAlternateEmptyViewController; + HeaderViewController m_valuesHeader; + StackViewController m_valuesStackViewController; + TabViewController m_tabViewController; + InputViewController m_inputViewController; +}; + +} + +#endif diff --git a/apps/sequence/values/values_controller.cpp b/apps/sequence/values/values_controller.cpp new file mode 100644 index 000000000..508e7ea78 --- /dev/null +++ b/apps/sequence/values/values_controller.cpp @@ -0,0 +1,52 @@ +#include "values_controller.h" + +namespace Sequence { + +ValuesController::ValuesController(Responder * parentResponder, SequenceStore * sequenceStore, + HeaderViewController * header) : + ViewController(parentResponder), + HeaderViewDelegate(header), + m_view(SolidColorView(KDColorRed)), + m_sequenceStore(sequenceStore) +{ +} + +const char * ValuesController::title() const { + return "Valeurs"; +} + +View * ValuesController::view() { + return &m_view; +} + +void ValuesController::didBecomeFirstResponder() { + headerViewController()->setSelectedButton(-1); +} + +int ValuesController::numberOfButtons() const { + return 0; +} + +Button * ValuesController::buttonAtIndex(int index) { + return nullptr; +} + +bool ValuesController::isEmpty() const { + if (m_sequenceStore->numberOfActiveFunctions() == 0) { + return true; + } + return false; +} + +const char * ValuesController::emptyMessage() { + if (m_sequenceStore->numberOfDefinedFunctions() == 0) { + return "Aucune fonction"; + } + return "Aucune fonction selectionnee"; +} + +Responder * ValuesController::defaultController() { + return (parentResponder()->parentResponder()->parentResponder()->parentResponder()); +} + +} diff --git a/apps/sequence/values/values_controller.h b/apps/sequence/values/values_controller.h new file mode 100644 index 000000000..8951eee5b --- /dev/null +++ b/apps/sequence/values/values_controller.h @@ -0,0 +1,27 @@ +#ifndef SEQUENCE_VALUES_CONTROLLER_H +#define SEQUENCE_VALUES_CONTROLLER_H + +#include +#include "../sequence_store.h" + +namespace Sequence { + +class ValuesController : public ViewController, public HeaderViewDelegate, public AlternateEmptyViewDelegate { +public: + ValuesController(Responder * parentResponder, SequenceStore * sequenceStore, HeaderViewController * header); + const char * title() const override; + View * view() override; + void didBecomeFirstResponder() override; + int numberOfButtons() const override; + Button * buttonAtIndex(int index) override; + bool isEmpty() const override; + const char * emptyMessage() override; + Responder * defaultController() override; +private: + SolidColorView m_view; + SequenceStore * m_sequenceStore; +}; + +} + +#endif