diff --git a/apps/Makefile b/apps/Makefile index 5b9784b58..103d74e7c 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -19,6 +19,7 @@ app_objs += $(addprefix apps/,\ curve_view_window_with_cursor.o\ data.o\ data_controller.o\ + data_parameter_controller.o\ editable_cell_table_view_controller.o\ expression_text_field_delegate.o\ float_parameter_controller.o\ diff --git a/apps/data_parameter_controller.cpp b/apps/data_parameter_controller.cpp new file mode 100644 index 000000000..d99f46820 --- /dev/null +++ b/apps/data_parameter_controller.cpp @@ -0,0 +1,77 @@ +#include "data_parameter_controller.h" +#include + +DataParameterController::DataParameterController(Responder * parentResponder, Data * data) : + ViewController(parentResponder), + m_deleteColumn(MenuListCell((char*)"Effacer la colonne")), + m_copyColumn(ChevronMenuListCell((char*)"Copier la colonne dans une liste")), + m_importList(ChevronMenuListCell((char*)"Importer une liste")), + m_selectableTableView(SelectableTableView(this, this, Metric::TopMargin, Metric::RightMargin, + Metric::BottomMargin, Metric::LeftMargin)), + m_data(data), + m_xColumnSelected(true) +{ +} + +void DataParameterController::selectXColumn(bool xColumnSelected) { + m_xColumnSelected = xColumnSelected; +} + + +const char * DataParameterController::title() const { + return "Option de la colonne"; +} + +View * DataParameterController::view() { + return &m_selectableTableView; +} + +void DataParameterController::didBecomeFirstResponder() { + m_selectableTableView.selectCellAtLocation(0, 0); + app()->setFirstResponder(&m_selectableTableView); +} + +bool DataParameterController::handleEvent(Ion::Events::Event event) { + if (event == Ion::Events::OK) { + switch (m_selectableTableView.selectedRow()) { + case 0: + { + if (m_xColumnSelected) { + m_data->deleteAllXValues(); + } else { + m_data->deleteAllYValues(); + } + StackViewController * stack = ((StackViewController *)parentResponder()); + stack->pop(); + return true; + } + case 1: + return false; + case 2: + return false; + default: + assert(false); + return false; + } + } + return false; +} + +int DataParameterController::numberOfRows() { + return k_totalNumberOfCell; +}; + +TableViewCell * DataParameterController::reusableCell(int index) { + assert(index >= 0); + assert(index < k_totalNumberOfCell); + TableViewCell * cells[] = {&m_deleteColumn, &m_copyColumn, &m_importList}; + return cells[index]; +} + +int DataParameterController::reusableCellCount() { + return k_totalNumberOfCell; +} + +KDCoordinate DataParameterController::cellHeight() { + return 35; +} diff --git a/apps/data_parameter_controller.h b/apps/data_parameter_controller.h new file mode 100644 index 000000000..da5c2e02f --- /dev/null +++ b/apps/data_parameter_controller.h @@ -0,0 +1,29 @@ +#ifndef APPS_DATA_PARAM_CONTROLLER_H +#define APPS_DATA_PARAM_CONTROLLER_H + +#include +#include "data.h" + +class DataParameterController : public ViewController, public SimpleListViewDataSource { +public: + DataParameterController(Responder * parentResponder, Data * data); + void selectXColumn(bool xColumnSelected); + View * view() override; + const char * title() const override; + bool handleEvent(Ion::Events::Event event) override; + void didBecomeFirstResponder() override; + int numberOfRows() override; + KDCoordinate cellHeight() override; + TableViewCell * reusableCell(int index) override; + int reusableCellCount() override; +private: + constexpr static int k_totalNumberOfCell = 3; + MenuListCell m_deleteColumn; + ChevronMenuListCell m_copyColumn; + ChevronMenuListCell m_importList; + SelectableTableView m_selectableTableView; + Data * m_data; + bool m_xColumnSelected; +}; + +#endif