Register / Login | Desktop view |
// register screensaver
renderer.setResetIntervalTimeSeconds(SCREENSAVER_START_INTERVAL);
renderer.setResetCallback([] {
renderer.takeOverDisplay(Screen::screenSaverCallback);
});
int Screen::takeOverMenuCounter = 0;
void Screen::screenSaverCallback(unsigned int encoderValue, RenderPressMode clicked) {
// in case this is the first call to the function, display the screensaver splash screen
if (Screen::takeOverMenuCounter == 0)
showScreenSaver();
// in case the A button was pressed, give control back to tcmenu and restart the screensaver intervall timer
if(clicked) {
renderer.giveBackDisplay();
Screen::takeOverMenuCounter = 0;
renderer.setResetIntervalTimeSeconds(SCREENSAVER_START_INTERVAL);
renderer.setResetCallback([] {
renderer.takeOverDisplay(Screen::screenSaverCallback);
});
}
Screen::takeOverMenuCounter++;
}
/*
* Displays a splash screen as screensaver. Image is loaded from SPIFFS as bmp
*/
void Screen::showScreenSaver() {
gfx.fillScreen(ST77XX_BLACK);
gfx.setTextColor(ST77XX_BLACK);
SPIFFS_ImageReader reader;
reader.drawBMP("/system/splashscreen.bmp",gfx,0,0);
gfx.setCursor(30, 225);
gfx.println("<press A to continue>");
}
void Screen::screenSaverCallback(unsigned int encoderValue, RenderPressMode clicked) {
// in case this is the first call to the function, display the screensaver splash screen
if (takeOverMenuCounter == 0)
showScreenSaver();
// in case the A button was pressed, give control back to tcmenu and restart the screensaver intervall timer
if(clicked) {
renderer.giveBackDisplay();
takeOverMenuCounter = 0;
}
takeOverMenuCounter++;
}
void Screen::screenSaverCallback(unsigned int encoderValue, RenderPressMode clicked) {
// in case this is the first call to the function, display the screensaver splash screen
if (takeOverMenuCounter == 0) {
showScreenSaver();
takeOverMenuCounter++;
}
// in case the A button was pressed, give control back to tcmenu
if(clicked) {
takeOverMenuCounter = 0;
renderer.giveBackDisplay();
}
}