!7 cmodule AlarmOnPowerLoss > DynPrintLogAndEnabled { switchable bool setOff; switchable S mp3SnippetID = #1001093; transient Player player; start-thread { if (!enabled) ret; if (setOff) print("Already set off. Reset in menu"); print("Setting live in 10..."); doWithSleep(10.0, r { loadLibrary(mp3SnippetID) }); if (!enabled) ret; print("Alarm live."); doEvery(5.0, r check); } void check enter { if (enabled && !setOff && linux_batteryDischarging()) setOff(); } void setOff { setField(setOff := true); action(); } void action enter { cleanMeUp(); player = playMP3(loadLibrary(mp3SnippetID)); } visual withCenteredButtons(super, "Reset/Shut Up", rThread reset, "Test", rThread action); void reset enter { shutUp(); setField(setOff := false); print("Reset."); } void shutUp enter { cleanMeUp(); } void cleanMeUp { if (player != null) player.close(); player = null; } }