mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[geometry] WIP
This commit is contained in:
@@ -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; }
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
namespace Geometry {
|
||||
|
||||
class PointNode : public FigureNode {
|
||||
|
||||
|
||||
};
|
||||
|
||||
class Point : public Figure {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 &);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user