From 4e9767b3c94dd08f09f2028e455cea1c7e17577e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Mon, 28 May 2018 15:34:47 +0200 Subject: [PATCH] [apps/stats] Handle the upperleft cell navigation in calculation --- apps/statistics/Makefile | 1 + apps/statistics/calculation_controller.cpp | 13 ++++++++----- .../calculation_selectable_table_view.cpp | 15 +++++++++++++++ .../calculation_selectable_table_view.h | 16 ++++++++++++++++ 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 apps/statistics/calculation_selectable_table_view.cpp create mode 100644 apps/statistics/calculation_selectable_table_view.h diff --git a/apps/statistics/Makefile b/apps/statistics/Makefile index 3e195aa67..24cc6b475 100644 --- a/apps/statistics/Makefile +++ b/apps/statistics/Makefile @@ -10,6 +10,7 @@ app_objs += $(addprefix apps/statistics/,\ box_view.o\ calculation_cell.o\ calculation_controller.o\ + calculation_selectable_table_view.o\ histogram_banner_view.o\ histogram_controller.o\ histogram_parameter_controller.o\ diff --git a/apps/statistics/calculation_controller.cpp b/apps/statistics/calculation_controller.cpp index b368f493f..824417743 100644 --- a/apps/statistics/calculation_controller.cpp +++ b/apps/statistics/calculation_controller.cpp @@ -1,7 +1,8 @@ #include "calculation_controller.h" +#include "app.h" +#include "calculation_selectable_table_view.h" #include "../constant.h" #include "../apps_container.h" -#include "app.h" #include #include @@ -214,10 +215,12 @@ View * CalculationController::loadView() { } m_hideableCell = new HideableEvenOddCell(); m_hideableCell->setHide(true); - View * result = TabTableController::loadView(); - SelectableTableView * casterResult = static_cast(result); - casterResult->setMargins(k_margin, k_scrollBarMargin, k_scrollBarMargin, k_margin); - return result; + + CalculationSelectableTableView * selectableTableView = new CalculationSelectableTableView(this, this, this); + selectableTableView->setBackgroundColor(Palette::WallScreenDark); + selectableTableView->setVerticalCellOverlap(0); + selectableTableView->setMargins(k_margin, k_scrollBarMargin, k_scrollBarMargin, k_margin); + return selectableTableView; } diff --git a/apps/statistics/calculation_selectable_table_view.cpp b/apps/statistics/calculation_selectable_table_view.cpp new file mode 100644 index 000000000..e9bd9a300 --- /dev/null +++ b/apps/statistics/calculation_selectable_table_view.cpp @@ -0,0 +1,15 @@ +#include "calculation_selectable_table_view.h" + +namespace Statistics { + +bool CalculationSelectableTableView::handleEvent(Ion::Events::Event event) { + if (event == Ion::Events::Up && selectedColumn() == 0 && selectedRow() == 1) { + return false; + } + if (event == Ion::Events::Left && selectedColumn() == 1 && selectedRow() == 0) { + return selectCellAtLocation(0, 1); + } + return SelectableTableView::handleEvent(event); +} + +} diff --git a/apps/statistics/calculation_selectable_table_view.h b/apps/statistics/calculation_selectable_table_view.h new file mode 100644 index 000000000..5de8b15f6 --- /dev/null +++ b/apps/statistics/calculation_selectable_table_view.h @@ -0,0 +1,16 @@ +#ifndef APPS_STATISTICS_CALCULATION_SELECTABLE_TABLE_VIEW_H +#define APPS_STATISTICS_CALCULATION_SELECTABLE_TABLE_VIEW_H + +#include + +namespace Statistics { + +class CalculationSelectableTableView : public SelectableTableView { +public: + using SelectableTableView::SelectableTableView; + bool handleEvent(Ion::Events::Event event) override; +}; + +} + +#endif