[poincare] When memory exception, stay in the app and display popup

This commit is contained in:
Léa Saviot
2018-09-14 13:35:03 +02:00
parent f394a799ea
commit 6deaef49b8
9 changed files with 13 additions and 9 deletions

View File

@@ -143,7 +143,7 @@ bool AppsContainer::processEvent(Ion::Events::Event event) {
return false;
}
void AppsContainer::switchTo(App::Snapshot * snapshot) {
void AppsContainer::switchTo(App::Snapshot * snapshot, bool forceSwitch) {
if (activeApp() && snapshot != activeApp()->snapshot()) {
resetShiftAlphaStatus();
}
@@ -155,7 +155,7 @@ void AppsContainer::switchTo(App::Snapshot * snapshot) {
if (snapshot) {
m_window.setTitle(snapshot->descriptor()->upperName());
}
Container::switchTo(snapshot);
Container::switchTo(snapshot, forceSwitch);
}
void AppsContainer::run() {
@@ -177,9 +177,8 @@ void AppsContainer::run() {
* tree for the jump to work. */
Poincare::ExceptionCheckpoint ecp;
if (!ExceptionRun(ecp)) {
switchTo(appSnapshotAtIndex(0));
activeApp()->displayModalViewController(&m_updateController, 0.f, 0.f); //TODO this is debug
//displayMemoryExhaustionPopUp(); TODO
switchTo(activeApp()->snapshot(), true);
activeApp()->displayWarning(I18n::Message::AppMemoryFull);
}
Container::run();
switchTo(nullptr);

View File

@@ -38,7 +38,7 @@ public:
VariableBoxController * variableBoxController();
void suspend(bool checkIfPowerKeyReleased = false);
virtual bool dispatchEvent(Ion::Events::Event event) override;
void switchTo(App::Snapshot * snapshot) override;
void switchTo(App::Snapshot * snapshot, bool forceSwitch = false) override;
void run() override;
bool updateBatteryState();
void refreshPreferences();

View File

@@ -2,6 +2,7 @@ ActivateDesactivate = "Aktivieren/Deaktivieren"
ActiveExamModeMessage1 = "Alle Ihre Daten werden "
ActiveExamModeMessage2 = "geloscht, wenn Sie den "
ActiveExamModeMessage3 = "Testmodus einschalten."
AppMemoryFull = "Memory full for this app"
Axis = "Achsen"
Cancel = "Abbrechen"
ClearColumn = "Spalte loschen"

View File

@@ -2,6 +2,7 @@ ActivateDesactivate = "Turn on/off"
ActiveExamModeMessage1 = "All your data will be "
ActiveExamModeMessage2 = "deleted when you activate "
ActiveExamModeMessage3 = "the exam mode."
AppMemoryFull = "Memory full for this app"
Axis = "Axes"
Cancel = "Cancel"
ClearColumn = "Clear column"

View File

@@ -2,6 +2,7 @@ ActivateDesactivate = "Activar/Desactivar"
ActiveExamModeMessage1 = "Todos sus datos se "
ActiveExamModeMessage2 = "eliminaran al activar "
ActiveExamModeMessage3 = "el modo examen."
AppMemoryFull = "Memory full for this app"
Axis = "Ejes"
Cancel = "Cancelar"
ClearColumn = "Borrar la columna"

View File

@@ -2,6 +2,7 @@ ActivateDesactivate = "Activer/Desactiver"
ActiveExamModeMessage1 = "Toutes vos donnees seront "
ActiveExamModeMessage2 = "supprimees si vous activez "
ActiveExamModeMessage3 = "le mode examen."
AppMemoryFull = "Memory full for this app"
Axis = "Axes"
Cancel = "Annuler"
ClearColumn = "Effacer la colonne"

View File

@@ -2,6 +2,7 @@ ActivateDesactivate = "Activar/Desactivar"
ActiveExamModeMessage1 = "Todos os seus dados serao "
ActiveExamModeMessage2 = "apagados se voce ligar "
ActiveExamModeMessage3 = "o modo de exame."
AppMemoryFull = "Memory full for this app"
Axis = "Eixos"
Cancel = "Cancelar"
ClearColumn = "Excluir coluna"

View File

@@ -27,7 +27,7 @@ public:
virtual void run();
App * activeApp();
virtual bool dispatchEvent(Ion::Events::Event event) override;
virtual void switchTo(App::Snapshot * snapshot);
virtual void switchTo(App::Snapshot * snapshot, bool forceSwitch = false);
protected:
virtual Window * window() = 0;
private:

View File

@@ -14,8 +14,8 @@ Container::~Container() {
}
}
void Container::switchTo(App::Snapshot * snapshot) {
if (m_activeApp && snapshot == m_activeApp->snapshot()) {
void Container::switchTo(App::Snapshot * snapshot, bool forceSwitch) {
if (!forceSwitch && m_activeApp && snapshot == m_activeApp->snapshot()) {
return;
}
if (m_activeApp) {