options to blank the screen added

This commit is contained in:
darkpoet78
2024-12-30 19:22:24 +09:00
parent c7eb9cc700
commit e339e820fc
8 changed files with 57 additions and 10 deletions

Binary file not shown.

View File

@@ -78,21 +78,29 @@
<div class="row-title"><span>screensaver</span></div> <div class="row-title"><span>screensaver</span></div>
<div class="flex-row group group_tft group_oled group_nextion hidden" style="margin-top:20px;"> <div class="flex-row group group_tft group_oled group_nextion hidden" style="margin-top:20px;">
<div class="inputwrap"> <div class="inputwrap">
<span class="inputtitle">screensaver enabled</span> <span class="inputtitle">while not playing</span>
<div class="checkbox off nous" id="screensaverenabled" style="padding-top:16px;"></div> <div class="checkbox off nous" id="screensaverenabled" style="padding-top:16px;"></div>
</div> </div>
<div class="inputwrap"> <div class="inputwrap">
<span class="inputtitle">screensaver timeout (sec)</span> <span class="inputtitle">blank screen</span>
<div class="checkbox off nous" id="screensaverblank"></div>
</div>
<div class="inputwrap">
<span class="inputtitle">timeout (sec)</span>
<input type="number" id="screensavertimeout" class="textinput inputchange" name="screensavertimeout" value="" maxlength="3" min="5" max="65520" /> <input type="number" id="screensavertimeout" class="textinput inputchange" name="screensavertimeout" value="" maxlength="3" min="5" max="65520" />
</div> </div>
</div> </div>
<div class="flex-row group group_tft group_oled group_nextion hidden"> <div class="flex-row group group_tft group_oled group_nextion hidden">
<div class="inputwrap"> <div class="inputwrap">
<span class="inputtitle">screensaver while playing</span> <span class="inputtitle">while playing</span>
<div class="checkbox off nous" id="screensaverplayingenabled"></div> <div class="checkbox off nous" id="screensaverplayingenabled"></div>
</div> </div>
<div class="inputwrap"> <div class="inputwrap">
<span class="inputtitle">screensaver timeout (min)</span> <span class="inputtitle">blank screen</span>
<div class="checkbox off nous" id="screensaverplayingblank"></div>
</div>
<div class="inputwrap">
<span class="inputtitle">timeout (min)</span>
<input type="number" id="screensaverplayingtimeout" class="textinput inputchange" name="screensaverplayingtimeout" value="" maxlength="3" min="1" max="1080" /> <input type="number" id="screensaverplayingtimeout" class="textinput inputchange" name="screensaverplayingtimeout" value="" maxlength="3" min="1" max="1080" />
</div> </div>
</div> </div>

View File

@@ -1,7 +1,7 @@
#ifndef COMMON_H #ifndef COMMON_H
#define COMMON_H #define COMMON_H
enum displayMode_e { PLAYER, VOL, STATIONS, NUMBERS, LOST, UPDATING, INFO, SETTINGS, TIMEZONE, WIFI, CLEAR, SLEEPING, SDCHANGE, SCREENSAVER }; enum displayMode_e { PLAYER, VOL, STATIONS, NUMBERS, LOST, UPDATING, INFO, SETTINGS, TIMEZONE, WIFI, CLEAR, SLEEPING, SDCHANGE, SCREENSAVER, SCREENBLANK };
enum pages_e : uint8_t { PG_PLAYER=0, PG_DIALOG=1, PG_PLAYLIST=2, PG_SCREENSAVER=3 }; enum pages_e : uint8_t { PG_PLAYER=0, PG_DIALOG=1, PG_PLAYLIST=2, PG_SCREENSAVER=3 };
enum displayRequestType_e { BOOTSTRING, NEWMODE, CLOCK, NEWTITLE, NEWSTATION, NEXTSTATION, DRAWPLAYLIST, DRAWVOL, DBITRATE, AUDIOINFO, SHOWVUMETER, DSPRSSI, SHOWWEATHER, NEWWEATHER, PSTOP, PSTART, DSP_START, WAITFORSD, SDFILEINDEX, NEWIP, NOPE }; enum displayRequestType_e { BOOTSTRING, NEWMODE, CLOCK, NEWTITLE, NEWSTATION, NEXTSTATION, DRAWPLAYLIST, DRAWVOL, DBITRATE, AUDIOINFO, SHOWVUMETER, DSPRSSI, SHOWWEATHER, NEWWEATHER, PSTOP, PSTART, DSP_START, WAITFORSD, SDFILEINDEX, NEWIP, NOPE };

