[apps] More generic VariableBoxController methods

Before, the class differentiated between TextField and
ExpressionLayoutField

Change-Id: I1fce8bb650a0bfccb11ddf61d05335e452374abb
This commit is contained in:
Léa Saviot
2018-04-24 13:53:39 +02:00
parent f6c3f7b0e9
commit a27963597b
4 changed files with 7 additions and 40 deletions

View File

@@ -48,7 +48,7 @@ bool ExpressionFieldDelegateApp::expressionLayoutFieldDidReceiveEvent(Expression
}
AppsContainer * appsContainer = (AppsContainer *)expressionLayoutField->app()->container();
VariableBoxController * variableBoxController = appsContainer->variableBoxController();
variableBoxController->setExpressionLayoutFieldSender(expressionLayoutField);
variableBoxController->setSender(expressionLayoutField);
expressionLayoutField->app()->displayModalViewController(variableBoxController, 0.f, 0.f, Metric::PopUpTopMargin, Metric::PopUpLeftMargin, 0, Metric::PopUpRightMargin);
return true;
}

View File

@@ -93,7 +93,7 @@ bool TextFieldDelegateApp::textFieldDidReceiveEvent(TextField * textField, Ion::
}
AppsContainer * appsContainer = (AppsContainer *)textField->app()->container();
VariableBoxController * variableBoxController = appsContainer->variableBoxController();
variableBoxController->setTextFieldSender(textField);
variableBoxController->setSender(textField);
textField->app()->displayModalViewController(variableBoxController, 0.f, 0.f, Metric::PopUpTopMargin, Metric::PopUpLeftMargin, 0, Metric::PopUpRightMargin);
return true;
}

View File

@@ -64,7 +64,7 @@ bool VariableBoxController::ContentViewController::handleEvent(Ion::Events::Even
char label[3];
putLabelAtIndexInBuffer(selectedRow(), label);
const char * editedText = label;
m_insertTextAction(m_sender, editedText);
m_sender->handleEventWithText(editedText);
#if MATRIX_VARIABLES
m_selectableTableView.deselectTable();
m_currentPage = Page::RootMenu;
@@ -195,16 +195,6 @@ int VariableBoxController::ContentViewController::typeAtLocation(int i, int j) {
return 0;
}
void VariableBoxController::ContentViewController::setTextFieldSender(TextField * textField) {
m_sender = textField;
m_insertTextAction = &insertTextInTextInput;
}
void VariableBoxController::ContentViewController::setExpressionLayoutFieldSender(ExpressionLayoutField * expressionLayoutField) {
m_sender = expressionLayoutField;
m_insertTextAction = &insertTextInExpressionLayoutField;
}
void VariableBoxController::ContentViewController::reloadData() {
m_selectableTableView.reloadData();
}
@@ -290,19 +280,6 @@ ExpressionLayout * VariableBoxController::ContentViewController::expressionLayou
return nullptr;
}
void VariableBoxController::ContentViewController::insertTextInTextInput(void * sender, const char * textToInsert) {
TextInput * textInput = static_cast<TextInput *>(sender);
textInput->handleEventWithText(textToInsert);
}
void VariableBoxController::ContentViewController::insertTextInExpressionLayoutField(void * sender, const char * textToInsert) {
ExpressionLayoutField * expressionLayoutField = static_cast<ExpressionLayoutField *>(sender);
if (!expressionLayoutField->isEditing()) {
expressionLayoutField->setEditing(true);
}
expressionLayoutField->insertLayoutFromTextAtCursor(textToInsert);
}
VariableBoxController::VariableBoxController(GlobalContext * context) :
StackViewController(nullptr, &m_contentViewController, KDColorWhite, Palette::PurpleBright, Palette::PurpleDark),
m_contentViewController(this, context)
@@ -313,12 +290,8 @@ void VariableBoxController::didBecomeFirstResponder() {
app()->setFirstResponder(&m_contentViewController);
}
void VariableBoxController::setTextFieldSender(TextField * textField) {
m_contentViewController.setTextFieldSender(textField);
}
void VariableBoxController::setExpressionLayoutFieldSender(ExpressionLayoutField * expressionLayoutField) {
m_contentViewController.setExpressionLayoutFieldSender(expressionLayoutField);
void VariableBoxController::setSender(Responder * sender) {
m_contentViewController.setSender(sender);
}
void VariableBoxController::viewWillAppear() {

View File

@@ -10,11 +10,9 @@
class VariableBoxController : public StackViewController {
public:
typedef void (*Action)(void * sender, const char * text);
VariableBoxController(Poincare::GlobalContext * context);
void didBecomeFirstResponder() override;
void setTextFieldSender(TextField * textField);
void setExpressionLayoutFieldSender(ExpressionLayoutField * expressionLayoutField);
void setSender(Responder * sender);
void viewWillAppear() override;
void viewDidDisappear() override;
private:
@@ -33,8 +31,7 @@ private:
KDCoordinate cumulatedHeightFromIndex(int j) override;
int indexFromCumulatedHeight(KDCoordinate offsetY) override;
int typeAtLocation(int i, int j) override;
void setTextFieldSender(TextField * textField);
void setExpressionLayoutFieldSender(ExpressionLayoutField * expressionLayoutField);
void setSender(Responder * responder) { m_sender = responder; }
void reloadData();
void resetPage();
void viewDidDisappear() override;
@@ -59,11 +56,8 @@ private:
I18n::Message nodeLabelAtIndex(int index);
const Poincare::Expression * expressionForIndex(int index);
Poincare::ExpressionLayout * expressionLayoutForIndex(int index);
static void insertTextInTextInput(void * sender, const char * textToInsert);
static void insertTextInExpressionLayoutField(void * sender, const char * textToInsert);
Poincare::GlobalContext * m_context;
Responder * m_sender;
Action m_insertTextAction;
int m_firstSelectedRow;
int m_previousSelectedRow;
Page m_currentPage;