mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[shared] Factorize ExpressionFieldDelegateApp and TextFieldDelegateApp
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user