View File

@@ -99,8 +99,10 @@ void Config::_setupVersion(){
saveValue(&store.skipPlaylistUpDown, false); saveValue(&store.skipPlaylistUpDown, false);
break; break;
case 3: case 3:
saveValue(&store.screensaverBlank, false);
saveValue(&store.screensaverPlayingEnabled, false); saveValue(&store.screensaverPlayingEnabled, false);
saveValue(&store.screensaverPlayingTimeout, (uint16_t)5); saveValue(&store.screensaverPlayingTimeout, (uint16_t)5);
saveValue(&store.screensaverPlayingBlank, false);
break; break;
default: default:
break; break;

View File

@@ -136,8 +136,10 @@ struct config_t
bool rotate90; bool rotate90;
bool screensaverEnabled; bool screensaverEnabled;
uint16_t screensaverTimeout; uint16_t screensaverTimeout;
bool screensaverBlank;
bool screensaverPlayingEnabled; bool screensaverPlayingEnabled;
uint16_t screensaverPlayingTimeout; uint16_t screensaverPlayingTimeout;
bool screensaverPlayingBlank;
char mdnsname[24]; char mdnsname[24];
bool skipPlaylistUpDown; bool skipPlaylistUpDown;
}; };

View File

@@ -284,9 +284,10 @@ void Display::_swichMode(displayMode_e newmode) {
_pager.setPage( pages[PG_PLAYER]); _pager.setPage( pages[PG_PLAYER]);
pm.on_display_player(); pm.on_display_player();
} }
if (newmode == SCREENSAVER) { if (newmode == SCREENSAVER || newmode == SCREENBLANK) {
config.isScreensaver = true; config.isScreensaver = true;
_pager.setPage( pages[PG_SCREENSAVER]); _pager.setPage( pages[PG_SCREENSAVER]);
if (newmode == SCREENBLANK) dsp.clearClock();
}else{ }else{
config.screensaverTicks=SCREENSAVERSTARTUPDELAY; config.screensaverTicks=SCREENSAVERSTARTUPDELAY;
config.screensaverPlayingTicks=SCREENSAVERSTARTUPDELAY; config.screensaverPlayingTicks=SCREENSAVERSTARTUPDELAY;

View File

@@ -298,7 +298,7 @@ void NetServer::processQueue(){
config.vuThreshold, config.vuThreshold,
config.store.mdnsname); config.store.mdnsname);
break; break;
case GETSCREEN: sprintf (wsbuf, "{\"flip\":%d,\"inv\":%d,\"nump\":%d,\"tsf\":%d,\"tsd\":%d,\"dspon\":%d,\"br\":%d,\"con\":%d,\"scre\":%d,\"scrt\":%d,\"scrpe\":%d,\"scrpt\":%d}", case GETSCREEN: sprintf (wsbuf, "{\"flip\":%d,\"inv\":%d,\"nump\":%d,\"tsf\":%d,\"tsd\":%d,\"dspon\":%d,\"br\":%d,\"con\":%d,\"scre\":%d,\"scrt\":%d,\"scrb\":%d,\"scrpe\":%d,\"scrpt\":%d,\"scrpb\":%d}",
config.store.flipscreen, config.store.flipscreen,
config.store.invertdisplay, config.store.invertdisplay,
config.store.numplaylist, config.store.numplaylist,
@@ -309,8 +309,10 @@ void NetServer::processQueue(){
config.store.contrast, config.store.contrast,
config.store.screensaverEnabled, config.store.screensaverEnabled,
config.store.screensaverTimeout, config.store.screensaverTimeout,
config.store.screensaverBlank,
config.store.screensaverPlayingEnabled, config.store.screensaverPlayingEnabled,
config.store.screensaverPlayingTimeout); config.store.screensaverPlayingTimeout,
config.store.screensaverPlayingBlank);
break; break;
case GETTIMEZONE: sprintf (wsbuf, "{\"tzh\":%d,\"tzm\":%d,\"sntp1\":\"%s\",\"sntp2\":\"%s\"}", case GETTIMEZONE: sprintf (wsbuf, "{\"tzh\":%d,\"tzm\":%d,\"sntp1\":\"%s\",\"sntp2\":\"%s\"}",
config.store.tzHour, config.store.tzHour,
@@ -516,6 +518,14 @@ void NetServer::onWsMessage(void *arg, uint8_t *data, size_t len, uint8_t client
#endif #endif
return; return;
} }
if (strcmp(cmd, "screensaverblank") == 0) {
bool valb = static_cast<bool>(atoi(val));
config.saveValue(&config.store.screensaverBlank, valb);
#ifndef DSP_LCD
display.putRequest(NEWMODE, PLAYER);
#endif
return;
}
if (strcmp(cmd, "screensaverplayingenabled") == 0) { if (strcmp(cmd, "screensaverplayingenabled") == 0) {
bool valb = static_cast<bool>(atoi(val)); bool valb = static_cast<bool>(atoi(val));
config.saveValue(&config.store.screensaverPlayingEnabled, valb); config.saveValue(&config.store.screensaverPlayingEnabled, valb);
@@ -533,6 +543,14 @@ void NetServer::onWsMessage(void *arg, uint8_t *data, size_t len, uint8_t client
#endif #endif
return; return;
} }
if (strcmp(cmd, "screensaverplayingblank") == 0) {
bool valb = static_cast<bool>(atoi(val));
config.saveValue(&config.store.screensaverPlayingBlank, valb);
#ifndef DSP_LCD
display.putRequest(NEWMODE, PLAYER);
#endif
return;
}
if (strcmp(cmd, "tzh") == 0) { if (strcmp(cmd, "tzh") == 0) {
int8_t vali = atoi(val); int8_t vali = atoi(val);
config.saveValue(&config.store.tzHour, vali); config.saveValue(&config.store.tzHour, vali);
@@ -632,8 +650,10 @@ void NetServer::onWsMessage(void *arg, uint8_t *data, size_t len, uint8_t client
config.saveValue(&config.store.numplaylist, false); config.saveValue(&config.store.numplaylist, false);
config.saveValue(&config.store.screensaverEnabled, false); config.saveValue(&config.store.screensaverEnabled, false);
config.saveValue(&config.store.screensaverTimeout, (uint16_t)20); config.saveValue(&config.store.screensaverTimeout, (uint16_t)20);
config.saveValue(&config.store.screensaverBlank, false);
config.saveValue(&config.store.screensaverPlayingEnabled, false); config.saveValue(&config.store.screensaverPlayingEnabled, false);
config.saveValue(&config.store.screensaverPlayingTimeout, (uint16_t)5); config.saveValue(&config.store.screensaverPlayingTimeout, (uint16_t)5);
config.saveValue(&config.store.screensaverPlayingBlank, false);
display.putRequest(NEWMODE, CLEAR); display.putRequest(NEWMODE, PLAYER); display.putRequest(NEWMODE, CLEAR); display.putRequest(NEWMODE, PLAYER);
requestOnChange(GETSCREEN, clientId); requestOnChange(GETSCREEN, clientId);
return; return;

View File

@@ -51,10 +51,24 @@ void ticks() {
} }
#ifndef DSP_LCD #ifndef DSP_LCD
if(config.store.screensaverEnabled && display.mode()==PLAYER && !player.isRunning()){ if(config.store.screensaverEnabled && display.mode()==PLAYER && !player.isRunning()){
if(config.screensaverTicks++ > config.store.screensaverTimeout+SCREENSAVERSTARTUPDELAY) display.putRequest(NEWMODE, SCREENSAVER); config.screensaverTicks++;
if(config.screensaverTicks > config.store.screensaverTimeout+SCREENSAVERSTARTUPDELAY){
if(config.store.screensaverBlank){
display.putRequest(NEWMODE, SCREENBLANK);
}else{
display.putRequest(NEWMODE, SCREENSAVER);
}
}
} }
if(config.store.screensaverPlayingEnabled && display.mode()==PLAYER && player.isRunning()){ if(config.store.screensaverPlayingEnabled && display.mode()==PLAYER && player.isRunning()){
if(config.screensaverPlayingTicks++ > config.store.screensaverPlayingTimeout*60+SCREENSAVERSTARTUPDELAY) display.putRequest(NEWMODE, SCREENSAVER); config.screensaverPlayingTicks++;
if(config.screensaverPlayingTicks > config.store.screensaverPlayingTimeout*60+SCREENSAVERSTARTUPDELAY){
if(config.store.screensaverPlayingBlank){
display.putRequest(NEWMODE, SCREENBLANK);
}else{
display.putRequest(NEWMODE, SCREENSAVER);
}
}
} }
#endif #endif
#if RTCSUPPORTED #if RTCSUPPORTED