[escher] Create a even odd editable text cell inheriting from even odd

and composing with editable text cell

Change-Id: I454159402260fe791769859130052e824cb03128
This commit is contained in:
Émilie Feral
2016-12-19 12:05:53 +01:00
parent 6dff4b9a07
commit 16a785f135
6 changed files with 84 additions and 3 deletions

View File

@@ -11,6 +11,7 @@ objs += $(addprefix escher/src/,\
editable_text_menu_list_cell.o\
editable_text_cell.o\
even_odd_cell.o\
even_odd_editable_text_cell.o\
expression_view.o\
header_view_controller.o\
header_view_delegate.o\

View File

@@ -12,6 +12,7 @@
#include <escher/editable_text_menu_list_cell.h>
#include <escher/editable_text_cell.h>
#include <escher/even_odd_cell.h>
#include <escher/even_odd_editable_text_cell.h>
#include <escher/expression_view.h>
#include <escher/header_view_controller.h>
#include <escher/header_view_delegate.h>

View File

@@ -8,7 +8,9 @@
class EditableTextCell : public TableViewCell, public Responder {
public:
EditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer);
EditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer,
float horizontalAlignment = 0.0f, float verticalAlignment = 0.5f, KDColor textColor = KDColorBlack, KDColor = KDColorWhite);
TextField * textfield();
void reloadCell() override;
const char * text() const;
void setText(const char * textContent);

View File

@@ -0,0 +1,24 @@
#ifndef ESCHER_EVEN_ODD_EDITABLE_TEXT_CELL_H
#define ESCHER_EVEN_ODD_EDITABLE_TEXT_CELL_H
#include <escher/responder.h>
#include <escher/even_odd_cell.h>
#include <escher/editable_text_cell.h>
class EvenOddEditableTextCell : public EvenOddCell, public Responder {
public:
EvenOddEditableTextCell(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);
private:
EditableTextCell m_editableCell;
};
#endif

View File

@@ -3,13 +3,18 @@
#include <escher/palette.h>
#include <assert.h>
EditableTextCell::EditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer) :
EditableTextCell::EditableTextCell(Responder * parentResponder, TextFieldDelegate * delegate, char * draftTextBuffer,
float horizontalAlignment, float verticalAlignment, KDColor textColor, KDColor backgroundColor) :
TableViewCell(),
Responder(parentResponder),
m_textField(TextField(this, m_textBody, draftTextBuffer, 255, delegate))
m_textField(TextField(this, m_textBody, draftTextBuffer, 255, delegate, horizontalAlignment, verticalAlignment, textColor, backgroundColor))
{
}
TextField * EditableTextCell::textfield() {
return &m_textField;
}
void EditableTextCell::reloadCell() {
TableViewCell::reloadCell();
KDColor backgroundColor = isHighlighted()? Palette::FocusCellBackgroundColor : Palette::CellBackgroundColor;

View File

@@ -0,0 +1,48 @@
#include <escher/even_odd_editable_text_cell.h>
#include <escher/app.h>
#include <assert.h>
EvenOddEditableTextCell::EvenOddEditableTextCell(char * draftTextBuffer) :
EvenOddCell(),
Responder(nullptr),
m_editableCell(this, nullptr, draftTextBuffer, 1.0f, 0.5f, KDColorBlack, KDColorWhite)
{
}
void EvenOddEditableTextCell::setDelegate(TextFieldDelegate * delegate) {
m_editableCell.textfield()->setTextFieldDelegate(delegate);
}
void EvenOddEditableTextCell::reloadCell() {
EvenOddCell::reloadCell();
m_editableCell.textfield()->setBackgroundColor(backgroundColor());
}
const char * EvenOddEditableTextCell::text() const {
return m_editableCell.text();
}
void EvenOddEditableTextCell::setText(const char * textContent) {
m_editableCell.setText(textContent);
}
int EvenOddEditableTextCell::numberOfSubviews() const {
return 1;
}
View * EvenOddEditableTextCell::subviewAtIndex(int index) {
assert(index == 0);
return &m_editableCell;
}
void EvenOddEditableTextCell::layoutSubviews() {
m_editableCell.setFrame(bounds());
}
void EvenOddEditableTextCell::didBecomeFirstResponder() {
app()->setFirstResponder(&m_editableCell);
}
void EvenOddEditableTextCell::setEditing(bool isEditing) {
m_editableCell.setEditing(isEditing);
}