[Apps/Shared] Fixed interval and curve view exit

This commit is contained in:
Joachim LF
2020-07-25 15:28:30 +02:00
committed by LeaNumworks
parent b4a3dd10e1
commit d37bf9e344
8 changed files with 73 additions and 51 deletions

View File

@@ -2,6 +2,8 @@
namespace Shared {
static Interval::intervalParameters s_tempIntevalParameters;
IntervalParameterController::IntervalParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate) :
FloatParameterController<double>(parentResponder),
m_interval(nullptr),
@@ -16,6 +18,11 @@ IntervalParameterController::IntervalParameterController(Responder * parentRespo
}
}
void IntervalParameterController::setInterval(Interval * interval) {
m_interval = interval;
s_tempIntevalParameters = *(*interval).parameters();
}
const char * IntervalParameterController::title() {
return I18n::translate(m_title);
}
@@ -42,8 +49,8 @@ void IntervalParameterController::willDisplayCellForIndex(HighlightCell * cell,
}
double IntervalParameterController::parameterAtIndex(int index) {
GetterPointer getters[k_totalNumberOfCell] = {&Interval::start, &Interval::end, &Interval::step};
return (m_interval->*getters[index])();
GetterPointer getters[k_totalNumberOfCell] = {&Shared::Interval::intervalParameters::start, &Shared::Interval::intervalParameters::end, &Shared::Interval::intervalParameters::step};
return (s_tempIntevalParameters.*getters[index])();
}
bool IntervalParameterController::setParameterAtIndex(int parameterIndex, double f) {
@@ -51,18 +58,18 @@ bool IntervalParameterController::setParameterAtIndex(int parameterIndex, double
Container::activeApp()->displayWarning(I18n::Message::ForbiddenValue);
return false;
}
double start = parameterIndex == 0 ? f : m_interval->start();
double end = parameterIndex == 1 ? f : m_interval->end();
double start = parameterIndex == 0 ? f : s_tempIntevalParameters.start();
double end = parameterIndex == 1 ? f : s_tempIntevalParameters.end();
if (start > end) {
if (parameterIndex == 1) {
Container::activeApp()->displayWarning(I18n::Message::ForbiddenValue);
return false;
}
double g = f+1.0;
m_interval->setEnd(g);
s_tempIntevalParameters.setEnd(g);
}
SetterPointer setters[k_totalNumberOfCell] = {&Interval::setStart, &Interval::setEnd, &Interval::setStep};
(m_interval->*setters[parameterIndex])(f);
SetterPointer setters[k_totalNumberOfCell] = {&Shared::Interval::intervalParameters::setStart, &Shared::Interval::intervalParameters::setEnd, &Shared::Interval::intervalParameters::setStep};
(s_tempIntevalParameters.*setters[parameterIndex])(f);
return true;
}
@@ -85,6 +92,7 @@ int IntervalParameterController::reusableParameterCellCount(int type) {
}
void IntervalParameterController::buttonAction() {
m_interval->setParameters(s_tempIntevalParameters);
m_interval->forceRecompute();
StackViewController * stack = stackController();
stack->pop();