diff --git a/escher/Makefile b/escher/Makefile index cf8cf75a6..0d670414c 100644 --- a/escher/Makefile +++ b/escher/Makefile @@ -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\ diff --git a/escher/include/escher.h b/escher/include/escher.h index dcdff68ff..1850e5503 100644 --- a/escher/include/escher.h +++ b/escher/include/escher.h @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include diff --git a/escher/include/escher/editable_text_cell.h b/escher/include/escher/editable_text_cell.h index 0f77479e5..f4005ad9f 100644 --- a/escher/include/escher/editable_text_cell.h +++ b/escher/include/escher/editable_text_cell.h @@ -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); diff --git a/escher/include/escher/even_odd_editable_text_cell.h b/escher/include/escher/even_odd_editable_text_cell.h new file mode 100644 index 000000000..3aa7a9a0f --- /dev/null +++ b/escher/include/escher/even_odd_editable_text_cell.h @@ -0,0 +1,24 @@ +#ifndef ESCHER_EVEN_ODD_EDITABLE_TEXT_CELL_H +#define ESCHER_EVEN_ODD_EDITABLE_TEXT_CELL_H + +#include +#include +#include + +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 diff --git a/escher/src/editable_text_cell.cpp b/escher/src/editable_text_cell.cpp index d90c65f15..5e4bf5fd0 100644 --- a/escher/src/editable_text_cell.cpp +++ b/escher/src/editable_text_cell.cpp @@ -3,13 +3,18 @@ #include #include -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; diff --git a/escher/src/even_odd_editable_text_cell.cpp b/escher/src/even_odd_editable_text_cell.cpp new file mode 100644 index 000000000..2a60a84eb --- /dev/null +++ b/escher/src/even_odd_editable_text_cell.cpp @@ -0,0 +1,48 @@ +#include +#include +#include + +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); +}