mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-18 21:30:38 +01:00
[apps/calculation] Handle "ans" event in EditableExpressionView.
Change-Id: I7761f36b5a94bb5c8190cd5b238542280666c256
This commit is contained in:
@@ -5,6 +5,7 @@ app_objs += $(addprefix apps/calculation/,\
|
||||
app.o\
|
||||
calculation.o\
|
||||
calculation_store.o\
|
||||
editable_expression_view.o\
|
||||
edit_expression_controller.o\
|
||||
history_view_cell.o\
|
||||
history_controller.o\
|
||||
|
||||
@@ -175,7 +175,7 @@ bool EditExpressionController::editableExpressionViewDidAbortEditing(::EditableE
|
||||
return false;
|
||||
}
|
||||
|
||||
void EditExpressionController::editableExpressionViewDidChangeSize(EditableExpressionView * editableExpressionView) {
|
||||
void EditExpressionController::editableExpressionViewDidChangeSize(::EditableExpressionView * editableExpressionView) {
|
||||
assert(editableExpressionView == ((ContentView *)view())->editableExpressionView());
|
||||
reloadView();
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define CALCULATION_EDIT_EXPRESSION_CONTROLLER_H
|
||||
|
||||
#include <escher.h>
|
||||
#include "editable_expression_view.h"
|
||||
#include "../shared/text_field_delegate.h"
|
||||
#include "../shared/editable_expression_view_delegate.h"
|
||||
#include "history_controller.h"
|
||||
@@ -27,10 +28,10 @@ public:
|
||||
bool textFieldDidAbortEditing(::TextField * textField, const char * text) override;
|
||||
|
||||
/* EditableExpressionViewDelegate */
|
||||
bool editableExpressionViewDidReceiveEvent(EditableExpressionView * editableExpressionView, Ion::Events::Event event) override;
|
||||
bool editableExpressionViewDidFinishEditing(EditableExpressionView * editableExpressionView, const char * text, Ion::Events::Event event) override;
|
||||
bool editableExpressionViewDidAbortEditing(EditableExpressionView * editableExpressionView, const char * text) override;
|
||||
void editableExpressionViewDidChangeSize(EditableExpressionView * editableExpressionView) override;
|
||||
bool editableExpressionViewDidReceiveEvent(::EditableExpressionView * editableExpressionView, Ion::Events::Event event) override;
|
||||
bool editableExpressionViewDidFinishEditing(::EditableExpressionView * editableExpressionView, const char * text, Ion::Events::Event event) override;
|
||||
bool editableExpressionViewDidAbortEditing(::EditableExpressionView * editableExpressionView, const char * text) override;
|
||||
void editableExpressionViewDidChangeSize(::EditableExpressionView * editableExpressionView) override;
|
||||
|
||||
private:
|
||||
class ContentView : public View {
|
||||
|
||||
29
apps/calculation/editable_expression_view.cpp
Normal file
29
apps/calculation/editable_expression_view.cpp
Normal file
@@ -0,0 +1,29 @@
|
||||
#include "editable_expression_view.h"
|
||||
|
||||
namespace Calculation {
|
||||
|
||||
bool EditableExpressionView::privateHandleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::Back) {
|
||||
return false;
|
||||
}
|
||||
if (event == Ion::Events::Ans) {
|
||||
m_expressionViewWithCursor.cursor()->insertText("ans");
|
||||
return true;
|
||||
}
|
||||
Poincare::ExpressionLayout * layout = m_expressionViewWithCursor.expressionView()->expressionLayout();
|
||||
bool layoutIsEmpty = layout->isEmpty()
|
||||
|| (layout->isHorizontal()
|
||||
&& layout->numberOfChildren() == 0);
|
||||
if (isEditing() && layoutIsEmpty &&
|
||||
(event == Ion::Events::Multiplication ||
|
||||
event == Ion::Events::Plus ||
|
||||
event == Ion::Events::Power ||
|
||||
event == Ion::Events::Square ||
|
||||
event == Ion::Events::Division ||
|
||||
event == Ion::Events::Sto)) {
|
||||
m_expressionViewWithCursor.cursor()->insertText("ans");
|
||||
}
|
||||
return(::EditableExpressionView::privateHandleEvent(event));
|
||||
}
|
||||
|
||||
}
|
||||
16
apps/calculation/editable_expression_view.h
Normal file
16
apps/calculation/editable_expression_view.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#ifndef CALCULATION_EDITABLE_EXPRESSION_VIEW_H
|
||||
#define CALCULATION_EDITABLE_EXPRESSION_VIEW_H
|
||||
|
||||
#include <escher.h>
|
||||
|
||||
namespace Calculation {
|
||||
|
||||
class EditableExpressionView : public ::EditableExpressionView {
|
||||
using ::EditableExpressionView::EditableExpressionView;
|
||||
protected:
|
||||
bool privateHandleEvent(Ion::Events::Event event) override;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -28,9 +28,10 @@ public:
|
||||
/* View */
|
||||
KDSize minimalSizeForOptimalDisplay() const override;
|
||||
|
||||
private:
|
||||
bool privateHandleEvent(Ion::Events::Event event);
|
||||
protected:
|
||||
virtual bool privateHandleEvent(Ion::Events::Event event);
|
||||
ExpressionViewWithCursor m_expressionViewWithCursor;
|
||||
private:
|
||||
EditableExpressionViewDelegate * m_delegate;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user