[geometry] WIP

This commit is contained in:
Laury
2021-12-13 20:39:57 +01:00
parent 3a41cbdc85
commit a3d3cbbfa5
9 changed files with 23 additions and 14 deletions

View File

@@ -9,9 +9,7 @@ namespace Geometry {
class FigureNode : public TreeNode {
public:
FigureNode();
virtual size_t size() const override;
virtual size_t size() const override = 0;
virtual int numberOfChildren() const override { return 0; }

View File

@@ -5,7 +5,7 @@
namespace Geometry {
class PointNode : public FigureNode {
};
class Point : public Figure {

View File

@@ -48,6 +48,7 @@ static const uint8_t sIndicatorDefinitionsMessagesCount = sizeof(sIndicatorDefin
DefinitionTypeController::DefinitionTypeController(Responder * parentResponder, FigureParametersController * parametersController):
ViewController(parentResponder),
m_lastSelectedRow(0),
m_selectableTableView(this),
m_messages(nullptr),
m_figureType(FigureType::None),
@@ -60,8 +61,8 @@ DefinitionTypeController::DefinitionTypeController(Responder * parentResponder,
void DefinitionTypeController::viewWillAppear() {
assert(m_figureType != FigureType::None && m_messages != nullptr);
selectRow(m_lastSelectedRow);
m_selectableTableView.reloadData(); // We reload the cell of the table view to update their message
selectRow(0);
}
void DefinitionTypeController::didBecomeFirstResponder() {
@@ -71,8 +72,9 @@ void DefinitionTypeController::didBecomeFirstResponder() {
bool DefinitionTypeController::handleEvent(Ion::Events::Event event) {
if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) {
m_lastSelectedRow = selectedRow();
StackViewController * stack = static_cast<StackViewController *>(parentResponder());
//m_parametersController->setFigureBuilder(PointByCoordinatesBuilder());
m_parametersController->setFigureBuilder(PointByCoordinatesBuilder());
stack->push(m_parametersController);
return true;
}

View File

@@ -40,9 +40,10 @@ public:
private:
constexpr static KDCoordinate k_cellHeight = Metric::ParameterCellHeight;
constexpr static int k_numberOfCells = 6;
int m_lastSelectedRow;
MessageTableCellWithChevron m_cells[k_numberOfCells];
SelectableTableView m_selectableTableView;
I18n::Message * m_messages;
const I18n::Message * m_messages;
FigureType m_figureType;
FigureParametersController * m_parametersController;
};

View File

@@ -4,6 +4,7 @@
namespace Geometry {
FigureParametersController::FigureParametersController(Responder * parentResponder):
ViewController(parentResponder),
m_lastSelectedRow(0),
m_selectableTableView(this)
{
for (int i = 0; i < k_choiceCells; i++) {
@@ -16,7 +17,7 @@ void FigureParametersController::didBecomeFirstResponder() {
}
void FigureParametersController::viewWillAppear() {
selectRow(0);
selectRow(m_lastSelectedRow);
}
bool FigureParametersController::handleEvent(Ion::Events::Event event) {
@@ -32,14 +33,17 @@ bool FigureParametersController::handleEvent(Ion::Events::Event event) {
/* ListViewDataSource */
int FigureParametersController::typeAtLocation(int i, int j) {
return 0;
return m_figureBuilder.parameterTypeAtIndex(j);
}
int FigureParametersController::reusableCellCount(int type) {
return 2;
return type == FigureType.Expression ? k_textCells: k_choiceCells;
}
HighlightCell * FigureParametersController::reusableCell(int index, int type) {
if (type == FigureType.Expression) {
return &m_textCells[index];
}
return &m_choicesCells[index];
}

View File

@@ -14,7 +14,7 @@ namespace Geometry {
class FigureParametersController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource {
public:
FigureParametersController(Responder * parentResponder);
// void setFigureBuilder(FigureBuilder figureBuilder) { m_figureBuilder = figureBuilder; }
void setFigureBuilder(FigureBuilder figureBuilder) { m_figureBuilder = figureBuilder; }
/* ViewController */
const char * title() override { return I18n::translate(I18n::Message::ParametersChoice); }
@@ -46,9 +46,10 @@ private:
SelectableTableView m_selectableTableView;
constexpr static int k_textCells = 2;
constexpr static int k_choiceCells = 3;
int m_lastSelectedRow;
MessageTableCellWithEditableText m_textCells[k_textCells];
MessageTableCellWithSelector m_choicesCells[k_choiceCells];
// FigureBuilder m_figureBuilder;
FigureBuilder m_figureBuilder;
};
}

View File

@@ -21,6 +21,7 @@ static I18n::Message sMessages[] = {
FigureTypeController::FigureTypeController(Responder * parentResponder, DefinitionTypeController * definitionTypeController) :
ViewController(parentResponder),
m_lastSelectedRow(0),
m_selectableTableView(this),
m_definitionTypeController(definitionTypeController),
m_messages(sMessages)
@@ -31,7 +32,7 @@ FigureTypeController::FigureTypeController(Responder * parentResponder, Definiti
}
void FigureTypeController::viewWillAppear() {
//selectRow(0);
selectRow(m_lastSelectedRow);
}
void FigureTypeController::didBecomeFirstResponder() {
@@ -41,6 +42,7 @@ void FigureTypeController::didBecomeFirstResponder() {
bool FigureTypeController::handleEvent(Ion::Events::Event event) {
if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) {
m_lastSelectedRow = selectedRow();
StackViewController * stack = static_cast<StackViewController *>(parentResponder());
m_definitionTypeController->setFigureType(sTypes[selectedRow()]);
stack->push(m_definitionTypeController);

View File

@@ -37,6 +37,7 @@ private:
constexpr static KDCoordinate k_cellHeight = Metric::ParameterCellHeight;
constexpr static int k_numberOfCells = 5;
constexpr static int k_numberOfRows = 5;
int m_lastSelectedRow;
MessageTableCellWithChevron m_cells[k_numberOfCells];
SelectableTableView m_selectableTableView;
DefinitionTypeController * m_definitionTypeController;

View File

@@ -381,6 +381,6 @@ template VectorNormLayout TreeHandle::FixedArityBuilder<VectorNormLayout, Vector
template MatrixLayout TreeHandle::NAryBuilder<MatrixLayout, MatrixLayoutNode>(const Tuple &);
// Geometry templates
template Power TreeHandle::FixedArityBuilder<PointByCoordinates, PointByCoordinatesNode>(const Tuple &);
template PointByCoordinates TreeHandle::FixedArityBuilder<PointByCoordinates, PointByCoordinatesNode>(const Tuple &);
}