[shared] Factorize ExpressionFieldDelegateApp and TextFieldDelegateApp

This commit is contained in:
Émilie Feral
2018-09-28 11:47:52 +02:00
parent cf68a9ed18
commit 3a3a17b3ce
5 changed files with 28 additions and 51 deletions

View File

@@ -13,10 +13,6 @@ ExpressionFieldDelegateApp::ExpressionFieldDelegateApp(Container * container, Sn
{
}
char ExpressionFieldDelegateApp::privateXNT(LayoutField * layoutField) {
return layoutField->XNTChar(XNT());
}
bool ExpressionFieldDelegateApp::layoutFieldShouldFinishEditing(LayoutField * layoutField, Ion::Events::Event event) {
return isFinishingEvent(event);
}
@@ -40,14 +36,8 @@ bool ExpressionFieldDelegateApp::layoutFieldDidReceiveEvent(LayoutField * layout
return true;
}
}
if (event == Ion::Events::Var) {
forceEdition(layoutField);
return displayVariableBoxController(layoutField);
}
if (event == Ion::Events::XNT) {
forceEdition(layoutField);
const char xnt[2] = {privateXNT(layoutField), 0};
return layoutField->handleEventWithText(xnt);
if (fieldDidReceiveEvent(layoutField, layoutField, event)) {
return true;
}
return false;
}
@@ -58,12 +48,4 @@ Toolbox * ExpressionFieldDelegateApp::toolboxForLayoutField(LayoutField * layout
return toolbox;
}
/* Private */
void ExpressionFieldDelegateApp::forceEdition(LayoutField * layoutField) {
if (!layoutField->isEditing()) {
layoutField->setEditing(true);
}
}
}

View File

@@ -13,8 +13,6 @@ public:
virtual bool layoutFieldDidReceiveEvent(LayoutField * layoutField, Ion::Events::Event event) override;
Toolbox * toolboxForLayoutField(LayoutField * layoutField) override;
protected:
void forceEdition(LayoutField * layoutField);
char privateXNT(LayoutField * layoutField);
ExpressionFieldDelegateApp(Container * container, Snapshot * snapshot, ViewController * rootViewController);
};

View File

@@ -35,14 +35,8 @@ bool TextFieldDelegateApp::textFieldDidReceiveEvent(TextField * textField, Ion::
return true;
}
}
if (event == Ion::Events::Var) {
forceEdition(textField);
return displayVariableBoxController(textField);
}
if (event == Ion::Events::XNT) {
forceEdition(textField);
const char xnt[2] = {privateXNT(textField), 0};
return textField->handleEventWithText(xnt);
if (fieldDidReceiveEvent(textField, textField, event)) {
return true;
}
return false;
}
@@ -55,9 +49,27 @@ Toolbox * TextFieldDelegateApp::toolboxForTextInput(TextInput * textInput) {
/* Protected */
void TextFieldDelegateApp::forceEdition(TextField * textField) {
if (!textField->isEditing()) {
textField->setEditing(true);
bool TextFieldDelegateApp::fieldDidReceiveEvent(Field * field, Responder * responder, Ion::Events::Event event) {
if (event == Ion::Events::Var) {
forceEdition(field);
AppsContainer * appsContainer = (AppsContainer *)responder->app()->container();
VariableBoxController * variableBoxController = appsContainer->variableBoxController();
variableBoxController->setSender(responder);
responder->app()->displayModalViewController(variableBoxController, 0.f, 0.f, Metric::PopUpTopMargin, Metric::PopUpLeftMargin, 0, Metric::PopUpRightMargin);
return true;
}
if (event == Ion::Events::XNT) {
forceEdition(field);
const char xnt[2] = {field->XNTChar(XNT()), 0};
return responder->handleEventWithText(xnt);
}
return false;
}
void TextFieldDelegateApp::forceEdition(Field * field) {
if (!field->isEditing()) {
field->setEditing(true);
}
}
@@ -74,18 +86,4 @@ bool TextFieldDelegateApp::unparsableText(const char * text, Responder * respond
return false;
}
bool TextFieldDelegateApp::displayVariableBoxController(Responder * sender) {
AppsContainer * appsContainer = (AppsContainer *)sender->app()->container();
VariableBoxController * variableBoxController = appsContainer->variableBoxController();
variableBoxController->setSender(sender);
sender->app()->displayModalViewController(variableBoxController, 0.f, 0.f, Metric::PopUpTopMargin, Metric::PopUpLeftMargin, 0, Metric::PopUpRightMargin);
return true;
}
/* Private */
char TextFieldDelegateApp::privateXNT(TextField * textField) {
return textField->XNTChar(XNT());
}
}

View File

@@ -21,12 +21,10 @@ public:
protected:
TextFieldDelegateApp(Container * container, Snapshot * snapshot, ViewController * rootViewController);
protected:
void forceEdition(TextField * textField);
bool fieldDidReceiveEvent(Field * field, Responder * responder, Ion::Events::Event event);
void forceEdition(Field * field);
bool isFinishingEvent(Ion::Events::Event event);
bool unparsableText(const char * text, Responder * responder);
bool displayVariableBoxController(Responder * sender);
private:
char privateXNT(TextField * textField);
};
}

View File

@@ -23,6 +23,7 @@
#include <escher/expression_table_cell.h>
#include <escher/expression_table_cell_with_pointer.h>
#include <escher/expression_view.h>
#include <escher/field.h>
#include <escher/gauge_view.h>
#include <escher/highlight_cell.h>
#include <escher/image.h>