diff --git a/apps/graph/values/derivative_parameter_controller.cpp b/apps/graph/values/derivative_parameter_controller.cpp index 30238bed1..91d87e909 100644 --- a/apps/graph/values/derivative_parameter_controller.cpp +++ b/apps/graph/values/derivative_parameter_controller.cpp @@ -8,9 +8,8 @@ DerivativeParameterController::DerivativeParameterController(Responder * parentR m_pageTitle("Colonne f'(x)"), m_hideColumn(ListViewCell((char*)"Masquer la colonne de la 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 * DerivativeParameterController::title() const { } View * DerivativeParameterController::view() { - return &m_tableView; + return &m_selectableTableView; } void DerivativeParameterController::setFunction(Function * function) { @@ -34,31 +33,12 @@ void DerivativeParameterController::setFunction(Function * function) { } void DerivativeParameterController::didBecomeFirstResponder() { - m_tableView.reloadData(); - setActiveCell(m_activeCell); -} - -void DerivativeParameterController::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 DerivativeParameterController::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,7 +47,7 @@ bool DerivativeParameterController::handleEvent(Ion::Events::Event event) { } bool DerivativeParameterController::handleEnter() { - switch (m_activeCell) { + switch (m_selectableTableView.selectedRow()) { case 0: { m_function->setDisplayDerivative(false); diff --git a/apps/graph/values/derivative_parameter_controller.h b/apps/graph/values/derivative_parameter_controller.h index 4036b2e54..b034a17a1 100644 --- a/apps/graph/values/derivative_parameter_controller.h +++ b/apps/graph/values/derivative_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; @@ -28,8 +26,7 @@ private: char m_pageTitle[k_maxNumberOfCharsInTitle]; ListViewCell m_hideColumn; ListViewCell m_copyColumn; - TableView m_tableView; - int m_activeCell; + SelectableTableView m_selectableTableView; Function * m_function; };