diff --git a/apps/sequence/list/list_parameter_controller.cpp b/apps/sequence/list/list_parameter_controller.cpp index 1dd6a1b33..4e86667c4 100644 --- a/apps/sequence/list/list_parameter_controller.cpp +++ b/apps/sequence/list/list_parameter_controller.cpp @@ -23,21 +23,30 @@ void ListParameterController::setFunction(Shared::Function * function) { } bool ListParameterController::handleEvent(Ion::Events::Event event) { - if (event == Ion::Events::OK && m_selectableTableView.selectedRow() == 3) { - StackViewController * stack = (StackViewController *)(parentResponder()); - m_typeParameterController.setSequence(m_sequence); - stack->push(&m_typeParameterController); - return true; - } - if (event == Ion::Events::OK && m_selectableTableView.selectedRow() == 2) { - if (m_functionStore->numberOfFunctions() > 0) { - m_functionStore->removeFunction(m_function); - StackViewController * stack = (StackViewController *)(parentResponder()); - stack->pop(); - return true; + if (event == Ion::Events::OK) { + int selectedRowIndex = m_selectableTableView.selectedRow(); + switch (selectedRowIndex) { + case 0: + return handleEnterOnRow(selectedRowIndex); + case 1: + { + StackViewController * stack = (StackViewController *)(parentResponder()); + m_typeParameterController.setSequence(m_sequence); + stack->push(&m_typeParameterController); + return true; + } + case 3: + if (m_functionStore->numberOfFunctions() > 0) { + m_functionStore->removeFunction(m_function); + StackViewController * stack = (StackViewController *)(parentResponder()); + stack->pop(); + return true; + } + default: + return handleEnterOnRow(selectedRowIndex-1); } } - return Shared::ListParameterController::handleEvent(event); + return false; } int ListParameterController::numberOfRows() { @@ -45,10 +54,14 @@ int ListParameterController::numberOfRows() { }; HighlightCell * ListParameterController::reusableCell(int index) { - if (index == 3) { + switch (index) { + case 0: + return Shared::ListParameterController::reusableCell(index); + case 1: return &m_typeCell; + default: + return Shared::ListParameterController::reusableCell(index-1); } - return Shared::ListParameterController::reusableCell(index); } int ListParameterController::reusableCellCount() { diff --git a/apps/shared/list_parameter_controller.cpp b/apps/shared/list_parameter_controller.cpp index 3a2aeb4b5..11997222d 100644 --- a/apps/shared/list_parameter_controller.cpp +++ b/apps/shared/list_parameter_controller.cpp @@ -46,35 +46,7 @@ void ListParameterController::setFunction(Function * function) { bool ListParameterController::handleEvent(Ion::Events::Event event) { if (event == Ion::Events::OK) { - switch (m_selectableTableView.selectedRow()) { - case 0: - return true; - case 1: - m_function->setActive(!m_function->isActive()); - m_selectableTableView.reloadData(); - return true; - case 2: - { - if (m_functionStore->numberOfFunctions() > 1) { - m_functionStore->removeFunction(m_function); - StackViewController * stack = (StackViewController *)(parentResponder()); - stack->pop(); - return true; - } else { - if (m_functionStore->numberOfDefinedFunctions() == 1) { - Function * f = m_functionStore->definedFunctionAtIndex(0); - f->setContent(""); - StackViewController * stack = (StackViewController *)(parentResponder()); - stack->pop(); - return true; - } - app()->displayWarning("Pas de fonction a supprimer"); - return false; - } - } - default: - return false; - } + return handleEnterOnRow(m_selectableTableView.selectedRow()); } return false; } @@ -98,4 +70,36 @@ KDCoordinate ListParameterController::cellHeight() { return Metric::ParameterCellHeight; } +bool ListParameterController::handleEnterOnRow(int rowIndex) { + switch (rowIndex) { + case 0: + return true; + case 1: + m_function->setActive(!m_function->isActive()); + m_selectableTableView.reloadData(); + return true; + case 2: + { + if (m_functionStore->numberOfFunctions() > 1) { + m_functionStore->removeFunction(m_function); + StackViewController * stack = (StackViewController *)(parentResponder()); + stack->pop(); + return true; + } else { + if (m_functionStore->numberOfDefinedFunctions() == 1) { + Function * f = m_functionStore->definedFunctionAtIndex(0); + f->setContent(""); + StackViewController * stack = (StackViewController *)(parentResponder()); + stack->pop(); + return true; + } + app()->displayWarning("Pas de fonction a supprimer"); + return false; + } + } + default: + return false; + } +} + } diff --git a/apps/shared/list_parameter_controller.h b/apps/shared/list_parameter_controller.h index 0576082ee..ec08733e6 100644 --- a/apps/shared/list_parameter_controller.h +++ b/apps/shared/list_parameter_controller.h @@ -22,6 +22,7 @@ public: int reusableCellCount() override; void willDisplayCellForIndex(HighlightCell * cell, int index) override; protected: + bool handleEnterOnRow(int rowIndex); SelectableTableView m_selectableTableView; FunctionStore * m_functionStore; Function * m_function;