mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[geometry] Added text field in FigureParametersController
This commit is contained in:
@@ -33,7 +33,7 @@ App::Descriptor * App::Snapshot::descriptor()
|
||||
}
|
||||
|
||||
App::App(Snapshot * snapshot) :
|
||||
::App(snapshot, &m_stackViewController),
|
||||
TextFieldDelegateApp(snapshot, &m_stackViewController),
|
||||
m_figuresController(&m_stackViewController),
|
||||
m_stackViewController(&m_modalViewController, &m_figuresController)
|
||||
{
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
|
||||
#include <escher.h>
|
||||
#include "list/figures_controller.h"
|
||||
#include "../shared/text_field_delegate_app.h"
|
||||
|
||||
namespace Geometry
|
||||
{
|
||||
|
||||
class App : public ::App
|
||||
class App : public Shared::TextFieldDelegateApp
|
||||
{
|
||||
public:
|
||||
class Descriptor : public ::App::Descriptor
|
||||
|
||||
@@ -14,7 +14,7 @@ public:
|
||||
virtual int numberOfChildren() const override { return 0; }
|
||||
|
||||
virtual FigureType type() const = 0;
|
||||
virtual FigureType subtype() const = 0;
|
||||
virtual FigureDefinitionType definitionType() const = 0;
|
||||
};
|
||||
|
||||
class Figure : public TreeHandle {
|
||||
@@ -22,12 +22,6 @@ public:
|
||||
Figure(const FigureNode * node) : TreeHandle(node) {}
|
||||
};
|
||||
|
||||
class FigureBuilder {
|
||||
public:
|
||||
virtual int numberOfParameters() const = 0;
|
||||
virtual FigureType parameterTypeAtIndex() const = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -8,7 +8,6 @@ enum class FigureType {
|
||||
Expression, // It's not a real figure type but we use it to build figures like points
|
||||
|
||||
Point,
|
||||
PointByCoordinates,
|
||||
|
||||
Line,
|
||||
Circle,
|
||||
@@ -16,6 +15,10 @@ enum class FigureType {
|
||||
Indicator
|
||||
};
|
||||
|
||||
enum class FigureDefinitionType {
|
||||
PointByCoordinates
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
namespace Geometry {
|
||||
|
||||
class PointNode : public FigureNode {
|
||||
|
||||
virtual FigureType type() const override { return FigureType::Point; }
|
||||
};
|
||||
|
||||
class Point : public Figure {
|
||||
|
||||
@@ -10,8 +10,7 @@ class PointByCoordinatesNode : public PointNode {
|
||||
public:
|
||||
virtual size_t size() const override { return sizeof(PointByCoordinatesNode); }
|
||||
virtual int numberOfChildren() const override { return 2; }
|
||||
virtual FigureType type() const override { return FigureType::Point; }
|
||||
virtual FigureType subtype() const override { return FigureType::PointByCoordinates; }
|
||||
virtual FigureDefinitionType definitionType() const override { return FigureDefinitionType::PointByCoordinates; }
|
||||
#if POINCARE_TREE_LOG
|
||||
void logNodeName(std::ostream & stream) const override {
|
||||
stream << "PointByCoordinates";
|
||||
@@ -23,16 +22,10 @@ class PointByCoordinates : public Figure {
|
||||
public:
|
||||
PointByCoordinates(const PointByCoordinatesNode * n) : Figure(n) {}
|
||||
static PointByCoordinates Builder(Expression x, Expression y) { return TreeHandle::FixedArityBuilder<PointByCoordinates, PointByCoordinatesNode>({x, x}); }
|
||||
|
||||
static int numberOfParameters() { return 2; }
|
||||
static FigureType parameterTypeAtIndex(int i) { return FigureType::Expression; }
|
||||
};
|
||||
|
||||
class PointByCoordinatesBuilder : public FigureBuilder {
|
||||
public:
|
||||
virtual int numberOfParameters() const override { return 2; }
|
||||
virtual FigureType parameterTypeAtIndex() const override { return FigureType::Expression; }
|
||||
private:
|
||||
Expression m_x;
|
||||
Expression m_y;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -74,7 +74,7 @@ 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->setParametersInfoFunctions(PointByCoordinates::numberOfParameters, PointByCoordinates::parameterTypeAtIndex);
|
||||
stack->push(m_parametersController);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "../app.h"
|
||||
|
||||
namespace Geometry {
|
||||
|
||||
FigureParametersController::FigureParametersController(Responder * parentResponder):
|
||||
ViewController(parentResponder),
|
||||
m_lastSelectedRow(0),
|
||||
@@ -10,6 +11,16 @@ FigureParametersController::FigureParametersController(Responder * parentRespond
|
||||
for (int i = 0; i < k_choiceCells; i++) {
|
||||
m_choicesCells[i].setParentResponder(&m_selectableTableView);
|
||||
}
|
||||
for (int i = 0; i < k_textCells; i++) {
|
||||
m_textCells[i].setParentResponder(&m_selectableTableView);
|
||||
m_textCells[i].textField()->setDelegates(this, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FigureParametersController::setParametersInfoFunctions(NumberOfParametersFunction numberOfParametersFunction, TypeOfParametersAtIndexFunction typeOfParametersAtIndexFunction) {
|
||||
m_numberOfParametersFunction = numberOfParametersFunction;
|
||||
m_typeOfParametersAtIndexFunction = typeOfParametersAtIndexFunction;
|
||||
}
|
||||
|
||||
void FigureParametersController::didBecomeFirstResponder() {
|
||||
@@ -33,22 +44,22 @@ bool FigureParametersController::handleEvent(Ion::Events::Event event) {
|
||||
|
||||
/* ListViewDataSource */
|
||||
int FigureParametersController::typeAtLocation(int i, int j) {
|
||||
return m_figureBuilder.parameterTypeAtIndex(j);
|
||||
return (int) m_typeOfParametersAtIndexFunction(i);
|
||||
}
|
||||
|
||||
int FigureParametersController::reusableCellCount(int type) {
|
||||
return type == FigureType.Expression ? k_textCells: k_choiceCells;
|
||||
return type == (int) FigureType::Expression ? k_textCells: k_choiceCells;
|
||||
}
|
||||
|
||||
HighlightCell * FigureParametersController::reusableCell(int index, int type) {
|
||||
if (type == FigureType.Expression) {
|
||||
if (type == (int) FigureType::Expression) {
|
||||
return &m_textCells[index];
|
||||
}
|
||||
return &m_choicesCells[index];
|
||||
}
|
||||
|
||||
int FigureParametersController::numberOfRows() const {
|
||||
return 2;
|
||||
return m_numberOfParametersFunction();
|
||||
}
|
||||
KDCoordinate FigureParametersController::rowHeight(int j) {
|
||||
return Metric::ParameterCellHeight;
|
||||
@@ -66,14 +77,14 @@ void FigureParametersController::willDisplayCellForIndex(HighlightCell * cell, i
|
||||
|
||||
}
|
||||
|
||||
/*bool FigureParametersController::textFieldShouldFinishEditing(TextField * textField, Ion::Events::Event event) {
|
||||
return (event == Ion::Events::Up);
|
||||
/*return (event == Ion::Events::Down && selectedRow() < numberOfRows()-1)
|
||||
bool FigureParametersController::textFieldShouldFinishEditing(TextField * textField, Ion::Events::Event event) {
|
||||
return (event == Ion::Events::Down && selectedRow() < numberOfRows()-1)
|
||||
|| (event == Ion::Events::Up && selectedRow() > 0)
|
||||
|| TextFieldDelegate::textFieldShouldFinishEditing(textField, event);*//*
|
||||
|| TextFieldDelegate::textFieldShouldFinishEditing(textField, event);
|
||||
}
|
||||
|
||||
bool FigureParametersController::textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) {
|
||||
return true;
|
||||
}*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,16 +5,21 @@
|
||||
#include "apps/i18n.h"
|
||||
#include "message_table_cell_with_selector.h"
|
||||
#include "../figures/figure.h"
|
||||
|
||||
#include "../../shared/parameter_text_field_delegate.h"
|
||||
#include "../../shared/input_event_handler_delegate.h"
|
||||
|
||||
namespace Geometry {
|
||||
|
||||
typedef int (*NumberOfParametersFunction)();
|
||||
typedef FigureType (*TypeOfParametersAtIndexFunction)(int);
|
||||
|
||||
/**
|
||||
* \brief Controller returnig the parameter choosen by the user to define the figure
|
||||
*/
|
||||
class FigureParametersController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource {
|
||||
class FigureParametersController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource, public Shared::ParameterTextFieldDelegate, public Shared::InputEventHandlerDelegate {
|
||||
public:
|
||||
FigureParametersController(Responder * parentResponder);
|
||||
void setFigureBuilder(FigureBuilder figureBuilder) { m_figureBuilder = figureBuilder; }
|
||||
void setParametersInfoFunctions(NumberOfParametersFunction numberOfParametersFunction, TypeOfParametersAtIndexFunction typeOfParametersAtIndexFunction);
|
||||
|
||||
/* ViewController */
|
||||
const char * title() override { return I18n::translate(I18n::Message::ParametersChoice); }
|
||||
@@ -35,12 +40,11 @@ public:
|
||||
KDCoordinate rowHeight(int j) override;
|
||||
KDCoordinate cumulatedHeightFromIndex(int j) override;
|
||||
int indexFromCumulatedHeight(KDCoordinate offsetY) override;
|
||||
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
|
||||
|
||||
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
|
||||
|
||||
/* InputEventHandlerDelegate */
|
||||
//bool textFieldShouldFinishEditing(TextField * textField, Ion::Events::Event event) override;
|
||||
//bool textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) override;
|
||||
bool textFieldShouldFinishEditing(TextField * textField, Ion::Events::Event event) override;
|
||||
bool textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) override;
|
||||
|
||||
private:
|
||||
SelectableTableView m_selectableTableView;
|
||||
@@ -49,7 +53,8 @@ private:
|
||||
int m_lastSelectedRow;
|
||||
MessageTableCellWithEditableText m_textCells[k_textCells];
|
||||
MessageTableCellWithSelector m_choicesCells[k_choiceCells];
|
||||
FigureBuilder m_figureBuilder;
|
||||
NumberOfParametersFunction m_numberOfParametersFunction;
|
||||
TypeOfParametersAtIndexFunction m_typeOfParametersAtIndexFunction;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Reference in New Issue
Block a user