mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-20 22:30:30 +01:00
[apps/sequence] Do no add a new function as long as the user did not
choose a type Change-Id: I67c3172b416d7d80a3bd9a4eb18091ab72626e4b
This commit is contained in:
@@ -50,7 +50,9 @@ bool ListController::handleEnter() {
|
||||
{
|
||||
if (m_functionStore->numberOfFunctions() < m_functionStore->maxNumberOfFunctions() &&
|
||||
m_selectableTableView.selectedRow() == numberOfRows() - 1) {
|
||||
return addFunction();
|
||||
m_functionStore->addEmptyFunction();
|
||||
m_selectableTableView.reloadData();
|
||||
return true;
|
||||
}
|
||||
FunctionExpressionCell * functionCell = (FunctionExpressionCell *)(m_selectableTableView.cellAtLocation(m_selectableTableView.selectedColumn(), m_selectableTableView.selectedRow()));
|
||||
editExpression(functionCell, Ion::Events::OK);
|
||||
|
||||
@@ -10,7 +10,7 @@ ListController::ListController(Responder * parentResponder, SequenceStore * sequ
|
||||
m_functionTitleCells{SequenceTitleCell(&m_selectableTableView),SequenceTitleCell(&m_selectableTableView),SequenceTitleCell(&m_selectableTableView)},
|
||||
m_expressionCells{SequenceExpressionCell(&m_selectableTableView),SequenceExpressionCell(&m_selectableTableView),SequenceExpressionCell(&m_selectableTableView)},
|
||||
m_parameterController(ListParameterController(this, sequenceStore)),
|
||||
m_typeParameterController(this)
|
||||
m_typeParameterController(this, sequenceStore)
|
||||
{
|
||||
m_selectableTableView.setDelegate(this);
|
||||
}
|
||||
@@ -57,14 +57,10 @@ bool ListController::handleEvent(Ion::Events::Event event) {
|
||||
}
|
||||
if (event == Ion::Events::OK && m_selectableTableView.selectedColumn() == 1
|
||||
&& m_selectableTableView.selectedRow() == numberOfRows() - 1) {
|
||||
if (addFunction()){
|
||||
m_selectableTableView.dataHasChanged(true);
|
||||
m_typeParameterController.setSequence((Sequence *)m_functionStore->functionAtIndex(m_selectableTableView.selectedRow()));
|
||||
StackViewController * stack = stackController();
|
||||
stack->push(&m_typeParameterController);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
m_selectableTableView.dataHasChanged(true);
|
||||
StackViewController * stack = stackController();
|
||||
stack->push(&m_typeParameterController);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
|
||||
namespace Sequence {
|
||||
|
||||
TypeParameterController::TypeParameterController(Responder * parentResponder) :
|
||||
TypeParameterController::TypeParameterController(Responder * parentResponder, SequenceStore * sequenceStore) :
|
||||
ViewController(parentResponder),
|
||||
m_expliciteCell(TextBufferMenuListCell((char*)"Explicite")),
|
||||
m_singleRecurrenceCell(TextBufferMenuListCell((char*)"Recurrence d'ordre 1")),
|
||||
m_doubleRecurenceCell(TextBufferMenuListCell((char*)"Recurrence d'ordre 2")),
|
||||
m_selectableTableView(SelectableTableView(this, this, Metric::TopMargin, Metric::RightMargin,
|
||||
Metric::BottomMargin, Metric::LeftMargin))
|
||||
Metric::BottomMargin, Metric::LeftMargin)),
|
||||
m_sequenceStore(sequenceStore)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -22,25 +23,15 @@ View * TypeParameterController::view() {
|
||||
}
|
||||
|
||||
void TypeParameterController::didBecomeFirstResponder() {
|
||||
m_selectableTableView.dataHasChanged(true);
|
||||
m_selectableTableView.selectCellAtLocation(0, 0);
|
||||
app()->setFirstResponder(&m_selectableTableView);
|
||||
}
|
||||
|
||||
void TypeParameterController::setSequence(Sequence * sequence) {
|
||||
m_sequence = sequence;
|
||||
char buffer[8];
|
||||
buffer[0] = sequence->name()[0];
|
||||
strlcpy(buffer+1, "(n)=", 7);
|
||||
m_expliciteCell.setText(buffer);
|
||||
strlcpy(buffer+1, "(n+1)= ", 7);
|
||||
m_singleRecurrenceCell.setText(buffer);
|
||||
strlcpy(buffer+1, "(n+2)=", 7);
|
||||
m_doubleRecurenceCell.setText(buffer);
|
||||
}
|
||||
|
||||
bool TypeParameterController::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::OK) {
|
||||
m_sequence->setType((Sequence::Type)m_selectableTableView.selectedRow());
|
||||
Sequence * newSequence = m_sequenceStore->addEmptyFunction();
|
||||
newSequence->setType((Sequence::Type)m_selectableTableView.selectedRow());
|
||||
StackViewController * stack = stackController();
|
||||
stack->pop();
|
||||
return true;
|
||||
@@ -67,6 +58,23 @@ KDCoordinate TypeParameterController::cellHeight() {
|
||||
return Metric::ParameterCellHeight;
|
||||
}
|
||||
|
||||
void TypeParameterController::willDisplayCellAtLocation(TableViewCell * cell, int i, int j) {
|
||||
char buffer[8];
|
||||
char nextName = m_sequenceStore->firstAvailableName()[0];
|
||||
buffer[0] = nextName;
|
||||
if (j == 0) {
|
||||
strlcpy(buffer+1, "(n)=", 7);
|
||||
}
|
||||
if (j == 1) {
|
||||
strlcpy(buffer+1, "(n+1)=", 7);
|
||||
}
|
||||
if (j == 2) {
|
||||
strlcpy(buffer+1, "(n+2)=", 7);
|
||||
}
|
||||
TextBufferMenuListCell * myCell = (TextBufferMenuListCell *)cell;
|
||||
myCell->setText(buffer);
|
||||
}
|
||||
|
||||
StackViewController * TypeParameterController::stackController() const {
|
||||
return (StackViewController *)parentResponder();
|
||||
}
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
#define SEQUENCE_TYPE_PARAMATER_CONTROLLER_H
|
||||
|
||||
#include <escher.h>
|
||||
#include "../sequence.h"
|
||||
#include "../sequence_store.h"
|
||||
|
||||
namespace Sequence {
|
||||
|
||||
class TypeParameterController : public ViewController, public SimpleListViewDataSource {
|
||||
public:
|
||||
TypeParameterController(Responder * parentResponder);
|
||||
TypeParameterController(Responder * parentResponder, SequenceStore * sequenceStore);
|
||||
const char * title() const override;
|
||||
View * view() override;
|
||||
void didBecomeFirstResponder() override;
|
||||
void setSequence(Sequence * sequence);
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
int numberOfRows() override;
|
||||
KDCoordinate cellHeight() override;
|
||||
TableViewCell * reusableCell(int index) override;
|
||||
int reusableCellCount() override;
|
||||
void willDisplayCellAtLocation(TableViewCell * cell, int i, int j) override;
|
||||
private:
|
||||
StackViewController * stackController() const;
|
||||
constexpr static int k_totalNumberOfCell = 3;
|
||||
@@ -25,7 +25,7 @@ private:
|
||||
TextBufferMenuListCell m_singleRecurrenceCell;
|
||||
TextBufferMenuListCell m_doubleRecurenceCell;
|
||||
SelectableTableView m_selectableTableView;
|
||||
Sequence * m_sequence;
|
||||
SequenceStore * m_sequenceStore;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -17,9 +17,9 @@ public:
|
||||
Sequence * addEmptyFunction() override;
|
||||
void removeFunction(Shared::Function * f) override;
|
||||
int maxNumberOfFunctions() override;
|
||||
const char * firstAvailableName() override;
|
||||
static constexpr int k_maxNumberOfSequences = 3;
|
||||
private:
|
||||
const char * firstAvailableName() override;
|
||||
const KDColor firstAvailableColor() override;
|
||||
static constexpr KDColor k_defaultColors[k_maxNumberOfSequences] = {
|
||||
KDColor::RGB24(0xbe2727), KDColor::RGB24(0x3e6f3c), KDColor::RGB24(0x656975)
|
||||
|
||||
@@ -148,17 +148,6 @@ void ListController::didBecomeFirstResponder() {
|
||||
app()->setFirstResponder(&m_selectableTableView);
|
||||
}
|
||||
|
||||
bool ListController::addFunction() {
|
||||
if (m_functionStore->numberOfFunctions() < m_functionStore->maxNumberOfFunctions()) {
|
||||
m_functionStore->addEmptyFunction();
|
||||
m_selectableTableView.reloadData();
|
||||
return true;
|
||||
}
|
||||
// Add a warning to tell the user there is no more space for new functions
|
||||
app()->displayWarning("Nombre maximal d'éléments atteint");
|
||||
return false;
|
||||
}
|
||||
|
||||
void ListController::configureFunction(Function * function) {
|
||||
StackViewController * stack = stackController();
|
||||
parameterController()->setFunction(function);
|
||||
|
||||
@@ -28,7 +28,6 @@ public:
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
protected:
|
||||
static constexpr KDCoordinate k_emptyRowHeight = 50;
|
||||
bool addFunction();
|
||||
void configureFunction(Function * function);
|
||||
StackViewController * stackController() const;
|
||||
SelectableTableView m_selectableTableView;
|
||||
|
||||
Reference in New Issue
Block a user