diff --git a/apps/graph/values/function_parameter_controller.cpp b/apps/graph/values/function_parameter_controller.cpp index 44a291944..283468939 100644 --- a/apps/graph/values/function_parameter_controller.cpp +++ b/apps/graph/values/function_parameter_controller.cpp @@ -8,9 +8,8 @@ FunctionParameterController::FunctionParameterController(Responder * parentRespo m_pageTitle("Colonne f(x)"), m_displayDerivativeColumn(SwitchListViewCell((char*)"Colonne de la fonction derivee")), m_copyColumn(ListViewCell((char*)"Copier la colonne dans une liste")), - m_tableView(TableView(this,Metric::TopMargin, Metric::RightMargin, + m_selectableTableView(SelectableTableView(this, this, Metric::TopMargin, Metric::RightMargin, Metric::BottomMargin, Metric::LeftMargin)), - m_activeCell(0), m_function(nullptr) { } @@ -20,7 +19,7 @@ const char * FunctionParameterController::title() const { } View * FunctionParameterController::view() { - return &m_tableView; + return &m_selectableTableView; } void FunctionParameterController::setFunction(Function * function) { @@ -34,31 +33,12 @@ void FunctionParameterController::setFunction(Function * function) { } void FunctionParameterController::didBecomeFirstResponder() { - m_tableView.reloadData(); - setActiveCell(m_activeCell); -} - -void FunctionParameterController::setActiveCell(int index) { - if (index < 0 || index >= k_totalNumberOfCell) { - return; - } - ListViewCell * previousCell = (ListViewCell *)(m_tableView.cellAtLocation(0, m_activeCell)); - previousCell->setHighlighted(false); - - m_activeCell = index; - m_tableView.scrollToCell(0, index); - ListViewCell * cell = (ListViewCell *)(m_tableView.cellAtLocation(0, index)); - cell->setHighlighted(true); + m_selectableTableView.setSelectedCellAtLocation(0, 0); + app()->setFirstResponder(&m_selectableTableView); } bool FunctionParameterController::handleEvent(Ion::Events::Event event) { switch (event) { - case Ion::Events::Event::DOWN_ARROW: - setActiveCell(m_activeCell+1); - return true; - case Ion::Events::Event::UP_ARROW: - setActiveCell(m_activeCell-1); - return true; case Ion::Events::Event::ENTER: return handleEnter(); default: @@ -67,11 +47,11 @@ bool FunctionParameterController::handleEvent(Ion::Events::Event event) { } bool FunctionParameterController::handleEnter() { - switch (m_activeCell) { + switch (m_selectableTableView.selectedRow()) { case 0: { m_function->setDisplayDerivative(!m_function->displayDerivative()); - m_tableView.reloadData(); + m_selectableTableView.reloadData(); return true; } case 1: diff --git a/apps/graph/values/function_parameter_controller.h b/apps/graph/values/function_parameter_controller.h index b03d5b5d4..eb947c4f3 100644 --- a/apps/graph/values/function_parameter_controller.h +++ b/apps/graph/values/function_parameter_controller.h @@ -13,8 +13,6 @@ public: const char * title() const override; bool handleEvent(Ion::Events::Event event) override; void didBecomeFirstResponder() override; - - void setActiveCell(int index); int numberOfRows() override; KDCoordinate cellHeight() override; TableViewCell * reusableCell(int index) override; @@ -29,8 +27,7 @@ private: char m_pageTitle[k_maxNumberOfCharsInTitle]; SwitchListViewCell m_displayDerivativeColumn; ListViewCell m_copyColumn; - TableView m_tableView; - int m_activeCell; + SelectableTableView m_selectableTableView; Function * m_function; };