[apps/sequence] Create a first version of sequence structure

Change-Id: I4413365dcf7dc53ece23cce453215660258d9835
This commit is contained in:
Émilie Feral
2017-02-06 18:04:00 +01:00
parent 44ce4fb069
commit 54a90167cf
5 changed files with 154 additions and 0 deletions

View File

@@ -1,4 +1,6 @@
app_objs += $(addprefix apps/sequence/,\
app.o\
values/values_controller.o\
sequence.o\
sequence_store.o\
)

36
apps/sequence/app.cpp Normal file
View File

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

37
apps/sequence/app.h Normal file
View File

@@ -0,0 +1,37 @@
#ifndef SEQUENCE_APP_H
#define SEQUENCE_APP_H
#include <escher.h>
#include <poincare.h>
#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

View File

@@ -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());
}
}

View File

@@ -0,0 +1,27 @@
#ifndef SEQUENCE_VALUES_CONTROLLER_H
#define SEQUENCE_VALUES_CONTROLLER_H
#include <escher.h>
#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