[apps/shared] Add discard confirmation on table intervals

Change-Id: Id152577c570febf06b4d829fd2723c2a30c3ccd9
This commit is contained in:
Hugo Saint-Vignes
2020-10-09 15:58:46 +02:00
committed by Émilie Feral
parent bd23135198
commit 150a5bfa5a
4 changed files with 18 additions and 1 deletions

View File

@@ -23,6 +23,10 @@ void Interval::deleteElementAtIndex(int index) {
m_numberOfElements--; m_numberOfElements--;
} }
bool Interval::hasSameParameters(IntervalParameters parameters) {
return (m_parameters.start() == parameters.start() && m_parameters.end() == parameters.end() && m_parameters.step() == parameters.step());
}
double Interval::element(int i) { double Interval::element(int i) {
assert(i >= 0 && i < numberOfElements()); assert(i >= 0 && i < numberOfElements());
computeElements(); computeElements();

View File

@@ -23,6 +23,7 @@ public:
double m_end; double m_end;
double m_step; double m_step;
}; };
bool hasSameParameters(IntervalParameters parameters);
double element(int i); double element(int i);
IntervalParameters * parameters() { return &m_parameters; } IntervalParameters * parameters() { return &m_parameters; }
void setParameters(IntervalParameters parameters) { m_parameters = parameters; } void setParameters(IntervalParameters parameters) { m_parameters = parameters; }

View File

@@ -13,7 +13,12 @@ IntervalParameterController::IntervalParameterController(Responder * parentRespo
m_intervalCells{}, m_intervalCells{},
m_title(I18n::Message::IntervalSet), m_title(I18n::Message::IntervalSet),
m_startMessage(I18n::Message::XStart), m_startMessage(I18n::Message::XStart),
m_endMessage(I18n::Message::XEnd) m_endMessage(I18n::Message::XEnd),
m_confirmPopUpController(Invocation([](void * context, void * sender) {
Container::activeApp()->dismissModalViewController();
((IntervalParameterController *)context)->stackController()->pop();
return true;
}, this))
{ {
for (int i = 0; i < k_totalNumberOfCell; i++) { for (int i = 0; i < k_totalNumberOfCell; i++) {
m_intervalCells[i].setParentResponder(&m_selectableTableView); m_intervalCells[i].setParentResponder(&m_selectableTableView);
@@ -87,6 +92,11 @@ bool IntervalParameterController::handleEvent(Ion::Events::Event event) {
stackController()->pop(); stackController()->pop();
return true; return true;
} }
if (event == Ion::Events::Back && !m_interval->hasSameParameters(*SharedTempIntervalParameters())) {
// Open pop-up to confirm discarding values
Container::activeApp()->displayModalViewController(&m_confirmPopUpController, 0.f, 0.f, Metric::ExamPopUpTopMargin, Metric::PopUpRightMargin, Metric::ExamPopUpBottomMargin, Metric::PopUpLeftMargin);
return true;
}
return false; return false;
} }

View File

@@ -5,6 +5,7 @@
#include "interval.h" #include "interval.h"
#include "float_parameter_controller.h" #include "float_parameter_controller.h"
#include <assert.h> #include <assert.h>
#include "discard_pop_up_controller.h"
namespace Shared { namespace Shared {
@@ -33,6 +34,7 @@ private:
I18n::Message m_title; I18n::Message m_title;
I18n::Message m_startMessage; I18n::Message m_startMessage;
I18n::Message m_endMessage; I18n::Message m_endMessage;
DiscardPopUpController m_confirmPopUpController;
}; };
} }