Files
Upsilon/apps/shared/go_to_parameter_controller.h
Hugo Saint-Vignes 5c75cc55d3 [apps/shared] Apply changes on confirm with GoTo functions
Change-Id: I6ebec412b4b6612710476274a8665375d21f9ef8
2020-07-29 10:07:07 +02:00

42 lines
1.6 KiB
C++

#ifndef SHARED_GO_TO_PARAMETER_CONTROLLER_H
#define SHARED_GO_TO_PARAMETER_CONTROLLER_H
#include <escher.h>
#include "float_parameter_controller.h"
#include "curve_view_cursor.h"
#include "interactive_curve_view_range.h"
namespace Shared {
class GoToParameterController : public FloatParameterController<double> {
public:
GoToParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor);
int numberOfRows() const override { return 2; }
bool handleEvent(Ion::Events::Event event) override;
protected:
void setParameterName(I18n::Message message) { m_parameterCell.setMessage(message); }
void viewWillAppear() override;
// extractParameterAtIndex extracts the current value of the parameter
virtual double extractParameterAtIndex(int index) = 0;
// confirmParameterAtIndex updates the current value of the parameter
virtual bool confirmParameterAtIndex(int parameterIndex, double f) = 0;
// parameterAtIndex and setParameterAtIndex manipulate m_tempParameter only
double parameterAtIndex(int index) override {
assert(index == 0);
return m_tempParameter;
}
bool setParameterAtIndex(int parameterIndex, double f) override;
CurveViewCursor * m_cursor;
InteractiveCurveViewRange * m_graphRange;
double m_tempParameter;
private:
void buttonAction() override;
HighlightCell * reusableParameterCell(int index, int type) override;
int reusableParameterCellCount(int type) override { return 1; }
MessageTableCellWithEditableText m_parameterCell;
};
}
#endif