[apps] Use even odd editable text cell in values controller

Change-Id: I8d5f6dc7656a50000849de85f5b3ba537756eaf1
This commit is contained in:
Émilie Feral
2016-12-19 12:08:23 +01:00
parent 16a785f135
commit 3cc4ebf83f
6 changed files with 9 additions and 93 deletions

View File

@@ -19,7 +19,6 @@ app_objs += $(addprefix apps/graph/,\
local_context.o\
values/abscissa_parameter_controller.o\
values/derivative_parameter_controller.o\
values/editable_value_cell.o\
values/function_parameter_controller.o\
values/interval.o\
values/interval_parameter_controller.o\

View File

@@ -1,53 +0,0 @@
#include "editable_value_cell.h"
#include "../../apps_container.h"
#include <assert.h>
#include "../app.h"
namespace Graph {
EditableValueCell::EditableValueCell(char * draftTextBuffer) :
EvenOddCell(),
Responder(nullptr),
m_textField(TextField(this, m_textBody, draftTextBuffer, 255, nullptr, 1.0f, 0.5f, KDColorBlack, KDColorWhite))
{
}
void EditableValueCell::setDelegate(TextFieldDelegate * delegate) {
m_textField.setTextFieldDelegate(delegate);
}
void EditableValueCell::reloadCell() {
EvenOddCell::reloadCell();
m_textField.setBackgroundColor(backgroundColor());
}
const char * EditableValueCell::text() const {
return m_textField.text();
}
void EditableValueCell::setText(const char * textContent) {
m_textField.setText(textContent);
}
int EditableValueCell::numberOfSubviews() const {
return 1;
}
View * EditableValueCell::subviewAtIndex(int index) {
assert(index == 0);
return &m_textField;
}
void EditableValueCell::layoutSubviews() {
m_textField.setFrame(bounds());
}
void EditableValueCell::didBecomeFirstResponder() {
app()->setFirstResponder(&m_textField);
}
void EditableValueCell::setEditing(bool isEditing) {
m_textField.setEditing(isEditing);
}
}

View File

@@ -1,28 +0,0 @@
#ifndef GRAPH_EDITABLE_VALUE_CELL_H
#define GRAPH_EDITABLE_VALUE_CELL_H
#include <escher.h>
#include <poincare.h>
namespace Graph {
class EditableValueCell : public EvenOddCell, public Responder {
public:
EditableValueCell(char * draftTextBuffer);
void setDelegate(TextFieldDelegate * delegate);
void reloadCell() override;
const char * text() const;
void setText(const char * textContent);
int numberOfSubviews() const override;
View * subviewAtIndex(int index) override;
void layoutSubviews() override;
void didBecomeFirstResponder() override;
void setEditing(bool isEditing);
constexpr static int k_bufferLength = 255;
private:
TextField m_textField;
char m_textBody[k_bufferLength];
};
}
#endif

View File

@@ -10,8 +10,8 @@ ValuesController::ValuesController(Responder * parentResponder, FunctionStore *
ViewController(parentResponder),
HeaderViewDelegate(header),
m_selectableTableView(SelectableTableView(this, this, k_topMargin, k_rightMargin, k_bottomMargin, k_leftMargin, this)),
m_abscissaCells{EditableValueCell(m_draftTextBuffer), EditableValueCell(m_draftTextBuffer), EditableValueCell(m_draftTextBuffer),EditableValueCell(m_draftTextBuffer),
EditableValueCell(m_draftTextBuffer), EditableValueCell(m_draftTextBuffer), EditableValueCell(m_draftTextBuffer), EditableValueCell(m_draftTextBuffer)},
m_abscissaCells{EvenOddEditableTextCell(m_draftTextBuffer), EvenOddEditableTextCell(m_draftTextBuffer), EvenOddEditableTextCell(m_draftTextBuffer),EvenOddEditableTextCell(m_draftTextBuffer),
EvenOddEditableTextCell(m_draftTextBuffer), EvenOddEditableTextCell(m_draftTextBuffer), EvenOddEditableTextCell(m_draftTextBuffer), EvenOddEditableTextCell(m_draftTextBuffer)},
m_functionStore(functionStore),
m_intervalParameterController(IntervalParameterController(this, &m_interval)),
m_abscissaParameterController(AbscissaParameterController(this, &m_intervalParameterController)),
@@ -246,12 +246,12 @@ void ValuesController::configureDerivativeFunction() {
void ValuesController::tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY) {
if (previousSelectedCellX == 0 && previousSelectedCellY > 0) {
EditableValueCell * myCell = (EditableValueCell *)t->cellAtLocation(previousSelectedCellX, previousSelectedCellY);
EvenOddEditableTextCell * myCell = (EvenOddEditableTextCell *)t->cellAtLocation(previousSelectedCellX, previousSelectedCellY);
myCell->setEditing(false);
app()->setFirstResponder(t);
}
if (t->selectedRow() > 0 && t->selectedColumn() == 0) {
EditableValueCell * myCell = (EditableValueCell *)t->cellAtLocation(t->selectedColumn(), t->selectedRow());
EvenOddEditableTextCell * myCell = (EvenOddEditableTextCell *)t->cellAtLocation(t->selectedColumn(), t->selectedRow());
app()->setFirstResponder(myCell);
}
}
@@ -343,7 +343,7 @@ void ValuesController::willDisplayCellAtLocation(TableViewCell * cell, int i, in
if (numberOfIntervalElements < Interval::k_maxNumberOfElements) {
buffer[0] = 0;
if (i == 0) {
EditableValueCell * myEditableValueCell = (EditableValueCell *)cell;
EvenOddEditableTextCell * myEditableValueCell = (EvenOddEditableTextCell *)cell;
myEditableValueCell->setText(buffer);
} else {
ValueCell * myValueCell = (ValueCell *)cell;
@@ -354,7 +354,7 @@ void ValuesController::willDisplayCellAtLocation(TableViewCell * cell, int i, in
}
// Special case: first column
if (i == 0){
EditableValueCell * myEditableValueCell = (EditableValueCell *)cell;
EvenOddEditableTextCell * myEditableValueCell = (EvenOddEditableTextCell *)cell;
Float(m_interval.element(j-1)).convertFloatToText(buffer, Constant::FloatBufferSizeInScientificMode, Constant::NumberOfDigitsInMantissaInScientificMode);
myEditableValueCell->setText(buffer);
return;

View File

@@ -5,7 +5,6 @@
#include "../function_store.h"
#include "../function_title_cell.h"
#include "value_cell.h"
#include "editable_value_cell.h"
#include "title_cell.h"
#include "interval.h"
#include "abscissa_parameter_controller.h"
@@ -76,8 +75,8 @@ private:
TitleCell m_abscissaTitleCell;
FunctionTitleCell m_functionTitleCells[k_maxNumberOfFunctions];
ValueCell m_floatCells[k_maxNumberOfCells];
char m_draftTextBuffer[EditableValueCell::k_bufferLength];
EditableValueCell m_abscissaCells[k_maxNumberOfAbscissaCells];
char m_draftTextBuffer[EditableTextCell::k_bufferLength];
EvenOddEditableTextCell m_abscissaCells[k_maxNumberOfAbscissaCells];
FunctionStore * m_functionStore;
Interval m_interval;
IntervalParameterController m_intervalParameterController;

View File

@@ -3,7 +3,6 @@
#include <escher.h>
#include "../graph/values/title_cell.h"
#include "../graph/values/editable_value_cell.h"
namespace Statistics {
@@ -33,7 +32,7 @@ private:
constexpr static int k_maxNumberOfEditableCells = 20;
constexpr static int k_numberOfTitleCells = 2;
Responder * tabController() const;
//Graph::EditableValueCell m_editableCells[k_maxNumberOfEditableCells];
//EvenOddEditableTextCell m_editableCells[k_maxNumberOfEditableCells];
Graph::TitleCell m_titleCells[k_numberOfTitleCells];
SelectableTableView m_selectableTableView;
};