mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-18 21:30:38 +01:00
[apps/graph/values] Add IntervalParameterSelectorController
This commit is contained in:
@@ -26,6 +26,7 @@ app_graph_src = $(addprefix apps/graph/,\
|
||||
list/type_parameter_controller.cpp \
|
||||
values/derivative_parameter_controller.cpp \
|
||||
values/function_parameter_controller.cpp \
|
||||
values/interval_parameter_selector_controller.cpp \
|
||||
values/values_controller.cpp \
|
||||
)
|
||||
|
||||
|
||||
63
apps/graph/values/interval_parameter_selector_controller.cpp
Normal file
63
apps/graph/values/interval_parameter_selector_controller.cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
#include "interval_parameter_selector_controller.h"
|
||||
#include "../../shared/interval_parameter_controller.h"
|
||||
#include "../app.h"
|
||||
#include <apps/i18n.h>
|
||||
#include <assert.h>
|
||||
|
||||
namespace Graph {
|
||||
|
||||
IntervalParameterSelectorController::IntervalParameterSelectorController() :
|
||||
ViewController(nullptr),
|
||||
m_selectableTableView(this, this, this)
|
||||
{
|
||||
}
|
||||
|
||||
const char * IntervalParameterSelectorController::title() {
|
||||
return I18n::translate(I18n::Message::IntervalSet);
|
||||
}
|
||||
|
||||
void IntervalParameterSelectorController::didBecomeFirstResponder() {
|
||||
if (selectedRow() < 0) {
|
||||
selectCellAtLocation(0, 0);
|
||||
}
|
||||
Container::activeApp()->setFirstResponder(&m_selectableTableView);
|
||||
}
|
||||
|
||||
bool IntervalParameterSelectorController::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) {
|
||||
StackViewController * stack = (StackViewController *)parentResponder();
|
||||
Shared::IntervalParameterController * controller = App::app()->valuesController()->intervalParameterController();
|
||||
controller->setTitle(messageAtIndex(selectedRow()));
|
||||
stack->push(controller);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
int IntervalParameterSelectorController::numberOfRows() {
|
||||
return MaxNumberOfRows;
|
||||
};
|
||||
|
||||
HighlightCell * IntervalParameterSelectorController::reusableCell(int index) {
|
||||
assert(0 <= index && index < reusableCellCount());
|
||||
return m_intervalParameterCell + index;
|
||||
}
|
||||
|
||||
int IntervalParameterSelectorController::reusableCellCount() {
|
||||
return MaxNumberOfRows;
|
||||
}
|
||||
|
||||
void IntervalParameterSelectorController::willDisplayCellForIndex(HighlightCell * cell, int index) {
|
||||
assert(0 <= index && index < MaxNumberOfRows);
|
||||
static_cast<MessageTableCellWithChevron *>(cell)->setMessage(messageAtIndex(index));
|
||||
}
|
||||
|
||||
I18n::Message IntervalParameterSelectorController::messageAtIndex(int index) {
|
||||
assert(0 <= index && index < MaxNumberOfRows);
|
||||
constexpr I18n::Message message[MaxNumberOfRows] = {
|
||||
I18n::Message::IntervalX
|
||||
};
|
||||
return message[index];
|
||||
}
|
||||
|
||||
}
|
||||
29
apps/graph/values/interval_parameter_selector_controller.h
Normal file
29
apps/graph/values/interval_parameter_selector_controller.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#ifndef GRAPH_INTERVAL_PARAMETER_SELECTOR_CONTROLLER
|
||||
#define GRAPH_INTERVAL_PARAMETER_SELECTOR_CONTROLLER
|
||||
|
||||
#include <escher.h>
|
||||
|
||||
namespace Graph {
|
||||
|
||||
class IntervalParameterSelectorController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
|
||||
public:
|
||||
IntervalParameterSelectorController();
|
||||
const char * title() override;
|
||||
View * view() override { return &m_selectableTableView; }
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
void didBecomeFirstResponder() override;
|
||||
int numberOfRows() override;
|
||||
KDCoordinate cellHeight() override { return Metric::ParameterCellHeight; }
|
||||
int reusableCellCount() override;
|
||||
HighlightCell * reusableCell(int index) override;
|
||||
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
|
||||
private:
|
||||
static constexpr int MaxNumberOfRows = 1;
|
||||
I18n::Message messageAtIndex(int index);
|
||||
MessageTableCellWithChevron m_intervalParameterCell[MaxNumberOfRows];
|
||||
SelectableTableView m_selectableTableView;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -18,7 +18,7 @@ ValuesController::ValuesController(Responder * parentResponder, InputEventHandle
|
||||
m_setIntervalButton(this, I18n::Message::IntervalSet, Invocation([](void * context, void * sender) {
|
||||
ValuesController * valuesController = (ValuesController *) context;
|
||||
StackViewController * stack = ((StackViewController *)valuesController->stackController());
|
||||
stack->push(valuesController->intervalParameterController());
|
||||
stack->push(valuesController->intervalParameterSelectorController());
|
||||
return true;
|
||||
}, this), k_font)
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "../../shared/buffer_function_title_cell.h"
|
||||
#include "../../shared/values_controller.h"
|
||||
#include "../../shared/interval_parameter_controller.h"
|
||||
#include "interval_parameter_selector_controller.h"
|
||||
#include "derivative_parameter_controller.h"
|
||||
#include "function_parameter_controller.h"
|
||||
|
||||
@@ -21,6 +22,9 @@ public:
|
||||
Shared::IntervalParameterController * intervalParameterController() override {
|
||||
return &m_intervalParameterController;
|
||||
}
|
||||
IntervalParameterSelectorController * intervalParameterSelectorController() {
|
||||
return &m_intervalParameterSelectorController;
|
||||
}
|
||||
void updateNumberOfColumns() override;
|
||||
private:
|
||||
constexpr static int k_maxNumberOfCells = 50;
|
||||
@@ -41,6 +45,7 @@ private:
|
||||
EvenOddBufferTextCell m_floatCells[k_maxNumberOfCells];
|
||||
FunctionParameterController m_functionParameterController;
|
||||
Shared::IntervalParameterController m_intervalParameterController;
|
||||
IntervalParameterSelectorController m_intervalParameterSelectorController;
|
||||
DerivativeParameterController m_derivativeParameterController;
|
||||
Button m_setIntervalButton;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user